guttally.net

CentOS 6.5 に php 5.6.2 をインストールする (2)

インストール

オプションの決定

 今回インストールする php では,下記のように設定してみます (configure オプションについては,php のオンラインマニュアルや,./configure --help の結果を熟読してください)。

$ autoconf
$ ./configure --help
// configure オプションがずらーっと表示される

$ ./configure \
--prefix=/opt/php-5.6.2 \
--with-config-file-path=/etc/php \
--with-apxs2 \
--enable-pcntl \
--with-xsl \
--enable-cli \
--with-pear \
--disable-debug \
--disable-rpath \
--with-curl \
--enable-zip \
--with-zlib \
--with-mcrypt \
--with-openssl \
--with-gd \
--enable-gd-native-ttf \
--with-jpeg-dir=/usr \
--with-png-dir=/usr \
--with-freetype-dir=/usr \
--with-mysql \
--with-mysqli \
--with-pdo-mysql \
--enable-mbstring \
--with-iconv \
--enable-calendar \
--enable-ftp \
--enable-sockets \
--enable-libxml \
--with-libxml-dir=/usr \
--without-unixODBC \
--disable-posix \
--with-gettext \
--enable-exif \
--enable-phpdbg

コンパイル & インストール

 お次はコンパイルしてテスト。

$ make
$ make test

(中略)

=====================================================================
TEST RESULT SUMMARY
---------------------------------------------------------------------
Exts skipped    :   35
Exts tested     :   44
---------------------------------------------------------------------

Number of tests : 13383             10103
Tests skipped   : 3280 ( 24.5%) --------
Tests warned    :    5 (  0.0%) (  0.0%)
Tests failed    :    4 (  0.0%) (  0.0%)
Expected fail   :   33 (  0.2%) (  0.3%)
Tests passed    : 10061 ( 75.2%) ( 99.6%)
---------------------------------------------------------------------
Time taken      :  585 seconds
=====================================================================

(中略)

=====================================================================
FAILED TEST SUMMARY
---------------------------------------------------------------------
Testing reading and writing to DOMNode::textContent [ext/dom/tests/node_textcontent.phpt]
RFC 2144 test vectors for CAST-128 in ECB mode (bug #62102) [ext/mcrypt/tests/bug62102_rfc2144.phpt]
Multicast support: IPv6 receive options [ext/sockets/tests/mcast_ipv6_recv.phpt]
Bug #32001 (xml_parse*() goes into infinite loop when autodetection in effect), using UTF-* [ext/xml/tests/bug32001.phpt]
=====================================================================

=====================================================================
WARNED TEST SUMMARY
---------------------------------------------------------------------
zend multibyte (2) [ext/mbstring/tests/zend_multibyte-02.phpt] (warn: XFAIL section but test passes)
zend multibyte (6) [ext/mbstring/tests/zend_multibyte-06.phpt] (warn: XFAIL section but test passes)
zend multibyte (8) [ext/mbstring/tests/zend_multibyte-08.phpt] (warn: XFAIL section but test passes)
zend multibyte (10) [ext/mbstring/tests/zend_multibyte-10.phpt] (warn: XFAIL section but test passes)
zend multibyte (11) [ext/mbstring/tests/zend_multibyte-11.phpt] (warn: XFAIL section but test passes)
=====================================================================

 テストが失敗しよった……。

 一つ目の FAIL は,どうやら DOMDocument の生成に失敗しているっぽい。

 二つ目は mcrypt_encrypt() 関数での FAIL。 テストログを見ると,鍵長 128 bit では成功しているけど,鍵長 80 bit と 40 bit で mycrypt_encrypt() 関数が失敗して Warning を吐いている模様。 曰く,"Key of size 10 [または 5] not supported by this algorithm. Only keys of size 16 supported" とのこと。 libmcrypt の現状最新バージョンは 2.6.8 (2014/11/4 現在) ですが,yum でインストールされている libmcrypt のバージョンは 2.5.7。 もしかして,これが原因? (未確認)

 三つ目は,IPv6 マルチキャストでの FAIL。 Send したデータを RecvFrom できていない様子。 当面 IPv6 を使う予定はないので,とりあえずは放置。

 四つ目は xml のパース処理での FAIL。 UTF16-BE の時にエラーを吐いていました。 UTF8 では問題なく動いているようですので,これもとりあえず様子見。

 コンパイルオプションをいじったりしてみたものの,これらの FAIL を解消できませんでした……。 詳細は追って調査として,とりあえずインストールしてしまいます。

$ sudo make install

Installing PHP SAPI module:       apache2handler
/usr/lib64/httpd/build/instdso.sh SH_LIBTOOL='/usr/lib64/apr-1/build/libtool' libphp5.la /usr/lib64/httpd/modules
/usr/lib64/apr-1/build/libtool --mode=install cp libphp5.la /usr/lib64/httpd/modules/
libtool: install: cp .libs/libphp5.so /usr/lib64/httpd/modules/libphp5.so
libtool: install: cp .libs/libphp5.lai /usr/lib64/httpd/modules/libphp5.la
libtool: install: warning: remember to run `libtool --finish /home/slhnd/src/php-5.6.2/libs'
chmod 755 /usr/lib64/httpd/modules/libphp5.so
[activating module `php5' in /etc/httpd/conf/httpd.conf]
Installing shared extensions:     /opt/php-5.6.2/lib/php/extensions/no-debug-non-zts-20131226/
Installing PHP CLI binary:        /opt/php-5.6.2/bin/
Installing PHP CLI man page:      /opt/php-5.6.2/php/man/man1/
Installing phpdbg binary:         /opt/php-5.6.2/bin/
Installing phpdbg man page:       /opt/php-5.6.2/php/man/man1/
Installing PHP CGI binary:        /opt/php-5.6.2/bin/
Installing PHP CGI man page:      /opt/php-5.6.2/php/man/man1/
Installing build environment:     /opt/php-5.6.2/lib/php/build/
Installing header files:          /opt/php-5.6.2/include/php/
Installing helper programs:       /opt/php-5.6.2/bin/
  program: phpize
  program: php-config
Installing man pages:             /opt/php-5.6.2/php/man/man1/
  page: phpize.1
  page: php-config.1
Installing PEAR environment:      /opt/php-5.6.2/lib/php/
[PEAR] Archive_Tar: upgrade to a newer version (1.3.12 is not newer than 1.3.12)
[PEAR] Console_Getopt: upgrade to a newer version (1.3.1 is not newer than 1.3.1)
[PEAR] Structures_Graph: upgrade to a newer version (1.0.4 is not newer than 1.0.4)
[PEAR] XML_Util: upgrade to a newer version (1.2.3 is not newer than 1.2.3)
[PEAR] PEAR: upgrade to a newer version (1.9.5 is not newer than 1.9.5)
/home/slhnd/src/php-5.6.2/build/shtool install -c ext/phar/phar.phar /opt/php-5.6.2/bin
ln -s -f /opt/php-5.6.2/bin/phar.phar /opt/php-5.6.2/bin/phar
Installing PDO headers:          /opt/php-5.6.2/include/php/ext/pdo/

 宿題は残ったものの,これにてインストールは終了です。