Google Cloud SDKを入れたら、Google App Engine(GAE)用のローカルの開発サーバー dev_appserver.py
が以下のようなエラーを吐いて、動かなくなってしまいました。
$ cd /path/to/project_root $ dev_appserver.py . INFO 2016-06-15 02:15:02,903 devappserver2.py:769] Skipping SDK update check. INFO 2016-06-15 02:15:02,964 api_server.py:205] Starting API server at: http://localhost:52471 INFO 2016-06-15 02:15:02,972 dispatcher.py:197] Starting module "default" running at: http://localhost:8080 INFO 2016-06-15 02:15:02,974 admin_server.py:116] Starting admin server at: http://localhost:8000 ERROR 2016-06-15 02:15:03,980 php_runtime.py:348] The PHP runtime is not available Traceback (most recent call last): File "/Users/koni/src/tool/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/php_runtime.py", line 344, in new_instance self._check_binaries(php_executable_path, gae_extension_path) File "/Users/koni/src/tool/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/php_runtime.py", line 265, in _check_binaries raise _PHPBinaryError('The development server must be started with the ' _PHPBinaryError: The development server must be started with the --php_executable_path flag set to the path of the php-cgi binary.
--php_executable_path
でPHP-CGIのバイナリのパスを指定しろとのこと。
GAEのPHPのバイナリは、GAEのプラグインが入っている専用のものなので、ローカルのPHP使うならエクステンションを入れないといけません。
原因
ではなぜいままで動いていたかというと、dev_appserver.py
はこれまでGoogle Cloud SDKのものではなくて、GoogleAppEngineLauncher.app内蔵のものを使っていたようです。
それがGoogle Cloud SDKを入れた時にそちらのものを使うようになってしまったようです。
GoogleAppEngineLauncher.appには、GAE用のエクステンションが入ったphp-cgi
が内蔵されているので、それを使って動いていたようです。
解決方法
dev_appserver.py
は、Google Cloud SDKのものではなく、GoogleAppEngineLauncher.appのものを使う。
私の環境では以下のパスにありました。
/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/dev_appserver.py
こっちを使ったら普通に動きました。
ちょっと逃げですが、ローカル環境だし動いたからこれでいいかと。。