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

Posted

技术标签:

【中文标题】“PHP 致命错误:找不到类 \'HttpRequest\'”【英文标题】:"PHP Fatal error: Class 'HttpRequest' not found"“PHP 致命错误:找不到类 'HttpRequest'” 【发布时间】:2014-05-08 17:12:25 【问题描述】:

我一直在尝试以多种方式解决这个问题,阅读了很多帖子,但仍然没有运气。 我在 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,并用引号编写了扩展名。标记,但结果还是一样,所以没有什么区别。

在这一切之后,我停止了 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

我很感激任何想法,因为我已经用完了它们。

【问题讨论】:

您找到问题的解决方案了吗? 【参考方案1】:

类 HttpRequest 由这个 PECL 扩展的 v1 提供。

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

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

【讨论】:

我执行了这个命令,但是得到了错误:No releases available for package "pecl.php.net/pecl_http" 兄弟,我应该如何解决这个问题? 取决于您的 PHP 版本。附加与您的 PHP 版本兼容的适当 pecl_http 版本。【参考方案2】:

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

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

【讨论】:

以上是关于“PHP 致命错误:找不到类 'HttpRequest'”的主要内容,如果未能解决你的问题,请参考以下文章