Leopard に PHP5.2.6 をインストールする

via Do You PHP はてな さん

RC5から長かったですねぇ。ようやくリリースされました。

http://d.hatena.ne.jp/shimooka/20080502/1209723579


PHP5.2.6 がリリースされたので早速 Leopard にインストールした。
下準備として、PHP5.2.5 の環境は残しておきたかったので、libphp5.so を libphp5.2.5.so にしておく。

$ cd /opt/local/apache/modules
$ sudo mv libphp5.so libphp5.2.5.so


configure は以下の通り(PHP5.2.5 の時と比べて変わったのが prefix のパスくらい)

'./configure' \
'--prefix=/Library/Programs/PHP5.2.6' \
'--with-apxs2=/opt/local/apache2/bin/apxs' \
'--with-openssl' \
'--with-tidy' \
'--with-zlib-dir=/opt/local' \
'--with-libxml-dir=/opt/local' \
'--with-mysql=/Library/Programs/MySQL5.0' \
'--with-gd' \
'--with-jpeg-dir=/opt/local' \
'--with-png-dir=/opt/local' \
'--with-t1lib=/opt/local' \
'--with-iconv' \
'--with-iconv-dir=/usr' \
'--with-mcrypt=/opt/local' \
'--with-curl=/opt/local' \
'--with-freetype-dir=/opt/local' \
'--with-gettext=/opt/local' \
'--with-xmlrpc' \
'--with-mime-magic' \
'--with-pear' \
'--with-pdo-mysql=/Library/Programs/MySQL5.0' \
'--with-ldap=/usr' \
'--with-kerberos=/usr' \
'--enable-ftp' \
'--enable-calendar' \
'--enable-exif' \
'--enable-zend-multibyte' \
'--enable-mbstring' \
'--enable-mbregex' \
'--enable-sockets' \
'--enable-soap' \
'--enable-zip' \
'--enable-sqlite-utf8' \
'--enable-cli' \
'--disable-xmlreader' \

で、make したら PHP5.2.5 の時と同じように iconv でエラーになった。

Undefined symbols:
  "_iconv_close", referenced from:
      _php_iconv_string in iconv.o
      _php_iconv_string in iconv.o
      __php_iconv_strlen in iconv.o
      __php_iconv_strpos in iconv.o
      __php_iconv_mime_decode in iconv.o
      __php_iconv_mime_decode in iconv.o
      __php_iconv_mime_decode in iconv.o
      _zif_iconv_substr in iconv.o
      _zif_iconv_substr in iconv.o
      _php_iconv_stream_filter_dtor in iconv.o
      _zif_iconv_mime_encode in iconv.o
      _zif_iconv_mime_encode in iconv.o
  "_iconv_open", referenced from:
      _php_iconv_string in iconv.o
      __php_iconv_strlen in iconv.o
      __php_iconv_strpos in iconv.o
      __php_iconv_mime_decode in iconv.o
      __php_iconv_mime_decode in iconv.o
      _zif_iconv_substr in iconv.o
      _zif_iconv_substr in iconv.o
      _zif_iconv_mime_encode in iconv.o
      _zif_iconv_mime_encode in iconv.o
      _php_iconv_stream_filter_factory_create in iconv.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [libs/libphp5.bundle] Error 1

たぶん以前同じように iconv_open と iconv_close をlibiconv_ に変更したら解決するんだろうな〜と思ったけど、
もう一度調査してみたら、以下のフォーラムを見つけた。


http://diymacserver.com/forum/topic/leopard-iconv-and-php5
一番下の marianopeterson さんが、「iconv と openssl で同じ問題起きたけど、shared にしたら、解決したよ!」とあったので、試してみた。


configure の '--with-iconv' \ を '--with-iconv=shared,/usr' \ にし、
'--with-iconv-dir=/usr' \ を削除、make したら、エラーにならず、make が通った。
# ただし、相変わらず php.dSYM という形で実行ファイルが出来たので、phpシンボリックリンクをはった。


iconv を shared extension としたので、php.ini に以下を加えた。

$ sudo vi php.ini
extension_dir = /Library/Programs/PHP5.2.6/lib/php/extensions/no-debug-non-zts-20060613/iconv.so
extension = iconv.so

ついでに xdebug も 2.0.3 にバージョンアップしてたので、pecl からインストールした。

$ sudo pecl install xdebug
$ sudo vi php.ini
zend_extension=/Library/Programs/PHP5.2.6/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so

phpinfo() で確認したら、iconv も表示されたし、 xdebug もバージョンアップされた。

  • -

追記
iconv は結局ダメだった。またしても iconv ではまる - Memo