ちょっと5.3系があるとうれしいかも的な状況になったので、OSX Mavericksで
php-5.3.28をビルドしてみました。すると、こんなリンクエラーになります。

$ phpenv install 5.3.28
(省略)
-----------------
|  BUILD ERROR  |
-----------------

Here are the last 10 lines from the log:

-----------------------------------------
      _load_all_certs_from_file in openssl.o
  "_sk_value", referenced from:
      _zif_openssl_x509_parse in openssl.o
      _zif_openssl_csr_new in openssl.o
      _zif_openssl_pkcs7_verify in openssl.o
      _php_openssl_parse_config in openssl.o
      _php_openssl_sockop_set_option in xp_ssl.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [sapi/fpm/php-fpm] Error 1
-----------------------------------------

The full Log is available at '/tmp/php-build.5.3.28.20140213005117.log'.
[Warn]: Aborting build.

対応方法

Homebrewのopensslをリンクさせればビルドできます。

  1. ~/.phpenv/plugins/php-build/share/php-build/definitions/5.3.28
    (以下definitionファイル)の先頭、install_packageの前の行に以下を追加

configure_option -R “–with-openssl” “/usr/local/opt/openssl”

  1. あとは[2014-02-09-1] と同じようにビルドすればOKです。

$ CONFIGURE_OPTS="–with-pear" phpenv install 5.3.28
$ phpenv global 5.3.28 && phpenv rehash && rehash

ハマったこと

definitionファイルを編集せずに、CONFIGURE_OPTSの指定だけでビルドし
ようとしてハマりました…。

definitionファイルの最後に追加してもconfigureオプションとして認識さ
れません。
/var/tmp/php-build/source/5.3.28/config.nice

php-buildのソース(シェルスクリプトです)を追った結果、以下の行の前に
書かないとダメということが分かりました。

install_package “http://php.net/distributions/php-5.3.28.tar.bz2"

理由は単純でinstall_packageがconfigure&makeしているからです。
install_packageはシェルスクリプトの関数で、php-buildで定義されています。
~/.phpenv/plugins/php-build/bin/php-build

さらに言うと、definitionsファイルはphp-buildの中でsourceされている
だけです。

source “$DEFINITION_PATH”

じゃあもう少し頑張って、どうにかしてCONFIGURE_OPTSの指定だけでビル
ドを成功させようとしましたが、、configureのややこしさと処理の重さに
途中で力尽きました…。

definitionsファイル自体は結構柔軟に出来ていて、configureオプション
を削除したり置換できたりします。詳しくはマニュアルをどうぞ。

$ open ~/.phpenv/plugins/php-build/man/php-build.5.html

その他

--with-pearを付けないとpecl[2014-02-09-1] も有効にならないのですね。
そこに依存関係を付けるんだ…。