PHP-страницы перестали работать на Nginx с обратным прокси для Apache

PHP-страницы перестали работать на Nginx с обратным прокси для Apache

Я настроил сервер Nginx с обратным прокси для Apache (следуя этомуруководство) несколько месяцев назад. Все работает отлично, часть nginx, а также страницы php на Apache.

Но мне нужно было использовать curl для php и поэтому я установил пакет php-curl с

sudo apt install php-curl

С тех пор я получаю только "500 Internal Server Error" для всех php-страниц. Страницы 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на самом деле пустая). Я подозревал, что это может быть моей проблемой (см.Невозможно установить PHP-FPM на Apache (не удалось подключиться к серверу FastCGI)), что заставило проверить fastcgi.confв первую очередь. Но поскольку все, кажется, работает, я просто пойду с этим пока.

Связанный контент