シン・レンタルサーバー(Xserver系)でのFTPによる手動アップデート & .htaccess トラブルシューティング
config/config.php、data/ フォルダ、データベースをバックアップする。
ローカルPCで nextcloud-XX.X.X.zip をダウンロードして解凍する。
config/config.php を編集してメンテナンスモードを有効化する。
// config/config.php に追記
'maintenance' => true,
| 対象 | 操作 |
|---|---|
| apps/、core/、lib/、ocs/、resources/、themes/ 等の本体ディレクトリ | 上書きOK |
| index.php、cron.php などルートの .php ファイル | 上書きOK |
| .htaccess | 上書きOK(後で修正が必要) |
| 対象 | 理由 |
|---|---|
| data/ | ユーザーデータ |
| config/config.php | サイト設定 |
config/config.php を編集して false に戻す。
管理画面の警告バナー「データベースのインデックスが欠落」から実行するか、updater.php にアクセスする。
アップデーターが .htaccess を自動再生成するため、必ず下記チェックリストを確認する。
ModPagespeed ブロックが復活していないか確認して削除する
→ <IfModule pagespeed_module> ブロックを丸ごと削除
Options -Indexes の末尾に ####... が改行なしで結合していないか確認する
→ Options -Indexes と #### DO NOT CHANGE... の間に空行を入れる
シン・レンタルサーバーには pagespeed_module が存在しないため、IfModule で囲んでいても 500 Internal Server Error になる。
# ↓ このブロックを丸ごと削除する
<IfModule pagespeed_module>
ModPagespeed Off
</IfModule>
アップデーターが末尾追記する際に改行が欠落することがある。Options -Indexes####... となっていると Apache が構文エラーとして 500 を返す。
# NG(改行なし結合)
Options -Indexes#### DO NOT CHANGE ANYTHING ABOVE THIS LINE ####
# OK(空行を入れる)
Options -Indexes
#### DO NOT CHANGE ANYTHING ABOVE THIS LINE ####
ErrorDocument 403 //index.php/error/403
ErrorDocument 404 //index.php/error/404
シン・レンタルサーバーは PHP-FPM 動作のため mod_php は使われない。ブロックを全行コメントアウトするか削除する。
#<IfModule mod_php.c>
#php_value mbstring.func_overload 0
#php_value default_charset 'UTF-8'
#php_value output_buffering 0
#<IfModule mod_env.c>
#SetEnv htaccessWorking true
#</IfModule>
#</IfModule>
</IfModule> も必ずコメントアウトすること。漏れると構文エラーになる。
| ログのメッセージ | 原因 | 対処 |
|---|---|---|
Invalid command 'ModPagespeed' |
pagespeed_module ブロックが存在する | ブロックを削除 |
</IfModule> without matching <IfModule> |
コメントアウトが不完全で閉じタグが孤立 | 全行コメントアウトを確認 |
Permission denied: data/.htaccess |
data/ ディレクトリのパーミッション不足 | FTPで data/ を 755 に変更 |
Failed opening required 'lib/versioncheck.php' |
FTP転送が未完了でファイルが欠落している | 該当ファイルを再アップロード |
以下が正常な末尾の形。アップデート後はこの形になっているか確認する。
AddDefaultCharset utf-8
Options -Indexes
#### DO NOT CHANGE ANYTHING ABOVE THIS LINE ####
ErrorDocument 403 //index.php/error/403
ErrorDocument 404 //index.php/error/404