簡體   English   中英

Heroku 中的 PHP 錯誤日志

[英]PHP Error Logs in Heroku

我在 Heroku 上部署了一個 PHP 應用程序,但我似乎無法找到 apache 錯誤日志。 使用命令$heroku logs我似乎只得到 apache 訪問日志。 所以一堆 GET 200 OK 等,但沒有錯誤信息被放入本地的錯誤日志中,例如 'PHP Fatal error: blah blah '

我在哪里可以訪問 Heroku 上的這些錯誤日志,或者如何告訴應用程序像寫入本地錯誤日志一樣寫入 Heroku 的日志?

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

經過大量實驗,看起來您需要在 php.ini 中注釋掉error_log並確保log_errors = on .. 這應該將您的錯誤輸出到 stderr,heroku logplex 可以在其中獲取流,然后使用heroku logs --tail進行監視heroku logs --tail .. 我啟動了一個 heroku facebook 應用程序並查看了他們的 phpinfo() 並復制了設置。

嘗試添加:

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

到 PHP 頁面/應用程序的最頂部

我們必須在 bin/compile 文件中將它添加到我們的 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 設置的大部分內容。

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

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

我的 Laravel 項目我實現了按問題查看錯誤

heroku 配置:設置 APP_DEBUG=true

再次訪問應用程序,錯誤將顯示在瀏覽器中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM