2012-06-06 62 views
1

我想在bluehost共享網站上安裝PHP擴展;特別是MongoDB驅動程序。由於pecl無法寫入具有所有已安裝擴展名的主服務器目錄,因此我想將mongo.so文件安裝到我家中指定的目錄中。我在網上找到的最接近的文章是:用pecl安裝到本地目錄共享主機

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

然而,以下的步驟後,當我使用「PECL安裝蒙戈」命令時,它仍然保持試圖安裝到服務器上BlueHost的中央目錄。

回答

1

這聽起來像你沒有root權限訪問你的服務器。如果您需要編譯任何東西,您必須擁有對服務器的root訪問權限,或者您必須是其中一個sudoers。

3

根據我的虛擬主機的技術支持團隊,使用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:無法創建常規 文件...:權限被拒絕」 errror出現。我通過改變ext_dir的PECL解決這個問題 ...

    pecl config-set ext_dir /home/username/bin/extensions 
    

    ...並重新運行make install。我還必須將http.so擴展名複製到/home/username/bin/extensions,然後在我的php中引用該位置。此文件:

    extension_dir = "/home/username/bin/extensions"