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