Fcgi-php

Aus Wiki

Wechseln zu: Navigation, Suche

Da mod_suphp unter apache 2.2 nicht zum laufen bekommen zu war, habe ich meinem Webserver endlich mal php mittels fcgid beigebracht. Dadurch ergeben sich auch erheblich flexieblere Möglichkeiten, den PHP Interpreter für verschiedene VHOST Sections oder gar Verzeichnisse einzurichten. Da irgendwie die ganze einstellungssache nicht ganz trivial war und mich nen Tag bastelei gekostet hat, Führe ich hier mal auf, was zu tun ist, dass es läuft.

Legen wir also mal los.

zunächst einmal brauchen wir einmal ein Paar pakete

apache 
mod_fcgid >= 2.2
php

in der httpd.conf muss nun folgendes stehen.

LoadModule fcgid_module         modules/mod_fcgid.so
AddType application/x-httpd-php .php
SocketPath /var/run/fcgid.sock
SharememPath /var/run/fcgid_shm
SocketPath /tmp
IPCCommTimeout 120
IPCConnectTimeout 60
DefaultMaxClassProcessCount 5
PHP_Fix_Pathinfo_Enable 1
ProcessLifeTime 36000
IdleTimeout 3600
SpawnScoreUpLimit 30
SpawnScore 1
TerminationScore 1
AddHandler fcgid-script .fcg

PassHeader Authorization

Am wichtigsten ist hier vor allem der "PassHeader". Ohne ihn ist http-auth bei PHP scripten nicht möglich!

zusätzlich muss in den vhost section folgendes stehen

<directory /home/manuel/www/htdocs/>
   AddHandler fcgid-script .php
   FCGIWrapper "/home/manuel/.intern/fcgi" .php
   Options +ExecCGI
</Directory>

Außerdem brauchen wir noch ein kleines Script, dass schließlich den php Interpreter aufruft. da können auch jeweils individuelle PHP Optionen angegeben werden. z.B eine andere php.ini

#!/bin/sh
PHPRC="/etc/php/cgi-php5"
export PHPRC
PHP_FCGI_CHILDREN=2
export PHP_FCGI_CHILDREN
exec /usr/bin/php-cgi

Dieses Script liegt bei mir in "/home/manuel/.intern/fcgi". Es wird in der httpd.conf mit der Zeile FCGIWapper angegeben.


Bedanken möchte ich mich hier auch bei Kevin, der mir einiges dabei geholfen hat.

Persönliche Werkzeuge