- Ubuntu 12.04
- Apache 2.2.22
- PHP 5.3.10 [läuft als libapache2-mod-fcgid]
[versuche, einen Entwicklungsserver mit meinem Webhost abzugleichen]
Ich habe es geschafft, fcgi mithilfe eines Wrappers zum Laufen zu bringen und habe die notwendigen Handler registriert, um .html-Dateien als PHP zu parsen. Jetzt versuche ich herauszufinden, warum meine Skripte nicht mit den php.ini-Dateien in jedem Verzeichnis laufen, wasBerichten zufolgedas Standardverhalten.
von phpinfo(), ausgeführt vonhttp://127.0.0.1/NEU/poop.html
Server API CGI/FastCGI
Virtual Directory Support disabled
Configuration File (php.ini) Path /etc/php5/cgi
Loaded Configuration File /var/www/johnny/public_html/php.ini
Scan this dir for additional .ini files /etc/php5/cgi/conf.d
es scheint, als würde es die Konfiguration aus [/etc/php5/cgi/php.ini] problemlos lesen, und auch aus dem Web-Root, das ich im Wrapper-Skript definieren musste, damit es die php.ini dort lesen kann
[/var/www/php-fcgi-scripts/johnny/php-fcgi-starter]
#!/bin/sh
PHPRC=/etc/php5/cgi/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/lib/cgi-bin/php -c /var/www/johnny/public_html
Ich habe mir zwei Web-Tutorials zunutze gemacht, um FastCGI + VirtualHost zum Laufen zu bringen, und habe Stück für Stück gelernt, wie das Ganze funktioniert. Hier ist mein VirtualHost-Setup:
[/etc/apache2/sites-available/johnny.conf]
<VirtualHost _default_:80>
ServerName johnny.10.128.0.2.xip.io
ServerAlias my.dev.server.public.IP
DocumentRoot /var/www/johnny/public_html/
<IfModule mod_fcgid.c>
SuexecUserGroup johnny johnny
<Directory /var/www/johnny/public_html/>
Options +ExecCGI -Indexes +FollowSymLinks +MultiViews
AllowOverride All
AddHandler fcgid-script .php .htm .html
FCGIWrapper /var/www/php-fcgi-scripts/johnny/php-fcgi-starter .php
FCGIWrapper /var/www/php-fcgi-scripts/johnny/php-fcgi-starter .htm
FCGIWrapper /var/www/php-fcgi-scripts/johnny/php-fcgi-starter .html
Order allow,deny
Allow from all
</Directory>
</IfModule>
ErrorLog /var/log/apache2/johnny-error.log
CustomLog /var/log/apache2/johnny-access.log combined
LogLevel warn
ServerSignature Off
</VirtualHost>
aber es wird nichts von [/var/www/johnny/public_html/NEW/php.ini] geladen
schau dir diesen Pastebin anum einen Blick auf alles zu werfen, was ich mit diesem Server gemacht habe ... Ich musste einige dieser Dinge nachträglich ändern, um die Fehlerbehebungen widerzuspiegeln, die ich später durchgeführt habe, also hoffe ich, dass ich nichts übersehen habe. Ich habe (noch) nicht versucht, diese Liste von Grund auf durchzugehen. Ich bin mir auch nicht sicher, ob es wichtige Zeilen zum Anhängen gibt, da ich heute eine Weile herumgetüftelt habe und hauptsächlich Dateien bearbeitet und dann wiederhergestellt habe.
Antwort1
Ich glaube, ich habe es herausgefunden.
Ich habe von vorne angefangen und jede Zeile meines Pastebins durchgearbeitet, wobei ich nur die notwendigen Teile für PHP als FastCGI verwendet habe, und genau untersucht, wie jedes kleine Stück funktioniert. Dann habe ich viele Dinge ausprobiert, die fehlgeschlagen sind, und dann gab es nur noch eine Sache, die ich ausprobieren konnte, und vielleicht ist dies nicht der „richtige Weg“, aber ...
Erstellen Sie einen neuen <Directory>
Block /etc/apache2/sites-available/johnny.conf
und kopieren Sie die Anweisungen, jedoch mit einigen Änderungen
<Directory /var/www/johnny/public_html/new>
Options +ExecCGI -Indexes +FollowSymLinks +MultiViews
AllowOverride All
AddHandler fcgid-script .php .htm .html
FCGIWrapper /var/www/php-fcgi-scripts/johnny/php-fcgi-starter_new .php
FCGIWrapper /var/www/php-fcgi-scripts/johnny/php-fcgi-starter_new .htm
FCGIWrapper /var/www/php-fcgi-scripts/johnny/php-fcgi-starter_new .html
Order allow,deny
Allow from all
</Directory>
Erstellen Sie dann ein separates FCGI-Starterskript/var/www/php-fcgi-scripts/johnny/php-fcgi-starter_new
#!/bin/sh
#PHPRC=/var/www/johnny/new
#export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/lib/cgi-bin/php -c /var/www/johnny/public_html/new
Ich habe festgestellt, dass das PHPRC=
in diesem Fall nicht funktioniert hat, aber der Parameter -c funktioniert! Das ist alles. Es ist ein PITA, aber für meine Zwecke funktioniert es gut genug.