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 /我创build了一个新的laravel项目。 这一切都正常工作,如果我换了一个基本的echo "hello world"; index.php echo "hello world"; 如果我使用echo "called";exit(); 我可以确定laravel的index.php部分是否被执行。

它死于第53行:

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

我不知道为什么会发生这种情况,我已经尝试使用docker exec -it <cid> bash来查看我的php-fpm容器中是否有错误日志。 所有日志都被redirect到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扩展所产生的正确的错误日志。

根据我们在freenode上的## php的讨论…

你的问题是,php.ini设置“log_errors”设置为关。

你的选择是:

  • 在php.ini中设置log_errors = On
  • 在你的池配置中设置php_admin_flag [log_errors] = On(对于基于php:5.6-fpm docker容器php:5.6-fpm ,位于/usr/local/etc/php-fpm.conf文件中)
  • 或者可能在.user.ini中设置log_errors = On(php的per-dir配置,类似于.htaccess)

正如我可以看到你的Mac正在运行的请求,Mac上建立的码头环境也? 如果可以的话,通过在php-fpm容器上运行bash,试图写入暴露的卷? (容器上的/var/www/html