Сегодня в ТП HF обратился клиент с вопросом в каком виде у нас стоит PHP, в виде модуля Apache или FastCGI.
Ответил естественно что FastCGI, но т.к. было не рабочее время поинтересовался зачем ему эти данные. Оказалось DLE требует для расширенной авторизации PHP в виде модуля.
И под конец из-за того что делать было нечего я решил скачать DLE и посмотреть зачем же ему PHP нужен в виде модуля.
Оказалось, расширенная авторизация в DLE подразумевает HTTP авторизацию и да ключей PHP_AUTH_USER и PHP_AUTH_PW в массиве $_SERVER нет когда PHP в виде FastCGI.
Но, их можно спокойно вернуть, если даже и PHP в виде FastCGI.
А точнее, в файле ./engine/inc/include/init.php найти:
if( $config['extra_login'] ) {
Добавить после:
if (php_sapi_name() != 'apache') {
if(isset($_SERVER['Authorization'])) {
list($hf_auth_type, $hf_auth_data) = preg_split("/[\s,]+/", $_SERVER['Authorization']);
list($_hf_login, $_hf_pass) = preg_split("/:/", base64_decode($hf_auth_data));
$_SERVER['PHP_AUTH_USER'] = $_hf_login;
$_SERVER['PHP_AUTH_PW'] = $_hf_pass;
unset($hf_auth_type, $hf_auth_data, $_hf_login, $_hf_pass);
}
}
И вуаля, расширенная авторитизация работает даже когда PHP в виде FastCGI.
Встает вопрос, за что же я плачу при покупке DLE?
За недоработанную CMS?