Ubuntu服务器上未定义的PHP函数http_post_data

在两个php.ini文件(Apache的和普通sudo updatedb && locate php.inisudo updatedb && locate php.ini )中添加了以下Dynamic Extensions

 extension=raphf.so extension=propro.so extension=http.so 

冉以下安装,这一切工作:

 sudo apt-get install libpcre3-dev php5-dev php-pear sudo pecl channel-update pecl.php.net sudo pecl install pecl_http 

然而,testing仍然失败

 php -r 'http_post_data();' PHP Fatal error: Call to undefined function http_post_data() in Command line code on line 1 PHP Stack trace: PHP 1. {main}() Command line code:0 

我错过了什么?

自己跑过同一个问题。 http_post_data()由PECL扩展的v1提供,而不是v2,这是默认安装。

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

之后:

 php -r 'http_post_data();' PHP Warning: http_post_data() expects at least 2 parameters, 0 given in Command line code on line 1 

Ubuntu PHP通常带有一些帮助函数php5enmodphp5dismod 。 这些映射到通过/etc/php5/mods-available的名称启用模块,并将它们适当地链接到/etc/php5/[SAPI]/conf.d ,其中sapi通常是“cli”,“fpm”或“的Apache2”。

我会检查确保你引用的ini文件,大概是在/etc/php5/mods-available已经被链接到/etc/php5/cli/conf.d和/或/etc/php5/apache2/conf.d 。 你可以使用sudo php5enmod -s ALL mod_name_here来为你所有的SAPI(cli,apache等)创build符号链接。 “mod_name_here”通常是创build的INI文件的名称减.ini扩展部分。

我对你的系统做了一些假设,例如我不知道你是否从apt-get / aptitude安装了PHP,或者你是否从源代码编译过,所以你的里程可能会有所不同。