簡體   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