今日はローカルの LAMP 開発環境をセットアップします。システムに付属する php のバージョンは 5.5.14 ですが、開発には php 5.6 以降を使用する必要があるため、php 5.6 を使用します。 7がインストールされています。これにより、システムには 2 つのバージョンの php が存在することになります。
通常の開発には問題ありませんが、phpunitを使用すると、phpunitはシステム自身のphp 5.5.14を呼び出して実行します。私がインストールした PHP 拡張機能 (memcache、redis など) はすべて PHP 5.6.7 のバージョンにインストールされます。
単体テストにphpunitを使用すると、拡張機能がインストールされていないことを示すメッセージが表示されます。 (例: memcache 関数が見つかりません)。
phpunitが呼び出すphpは/usr/bin/phpなので、この場所にあるphpを現在のphp5.6.7バージョンに指定すると問題を解決できます。
解決策は次のとおりです:
1. 現在使用しているphpのバージョンを確認します
php -v PHP 5.6.7 (cli) (built: Apr 20 2015 23:10:47) (DEBUG) Copyright (c) 1997-2015 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies with Xdebug v2.3.2, Copyright (c) 2002-2015, by Derick Rethans
のバージョンを確認します。 3. /usr/bin/php のバージョンをバックアップします。問題が発生した場合に復元できます
/usr/bin/php -v PHP 5.5.14 (cli) (built: Sep 9 2014 19:09:25) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
sudo cp /usr/bin/php /usr/bin/php55
sudo rm /usr/bin/php
sudo ln -s /usr/local/Cellar/php56/5.6.7/bin/php /usr/bin/php
実行後、問題は解決します。
上記では、phpunit テストの側面を含め、システム内に 2 つのバージョンの PHP が存在することによって引き起こされる問題の解決策を紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。