http.so已加载,但http_get未定义

时间:2013-12-31 13:57:48

标签: php http lamp

我的Linux发行版上安装了LAMP:

///

PHP 5.4.9-4ubuntu2.4(cli)(建于:2013年12月12日04:29:20) 版权所有(c)1997-2012 PHP小组 Zend Engine v2.4.0,版权所有(c)1998-2012 Zend Technologies     与Xdebug v2.2.1,版权所有(c)2002-2012,作者Derick Rethans

///

为了使用pecl_http php扩展中的http_get,我已经明确安装了它并将http.so扩展名添加到了php.ini。

现在我处于以下场景中。使用下面的简单PHP代码:

echo var_dump(extension_loaded("http"));

echo var_dump(extension_loaded("raphf"));

echo var_dump(extension_loaded("propro"));

echo var_dump(function_exists("http_get"));

$response = http_get("www.google.com");

echo $response;

我得到了以下结果:

///

boolean true

boolean true

boolean true

**boolean false**

我不确定为什么extension_loaded(“http”)返回true但是function_exists(“http_get”)返回false,所以我不能使用函数http_get而不在Apache日志文件中获取以下内容

“[Tue Dec 31 12:32:26 2013] [error] [client 127.0.0.1] PHP致命错误:在第32行的/home/user/main.php中调用未定义的函数http_get()”

你可以帮我解决这个问题吗?

(使用控制台交互模式php -a的同样问题)

phpinfo()显示:

///

HTTP

启用HTTP支持 扩展版本2.0.3

二手图书馆编译链接 libz 1.2.7 1.2.7 libcurl 7.29.0 7.29.0 解放残疾人士

指令本地价值主值 http.etag.mode crc32b crc32b

///

由于

2 个答案:

答案 0 :(得分:8)

正如Michael Berkowski所说,2.x分支是全新的,它可以使用不同的API。

您可以使用1.x分支并以这种方式使用旧函数:

pecl uninstal pecl_http
pecl install pecl_http-1.7.6

然后你可以使用http_get

无论如何,如果这是一个全新的项目,建议使用最新的API。

答案 1 :(得分:0)

仅略微阐述Alex的答案,除非我错过了一些内容,否则Php Manuel并没有真正反映出此扩展的变化方式。而且您对问题的评论中的链接似乎不再起作用。我认为您现在想要得到相同行为的是http\Client::send()