“PHP致命错误:未找到类'HttpRequest'”

时间:2014-03-29 02:55:11

标签: php httprequest osx-lion pecl

我一直试图以多种方式解决这个问题,阅读很多帖子但仍然没有运气。 我在Mac,OSX 10.7 Lion上工作,我正在使用MAMP为WordPress站点(php文件)编写插件,有一次我必须发出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 for pear
    • /Applications/MAMP/bin/php/php5.3.6/bin/pecl for pecl
  • 我从MAMP页面下载了php的源代码(并检查我下载的版本是否与我使用的版本相同,即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的安装,并使用quot编写了扩展名。标记,但结果仍然相同,所以没有什么区别。

在所有这些之后,我停止了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 个答案:

答案 0 :(得分:25)

HttpRequest类由此PECL扩展的 v1 提供。

通过以下方式重新安装:$ pecl install -f pecl_http-1.7.6

您可以在此处找到 v2 的文档: https://mdref.m6w6.name/http

答案 1 :(得分:4)

或者,如果您无法控制某些环境变量或安装包,您可以尝试使用curl,它应该返回一个json对象(下面是google api调用的工作片段)。

$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"];