繁体   English   中英

使用symfony2设置php-sdk-gae

[英]Setting up php-sdk-gae with symfony2

我正在尝试使用php-sdk-gae中的hello world示例包运行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);

但不是生产环境的默认配置('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错误的原因。

让我快速解释一下AppKernel :: __ construct

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

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

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

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

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

现在,您声明错误不会在dev环境中抛出,并且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附带的文件,我的Symfony 2.2应用程序也可以使用

也许这是为了避免重复内容(/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/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM