Nginx Installation · 5 min read · Jan 31, 2026
Installation von Nginx mit PHP5 (und PHP-FPM) und MySQL-Unterstützung auf CentOS 6.2 - Seite 2
5 Installation von PHP5
Wir können PHP5 in nginx über PHP-FPM zum Laufen bringen (PHP-FPM (FastCGI Process Manager) ist eine alternative PHP FastCGI-Implementierung mit einigen zusätzlichen Funktionen, die für Websites jeder Größe nützlich sind, insbesondere für beschäftigte Websites). Wir können php-fpm zusammen mit php-cli und einigen PHP5-Modulen wie php-mysql installieren, die Sie benötigen, wenn Sie MySQL aus Ihren PHP-Skripten verwenden möchten:
yum install php-fpm php-cli php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-eaccelerator php-magickwand php-magpierss php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidyDann öffnen Sie /etc/php.ini und setzen cgi.fix_pathinfo=0:
vi /etc/php.ini| [...] ; cgi.fix_pathinfo bietet *echte* PATH_INFO/PATH_TRANSLATED-Unterstützung für CGI. PHP's ; vorheriges Verhalten war es, PATH_TRANSLATED auf SCRIPT_FILENAME zu setzen und nicht zu verstehen, ; was PATH_INFO ist. Für weitere Informationen zu PATH_INFO siehe die cgi-Spezifikationen. Das Setzen ; dieses Wertes auf 1 bewirkt, dass PHP CGI seine Pfade an die Spezifikation anpasst. Ein Wert ; von null bewirkt, dass PHP sich wie zuvor verhält. Standard ist 1. Sie sollten Ihre Skripte ; so anpassen, dass sie SCRIPT_FILENAME anstelle von PATH_TRANSLATED verwenden. ; http://www.php.net/manual/en/ini.core.php#ini.cgi.fix-pathinfo cgi.fix_pathinfo=0 [...] |
(Bitte lesen Sie http://wiki.nginx.org/Pitfalls, um herauszufinden, warum Sie dies tun sollten.)
Zusätzlich, um Fehler wie
[08-Aug-2011 18:07:08] PHP Warning: phpinfo(): Es ist nicht sicher, sich auf die Zeitzoneneinstellungen des Systems zu verlassen. Sie sind *verpflichtet*, die Einstellung date.timezone oder die Funktion date_default_timezone_set() zu verwenden. Falls Sie eine dieser Methoden verwendet haben und immer noch diese Warnung erhalten, haben Sie wahrscheinlich den Zeitzonenbezeichner falsch geschrieben. Wir haben 'Europe/Berlin' für 'CEST/2.0/DST' anstelle in /usr/share/nginx/html/info.php in Zeile 2 ausgewählt… in /var/log/php-fpm/www-error.log, wenn Sie ein PHP-Skript in Ihrem Browser aufrufen, sollten Sie date.timezone in /etc/php.ini setzen:
| [...] [Date] ; Definiert die Standardzeitzone, die von den Datumsfunktionen verwendet wird ; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone date.timezone = "Europe/Berlin" [...] |
Sie können die korrekte Zeitzone für Ihr System herausfinden, indem Sie Folgendes ausführen:
cat /etc/sysconfig/clock[root@server1 nginx]# cat /etc/sysconfig/clock
ZONE="Europe/Berlin"
[root@server1 nginx]#Als nächstes erstellen Sie die Systemstartlinks für php-fpm und starten Sie es:
chkconfig --levels 235 php-fpm on
/etc/init.d/php-fpm startPHP-FPM ist ein Daemon-Prozess (mit dem Init-Skript /etc/init.d/php-fpm), der einen FastCGI-Server auf Port 9000 ausführt.
6 Konfiguration von nginx
Die nginx-Konfiguration befindet sich in /etc/nginx/nginx.conf, die wir jetzt öffnen:
vi /etc/nginx/nginx.confDie Konfiguration ist leicht zu verstehen (Sie können hier mehr darüber erfahren: http://wiki.codemongers.com/NginxFullExample und hier: http://wiki.codemongers.com/NginxFullExample2)
Zuerst (das ist optional) können Sie die Anzahl der Worker-Prozesse erhöhen und den keepalive_timeout auf einen angemessenen Wert setzen:
| [...] worker_processes 4; [...] keepalive_timeout 2; [...] |
Die virtuellen Hosts sind in server {} Containern definiert. Lassen Sie uns den Standard-vhost (auch in /etc/nginx/nginx.conf) wie folgt ändern:
| [...] server { listen 80; server_name _; #charset koi8-r; #access_log logs/host.access.log main; location / { root /usr/share/nginx/html; index index.php index.html index.htm; } error_page 404 /404.html; location = /404.html { root /usr/share/nginx/html; } # leiten Sie Serverfehlerseiten zur statischen Seite /50x.html um # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # leiten Sie die PHP-Skripte an Apache weiter, das auf 127.0.0.1:80 hört # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # leiten Sie die PHP-Skripte an den FastCGI-Server weiter, der auf 127.0.0.1:9000 hört # location ~ \.php$ { try_files $uri =404; root /usr/share/nginx/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # verweigern Sie den Zugriff auf .htaccess-Dateien, wenn das Dokumentenverzeichnis von Apache # mit dem von nginx übereinstimmt # location ~ /\.ht { deny all; } } [...] |
servername ; macht dies zu einem Standard-Catchall-vhost (natürlich können Sie hier auch einen Hostnamen wie www.example.com angeben).
Im location / Teil habe ich index.php zur Indexzeile hinzugefügt. root /usr/share/nginx/html; bedeutet, dass das Dokumentenverzeichnis das Verzeichnis /usr/share/nginx/html ist.
Der wichtige Teil für PHP ist die location ~ .php$ {} Stanza. Kommentieren Sie es aus, um es zu aktivieren. Ändern Sie die root-Zeile auf das Dokumentenverzeichnis der Website (z. B. root /usr/share/nginx/html;). Bitte stellen Sie sicher, dass Sie die fastcgi_param-Zeile in fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; ändern, da der PHP-Interpreter sonst das PHP-Skript, das Sie in Ihrem Browser aufrufen, nicht finden kann ( $document_root wird in /usr/share/nginx/html übersetzt, da wir dies als unser Dokumentenverzeichnis festgelegt haben).
PHP-FPM hört standardmäßig auf Port 9000 auf 127.0.0.1, daher sagen wir nginx, dass es sich mit 127.0.0.1:9000 verbinden soll, mit der Zeile fastcgi_pass 127.0.0.1:9000;. Es ist auch möglich, PHP-FPM einen Unix-Socket verwenden zu lassen - ich werde dies in Kapitel 7 beschreiben.
Jetzt speichern Sie die Datei und laden nginx neu:
/etc/init.d/nginx reloadJetzt erstellen Sie die folgende PHP-Datei im Dokumentenverzeichnis /usr/share/nginx/html…
vi /usr/share/nginx/html/info.php| |
Jetzt rufen wir diese Datei in einem Browser auf (z. B. http://192.168.0.100/info.php):

Wie Sie sehen, funktioniert PHP5, und es funktioniert über FPM/FastCGI, wie in der Server-API-Zeile gezeigt. Wenn Sie weiter nach unten scrollen, sehen Sie alle Module, die bereits in PHP5 aktiviert sind, einschließlich des MySQL-Moduls:

7 PHP-FPM dazu bringen, einen Unix-Socket zu verwenden
Standardmäßig hört PHP-FPM auf Port 9000 auf 127.0.0.1. Es ist auch möglich, PHP-FPM einen Unix-Socket verwenden zu lassen, was den TCP-Overhead vermeidet. Um dies zu tun, öffnen Sie /etc/php-fpm.d/www.conf…
vi /etc/php-fpm.d/www.conf… und lassen Sie die listen-Zeile wie folgt aussehen:
| [...] ;listen = 127.0.0.1:9000 listen = /tmp/php5-fpm.sock [...] |
Dann starten Sie PHP-FPM neu:
/etc/init.d/php-fpm restartGehen Sie als nächstes durch Ihre nginx-Konfiguration und alle Ihre vhosts und ändern Sie die Zeile fastcgi_pass 127.0.0.1:9000; in fastcgi_pass unix:/tmp/php5-fpm.sock;, z. B. so:
vi /etc/nginx/nginx.conf| [...] location ~ \.php$ { try_files $uri =404; root /usr/share/nginx/html; fastcgi_pass unix:/tmp/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } [...] |
Laden Sie schließlich nginx neu:
/etc/init.d/nginx reload8 Links
- nginx: http://nginx.org/
- nginx Wiki: http://wiki.nginx.org/
- PHP: http://www.php.net/
- PHP-FPM: http://php-fpm.org/
- MySQL: http://www.mysql.com/
- CentOS: http://www.centos.org/
Über den Autor
Falko Timme ist der Eigentümer von Timme Hosting (ultra-schnelles nginx-Webhosting). Er ist der Hauptbetreuer von HowtoForge (seit 2005) und einer der Hauptentwickler von ISPConfig (seit 2000). Er hat auch zum O’Reilly-Buch “Linux System Administration” beigetragen.
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.