Üdv!
Windowson frissítettem a ma kijött php 5.3.0-ra, és azt tapasztaltam, hogy az installerben* nincs modul apache-hoz. Ezért úgy döntöttem, bekonfigurálom a php-t cgi-nek, nem lehet ez olyan nehéz. Nagy nehezen sikerült eljutni addig, hogy a ScriptAlias-szal beállított pathon elhelyezett php fileokat átadja az apache a php-nak. Azonban azt már sehogy nem sikerül elérnem, hogy a DocumentRoot-on elhelyezett php-k is lefussanak. Röviden tehát ez lenne a probléma.
*: a zipben valószínűleg van. De most már sokkal inkább azért teszem fel a kérdést, mert a probléma elvi megoldása érdekel. Vonatkoztassunk el a php-től.
Mindez config-ban:
Maga a cgi beállítása a következő módon történt:
Először beállítottam egy ScriptAlias-t:
<IfModule alias_module>
ScriptAlias /cgi-php/ "D:/Program Files/PHP/"
</IfModule>
Majd a D:/Program Files/PHP jogosultságait:
<Directory "D:/Program Files/PHP">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
Ezután hozzárendeltem a php kiterjesztést egy "változóhoz":
<IfModule mime_module>
#itt van meg 2 beállítás, ezeket nem másolom be, nem releváns
AddHandler php-cgi .php
</IfModule>
Majd a változóhoz hozzárendeltem egy Action-t, hogy hívja meg a php-cgi.exe-t:
Action php-cgi "/cgi-php/php-cgi.exe"
Eddig rendben is van, a D:\Program Files\PHP alá helyezett .php fileok a http://localhost/cgi-php/*.php módon meghívva szépen le is futnak.
Most jött az, hogy más könyvtár alól is meg akarok hívni .php fileokat, konkrétan a DocumentRoot alól:
DocumentRoot "E:/localhost"
<Directory "E:/localhost">
Options Indexes FollowSymLinks +ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AddHandler php-cgi .php
</Directory>
Ami ebből érdekes, az a +ExecCGI és az AddHandler php-cgi .php. A php-cgi változót használtam a D:/Program Files/PHP esetében is, ezért a logikám azt diktálja, hogy ugyan úgy meg fog hívódni a fenti Action. Az aliasnak pedig _szerintem_ ugyan úgy ki kellene értékelődnie ebben az esetben is. De nem így történeik. Ha viszont az Action sorban a php-cgi.exe-t abszolút url-lel adom meg, akkor nem működik egyáltalán.
Tehát a kérdés az, hogy mit kellene beállítanom, hogy a DocumentRoot-ban elhelyezett .php-k is átadódjanak a php-cgi.exe-nek?
(Egy apró kikötés van: nem szeretnék a php scriptek elejére shebangot rakni.)
- 1016 megtekintés
Hozzászólások
Most már tényleg semmit nem értek, kicsit belepiszkáltam a beállításokba, és most működik.
Először kiszedtem az E:/localhost rész alól a +ExecCGI és AddHandler php-cgi .php sorokat. Majd a /cgi-php/-eket /-ekre cseréltem, megnéztem, hogy így is működik-e aminek ebben az esetben működnie kell. Miután megállapítottam, hogy igen, visszaírtam a /-eket /cgi-php/-ekre, és most érdekes módon a DocumentRoot alatti scriptek is szépen lefutnak. Miközben nincs +ExecCGI. Nem tudom, hogy ez hogy működhet, de egyelőre nem fogok hozzányúlni, az biztos. :)
- A hozzászóláshoz be kell jelentkezni