使用symfony2设置php-sdk-gae


Setting up php-sdk-gae with symfony2

我正试图在php-sdk-gae中使用helloworld示例包运行symfony2。

我遵循中提供的说明https://developers.google.com/appengine/docs/php/我可以用开发控制器运行演示(即:按如下方式配置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);

但不使用生产环境的默认配置("棒",false(。

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

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

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

让我快速解释一下AppKernel::__construct

$kernel = new AppKernel($environment, $debug);

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

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

这涵盖了没有得到http 500错误(由未捕获的异常引起(的第一种和第三种情况。

$kernel = new AppKernel('prod', true);
$kernel = new AppKernel('dev', true);

现在您声明在debug设置为false的情况下,错误未在开发环境中抛出。

$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 附带的文件,我的应用程序也可以使用

也许这与为了避免重复内容而进行的更改有关(/app.php/something和/something(,因为由于Symfony 2.2,/app.php重定向(301(请求。

我认为问题在于GAE对文件系统缺乏写支持。此外,symfony似乎依赖于tempnam((函数,该函数在低于1.9.18的版本中被禁用,在我写这篇文章的时候,它还不公开。

缓存也有问题。

也许问题是这样的,我已经在localhost中尝试了一个开发版本的项目,好吧。当它被部署到GAE时,它会失败。

也许这会有所帮助。http://www.ideato.it/planet-ideato/symfony2-su-google-app-engine/