※当ウェブサイトにはプロモーションが含まれています ※当ウェブサイトに掲載されている引用された画像、動画等は各媒体の著作権に帰属します。

NextcloudをNGINXからApache2へ移行する際にハマったこと

今までUbuntuを使用してNGINX + php-fpmで各種サイトを運用していたのですが、
特に一部のWordPressプラグインとの相性が悪くApache2に移行しようと思い、
移行した後にNextcloudが不具合を起こしそれらを直すのに苦戦したので書き残します。

目次

何が起きたのか

まずNGINXからApache2に移行した際にドキュメントルートを変えたせいで、
それらに起因するエラーが発生していたのでconfig/config.phpを変更しました。

その後にログインをしてダッシュボードを開くとおすすめファイルがや天気予報がくるくる回りっぱなしだったので、
開発者コンソールを見てみるとAPIの通信で403エラーが発生していたようでした。

直すまでの試行錯誤

Apache2のerror.logを見てみると下記のようなエラーが記録されていました。

AH01071: Got error 'Access to the script 'redirect:/index.php/v1/heartbeat' has been denied (see security.limit_extensions)'
AH01071: Got error 'Access to the script 'redirect:/index.php/v2/notifications' has been denied (see security.limit_extensions)'

エラーの通りpool.d/www.confsecurity.limit_extensionsを確認したところ、
コメントアウトされていたので下記のように拡張子を制限しないよう設定すると…

security.limit_extensions = false
AH01071: Got error 'Unable to open primary script: redirect:/index.php/v1/heartbeat (No such file or directory)'
AH01071: Got error 'Unable to open primary script: redirect:/index.php/v2/notifications (No such file or directory)'

なぜかファイルがないような判定をされていたようでした。

ついに直った!

数時間探しているとcgi.fix_pathinfoが悪さをしているかもしれないという情報を手に入れ、
実際に下記のようにコメントアウトをしてみると…

;cgi.fix_pathinfo = 0

見事にダッシュボードのくるくる問題も改善しました!

何が原因だったのか

下記のPHPのリファレンスにも書いている通り、
PHP CGIのパスが正しく処理されないように設定したことが原因の様でした。

本来の PATH_INFO/PATH_TRANSLATED サポートをCGIで提供します。 PHPの以前の動作は、 SCRIPT_FILENAMEPATH_TRANSLATEDを設定するというもので、 PATH_INFOの定義を理解していませんんでした。 PATH_INFOに関する詳細については、CGIの仕様を参照ください。 このオプションを1にすることにより、 PHP CGIはこのパスを仕様にあうように修正します。 ゼロとすると、 PHPは以前と同様に動作します。これは、デフォルトでオンになっています。 PATH_TRANSLATEDではなく、SCRIPT_FILENAMEを使用するようにスクリプト を修正する必要があります。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

PCやプログラミング、アニメやゲームが好きな一般人です

コメント

コメントする


目次