我试着按照说明操作 https://cloud.google.com/appengine/downloads#Google_App_Engine_SDK_for_PHP
当我用这样的hello world示例启动app引擎时:
go_appengine/dev_appserver.py --php_executable_path=/home/jan/php-5.4.25/installdir/bin/php-cgi helloworld/
我在控制台中收到错误消息: 错误php_runtime.py:348] PHP运行时不可用
如果我去localhost:8080,我会:
使用--php_executable_path标志指定的PHP解释器 (“/home/jan/php-5.4.25/installdir/bin/php-cgi”)不兼容 App Engine PHP开发环境。
未指定输入文件。
我想也许他们只是提到了旧版本或文档中的某些内容,所以我也尝试了与php 5.5.30相同的方法,甚至只是apt-get php5-cgi每次更改php_executable_path同样的结果。
这是在VM上全新安装ubuntu 14.04。
任何人都知道这里发生了什么?
编辑:
的app.yaml
application: helloworld
version: 1
runtime: php55
api_version: 1
handlers:
- url: /.*
script: helloworld.php
输出:
INFO 2016-01-05 12:11:42,024 sdk_update_checker.py:229] Checking for updates to the SDK.
INFO 2016-01-05 12:11:42,299 sdk_update_checker.py:257] The SDK is up to date.
INFO 2016-01-05 12:11:42,355 api_server.py:205] Starting API server at: http://localhost:37460
INFO 2016-01-05 12:11:42,357 dispatcher.py:197] Starting module "default" running at: http://localhost:8080
INFO 2016-01-05 12:11:42,360 admin_server.py:116] Starting admin server at: http://localhost:8000
ERROR 2016-01-05 12:11:43,418 php_runtime.py:348] The PHP runtime is not available
Traceback (most recent call last):
File "/appengine/google/appengine/tools/devappserver2/php_runtime.py", line 344, in new_instance
self._check_binaries(php_executable_path, gae_extension_path)
File "/appengine/google/appengine/tools/devappserver2/php_runtime.py", line 284, in _check_binaries
cls._check_environment(php_executable_path, env)
File "/appengine/google/appengine/tools/devappserver2/php_runtime.py", line 259, in _check_environment
raise _PHPEnvironmentError(check_process_stdout)
_PHPEnvironmentError: No input file specified.
答案 0 :(得分:2)
多个项目/应用程序或仅一个项目/应用程序中是否出现相同的错误?您的app.yaml
是否配置为正确显示PHP页面?
关于这个主题的官方文档也不适用于我(并且不包括PHP 5.5使用说明)。
我必须在Ubuntu 14.04上为我的PHP SDK编译自定义PHP 5.5 CGI二进制文件。
注意:以下内容适用于我的系统,每个系统可能需要调整一些变量。
下载PHP 5.5.30的源代码并打开终端中的目录
$ cd /downloaded/php/source/dir/path
ls
应在目录中显示configure
个文件。然后在源目录内运行configure,如下所示(\
进行格式化,可以省略并使命令成为一行):
$ ./configure --prefix=/php/5.5/ \
--enable-bcmath \
--enable-calendar \
--enable-ftp \
--enable-mbstring \
--enable-opcache \
--enable-soap \
--enable-sockets \
--enable-zip \
--disable-fileinfo \
--disable-flatfile \
--disable-posix \
--with-curl \
--with-gd \
--with-openssl \
--without-sqlite3 \
--without-pdo-sqlite \
--without-imap \
--without-kerberos \
--without-imap-ssl \
--without-interbase \
--without-ldap \
--without-mssql \
--without-oci8 \
--without-pgsql \
--without-pear \
--disable-phar \
--with-pdo-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-mysql=mysqlnd
然后只是
$ sudo make && sudo make install
prefix
然后设置make && make install
命令以将php-cgi
二进制文件安装到/php/5.5/bin/php-cgi
,这是在SDK的--php_executable_path
中使用的二进制文件(即--php_executable_path=/php/5.5/bin/php-cgi
)。
此外,请确保PHP SDK具有以某种方式运行php-cgi
可执行文件的权限,例如将PHP安装称为运行SDK的同一用户。
注意:如果您尝试为SDK可执行文件安装php-memcache(d),则SDK将无法使用它。据我所知,SDK使用一些内部机制来模拟开发服务器中的memcached用法。其他一些扩展也会触发这样的SDK错误。
答案 1 :(得分:0)
很抱歉,我已经下载了SDK for Go而不是PHP。谢谢你试图帮助我。