【问题标题】:How to set up Google App Engine PHP SDK on Ubuntu如何在 Ubuntu 上设置 Google App Engine PHP SDK
【发布时间】:2016-04-09 00:16:15
【问题描述】:

我尝试按照 https://cloud.google.com/appengine/downloads#Google_App_Engine_SDK_for_PHP

当我使用 hello world 示例启动应用引擎时:

go_appengine/dev_appserver.py --php_executable_path=/home/jan/php-5.4.25/installdir/bin/php-cgi helloworld/

我在控制台中收到一条错误消息: ERROR 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 时都得到相同的结果。

这是在虚拟机上全新安装的 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.

【问题讨论】:

  • 您是否尝试过在不指定--php_executable_path 的情况下运行它?我会假设 PHP SDK 提供了兼容的运行时。
  • 是的。这给了我“PHP 运行时不可用”。开发服务器必须在启动时将 --php_executable_path 标志设置为 php-cgi 二进制文件的路径
  • 你试过apt-get install php5-cgi而不是apt-get install php5吗?我相信这是正确的包装。 (来源:stackoverflow.com/questions/20618871/…
  • 错字。对不起。那是我试过的那个。现在编辑问题。

标签: google-app-engine


【解决方案1】:

相同的错误出现在多个项目/应用程序还是仅一个项目/应用程序上?您的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 --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 安装 chown 给运行 SDK 的同一用户。

注意:如果您尝试为 SDK 可执行文件安装 php-memcache(d),SDK 将无法使用它。据我所知,SDK 使用一些内部机制来模拟开发服务器中的 memcached 使用。其他一些扩展也会触发类似这样的 SDK 错误。

【讨论】:

  • 感谢您的建议,但它没有帮助:/ 仍然得到同样的错误。
  • 可以分享您正在使用的app.yaml 吗?也许将其粘贴到您的问题中,以便我们可以检查它是否存在可能的问题。另外,您能否在打开一些调试的情况下运行 dev server start 命令(我认为选项 --noisy 使它更冗长)?
  • 阅读dev_appserver2.py中的源代码后,关于这个问题有很多地方可能会出错:1)可执行文件不存在。 2) php-cgi 文件不可执行 (chmod)。 3) Python 的safe_subprocess 无法从php-cgi -v 获得正确的PHP 5.4+ 版本号。 4) PHP 的auto_prepend_fileauto_append_file INI 指令不能通过SDK Python 代码更改(使用cli 标志-d)。您能否验证php-cgi 文件确实存在于所需位置并且它是可执行的(可以肯定的是sudo chmod +x php-cgi)。
  • 我可以验证该文件确实存在并且我运行 chmod +x 没有运气。 -v 给出 5.5.30 (cgi-fcgi) (build: Jan 5 2016 08:43:49)
【解决方案2】:

抱歉,我下载的是用于 Go 而不是 PHP 的 SDK。感谢您尝试帮助我。

【讨论】:

    猜你喜欢
    • 2016-05-23
    • 2018-02-10
    • 2010-11-23
    • 2014-05-03
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多