根据我的网络主机的技术支持团队的说法,使用 pecl 安装程序会尝试在服务器范围内安装扩展程序,而不是仅在您的帐户下。出于安全原因,我的虚拟主机不允许在其共享环境中进行服务器范围的安装,并且因为他们希望保持他们的机群普遍相同。我怀疑你的主机是一样的。
但是,他们确实建议我通过以下手动过程仅在我的帐户(而不是服务器范围)中下载、配置和安装 pecl 包(pecl_http):
$ cd ~/
$ wget http://pecl.php.net/get/pecl_http
$ tar -zxvf pecl_http.tar.gz
$ cd pecl_http
$ phpize
$ ./configure --prefix=~/bin
$ make
$ make test
$ make install
成功安装将创建 extname.so 并将其放入 PHP 扩展目录。您需要编辑 php.ini(在我的情况下,这是我使用扩展名放置在与脚本相同的文件夹中的标准 php.ini 文件的副本)并在之前添加
extension=extname.so
一行(在我的情况下,extension=http.so
)你可以使用扩展。
http://www.php.net/manual/en/install.pecl.phpize.php
请注意,~
上述代码中的波浪号 ( ) 指的是当前用户的主目录(例如/home/username
,在我的主机服务器上)。
您可能遇到的问题
使用该tar
命令时,出现“无法打开:不是目录”错误,因为 pecl_http 已下载而没有文件扩展名。这很容易纠正:
mv pecl_http pecl_http.tar.gz
使用该make install
命令时,出现“ cp: cannot create regular file...: Permission denied ”错误。我通过更改ext_dir
for pecl 解决了这个问题...
pecl config-set ext_dir /home/username/bin/extensions
...并重新运行make install
。我还必须将 http.so 扩展名复制到/home/username/bin/extensions
,然后在我的 php.ini 文件中引用该位置:
extension_dir = "/home/username/bin/extensions"