Engineer as a Lifestyle @tenkoma

What We Find Changes Who We Become -- Peter Morville著『アンビエント・ファインダビリティ 』

brew upgradeしたらphp実行できなくなって、php-buildも失敗するようになった【たぶん解決】

とりあえず現状を載せておきます。 brew upgrade を実行したら、php-buildでインストールしたphpの実行に失敗するようになりました。 php-buildは最新版であることを確認して、(コミットハッシュ: e2969a6) install.sh を実行しました。 結論としては CXXFLAGS='-std=c++11' を追加してビルドすると、phpが実行できるようになりました。

追記 (2017/08/28 14:52)

Fix default temporary directory for php-build on macOS by hnw · Pull Request #467 · php-build/php-build でこの問題が修正され、ビルド時に環境変数CXXFLAGS='-std=c++11'を指定しなくてもよくなりました。PHP5.3.29もビルドできるようになりました。

環境

  • MacBook Pro 2016Mid
  • macOS Sierra 10.12.6
  • direnv でphpのパスを設定
  • ghq で php-build をインストール

現象

PHP実行

$ php -v
dyld: Library not loaded: /usr/local/opt/jpeg/lib/libjpeg.8.dylib
  Referenced from: /Users/tenkoma/local/php/7.1.8/bin/php
  Reason: image not found
Abort trap: 6

php-build

$ ghq look php-build
        cd /Users/tenkoma/src/github.com/php-build/php-build
bash-3.2$ time YACC=$(brew --prefix bison)/bin/bison PHP_BUILD_EXTRA_MAKE_ARGUMENTS=-j7 php-build -i development 7.1.8 ~/local/php/7.1.8/
[Info]: Loaded extension plugin
[Info]: Loaded apc Plugin.
[Info]: Loaded composer Plugin.
[Info]: Loaded github Plugin.
[Info]: Loaded uprofiler Plugin.
[Info]: Loaded xdebug Plugin.
[Info]: Loaded xhprof Plugin.
[Info]: Loaded zendopcache Plugin.
[Info]: php.ini-development gets used as php.ini
[Info]: Building 7.1.8 into /Users/tenkoma/local/php/7.1.8/
[Downloading]: https://secure.php.net/distributions/php-7.1.8.tar.bz2
[Preparing]: /var/folders/pc/vq2zc_sn05v190vzzvz99bpc0000gn/T//php-build/source/7.1.8
^@[Compiling]: /var/folders/pc/vq2zc_sn05v190vzzvz99bpc0000gn/T//php-build/source/7.1.8
^@^@
-----------------
|  BUILD ERROR  |
-----------------

Here are the last 10 lines from the log:

-----------------------------------------
                                                   ^
                                                    _Nullable
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/signal.h:106:48: note: insert '_Nonnull' if the pointer should never be null
int     sigvec(int, struct sigvec *, struct sigvec *);
                                                   ^
                                                    _Nonnull
352 warnings generated.
352 warnings generated.
352 warnings generated.
331 warnings generated.
-----------------------------------------

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

real    3m15.342s
user    6m5.609s
sys 1m21.761s

ビルド成功しました(追記 2017/08/16 1:22)

下の、「libjpegのエラーについては、ビルドしなおせば、上記のエラーは発生しなくなります」も確認ください。 解決策情報をいただきました。

やってみます。まず、libjpeg のバージョンを切り替え

$ brew info libjpeg
jpeg: stable 9b (bottled)
Image manipulation library
http://www.ijg.org
/usr/local/Cellar/jpeg/8d (19 files, 708.3KB)
  Poured from bottle on 2016-11-19 at 12:49:23
/usr/local/Cellar/jpeg/9b (20 files, 724KB) *
  Poured from bottle on 2017-08-14 at 00:35:36
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/jpeg.rb
$ brew switch libjpeg 8d
Cleaning /usr/local/Cellar/jpeg/8d
Cleaning /usr/local/Cellar/jpeg/9b
17 links created for /usr/local/Cellar/jpeg/8d

次に CXXFLAGS を指定してビルド

$ ghq look php-build
        cd /Users/tenkoma/src/github.com/php-build/php-build
