Nun habe ich aber eine Applikation, die ich gern durch einen
gesonderten User ausführen lassen möchte. Ich habe mir also eine
Ausnahme geschaffen:
<Directory /usr/share/foo>
Options +FollowSymLinks
AllowOverride All
order allow,deny
allow from all
Action php-cgi /cgi-bin/php4
AddHandler php-cgi php
</Directory>
Das funktioniert soweit auch. Unter /usr/share/foo liegende Skripte
werden durch den CGI-Interpreter ausgeführt, wunderbar. Ich würde nun
gern dafür sorgen, daß dieser einige Optionen anders setzt, als in der
systemweiten php.ini (bei Debian /etc/php4/cgi/php.ini) festgelegt
ist. (Es handelt sich dabei um Optionen, die nicht per ini_set()
schreibbar sind.)
Grundsätzlich gäbe es da wohl mehrere Möglichkeiten:
(1) Eigene php.ini im current working directory
(2) Optionen auf der Kommandozeile setzen
(3) Mittels Kommandozeile auf eigene php.ini verweisen
(4) Durch Setzen von PHPRC auf eigene php.ini verweisen
1. fällt wohl leider aus, da das working directory vom Apachen auf
/usr/lib/cgi-bin gesetzt wird. (php4 wechselt nach dem Start dann in
das Verzeichnis, in dem das Skript liegt) Es sei denn, ich kann ihm
das abgewöhnen.
2. und 3. habe ich bisher nicht hinbekommen, weil PHP4 offenbar
versucht, sein eigenes Binary auszuführen[1], wenn das
Action-Statement in der Form
Actions php-cgi /cgi-bin/php4?-option
abwandle.
4. Setzen von
SetEnv PHPRC /usr/share/foo/php.ini
bewirkte nur, daß die Variable, entweder durch Apache oder durch PHP,
in REDIRECT_PHPRC umbenannt wurde und daher immer noch
/etc/php4/cgi/php.ini gelesen wurde.
Gibt es vielleicht eine (durch Apache setzbare) Umgebungsvariable, die
festlegt, woher php4 sein php.ini nehmen soll?
Für die eine Applikation einen eigenen PHP-Interpreter zu bauen, ist
ausgeschlossen. Auch würde ich gern ohne irgendwelche Wrapper-Skripte
auskommen.
-Hilko
[1] Fehlermeldung: Warning: Unexpected character in input: ''
(ASCII=15) state=1 in /usr/lib/cgi-bin/php4 on line 2753
Parse error: parse error in /usr/lib/cgi-bin/php4 on line 2753
> 4. Setzen von
>
> SetEnv PHPRC /usr/share/foo/php.ini
>
> bewirkte nur, daß die Variable, entweder durch Apache oder durch PHP,
> in REDIRECT_PHPRC umbenannt wurde und daher immer noch
> /etc/php4/cgi/php.ini gelesen wurde.
So aus dem Bauch heraus:
<Directory /usr/lib/cgi-bin>
RewriteEngine On
RewriteCond %{ENV:REDIRECT_PHPRC} (.+)
RewriteRule ^ - [E=PHPRC:%1]
</Directory>
nd
--
Gefunden auf einer "Webdesigner"-Seite:
> Programmierung in HTML, XML, WML, CGI, FLASH <
# André Malo # http://www.perlig.de/ #
> * Hilko Bengen <ben...@hilluzination.de> wrote:
>
>> 4. Setzen von
>>
>> SetEnv PHPRC /usr/share/foo/php.ini
>>
>> bewirkte nur, daß die Variable, entweder durch Apache oder durch PHP,
>> in REDIRECT_PHPRC umbenannt wurde und daher immer noch
>> /etc/php4/cgi/php.ini gelesen wurde.
>
> So aus dem Bauch heraus:
>
> <Directory /usr/lib/cgi-bin>
> RewriteEngine On
> RewriteCond %{ENV:REDIRECT_PHPRC} (.+)
> RewriteRule ^ - [E=PHPRC:%1]
> </Directory>
Ja, das scheint funktioniert zu haben. Vielen Dank!
Rücksprache mit den Entwicklern ergab allerdings, daß man das Programm
nach zwei kleinen Modifikationen auch gut mit der Standard-php.ini des
Debian-Pakets benutzen kann und daß daher eine custom php.ini unnötig
war.