Php dev_appserver.py中没有输入文件错误

Php dev_appserver.py中没有输入文件错误,php,python,google-app-engine,cygwin,Php,Python,Google App Engine,Cygwin,我正在尝试创建一个helloworld GAE项目,以使用PHP连接到Google Cloud SQL数据库。我正在遵循以下步骤: 然而,每当我启动dev_appserver.py来测试我的helloworld.php时,我最终会得到一个权限拒绝错误。我正在Win8(64)机器上运行Cygwin(mintty)。我在许多相关目录上运行了chmod-R 777*,如: /usr/bin/ c:/Development/appengine-php-sdk-1.8.0/ c:/Development

我正在尝试创建一个helloworld GAE项目,以使用PHP连接到Google Cloud SQL数据库。我正在遵循以下步骤:

然而,每当我启动dev_appserver.py来测试我的helloworld.php时,我最终会得到一个权限拒绝错误。我正在Win8(64)机器上运行Cygwin(mintty)。我在许多相关目录上运行了
chmod-R 777*
,如: /usr/bin/

  • c:/Development/appengine-php-sdk-1.8.0/
  • c:/Development/php/
  • c:/Development/Php脚本/helloworld/
  • 错误

    File "/usr/lib/python2.7/threading.py", line 551, in __bootstrap_inner
        self.run()
    
     File "/usr/lib/python2.7/threading.py", line 504, in run
        self.__target(*self.__args, **self.__kwargs)
    
    File "/cygdrive/c/Development/appengine-php-sdk-1.8.0/google_appengine/google/appengine/tools/devappserver2/server.py", line 1232, in _loop_adjusting_instances
        self._adjust_instances()
    
    File "/cygdrive/c/Development/appengine-php-sdk-1.8.0/google_appengine/google/appengine/tools/devappserver2/server.py", line 1209, in _adjust_instances
        self._add_instance(permit_warmup=True)
    
    
     File "/cygdrive/c/Development/appengine-php-sdk-1.8.0/google_appengine/google/appengine/tools/devappserver2/server.py", line 1087, in _add_instance
        expect_ready_request=perform_warmup)
    
     File "/cygdrive/c/Development/appengine-php-sdk-1.8.0/google_appengine/google/appengine/tools/devappserver2/php_runtime.py", line 195, in new_instance
        self._check_environment(php_executable_path)
    
     File "/cygdrive/c/Development/appengine-php-sdk-1.8.0/google_appengine/google/appengine/tools/devappserver2/php_runtime.py", line 138, in _check_environment
        env={})
    
    File "/cygdrive/c/Development/appengine-php-sdk-1.8.0/google_appengine/google/appengine/tools/devappserver2/safe_subprocess.py", line 61, in start_process
        stdin=subprocess.PIPE)
    
    File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
        errread, errwrite)
    
     File "/usr/lib/python2.7/subprocess.py", line 1248, in _execute_child
        raise child_exception
    
    OSError: [Errno 13] Permission denied
    
    如何确定权限问题所在的文件

    编辑 没有此新错误的回溯(现在我正在调用实际的exe):
    警告2013-06-04 02:21:13243 api_server.py:329]无法初始化图像api;您可能缺少Python“PIL”模块。
    信息2013-06-04 02:21:13252 api_server.py:153]正在以下位置启动api服务器:http://localhost:51615
    INFO 2013-06-04 02:21:13261 dispatcher.py:164]正在启动服务器“默认”并在以下位置运行:http://localhost:8080
    信息2013-06-04 02:21:13324管理服务器。py:117]正在以下位置启动管理服务器:http://localhost:8000
    错误2013-06-04 02:21:13553 php_runtime.py:199]php运行时不可用,因为:未指定输入文件。

    然后,当我转到
    localhost:8080
    时,我得到以下信息: `使用--PHP_executable_path标志(“/cygdrive/c/Development/PHP/PHP cgi.exe”)指定的PHP解释器与App Engine PHP开发环境不兼容


    没有指定输入文件。`

    问题出在命令行中:

    appengine-php-sdk-1.8.0/google_appengine/dev_appserver.py --php_executable_path=/cygdrive/c/Development/php/ /cygdrive/c/Development/PhpScripts/helloworld/
    
    您的
    php\u可执行文件\u路径
    不是一个可执行文件,而是一个目录。因此,GAE试图运行
    /cygdrive/c/Development/php/
    ,就像它是一个程序一样,并获得一个
    EACCES
    (“权限被拒绝”),这正是它应该得到的

    修复方法是改为传递
    /cygdrive/c/Development/php/php.exe
    (或其名称)


    我相信您的新问题正是我在早期的评论中提到的,也是在这个答案的早期版本中提到的:您正在以不起作用的方式混合cygwin和本机代码

    特别是,看起来您正在cygwin Python解释器中运行本机Windows版本的GAE,然后将其指向本机Windows
    php cgi
    解释器。很难准确地猜测这多重错配中的哪一个是罪魁祸首,但很有可能是其中之一。因此,要么:

    • 使用本机Windows Python,或
    • 使用cygwin/POSIX GAE和cygwin PHP解释器

    一种快速而肮脏的方法是临时修改
    safe_subprocess.py:61
    以在进行任何调用之前打印路径或参数。一种更简洁的方法是在调试器中运行它并在该行中断。但是,如果您查看堆栈链上的几个级别,它很可能是
    php\u executable\u path
    。您在yaml配置和/或
    --php\u executable-path
    命令行标志中指定了什么?它是Cygwin PHP解释器,还是本机Windows解释器?你能在Cygwin shell中运行它吗?@abarnert app.yaml是
    应用程序:helloworld版本:1运行时:php api_版本:1-url:/.*脚本:helloworld.php
    @abarnert我的命令是`appengine-php-sdk-1.8.0/google\u appengine/dev\u appserver.py--php\u可执行文件路径=/cygdrive/c/Development/php//cygdrive/c/Development/phpscript/helloworld/`@menting311,尝试将
    php\u可执行文件路径
    更改为php的二进制文件,而不是目录。类似于
    --php\u executable\u path=/cygdrive/c/Development/php/bin/php
    ,或者在您的系统上的任何位置。您能推荐一个本机Windows Python命令行环境吗?@menting311:是的。转到,然后单击链接下载适用于Windows的Python安装程序。来自GAE指令的链接也会起作用(因为它指向同一个页面)。或者,更简单的是……Windows GAE SDK不是有自己的嵌入式Python解释器和使用它的启动器吗,只要你不特意在不同的Python下显式运行
    dev_appserver.py
    ,谷歌没有明确说明如何使用它。或者,如果是这样的话,我完全错过了它。只是要澄清一下……我给出命令的php-cgi.exe php解释器就是从GAE教程下载的Python2.7中的解释器。