私はApache用のリバースプロキシを備えたNginxサーバーをセットアップしました(これに従ってチュートリアル) 数か月前にインストールしました。 Apache 上の nginx 部分も PHP ページもすべて正常に動作しています。
しかし、私はphpにcurlを使う必要があったので、php-curlパッケージをインストールしました。
sudo apt install php-curl
それ以来、すべての PHP ページで「500 内部サーバー エラー」のみが発生します。nginx ページと HTML ページは引き続き正常に動作します。
原因をどうやって見つければいいのかわかりません。パッケージを再度アンインストールして、サービスを再起動しましたsudo systemctl reload apache2
(アクティブでsudo systemctl status apache2
エラーは表示されません)
ただし、これはエラー ログ ( /var/log/apache2/error.log
) に記録されます。
[fastcgi:error] [pid 9587:tid 140151397275200] (2)No such file or directory: [client xxx.xxx.xxx.xxx:49342] FastCGI: failed to connect to server "/usr/lib/cgi-bin/php-fcgi": connect() failed
[fastcgi:error] [pid 9587:tid 140151397275200] [client xxx.xxx.xxx.xxx:49342] FastCGI: incomplete headers (0 bytes) received from server "/usr/lib/cgi-bin/php-fcgi"
PS: 関係があるかどうかはわかりませんが、Ubuntu 21.10 でサーバーをセットアップし、動作しなくなる直前に 22.10 にアップデートしました。アップデート後も間違いなく動作していましたが、アップデート中にサービスが再起動されず、php-curl のインストールによって再起動がトリガーされた可能性があります。
答え1
問題はファイルにあり/etc/apache2/mods-enabled/fastcgi.conf
、次のようなものでした:
<IfModule mod_fastcgi.c>
AddHandler fastcgi-script .fcgi
FastCgiIpcDir /var/lib/apache2/fastcgi
AddType application/x-httpd-fastphp .php
Action application/x-httpd-fastphp /php-fcgi
Alias /php-fcgi /usr/lib/cgi-bin/php-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php-fcgi -socket /run/php/php7.4-fpm.sock -pass-header Authorization
<Directory /usr/lib/cgi-bin>
Require all granted
</Directory>
</IfModule>
私は php8 を実行しているため、 が問題を引き起こすのではないかと疑いましたphp7.4
。サーバー上の php バージョンを ( でphp --version
) 再確認し、それに応じてそれぞれの行を変更しました。
FastCgiExternalServer /usr/lib/cgi-bin/php-fcgi -socket /run/php/php8.1-fpm.sock -pass-header Authorization
その後、Apache ( sudo systemctl status apache2.service
) を再起動すると、再び動作するようになりました。
Alias
フォルダが/usr/lib/cgi-bin/php-fcgi
存在しない(/usr/lib/cgi-bin
実際には空)というのは、私にとっては依然としてイライラするものです。私はそれが私の問題かもしれないと疑っていました(Apache に PHP-FPM をインストールできません (FastCGI サーバーに接続できませんでした)) で、fastcgi.conf
最初にチェックを行いました。しかし、すべてが機能しているようなので、今のところはこれで進めます。