PHP7のテスト環境を構築するための少しだけ長い道のり

昨日、東京でPHPカンファレンスが行われ、Rasmus Lerdorf氏による基調講演で「PHP7のテストに協力を」という話がありました。

「It is really easy!」ということなのでやってみたのですが、少しつまづきましたのでその記録です。

まずは、記述通りにgit cloneしてvagrant upします。

$ git clone https://github.com/rlerdorf/php7dev.git
$ cd php7dev
$ vagrant up

しかし、Boxのダウンロードに失敗します。

実は昨日の夜中にもやってみて、今日もやってみたのですが、同じく失敗したのでRasmusさんに確認してみました。

こちらのネットワークの問題ということで、別のネットワークから試したら、すんなりダウンロードできました。

$ wget https://vagrantcloud.com/rasmus/boxes/php7dev/versions/0.0.9/providers/virtualbox.box

(2015-10-30 追記) 新しいバージョンの0.1.0がリリースされています。

$ wget https://atlas.hashicorp.com/rasmus/boxes/php7dev/versions/0.1.0/providers/virtualbox.box

そして、ダウンロードしたBoxを手許のマシンに転送し、Vagrantに登録します。

$ vagrant box add virtualbox.box --name rasmus/php7dev

これで準備OK。あとはvagrant upするだけです。無事に仮想マシンが起動しました。

(2015-10-30 追記) 新しいバージョンの0.1.0がリリースされており、以下で記述されている不具合は解消されています。

仮想マシンにSSHします。

$ vagrant ssh
php7dev image version 0.0.9
  'makephp 7' - to update your PHP 7 build
  'newphp 56' - to switch to PHP-5.6
  Please read the documentation at https://github.com/rlerdorf/php7dev

You have mail.

phpのバージョンを確認します。

vagrant@php7dev:~$ php -v
PHP 7.0.0-dev (cli) (built: May 25 2015 16:34:33) (DEBUG)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0-dev, Copyright (c) 1998-2015 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies

May 25 2015、ということで少し古いですね。最新版をビルドします。

vagrant@php7dev:~$ makephp 7
Build log in /tmp/build.log
Building PHP 7.0
Already on 'master'
configuring...
compiling...
installing...
done
Building PHP 7.0-debug
Already on 'master'
configuring...
compiling...
installing...
done

無事に終わりました。phpのバージョンを確認します。

vagrant@php7dev:~$ php -v
PHP 7.1.0-dev (cli) (built: Oct  4 2015 03:14:20) ( NTS DEBUG )
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0-dev, Copyright (c) 1998-2015 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies

なんとPHP 7.1.0-dev!今度は最新過ぎます。

makephpを調べると7のビルド時にブランチがmasterになってました。それをPHP-7.0に修正します。

--- /usr/local/bin/makephp.orig 2015-05-24 19:01:03.897226770 +0000
+++ /usr/local/bin/makephp  2015-10-04 03:26:10.252803467 +0000
@@ -276,18 +276,18 @@
             if(!$zts || $world) {
                 echo "Building PHP 7.0\n";    
                 $conf_flags = implode(' ', $conf[$v]) . ' --disable-debug --prefix=/usr/local/php70';
-                build_it('master', $conf_flags);
+                build_it('PHP-7.0', $conf_flags);
                 echo "Building PHP 7.0-debug\n";    
                 $conf_flags = implode(' ', $conf[$v]) . ' --enable-debug --prefix=/usr/local/php70-debug';
-                build_it('master', $conf_flags);
+                build_it('PHP-7.0', $conf_flags);
             } 
             if($zts || $world) {
                 echo "Building PHP 7.0-zts\n";    
                 $conf_flags = implode(' ', $conf[$v]) . ' --disable-debug --enable-maintainer-zts --prefix=/usr/local/php70-zts';
-                build_it('master', $conf_flags);
+                build_it('PHP-7.0', $conf_flags);
                 echo "Building PHP 7.0-debug-zts\n";    
                 $conf_flags = implode(' ', $conf[$v]) . ' --enable-debug --enable-maintainer-zts --prefix=/usr/local/php70-debug-zts';
-                build_it('master', $conf_flags);
+                build_it('PHP-7.0', $conf_flags);
             }
             break;

これでいいはず。

vagrant@php7dev:~$ makephp 7

phpのバージョンを確認します。

vagrant@php7dev:~$ php -v
PHP 7.0.0-dev (cli) (built: Oct  4 2015 03:41:15) ( NTS DEBUG )
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0-dev, Copyright (c) 1998-2015 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies

最新のPHP 7.0になりました。

これで、PHP 7.0のテストができるようになりました!

関連

Date: 2015/10/04

Tags: php, php7, vagrant