bash-3.2$ time YACC=$(brew --prefix bison)/bin/bison CXXFLAGS='-std=c++11' PHP_BUILD_EXTRA_MAKE_ARGUMENTS=-j7 php-build -i development 7.1.8 ~/local/php/7.1.8/
[Info]: Loaded extension plugin
[Info]: Loaded apc Plugin.
[Info]: Loaded composer Plugin.
[Info]: Loaded github Plugin.
[Info]: Loaded uprofiler Plugin.
[Info]: Loaded xdebug Plugin.
[Info]: Loaded xhprof Plugin.
[Info]: Loaded zendopcache Plugin.
[Info]: php.ini-development gets used as php.ini
[Info]: Building 7.1.8 into /Users/tenkoma/local/php/7.1.8/
[Downloading]: https://secure.php.net/distributions/php-7.1.8.tar.bz2
[Preparing]: /var/folders/pc/vq2zc_sn05v190vzzvz99bpc0000gn/T//php-build/source/7.1.8
^@[Compiling]: /var/folders/pc/vq2zc_sn05v190vzzvz99bpc0000gn/T//php-build/source/7.1.8
^@^@^@^@[xdebug]: Installing version 2.5.5
[xdebug]: Compiling xdebug in /var/folders/pc/vq2zc_sn05v190vzzvz99bpc0000gn/T//php-build/source/xdebug-2.5.5
[xdebug]: Cleaning up.
[Info]: Enabling Opcache...
[Info]: Done
[Info]: The Log File is not empty, but the Build did not fail. Maybe just warnings got logged. You can review the log in /tmp/php-build.7.1.8.20170816011335.log
[Success]: Built 7.1.8 successfully.

real    6m12.645s
user    16m37.504s
sys 5m20.081s
bash-3.2$ php -v
PHP 7.1.8 (cli) (built: Aug 16 2017 01:18:24) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.1.8, Copyright (c) 1999-2017, by Zend Technologies
    with Xdebug v2.5.5, Copyright (c) 2002-2017, by Derick Rethans

ビルド時刻が更新されているので、ビルド成功です。

libjpegのエラーについては、ビルドしなおせば、上記のエラーは発生しなくなります(さらに追記 2017/08/18 18:27)

さらに情報をいただきました。ありがとうございます。

libjpeg を元に戻してビルドし直しました。

$ brew switch libjpeg 9b
Cleaning /usr/local/Cellar/jpeg/8d
Cleaning /usr/local/Cellar/jpeg/9b
17 links created for /usr/local/Cellar/jpeg/9b
$ ghq look php-build
$ time YACC=$(brew --prefix bison)/bin/bison CXXFLAGS='-std=c++11' PHP_BUILD_EXTRA_MAKE_ARGUMENTS=-j7 php-build -i development 7.1.8 ~/local/php/7.1.8/
$ ~/local/php/7.1.8/bin/php -i | grep JPEG
Supported filetypes => JPEG,TIFF
JPEG Support => enabled
libJPEG Version => 9 compatible

いただいた情報の通り、 php 実行できました。

5.4.45, 5.5.38, 5.6.31, 7.0.22, 7.1.8, 7.2beta2 までビルド成功しました。5.3.29では以下の通りビルド失敗しました。

$ time YACC=$(brew --prefix bison)/bin/bison CXXFLAGS='-std=c++11' PHP_BUILD_EXTRA_MAKE_ARGUMENTS=-j7 php-build -i development 5.3.29 ~/local/php/5.3.29/
[Info]: Loaded extension plugin
[Info]: Loaded apc Plugin.
[Info]: Loaded composer Plugin.
[Info]: Loaded github Plugin.
[Info]: Loaded uprofiler Plugin.
[Info]: Loaded xdebug Plugin.
[Info]: Loaded xhprof Plugin.
[Info]: Loaded zendopcache Plugin.
[Info]: php.ini-development gets used as php.ini
[Info]: Building 5.3.29 into /Users/tenkoma/local/php/5.3.29/
[Downloading]: https://secure.php.net/distributions/php-5.3.29.tar.bz2
[Info]: Applying patches: /usr/local/bin/../share/php-build/patches/php-5.3.29-64bit-intl.patch
[Preparing]: /var/folders/pc/vq2zc_sn05v190vzzvz99bpc0000gn/T//php-build/source/5.3.29
[Compiling]: /var/folders/pc/vq2zc_sn05v190vzzvz99bpc0000gn/T//php-build/source/5.3.29
^@
-----------------
|  BUILD ERROR  |
-----------------

Here are the last 10 lines from the log:

-----------------------------------------
        ^
          _Nullable
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdio.h:475:6: note: insert '_Nonnull' if the pointer should never be null
FILE    *funopen(const void *,
        ^
          _Nonnull
330 warnings generated.
330 warnings generated.
330 warnings generated.
331 warnings generated.
-----------------------------------------

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

real    2m24.479s
user    3m19.952s
sys 1m30.081s

今後5.3を使う必要に迫られない限り、放置でいこうかと思います。