如何在Ubuntu上设置Google App Engine PHP SDK

时间:2016-01-05 08:28:19

标签: google-app-engine

我试着按照说明操作 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.

2 个答案:

答案 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。谢谢你试图帮助我。