Ich habe einen Nginx-Server mit Reverse-Proxy für Apache eingerichtet (im Anschluss daranLernprogramm) vor einigen Monaten. Alles funktioniert großartig, der Nginx-Teil sowie die PHP-Seiten auf Apache.
Aber ich musste curl für php verwenden und deshalb installierte ich das php-curl-Paket mit
sudo apt install php-curl
Seitdem erhalte ich für alle PHP-Seiten nur noch die Meldung „500 Internal Server Error“. Die Nginx- und HTML-Seiten funktionieren immer noch einwandfrei.
Ich bin nicht sicher, wie ich den Schuldigen dafür finden kann. Ich habe versucht, das Paket erneut zu deinstallieren und den Dienst neu zu starten sudo systemctl reload apache2
(er ist aktiv und sudo systemctl status apache2
zeigt keinen Fehler an).
Dies steht jedoch in den Fehlerprotokollen ( /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: Ich bin mir nicht sicher, ob das relevant ist, aber ich habe den Server auf Ubuntu 21.10 eingerichtet und kurz bevor er nicht mehr funktionierte auf 22.10 aktualisiert. Nach dem Update funktionierte er definitiv noch, aber vielleicht wurden die Dienste während des Updates nicht neu gestartet und die Installation von php-curl hat einen Neustart ausgelöst?
Antwort1
Das Problem lag in der Datei /etc/apache2/mods-enabled/fastcgi.conf
, die für mich folgendermaßen aussah:
<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>
Da ich php8 verwende , vermutete ich, dass dies php7.4
Probleme verursachen könnte. Ich habe die PHP-Version auf dem Server (mit ) noch einmal überprüft php --version
und die entsprechende Zeile entsprechend geändert:
FastCgiExternalServer /usr/lib/cgi-bin/php-fcgi -socket /run/php/php8.1-fpm.sock -pass-header Authorization
Ich habe dann Apache ( sudo systemctl status apache2.service
) neu gestartet und jetzt scheint es wieder zu funktionieren.
Es ärgert mich immer noch, dass der Alias
Ordner /usr/lib/cgi-bin/php-fcgi
nicht existiert ( /usr/lib/cgi-bin
er ist tatsächlich leer). Ich vermutete, dass das mein Problem sein könnte (siehePHP-FPM kann auf Apache nicht installiert werden (Verbindung zum FastCGI-Server fehlgeschlagen)fastcgi.conf
), was zunächst geprüft wurde . Aber da alles zu funktionieren scheint, werde ich es vorerst einfach so belassen.