根據我的虛擬主機的技術支持團隊,使用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:無法創建常規 文件...:權限被拒絕」 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"
來源
2012-10-05 16:51:47
w5m