Nextcloud Hub 5 (27.0.1) : ファイルを読み込めませんでした。 インターネット接続を確認してください。
カテゴリー: General
2023-07-30
タイトル
Nextcloud Hub 5 (27.0.1) :
WEB: テキストファイルを開く
index.php/settings/admin/logging
まとめ
今回の騒動は cron.php がアップグレードに伴い原因不明のエラーを起こしていたのが原因でした。
アップグレード後は コマンドラインから cron.phpを実行する。
Docker
どうやら、外部からつつかないとだめらしい。
docker のホストマシンで
cronに登録する : root : crontab -e
ホームネットワークのdocker サイトは解決した。
そしてNextcloud の重大な欠陥に気が付いた。
utf8でない文書をwebuiで開くとバックアップもなく破壊される。
php.ini
Nextcloudのソースコードで不正文字チェック関数をエンコード判定に誤使用していて、エンコード判定が間違っているので
応急処置するには、上記を追加する。
コードを修正したい場合は、 nextcloud/apps/text/lib/Service/EncodingService.php の下記の関数をこのように書き換えます
Textプラグインは無効にしてプレビューをオフにしたほうが安全です。
・プレビューで勝手に上書き保存で強制エンコード変更と時には内容全破壊を伴う
・webUI編集時に保存の確認がなく強制保存される
・webUI編集時に元のエンコードで保存してくれない(utf8強制)
Nextcloud Hub 5 (27.0.1)
破壊されては意味がない。
smb共有フォルダ機能のほうがましかもしれないですね。
デフォルト設定で
古い文書ファイルをNextcloud に移動してはだめということ。
NextcloudのTextプラグインはデータ破壊を伴うので日本語環境でまともに使えるようになるまで無効にしておくことをお勧めします。
執筆:2023.07.30
編集:2023.07.30
編集:2023.07.30
Nextcloud Hub 5 (27.0.1) :
WEB: テキストファイルを開く
ファイルを読み込めませんでした。 インターネット接続を確認してください。
index.php/settings/admin/logging
エラー no app in context Cannot decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you.
まとめ
(0) インストールしてあるフォルダで cmdシェルを開く
(1) コマンドからcronを呼び出し、くるったシステムを正常化する
php -d memory_limit=512M cron.php
(2) 同期設定がAjaxなら設定を戻す。
php occ background:ajax
(1) コマンドからcronを呼び出し、くるったシステムを正常化する
php -d memory_limit=512M cron.php
(2) 同期設定がAjaxなら設定を戻す。
php occ background:ajax
今回の騒動は cron.php がアップグレードに伴い原因不明のエラーを起こしていたのが原因でした。
アップグレード後は コマンドラインから cron.phpを実行する。
Docker
どうやら、外部からつつかないとだめらしい。
docker のホストマシンで
*/5 * * * * docker exec -u www-data nextcloud php /var/www/html/cron.phpまたは
*/5 * * * * curl http://192.168.xx.xx/cron.php > /dev/null 2>&1とりあえず コマンドで確認してみる
docker exec -u www-data nextcloud php /var/www/html/cron.php
# m h dom mon dow cmd
*/5 * * * * docker exec -u www-data nextcloud php /var/www/html/cron.php > /dev/null 2>&1
そしてNextcloud の重大な欠陥に気が付いた。
utf8でない文書をwebuiで開くとバックアップもなく破壊される。
php.ini
mbstring.language=Japanese
mbstring.detect_order=UTF-8,EUC-JP,SJIS-win,auto
mbstring.detect_order=UTF-8,EUC-JP,SJIS-win,auto
Nextcloudのソースコードで不正文字チェック関数をエンコード判定に誤使用していて、エンコード判定が間違っているので
応急処置するには、上記を追加する。
コードを修正したい場合は、 nextcloud/apps/text/lib/Service/EncodingService.php の下記の関数をこのように書き換えます
修正したもの
public function detectEncoding(string $string): ?string { $bomDetect = $this->detectUtfBom($string); if ($bomDetect) { return $bomDetect; } if (false !== strpos($string, chr(0))) { return null; // binary file } $encoding = mb_detect_encoding($string, $this->getEncodings(), true); return is_string($encoding) ? $encoding : null; }
差分で違いを比較できるようにしたもの
public function detectEncoding(string $string): ?string { $bomDetect = $this->detectUtfBom($string); if ($bomDetect) { return $bomDetect; } - - foreach ($this->getEncodings() as $encoding) { - if (mb_check_encoding($string, $encoding)) { - return $encoding; - } - } - - return mb_detect_encoding($string, $this->getEncodings(), true) ?: null; + if (false !== strpos($string, chr(0))) { + return null; // binary file + } + $encoding = mb_detect_encoding($string, $this->getEncodings(), true); + return is_string($encoding) ? $encoding : null; }
Textプラグインは無効にしてプレビューをオフにしたほうが安全です。
・プレビューで勝手に上書き保存で強制エンコード変更と時には内容全破壊を伴う
・webUI編集時に保存の確認がなく強制保存される
・webUI編集時に元のエンコードで保存してくれない(utf8強制)
Nextcloud Hub 5 (27.0.1)
破壊されては意味がない。
smb共有フォルダ機能のほうがましかもしれないですね。
デフォルト設定で
古い文書ファイルをNextcloud に移動してはだめということ。
NextcloudのTextプラグインはデータ破壊を伴うので日本語環境でまともに使えるようになるまで無効にしておくことをお勧めします。