Решение для прекрасного скрипта phpMyID (http://siege.org/projects/phpMyID), который позволяет создать OpenID сервер для стендалона.
Проблема, возникающая при запуске на сервере Apache, работающем в Safe Mode, описана в README к скрипту: сервер дописывает к Realm какое-то число (например, MyID-10580), и залогиниться на OpenID сервер не получается:
4) If your «Realm» is anything other than the string ‘phpMyID’ (like say, if it has a number after it) then make note of the value. This means that PHP is running in «safe mode,» and while I disagree with the reason *why* PHP changes the realm, there’s nothing I can do about it.
4) Если ваш «Realm » отличается от ‘phpMyID’ (обычно добавляется какое-то число через дефис), придётся внести изменения. Это означает, что PHP работает в «Safe Mode» (безопасном режиме), и хотя я не согласен с причиной, почему PHP это делает, изменить это невозможно.
Изменение в конфигурационном файле названия сервера на MyID-10580 ничего не решает: сервер дописывает это же число ещё раз: MyID-10580-10580. Проблема аутентификации между тем проста: при получении хеша пароля нужно использовать Realm, данный сервером.
Решение
- Открыть конфигурационный файл http://ваш-сервер.ru/MyID.config.php;
- Откопировать увиденный там Realm;
- Использовать его при получении хеша пароля.
Самый простой способ получение md5 для phpMyID — создать файл test.php со строкой, указанной ниже, загрузить его на сервер и запустить.
<?php
echo md5(«user: MyID-10580:pass»);
?>
Всё.