PHP 頁面在帶有 Apache 反向代理的 Nginx 上停止運作

PHP 頁面在帶有 Apache 反向代理的 Nginx 上停止運作

我為 Apache 設定了一個帶有反向代理的 Nginx 伺服器(如下教學)幾個月前。一切都運作得很好,nginx 部分以及 Apache 上的 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>

我懷疑這php7.4可能會導致問題,因為我運行 php8。我仔細檢查了伺服器上的 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首先進行了檢查。但由於一切似乎都有效,所以我現在就這樣吧。

相關內容