LoginSignup
1
1

More than 5 years have passed since last update.

PECLライブラリ(pecl_http)をソースからコンパイル(PHP5.6)

Last updated at Posted at 2015-12-03

PHPのバージョンを5.6にアップグレードする際に、peclライブラリのインストールで少しハマったのでメモ。これまでは、yumに頼り過ぎていたため、PHPもソースからコンパイルして入れなおしてみた。PHPをソースからコンパイルする手順は別途。

PHPのバージョンを5.6にアップグレードして、古いPHPを利用していた際にpecl install で入れてPeclパッケージを読み込もうとすると上手くいかなかった。そもそも無理やり古いのを利用したのが良くないのだが、、、

PHP Warning:  PHP Startup: http: Unable to initialize module

古いPHPのバージョンでコンパイルしたパッケージなので、バージョンが合わずにWarningが出ている模様。この問題を解決するために、今回はpecl_httpをソースからインストールし直した時の手順をまとめた。

pecl_http2.2.0に関しては、proproraphfが依存しているため、事前に準備する必要がある。

依存パッケージの準備

各パッケージのソースから今回はする方法関しては、ドキュメントを参照。
今回は、特定のバージョンのPHPでコンパイルしたいため、--with-php-configを利用。

propro.so

cd /usr/local/src/php-5.6.0/ext
wget -O propro-1.0.0.tgz  http://pecl.php.net/get/propro-1.0.0.tgz
tar xvzf propro-1.0.0.tgz
cd propro-1.0.0
phpize
./configure --with-php-config=/your/path/php-5.6.0/bin/php-config
make
make install
cat << EOF > /your/path/propro.ini
extension= propro.so
EOF

raphf.so

cd /usr/local/src/php-5.6.0/ext
wget -O raphf-1.0.4.tgz http://pecl.php.net/get/raphf-1.0.4.tgz
tar xvzf raphf-1.0.4.tgz
cd raphf-1.0.4
phpize
./configure --with-php-config=/your/path/php-5.6.0/bin/php-config
make
make install
cat << EOF > /your/path/raphf.ini
extension=raphf.so
EOF

この後、pecl_httpをコンパイルする際に、propro.soraphf.soが必要となるため、.iniファイルに記述しておく。

httpパッケージのインストール

http.so

cd /usr/local/src/php-5.6.0/ext
wget -O pecl_http-2.2.0.tgz  http://pecl.php.net/get/
tar xvzf pecl_http-2.2.0.tgz
cd pecl_http-2.2.0
phpize
./configure --with-php-config=/your/path/php-5.6.0/bin/php-config
make
make install
cat << EOF > /your/path/http.ini
extension=http.so
EOF

この段階でパッケージが読み込まれているか確認したところ、下記のようなエラーが出てうまく読み込みまれない。

$ php -v
#output
PHP Warning:  PHP Startup: Unable to load dynamic library
...
/http.so: undefined symbol: php_persistent_handle_abandon in Unknown on line 0

propro.soraphf.soをそれぞれの.iniファイルで読み込もうとしていたのが良くなったようなので、結局以下のようにhttp.iniにまとめた。

# http.ini
extension=propro.so
extension=raphf.so
extension=http.so
$ php -m
http
propro
raphf

これで上手く行った。PHPはあまり詳しくないのだが、.soファイルが読み込まれる順番が影響しているのだろうか。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1