2012-12-07 163 views
17

我在Heroku上部署了一個PHP應用程序,但我似乎無法找到Apache錯誤日誌。使用命令$heroku logs我似乎只得到apache訪問日誌。於是一幫送200 OK等,但在本地投入的錯誤日誌中沒有錯誤信息,如「PHP致命錯誤:等等等等Heroku中的錯誤日誌

我在哪裏訪問在Heroku上,或者如何將這些錯誤日誌我告訴應用程序寫入Heroku的日誌,就像它本地的錯誤日誌?

我覺得我忽略了一些明顯的東西,但我似乎無法找到解決方案。

+0

想知道這個我自己。如果你發現了,請給出答案。 – bonez

回答

5

大量實驗後,它看起來像你需要在php.ini 註釋掉error_log並確保log_errors = on ..這應該輸出你的錯誤到stderr在Heroku的logplex可以拿起流,然後用監控heroku logs --tail ..我啓動了一個heroku facebook應用程序,並查看了他們的phpinfo()並複製了設置。

+0

在你看來,所以我只需要在我的php.ini中設置'log_errors = On'?它不適用於我.. – fain182

+0

您是否也評論過error_log作爲答案的建議? – bonez

0

這與Heroku的部署方式無關,而與您的PHP配置無關。 error_log指令管理。

error_log指令定義了應記錄腳本錯誤的文件的名稱。該文件應該可以由Web服務器的用戶寫入。

0

嘗試增加:

error_reporting(E_ALL); 
ini_set("display_errors", 1); 

到PHP頁面的最頂端/應用

+0

這不起作用 –

+0

真的嗎?我在我的日誌中看到這個: 「Wed Feb 06 18:51:35 2013」​​[error] [client 10.44.51.101] PHP解析錯誤:語法錯誤,第5行/app/www/index.php中的意外T_STRING 「 這不是OP想要的嗎? – joshbirk

+0

測試代碼只是: <?php error_reporting(E_ALL); ini_set(「display_errors」,1); 明顯的錯誤在這裏 ?> 我部署到Heroku,沒有配置更改 - 然後運行heroku登錄後index.php。 – joshbirk

1

我們不得不這樣在bin加入到我們的buildpack /編譯文件:

cat >>boot.sh <<EOF 
for var in \`env|cut -f1 -d=\`; do 
    echo "PassEnv \$var" >> /app/apache/conf/httpd.conf; 
done 
touch /app/apache/logs/error_log 
touch /app/apache/logs/access_log 
touch /app/apache/logs/php_error.log 
tail -F /app/apache/logs/error_log & 
tail -F /app/apache/logs/access_log & 
tail -F /app/apache/logs/php_error.log & 
echo "Launching apache" 
exec /app/apache/bin/httpd -DNO_DETACH 
EOF 

我們主要保留了php.ini和https.conf設置。