使用pecl安装到共享主机上的本地目录

时间:2012-06-06 03:09:09

标签: mongodb pear pecl

我想在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中央目录。

2 个答案:

答案 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)。

您可能遇到的问题

  1. 使用tar命令时,“无法打开:不是目录”错误 在没有文件扩展名的情况下下载了pecl_http。 这很容易纠正:

    mv pecl_http pecl_http.tar.gz
    
  2. 使用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之一。