Да, мы делаем это здесь, и я не могу этого вынести. Одна из проблем, с которыми мы сталкиваемся здесь, - если есть проблема с базой данных (подключение, повреждение и т. Д.), Все журналы прекращаются. Моя другая большая проблема с этим состоит в том, что трудно проследить, чтобы отследить проблемы. У нас также есть проблемы с тем, что журналы таблиц занимают слишком много места, и нам приходится беспокоиться об их усечении, когда мы перемещаем базы данных, потому что наши журналы очень большие.
Я думаю, что это неуклюжий по сравнению с файлами журналов. Мне трудно увидеть «большую картину», хранящуюся в базе данных. Я признаю, что я человек из файла журнала, мне нравится возможность открывать текстовый файл и просматривать его (regex) вместо использования sql для поиска чего-либо.
В последний раз, когда я работал, у нас были файлы журнала на 100 мегабайт плюс. Их немного сложно открыть, но если у вас есть правильный инструмент, это не так уж плохо. У нас была система для записи сообщений тоже. Вы можете быстро просмотреть файл и определить, какой набор записей журнала принадлежит какому процессу.
Хорошо, я наконец-то исправил библиотеку ... Я объяснил все здесь (вы также можете скачать библиотеку php-openid после моих изменений).
Мне нужно было сделать то, что предложил Пол Тарджан, но также мне нужно было изменить Auth_OpenID_detectMathLibrary
и добавьте ключевое слово static
во многие функции. После этого, похоже, все работает отлично, хотя это не идеальное решение ... Я думаю, что кто-то должен переписать всю библиотеку на PHP 5 ...
Эта библиотека должна работать с Yahoo и Google в порядке. Вы можете увидеть онлайн-демонстрацию для этой библиотеки и попробовать ее сами, используя "yahoo.com" или " https://www.google.com/accounts/o8/id " чтобы проверить это на этих двух OP.
У Google есть идентификатор, который нужно ввести, потому что они все еще находятся в стадии бета-тестирования и еще не подтолкнули свой OP Identifier к просто "google.com".
Вы используете пример RP? Могу ли я предложить вам отправить подробный отчет об ошибке на http://trac.openidenabled.com/trac/newticket?project=php-openid или подробный запрос через список рассылки.
Действительно, поддержка немедленного_моде действительно работает с библиотеками, если они реализованы правильно. Я (и другие) также были бы счастливы помочь вам на IRC-канале OpenID irc.reenode.net в #openid. Мой ник вялый.
Я загрузил последние библиотеки и получаю такие же неудачные результаты при использовании Yahoo !. Я не пробовал Google.
Если я попытаюсь использовать http://www.yahoo.com , я получаю сообщение об ошибке авторизации, но он возвращает мой правильный URL me.yahoo.com. Если я попытаюсь войти в систему, используя свой URL-адрес me.yahoo.com, я получаю сообщение об ошибке с указанием ввести действительный URL-адрес OpenID.
Еще одно потенциальное отличие состоит в том, что Google и Yahoo используют HTTPS, и если ваша установка PHP или SSL настроена неправильно (возможно, отсутствуют сертификаты CA), ваш код OpenID не сможет установить ассоциацию или завершите вызов check_authentication.
I согласен с частью сертификата - для меня установка пакета ca-сертификатов (в системах типа debian: apt-get install ca-Certificates) и перезапуск веб-сервера решили проблему google / yahoo. Не моя идея, но вместо этого предложил в stackoverflow : -)
Это потому, что в php не включена поддержка curl. Без этого он не может получить контент https. По крайней мере, это то, что я обнаружил. Когда я пытался получить Yahoo или Google, он не удался с сообщением об ошибке «Ошибка аутентификации; недействительный OpenID», но когда я включаю php_curl, он работает правильно.
Убедитесь, что на вашем сервере включен curl с включенным протоколом https. Это решило эту проблему для меня.
см. Эту ветку .
Вот быстрый сценарий для проверки. Загрузите на свой сервер, а затем подключитесь к нему через браузер.
<?php
error_reporting(E_ALL);
// create curl resource
$myurl = 'https://<YOURACCOUNT>.myopenid.com';
$curl_handle=curl_init();
curl_setopt($curl_handle,CURLOPT_URL, $myurl);
curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,2);
curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1);
$buffer = curl_exec($curl_handle);
if (empty($buffer))
{
print "Sorry, cannot access $myurl .<p>". curl_error($curl_handle);
}
else
{
print $buffer;
}
curl_close($curl_handle);
?>
Если он возвращает «Протокол https не поддерживается или отключен в libcurl», то вы знаете, что делать.
Я попробовал его, используя свою учетную запись gmail, и он работает, но приводит на постоянную переадресацию 301, что имеет смысл.
У меня была такая же проблема в Windows XP. Исправлено при активации расширения curl. Для этого раскомментируйте в php.ini строку
extension=php_curl.dll
, удалив перед ней ; , если они есть. Перезагрузите apache.
Также для правильной работы Windows вам необходимо определить Auth_OpenID_RAND_SOURCE как null, поскольку в Windows у вас нет случайного источника. Вы можете сделать это, добавив строку
define('Auth_OpenID_RAND_SOURCE', null);
в CryptUtil.php перед первой строкой кода
if(!defined('Auth_OpenID_RAND_SOURCE')){
. Даже если curl не включен, API должен работать, используя вместо этого Auth_Yadis_PlainHTTPFetcher для связи через HTTP. В случае с Google и Yahoo вам нужен https, поэтому он работает, только если включен open_ssl (Auth_Yadis_PlainHTTPFetcher :: supportsSSL должен возвращать true).