[英]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.