fedora 24でphpenvを使いphp7.0.8をインストールしようとして、コンパイルエラーがでました。
# phpenv install 7.0.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]: php.ini-production gets used as php.ini [Info]: Building 7.0.8 into /opt/phpenv/versions/7.0.8 [Downloading]: https://secure.php.net/distributions/php-7.0.8.tar.bz2 [Preparing]: /tmp/php-build/source/7.0.8 [Compiling]: /tmp/php-build/source/7.0.8 ----------------- | BUILD ERROR | ----------------- Here are the last 10 lines from the log: ----------------------------------------- configure: WARNING: unrecognized options: --with-mysql /tmp/php-build/source/7.0.8/ext/zip/lib/mkstemp.c: 関数 ‘_zip_mkstemp’ 内: /tmp/php-build/source/7.0.8/ext/zip/lib/mkstemp.c:75:8: 警告: 関数 ‘getpid’ の暗黙的な宣言です [-Wimplicit-function-declaration] pid = getpid(); ^~~~~~ /tmp/php-build/source/7.0.8/Zend/zend_ini_parser.y:264.1-12: 警告: deprecated directive, use `%pure-parser' [-Wdeprecated] %pure_parser ^^^^^^^^^^^^ collect2: error: ld returned 1 exit status make: *** [sapi/cgi/php-cgi] エラー 1 -----------------------------------------
原因は/tmp
の容量不足でした。ConoHaの1GBプランで組んでいたため、tmpfsでマウントされている/tmpはデフォルトで物理メモリの半分である512MBになっており、disk fullになっていたのが偶然こういうエラーメッセージになってしまったようです。
/var/tmp
でコンパイルさせることで回避できました。以下はphp-buildプラグインの差分です。
# pwd /opt/phpenv/plugins/php-build # git diff bin/php-build diff --git a/bin/php-build b/bin/php-build index 273a11a..7161281 100755 --- a/bin/php-build +++ b/bin/php-build @@ -61,6 +61,7 @@ function realpath() { # the `share/` and `tmp/` folders of php-build. PHP_BUILD_ROOT="$(realpath "$0")/.." TMP="$(dirname $(mktemp --dry-run 2>/dev/null || echo "/var/tmp/tmp_dir"))/php-build" +TMP=/var/tmp/php-build # This file gets copied to `$PREFIX/etc/php.ini` once the build is complete. # This is by default the PHP tarball's `php.ini-production`.
最近のコメント