web-dev-qa-db-ja.com

Docker php-fpm / nginxセットアップ:php-fpmが空白500をスローし、エラーログなし

プロジェクトのGitリポジトリ: https://github.com/tombusby/docker-laravel-experiments (執筆時のHEADは823fd22)。

これが私の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
_

Src /に新しいlaravelプロジェクトを作成しました。これは、基本的な_echo "hello world";_を備えたものとindex.phpを交換し、echo "called";exit(); laravelのindex.phpの一部が実行されることを確認できます。

53行目で死ぬ:

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

なぜこれが発生するのかわかりません。また、_docker exec -it <cid> bash_を使用して、php-fpmコンテナーのエラーログを確認しました。すべてのログはstderr/stdout(dockerによって収集されます)にリダイレクトされます。

Dockerが収集する出力は次のとおりです。

_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" "-"
_

ご覧のとおり、「500」はエラーが発生した理由を解明するのにほとんど役立ちませんが、スタックトレースや、Apacheのphp拡張機能が生成するはずの適切なエラーログなどを取得する方法が見つかりません。

15
Tom Busby

Freenode上の## phpでの議論に従って...

問題は、php.ini設定の「log_errors」がOffに設定されていることです。

オプションは次のとおりです。

  • php.iniでlog_errors = Onを設定します
  • php_admin_flag [log_errors] = onをプール構成でオンにします(php:5.6-fpmファイルにあります/usr/local/etc/php-fpm.conf
  • または.user.iniでlog_errors = Onを設定する(phpのディレクトリごとの設定、.htaccessと同様)
17
AcidReign

Macでリクエストを実行していることがわかりますが、MacにもDocker環境がセットアップされていますか?可能であれば、php-fpmコンテナーでbashを実行して、公開されたボリュームに書き込みを試みますか? (/var/www/html(コンテナ上)

0
Luigi Pressello