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

问题描述:

我一直试图在很多方面解决这个问题,阅读大量帖子,但仍然没有运气。 我在Mac上,OSX 10.7狮子工作,我正在写使用甲基苯丙胺一个WordPress站点(PHP文件)一个插件,并在一个点上我必须做出一个HTTP请求:“PHP致命错误:未找到'HttpRequest'类'

$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,梨和PECL的路径是正确的:

    • /应用程序/ 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为PECL
  • 我下载从MAMP页面PHP源(和检查,我下载的版本是一样的一个我正在使用,这是php5.5.3)。然后我提取内容并将其放入/Applications/MAMP/bin/php5.5.3/include/php

  • Inside /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" 
    

关于最后一个引号:当我添加extensi在手动上,我做了这样的: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

我很感激任何想法,因为我用尽了他们。

+0

您是否找到针对您的问题的解决方案? –

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

重新安装通过:$ pecl install -f pecl_http-1.7.6

可以为V2在这里找到文档,但: https://mdref.m6w6.name/http

+0

我执行这个命令,但得到错误:'没有可用的软件包“pecl.php.net/pecl_http”'我该如何解决这个问题,兄弟? –

+0

取决于你的PHP版本。附加与您的PHP版本兼容的相应pecl_http版本。 – m6w6

或者,如果你无法控制某些环境变量或安装软件包,您可以尝试使用curl应该返回一个json对象(下面是一个谷歌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"];