2016-05-06 18 views
11

Git Repo des Projekts: https://github.com/tombusby/docker-laravel-experiments (HEAD zum Zeitpunkt des Schreibens ist 823fd22).Docker php-fpm/nginx Einrichtung: php-fpm werfen blank 500, keine Fehlerprotokolle

Hier ist meine Docker-compose.yml:

nginx: 
    image: nginx:stable 
    volumes: 
    - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro 
    volumes_from: 
    - php 
    links: 
    - php:php 
    ports: 
    - 80:80 

php: 
    image: php:5.6-fpm 
    volumes: 
    - ./src:/var/www/html 
    expose: 
    - 9000 

In src/Ich habe ein frisches Laravel Projekt erstellt. Das alles funktioniert korrekt, wenn ich index.php für einen mit einem Basis echo "hello world"; austausche und wenn ich echo "called";exit(); benutze, kann ich identifizieren, dass ein Teil von laravels index.php ausgeführt wird.

Es stirbt in Zeile 53:

$response = $kernel->handle(
    $request = Illuminate\Http\Request::capture() 
); 

Ich habe keine Ahnung, warum dies geschieht, und ich habe versucht, docker exec -it <cid> bash einen Blick in meinen php-fpm Behälter für Fehlerprotokolle zu haben, verwenden. Alle Protokolle werden zu stderr/stdout umgeleitet (das vom Andockfenster erfasst wird).

Hier ist die Ausgabe, die Andockfenster sammelt:

php_1 | 172.17.0.3 - 06/May/2016:12:09:34 +0000 "GET /index.php" 500 
nginx_1 | 192.168.99.1 - - [06/May/2016:12:09:34 +0000] "GET /index.php HTTP/1.1" 500 5 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36" "-" 

Wie Sie „500“ hat so ziemlich nichts sehen kann mir zu helfen, zu arbeiten, warum ein Fehler war, aber ich kann jede mögliche Weise nicht finden, den Stack-Trace zu bekommen oder so etwas wie die richtigen Fehlerprotokolle, die die Apache-PHP-Erweiterung erzeugt hätte.

+0

ich bin vor einem _very_ ähnliches Problem ... haben Sie jemals die Ursache finden das Problem em? – chrisvdb

+1

Die akzeptierte Antwort löst Ihr Problem. Die Standard-php-fpm config vom offiziellen docker iamge hat Fehler ausgeschaltet. Wenn Sie versuchen, es mit 'ini_set' oder ähnlichem zu aktivieren, ignoriert php-fpm das. Sie müssen es in der php-fpm Konfigurationsdatei mit 'php_admin_flag [log_errors]' einstellen. Ich tat dies, indem ich meinen Docker komponieren mounte eine costom php-fpm Config-Datei über die Oberseite des bestehenden als schreibgeschütztes Volume. –

+0

Auch, wenn diese Frage beschreibt ein Problem, das Sie haben, dann Upvotes sind immer willkommen;) –

Antwort

12

Gemäß unserer Diskussion in ## php auf freenode ...

Ihr Problem ist, dass die php.ini Einstellung "log_errors" auf Aus gestellt ist.

Ihre Optionen sind:

  • Satz log_errors = On in php.ini
  • Satz php_admin_flag [log_errors] = On in Ihrem Pool config (für Container Docker basierend auf php:5.6-fpm die in der Datei ist /usr/local/etc/php-fpm.conf)
  • oder möglicherweise Set log_errors = On in .user.ini (pHP pro-dir Config, ähnlich wie .htaccess)
+1

endlich etwas, das funktioniert, ich habe zu lange dafür gesucht! 'php_admin_flag [log_fehler] = Ein' – peedee

0

Wie kann ich sehen, dass Ihre Anfrage von einem Mac ausgeführt wird, ist die Docker-Umgebung auch auf dem Mac eingerichtet? Wenn es möglich ist, können Sie, indem Sie bash auf dem php-fpm Container ausführen, versuchen, in das exposed Volume zu schreiben? (/var/www/html auf den Behälter)

+0

Das ist nicht das Problem. Alles funktioniert ordnungsgemäß für eine einfache Hallo Welt App. Mein Problem ist, dass ich 500 bekomme und ich möchte die Logs sehen, um herauszufinden, warum das passiert ist. Ich kann keine Protokolle finden. –

+0

Was meinen Sie für eine "Hallo Welt App"? –

+0

wie in "Hallo Welt": –