CGI - Common Gateway Interface
Apache kann so konfiguriert werden, dass es den PHP-Interpreter als CGI-Programm aufruft. Dies bedeutet, dass die php-cgi-Binärdatei extern ausgeführt werden soll und das php-Skript von ihr ausgeführt werden soll und die Ausgabe an Apache zurückgegeben wird. Dies ist eine Möglichkeit, PHP mit Apache auszuführen. Andere Methoden sind Shared Module, Fastcgi usw. Lesen Sie meinen vorherigen Beitrag zu PHP-Server-APIs, um mehr über verschiedene Optionen zum Ausführen von PHP mit Apache zu erfahren.
Da PHP im CGI-Modus separat ausgeführt wird, ist es möglich, einen Apache-MPM-ähnlichen Worker mit Threads zu verwenden. In diesem Beitrag werden wir Apache und PHP gemeinsam über das CGI einrichten.
Pakete installieren
Die zur Installation erforderlichen Pakete umfassen Apache, mpm worker, php5, php cgi. Installieren Sie alle auf einmal mit dem Befehl apt-get
# sudo apt-get install apache2 apache2-mpm-worker php5 php5-cgi
Mod-Aktionen in Apache aktivieren.
$ sudo a2enmod actions
Wenn Sie bereits Apache und PHP mit mod php installiert hatten, müssen Sie zuerst mod php deaktivieren
$ sudo a2dismod php5
Apache konfigurieren
Konfigurieren Sie nun Apache so, dass PHP als CGI ausgeführt wird. Die Konfiguration erfolgt im relevanten vhost-Block.
Die Apache-Konfigurationsdateien für virtuelle Hosts befinden sich an folgendem Speicherort
/etc/apache2/sites-enabled/
Die Standard-vhost-Datei ist 000-default.conf, die auf den meisten Systemen vorhanden ist.
Einige notwendige Anweisungen müssen im rechten Verzeichnisblock in der Konfigurationsdatei hinzugefügt werden, die Apache anweisen, die php-cgi-Binärdatei zum Ausführen zu verwenden Dateien mit der Endung ".php".
Die Direktiven sind AddHandler, Action und ScriptAlias. Eine minimale Konfiguration sieht so aus
<Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all AddHandler cgi-handler .php Action cgi-handler /local-bin/php-cgi </Directory> ScriptAlias /local-bin /usr/bin
Die Zeile AddHandler deklariert einen Handler namens cgi-handler für .php-Dateien. Dieser kann beliebig benannt werden.
Die Aktionszeile weist Apache an, cgi-handler mit dem /local-bin/php-cgi-Programm auszuführen, das die php-cgi-Binärdatei ist. Nun, dieser Pfad ist kein echter.
Die ScriptAlias-Zeile ordnet /local-bin /usr/bin zu. Also der Pfad /local-bin/php-cgi wird zu /usr/bin/php-cgi das ist der tatsächliche Pfad der php-cgi-Binärdatei auf Ubuntu/Debian.
Jetzt Apache neu starten
# service apache2 restart
Legen Sie eine PHP-Datei mit phpinfo() im Webstammverzeichnis ab und öffnen Sie sie im Browser. Die Server-API muss als "CGI/FastCGI" gemeldet werden.