1

我想在 bluehost 共享站点上安装 PHP 扩展;特别是 MongoDB 驱动程序。由于 pecl 无法写入包含所有已安装扩展的主服务器目录,我想将 mongo.so 文件安装到我在我家下指定的目录中。我在网上找到的最接近的文章是:

http://www.site5.com/blog/programming/php/how-to-setup-your-own-php-pear-environment/20090624/

但是,按照我使用“pecl install mongo”命令的步骤进行操作后,它仍然会一直尝试安装到服务器上bluehost的中央目录。

4

2 回答 2

5

根据我的网络主机的技术支持团队的说法,使用 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,在我的主机服务器上)。

您可能遇到的问题

  1. 使用该tar命令时,出现“无法打开:不是目录”错误,因为 pecl_http 已下载而没有文件扩展名。这很容易纠正:

    mv pecl_http pecl_http.tar.gz
    
  2. 使用该make install命令时,出现“ cp: cannot create regular file...: Permission denied ”错误。我通过更改ext_dirfor 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"
    
于 2012-10-05T16:51:47.717 回答
1

这听起来像您没有对您的服务器的 root 访问权限。如果您需要编译任何东西,您必须对服务器具有 root 访问权限,或者您可能必须是 sudoers 之一。

于 2012-06-06T05:10:23.603 回答