Apache/CGI

Ralph

Дикий столяр
Apache/CGI

Добрый день... Вот перешел на новый хостинг,где в характеристиках белым по красному написано:"php как cgi" и задумался.Раньше для меня пхп был просто пхп и различался только версией- 4-я или 5-я... Прочел вот тут и тут.Кроме этого где то читал,что при php как cgi кроме заголовка "HTTP/1.1 200 OK" нужно дополнительно отсылать еще "Status: 200 OK".

-~{}~ 24.11.07 17:48:

Недавно перечитывал мануал по ini-set и нашел,что при пхп как cgi в htaccess нельзя использовать php_value и php_flag .А я то думал,что это на предыдущем хостинге все директивы разрешены,а такие простые не работали.И наверняка есть еще какие нибудь нюансы,разбросанные по разным местам,к примеру переменные окружения или что то еще.Может кто то знает еще какие нибудь тонкости и может поделиться ?
 

MiksIr

miksir@home:~$
Вариантов установки php как cgi много. Во всех случаях не работают php* в .htaccess и директивы php касательно апача (что мало кто использует). В самой тупой установке так же нужно выдавать Status: код ВМЕСТО HTTP/1.1 код и не работает HTTP авторизация. Существуют способы установки, которые устраняют последние два недостатка - нужно проверять, что да как у вас на хостинге.
Вроде, нет больше принципиальной разницы....
 

fixxxer

К.О.
Партнер клуба
>не работает HTTP авторизация
"из коробки" не работает, но легким движением руки через Rewrite можно достичь желаемого :)
 

Ralph

Дикий столяр
Спасибо... Я почему то думал,что отличий гораздо больше,даже блокнотик собрался под них заводить :) Разве что разница в какой нибудь переменной окружения когда нибудь выплывет...
 

MiksIr

miksir@home:~$
М... давайте тогда уж пример в студию ;) И не мешает ли этому движению руки то, что непатченный suexec режет соответствующие заголовки.
 

fixxxer

К.О.
Партнер клуба
я это делал года три назад, решение нашлось в гугле за минуту, смысл в том что в env пропихивается переменная с base64-строкой авторизации и уже в скрипте ее разворачиваем

непатченый suexec много чего нужного режет, тот же geoip
я его всегда менял на свой где оставлял все что начинается с HTTP
 

MiksIr

miksir@home:~$
А, нашел, да, сразу о чем-то таком и подумал - запихивать Авторизейшн переменную окружения в HTTP_Авторизейшн.

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]

и раскодировка в ПХП

list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':' , base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));

Может пригодица топикстартеру ;)
 
Сверху