“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'”的主要内容,如果未能解决你的问题,请参考以下文章