"Неустранимая ошибка PHP: класс" HttpRequest "не найден"
Я застрял, пытаясь решить эту проблему во многих отношениях, читая много постов, но все еще безуспешно. Я работаю на Mac OSX 10.7 Lion и пишу плагин для сайта WordPress (файлы php), используя MAMP, и в какой-то момент я должен сделать HTTP-запрос:
$request = new HttpRequest('something');
$request->setMethod(HTTP_METH_GET);
Есть ошибка при выполнении этого запроса, и когда я проверил файл журнала, вот сообщение:
"PHP Fatal error: Class 'HttpRequest' not found in (the_php_file)"
Я уже установил PEAR, PECL и расширение HTTP (pecl_http), Xcode и его инструменты командной строки. Вот что я сделал:
изменил путь
$ echo "export PATH=/Applications/MAMP/bin/php/php5.5.3/bin:$PATH" >> ~/.profile`
проверил правильность путей для php, pear и pecl:
- /Applications/MAMP/bin/php/php5.3.6/bin/php - путь к php
- /Applications/MAMP/bin/php/php5.3.6/bin/pear для груши
- /Applications/MAMP/bin/php/php5.3.6/bin/pecl для pecl
Я загрузил исходник для php со страницы MAMP (и проверил, что загруженная версия была той же самой, которую я использую, то есть php5.5.3). Затем я извлек содержимое и поместил его в /Applications/MAMP/bin/php/php5.5.3/include/php
- Внутри /Applications/MAMP/bin/php/php5.5.3/include/php я запустил
./configure
- Я выполнил:
pecl install pecl_http
Я также добавил эти расширения в php.ini (изначально я изменил файл MAMP/bin/php/php5.5.3/conf/php.ini):
extension=raphf.so extension=propro.so extension="http.so"
О том, что последний в кавычках: когда я добавил расширение вручную, я сделал это так: extension=http.so
, Затем (при попытке исправить мою проблему) я попробовал альтернативную установку, которая автоматически изменила php.ini, и написал расширение с квотом. оценки, но результат был все тот же, так что это не имело значения.
После всего этого я остановил сервер MAMP и запустил его снова, но когда я выполнил php, я все еще получил ошибку (видимую в php_error.log):
PHP Fatal error: Class 'HttpRequest' not found
Я следовал этому руководству в основном, среди многих других: http://www.lullabot.com/blog/article/installing-php-pear-and-pecl-extensions-mamp-mac-os-x-107-lion
Я был бы признателен за любую идею, потому что я исчерпал их.
2 ответа
Класс HttpRequest предоставляется v1 этого расширения PECL.
Переустановите через: $ pecl install -f pecl_http-1.7.6
Вы можете найти документацию для v2 здесь: https://mdref.m6w6.name/http
Альтернативно, если вы не можете управлять определенными переменными среды или устанавливать пакеты, вы можете попробовать использовать curl, который должен возвращать объект json (ниже приведен рабочий фрагмент вызова API Google).
$url = 'https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=TOKEN_DATA_123';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$json = json_decode($response, true);
curl_close($ch);
print_r($json);
$userEmail = $json["email"];