web-dev-qa-db-de.com

Docker php-fpm/nginx-setup: php-fpm wirft 500 leer, keine Fehlerprotokolle

Git-Repo des Projekts: https://github.com/tombusby/docker-laravel-experiments (HEAD zum Zeitpunkt des Schreibens ist 823fd22).

Hier ist mein 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/habe ich ein neues Laravel-Projekt erstellt. Dies funktioniert alles korrekt, wenn ich index.php mit einem einfachen echo "hello world"; austausche und wenn ich echo "called";exit(); benutze, kann ich feststellen, dass ein Teil von laravel's index.php ausgeführt wird.

Es stirbt in Zeile 53:

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

Ich habe keine Ahnung, warum dies passiert, und ich habe mit docker exec -it <cid> bash versucht, in meinem PHP-Fpm-Container nach Fehlerprotokollen zu suchen. Alle Protokolle werden nach stderr/stdout umgeleitet (das vom Docker erfasst wird).

Hier ist die Ausgabe, die das Andockgerät erfasst:

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 sehen, hilft "500" nicht, um herauszufinden, warum ein Fehler aufgetreten ist. Ich kann jedoch keine Möglichkeit finden, die Stack-Ablaufverfolgung abzurufen oder die richtigen Fehlerprotokolle, die von Apaches PHP-Erweiterung erzeugt wurden.

11
Tom Busby

Wie in unserer Diskussion in ## php über freenode ...

Ihr Problem ist, dass die php.ini-Einstellung "log_errors" auf Off gesetzt ist.

ihre Optionen sind:

  • set log_errors = Ein in der php.ini
  • set php_admin_flag [log_errors] = On in Ihrer Pool-Konfiguration (für Docker-Container basierend auf php:5.6-fpm, der sich in der Datei /usr/local/etc/php-fpm.conf befindet)
  • oder evtl. log_errors = On in .user.ini gesetzt (php per-dir-Konfiguration, ähnlich wie .htaccess)
15
AcidReign

Wie ich sehen kann, dass Ihre Anfrage von einem Mac ausgeführt wird, ist die Docker-Umgebung auch auf dem Mac eingerichtet? Wenn dies möglich ist, versuchen Sie, indem Sie bash im php-fpm-Container ausführen, in den freigegebenen Datenträger zu schreiben ? (/var/www/html auf dem Container)

0
Luigi Pressello