Ich weiß nicht genau, warum, aber wenn ich versuche, den httpd-Dienst zu starten, wird er nicht gestartet.
Serverkonfiguration:
OS: CentOS 5.10
PHP: 5.5.7
Apache: 2.2.3
So habe ich herausgefunden, was los war:
$ sudo service httpd start
Starting httpd: [ OK ]
$ sudo service httpd status
httpd dead but subsys locked
Also habe ich die Subsys-Datei für httpd entfernt und es erneut versucht, aber es schlug wieder fehl.
Mein Vorgang zum Hinzufügen von fcgid war wie folgt:
Ich habe mod_fcgid aus dem Quellcode erstellt und es in das Verzeichnis /etc/httpd/modules gelegt.
Ich habe
LoadModule fcgid_module modules/mod_fcgid.so
der Liste der Module hinzugefügtIch habe es auskommentiert,
LoadModule cgi_module modules/mod_cgi.so
da ich es nicht brauche.Ich habe ein Wrapper-Skript für PHP erstellt und es in /var/www/cgi-bin platziert:
Ich habe einen Handler für PHP erstellt, der auf den Wrapper verweist.
Dann versuche ich den httpd-Dienst zu starten
Folgendes ist der Fehler, den ich in /var/log/httpd/error_log erhalte:
[Mon Dec 16 12:18:26 2013] [notice] SELinux policy enabled; httpd running as context user_u:system_r:httpd_t:s0
[Mon Dec 16 12:18:26 2013] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Mon Dec 16 12:18:26 2013] [notice] SSL FIPS mode disabled
[Mon Dec 16 12:18:26 2013] [notice] Digest: generating secret for digest authentication ...
[Mon Dec 16 12:18:26 2013] [notice] Digest: done
[Mon Dec 16 12:18:26 2013] [emerg] (17)File exists: mod_fcgid: Can't create shared memory for size 1200712 bytes
Ich sehe, dass dort „Datei wird beendet“ steht, aber ich habe überall nach zusätzlichen Dateien mit „fcgi“ im Namen gesucht und kann nichts finden.
Ich bin nicht sicher, ob es sich hier um ein Berechtigungsproblem handelt oder vielleicht etwas mit SELinux zu tun hat – oder vielleicht mit suEXEC?
Ich wäre für jeden Hinweis dankbar, da ich noch nicht einmal sicher bin, wo ich mit der Suche beginnen soll.
Ich habe es erneut versucht und diesmal war der Fehler etwas anders:
[Mon Dec 16 12:50:23 2013] [emerg] (13)Permission denied: mod_fcgid: Can't create shared memory for size 1200712 bytes
Ich bin nicht sicher, bei welchem Ordner oder welcher Datei ich den Eigentümer ändern muss.
Ich habe SELinux auf eingestellt permissive
und der Prozess konnte problemlos gestartet werden – aber ich möchte SELinux nicht so lassen. Ich stelle eine weitere Frage, wie man Apache, fcgid und PHP unter SELinux zusammenarbeiten lassen kann.
Antwort1
Versuchen Sie, es nur testweise SELinux
zu deaktivieren, und prüfen Sie, ob dies die Ursache Ihres Problems ist:
[alexus@XXXXXXXXXX ~]$ getenforce
Enforcing
[alexus@XXXXXXXXXX ~]$ sudo setenforce 0
[alexus@XXXXXXXXXX ~]$ getenforce
Permissive
[alexus@XXXXXXXXXX ~]$
Führen Sie es außerdem zufällig als Chroot aus? Ich hatte zu FreeBSD-Zeiten ein ähnliches Problem, aber das hing mit Jail/Chroot zusammen.