2012-12-07 10 views
17

Mam aplikację PHP wdrożoną na Heroku, ale nie mogę zlokalizować logu błędów Apache. Używając polecenia $heroku logs wydaje mi się, że otrzymuję tylko dzienniki dostępu do Apache. Więc grono GET 200 OK etc, ale nie ma informacji o błędzie, który należy umieścić w dzienniku błędów lokalnie, takich jak „PHP Fatal error: bla blaLogi błędów PHP w Heroku

Gdzie mam dostępu do tych dzienników błędów na Heroku, albo jak czy chcę, aby aplikacja pisała do logu Heroku, tak jak robi to lokalny dziennik błędów?

Czuję, że przeoczyłem coś oczywistego, ale nie mogę znaleźć rozwiązania.

+0

zastanawiałem się nad tym. Proszę dać odpowiedź, jeśli się dowiedziałeś. – bonez

Odpowiedz

5

Po wielu eksperymentach, wygląda na to trzeba wykomentuj error_log w php.ini i upewnij log_errors = on .. To powinno wyjść twoje błędy na stderr gdzie logplex Heroku może odebrać strumień, a następnie monitor heroku logs --tail .. Uruchomiłem aplikację heroku na Facebooku i przyjrzałem się ich phpinfo() i skopiowałem konfigurację.

+0

W twojej opinii, więc po prostu muszę ustawić 'log_errors = On' w moim php.ini? To nie działa dla mnie .. – fain182

+0

czy też skomentowałeś błąd error_log, jak sugeruje odpowiedź? – bonez

0

To nie jest związane z wdrażaniem Heroku, ale z konfiguracją PHP. Dyrektywa error_log zarządza tym.

Dyrektywa error_log definiuje nazwę pliku, w którym powinny być rejestrowane błędy skryptu. Plik powinien być zapisywalny przez użytkownika serwera WWW.

0

spróbuj dodać:

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

do samej górze strony PHP/app

+0

To nie działa –

+0

Naprawdę? Widzę to w moim dzienniku: "Śro 06 lutego 18:51:35 2013] [błąd] [klient 10.44.51.101] Błąd analizy PHP: błąd składniowy, nieoczekiwany T_STRING w /app/www/index.php na linii 5 " Czy nie tego chciał PO? – joshbirk

+0

Kod testowy to po prostu: Wdrażam Heroku, bez zmian w konfiguracji - i uruchamiam logi heroku po trafieniu index.php. – joshbirk

1

Musieliśmy dodać do naszej buildpack w bin/skompilować plik:

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 

Zostawiliśmy ustawienia php.ini i https.conf w większości takich, jakie są.

Powiązane problemy