Я выделил проблему и нашел обходной путь.Метод request()
делает автоматическое обнаружение, чтобы выяснить, как стабилизировать HTTP-соединения:
protected function request($url, $method='GET', $params=array(), $update_claimed_id=false)
{
if (function_exists('curl_init')
&& (!in_array('https', stream_get_wrappers()) || !ini_get('safe_mode') && !ini_get('open_basedir'))
) {
return $this->request_curl($url, $method, $params, $update_claimed_id);
}
return $this->request_streams($url, $method, $params, $update_claimed_id);
}
В моем окне разработчика используется CURL, но в моем живом окне он использует file_get_contents()
, потому что проверка не проходит.Причина в том, что директива open_basedir
не пуста.
Если я заставлю LightOpenID использовать CURL, все пройдет гладко.
Обновление № 1: LightOpenID был прав, когда решил, что локон не может быть использован.Я обнаружил это в файле журнала:
Невозможно активировать CURLOPT_FOLLOWLOCATION, когда включен безопасный_мод или установлен open_basedir
Что касается версии file_get_contents()
, я подозреваю, что яЯ нашел опечатку в библиотеке:
Index: lightopenid/openid.php
===================================================================
--- lightopenid/openid.php (0.60)
+++ lightopenid/openid.php (working copy)
@@ -349,7 +349,7 @@
$this->headers = $this->parse_header_array($http_response_header, $update_claimed_id);
}
- return file_get_contents($url, false, $context);
+ return $data;
}
protected function request($url, $method='GET', $params=array(), $update_claimed_id=false)
Я уведомил автора, и он подтвердил, что это ошибка.Я сообщу, если это будет исправлено.
Обновление № 2: Ошибка была исправлена в главной ветке в июне 2012 года. Она все еще не является частью стабильнойрелиз, но его можно загрузить из репозитория .