Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用symfony2设置php sdk gae_Php_Google App Engine_Symfony - Fatal编程技术网

使用symfony2设置php sdk gae

使用symfony2设置php sdk gae,php,google-app-engine,symfony,Php,Google App Engine,Symfony,我试图在PHPSDK gae中使用hello world示例包运行symfony2 我遵循中提供的说明,可以使用开发控制器运行演示(即:配置app.yaml,如下所示: application: helloworld version: 1 runtime: php api_version: 1 handlers: - url: /bundles static_dir: helloWorld/web/bundles - url: /favicon.ico static_files: h

我试图在PHPSDK gae中使用hello world示例包运行symfony2

我遵循中提供的说明,可以使用开发控制器运行演示(即:配置app.yaml,如下所示:

application: helloworld
version: 1
runtime: php
api_version: 1

handlers:
- url: /bundles
  static_dir: helloWorld/web/bundles

- url: /favicon.ico
  static_files: helloWorld/web/favicon.ico
  upload: helloWorld/web/favicon.ico

- url: /.*
  script: helloWorld/web/app_dev.php
它工作得很好,在运行服务器并加载/Hello/World页面后,我能够获得一个Hello-World

但是当我尝试使用生产控制器(app.php而不是app_dev.php)运行它时,我得到了一个内部服务器错误

Request URL:http://mysite.local:8080/hello/World
Request Method:GET
Status Code:500 Internal Server Error
唯一的线索是在我启动服务器的控制台窗口中,显示了

ERROR:root:php failure (255) with:
Status: 500 Internal Server Error
X-Powered-By: PHP/5.4.15
Content-type: text/html
如果我在app.php文件中做了一些更改,我意识到它可以与以下AppKernel加载行配合使用:

$kernel = new AppKernel('prod', true);
$kernel = new AppKernel('dev', false);
$kernel = new AppKernel('dev', true);
但不使用生产环境的默认配置('prod',false)

我正在使用以下命令启动GAE服务器: google_appengine/dev_appserver.py--php_executable_path=/home/jon/php sdk gae/php-5.4.15/installdir/bin/php-cgi helloWorld/


我是GAE新手,我想知道在哪里可以找到日志来获取有关此错误的更多信息。

您的生产环境中存在未捕获的异常。这就是http 500错误的原因

让我快速解释一下

第一个参数是环境,第二个参数是调试选项

如果您将debug设置为true,symfony将尝试捕获异常并向您显示一个漂亮的stracktrace

这涵盖了第一种和第三种情况,在这种情况下,无法获得http 500错误(由未捕获的异常引起)

现在,您声明在debug设置为false时,错误不会在dev环境中抛出

$kernel = new AppKernel('dev', false);
这意味着在开发环境中没有异常

现在,您必须检查生产日志文件,以确定引发了哪个异常

使用tail-f在shell(即bash)中查看对该文件所做的实时更改,如果不可用,则在编辑器中打开该文件,并在最后查找异常

tail -f app/logs/prod.log 
在symfony2标准版中,可以在以下位置找到日志文件:

app/logs/%kernel.environment%.log  

…由于%kernel.environment%是dev/prod/test中的一个,问题与Symfony 2.2附带的.htaccess文件有关

我可以毫无问题地使用symfony 2.0中的应用程序,如果我将symfony 2.2附带的web/.htaccess文件替换为symfony 2.0附带的文件,我的symfony 2.2应用程序也可以工作


可能是为了避免重复内容(/app.php/something and/something)而进行的更改相关,因为自Symfony 2.2以来,/app.php重定向(301)请求。

缓存也存在问题

也许问题在于,我在本地主机上尝试了一个开发版本的项目,好吧。当它被部署到GAE时,它失败了

也许这会有帮助。

我认为问题在于GAE对文件系统的写支持不足。而且,symfony似乎依赖于tempnam()在低于1.9.18的版本中禁用的功能,在我写这篇文章时,该版本还未公开。

请提供应用程序的某些部分/logs/prod.log。http 500应该是由生产中的异常引起的…哪一个?您使用的是哪个版本的symfony?我使用的是symfony 2.2。我试图深入了解这些日志(logs/prod.log&logs/dev.log),但是,当我强制执行错误时,当我在dev模式下运行内核时,prod.log中没有行,dev.log中有一些行,但没有错误行,因为dev环境中没有错误。它显示“Hello World!”消息成功。我怀疑生产环境中有一些操作无法用GAE完成(如缓存文件或类似的东西),请确保输出Hello World!的路由不仅在routing_dev.yml中配置-您能确认吗?我能确认。它在routing.yml中。它与AppKernel一起工作('prod',true)配置,但不使用AppKernel('prod',false)您是否在本地apache/nginx安装中试用过您的项目,并且可以确认它在那里与AppKernel('prod',false)一起工作?它在apache中工作,符合vía:或(由于sf2.2中.htaccess的更改,它不工作)
tail -f app/logs/prod.log 
app/logs/%kernel.environment%.log