我想在bluehost共享站点上安装PHP扩展;特别是MongoDB驱动程序。由于pecl无法写入具有所有已安装扩展的主服务器目录,因此我想将mongo.so文件安装到我在home下指定的目录中。我在网上找到的最接近的文章是:
http://www.site5.com/blog/programming/php/how-to-setup-your-own-php-pear-environment/20090624/
但是,按照我使用“pecl install mongo”命令执行的步骤后,它仍然会继续尝试安装到服务器上的bluehost中央目录。
答案 0 :(得分:4)
根据我的网站托管服务商技术支持团队的说法,使用pecl安装程序会尝试在整个服务器范围内安装,而不是仅在您的帐户下安装。出于安全原因,我的Web主机不允许在其共享环境中进行服务器范围的安装,并且因为他们希望让他们的机队全面保持一致。我怀疑你的主人是一样的。
但是,他们确实建议我通过以下手动过程在我的帐户中(而不是服务器范围)下载,配置和安装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:无法创建常规
文件...:权限被拒绝“错误出现了。我解决了这个问题
通过更改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"
答案 1 :(得分:1)
这听起来好像您没有对服务器的root访问权限。如果你需要编译任何东西,你必须拥有对服务器的root访问权限,或者你必须是sudoers之一。