W prostym manualu o PHP mozemy wyczytac:
http://my.host/cgi-bin/php/secret/doc.html
Część URL po nazwie programu PHP ( /secret/doc.html ) to popularny sposób na określenie nazwy
pliku który ma być otwarty i interpretowany przez program CGI (PHP). Zwykle dyrektywy konfiguracyjne
niektórych web serwerów (Apache: Action) są używane do przekierowania żądań do określonych
dokumentów, np. http://my.host/secret/script.php na interpreter PHP. Przy takiej konfiguracji
web server najpierw sprawdza prawa dostępu do katalogu /secret, a potem tworzy przekierowanie
na http://my.host/cgi-bin/php/secret/script.php. Ale jeśli żądanie zawiera adres dokładnie do
http://my.host/cgi-bin/php/secret/script.php nie są sprawdzane prawa dostępu dla pliku
/secret/script.php, ale tylko do pliku /cgi-bin/php. W ten sposób jakikolwiek użytkownik mający dostęp
do /cgi-bin/php ma również dostęp do dokumentów zabezpieczonych na web serverze.
Mam skonfigurowane PHP jako skrypt CGI w nastepujacy sposob:
- w php.ini :
cgi.force_redirect = 0
doc_root = ; nic
reszta to standardowe ustawienia. - w httpd.conf :
ServerRoot "D:/Programy/Apache Group/Apache2"
ServerName 127.0.0.1
DocumentRoot "D:/Programy/Apache Group/Apache2/htdocs"
Action php-script "/cgi-bin/php"
AddHandler php-script .php
ScriptAlias /php/ "e:/php/"
AddType application/x-httpd-php .php .php3 .htm .phtml
Action application/x-httpd-php "/php/php.exe"
reszta to standard !!
Zgodnie z manualami ktore przeczytalem powinno to byc wystarczajace do prawidlowego dzialania
PHP na apache jako CGI!!
Problem jest jednak taki:
istnieje plik o takiej sciezce :
D:/Programy/Apache Group/Apache2/cgi-bin/php/as/a.php
chce go w dwojaki sposob odpalic w IE (zgodnie z manualem) :
- localhost/as/a.php - wtedy powinnien pojawic sie wpis w access.log
- localhost/cgi-bin/php/as/a.php - teraz nie powinien pojawic sie wpis w access.log
czyli dokladnie tak jak napisane jest w manualach (dlatego wylaczylem cgi.force_redirect = 0 i nie
ustawilem doc_root !!!!).
Ale to nie dziala !!!!
W error.log w zaleznosci od roznych zmian w powyzszych konfiguracjach mam np. :
przy 1. rodzaju wywolania :
[Thu Jul 17 1851 2003] [error] [client 127.0.0.1] File does not exist: D:/Programy/Apache Group/Apache2/htdocs/as
przy 2. rodzaju wywolania :
[Thu Jul 17 1847 2003] [error] [client 127.0.0.1] script not found or unable to stat: D:/Programy/Apache Group/Apache2/cgi-bin/php/cgi-bin
Czy ktos wie jak to odpowiednio skonfigurowac ??!! Zeby dzialalo jak trzeba ??!! Wszystkie pliki istnieja
i znajduja sie we wlasciwych katalogach - po prostu mi juz rece opadaja bo ni jak nie moge zrobic
zeby dzialalo zgodnie z tym co napisane jest w manualu !!