PHP 页面在 Nginx 上使用 Apache 反向代理时停止工作

PHP 页面在 Nginx 上使用 Apache 反向代理时停止工作

我为 Apache 设置了一个带反向代理的 Nginx 服务器(如下教程) 几个月前。一切运行良好,nginx 部分以及 Apache 上的 php 页面。

但是我需要使用 curl 来运行 php,因此我安装了 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首先就进行了检查。但由于一切似乎都正常,所以我暂时就使用它。

相关内容