Ubuntu 服务器上未定义 php 函数 http_post_data

Ubuntu 服务器上未定义 php 函数 http_post_data

Dynamic Extensions在两个 php.ini (Apache 和常规的 php.ini sudo updatedb && locate php.ini)下添加以下内容:

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

但测试仍然失败

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

我错过了什么?

答案1

我自己也遇到了同样的问题。http_post_data() 由v1此 PECL 扩展,而不是默认安装的 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

答案2

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 等)创建这些符号链接。“mod_name_here”通常是创建的 INI 文件的名称减去.ini扩展部分。

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

相关内容