私の Web ホストのテクニカル サポート チームによると、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: cannot create regular file...: Permission denied」エラーが表示されました。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"