Docker php fpm/nginx设置:php fpm抛出空白500,无错误日志

Docker php fpm/nginx设置:php fpm抛出空白500,无错误日志,php,nginx,docker,error-logging,Php,Nginx,Docker,Error Logging,项目的Git回购:(撰写本文时的负责人是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 volum

项目的Git回购:(撰写本文时的负责人是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
我已经创建了一个新的laravel项目。如果我将index.php换成一个带有基本
echo“hello world”的index.php,所有这些都能正常工作如果我使用
回显“调用”;退出()我可以确定laravel的index.php的那部分确实得到了执行

它在第53行终止:

$response = $kernel->handle(
    $request = Illuminate\Http\Request::capture()
);
我不知道为什么会发生这种情况,我尝试使用
docker exec-it 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扩展将生成的正确错误日志。

正如我所看到的,您的请求是由Mac运行的,docker环境也是在Mac上设置的吗? 如果是,您可以通过在php fpm容器上运行bash,尝试写入公开的卷吗?(
/var/www/html
在容器上)

根据我们在##php on freenode中的讨论

您的问题是php.ini设置“log_errors”设置为Off

你的选择是:

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

这不是问题所在。基本的hello world应用程序一切正常。我的问题是我得到了一个500,我想看看日志,找出为什么会发生这种情况。我找不到任何日志。你说的“hello world应用程序”是什么意思?比如“hello world”:我想我们在这里有些困惑:我只是想知道如何获取日志。我对解决导致错误的原因不感兴趣,而是对获取错误日志本身感兴趣。我面临着一个非常类似的问题。。。您是否找到了问题的根本原因?公认的答案将解决您的问题。来自官方docker iamge的默认php fpm配置已关闭错误。如果您尝试使用
ini\u set
或类似工具启用它,那么php fpm会忽略这一点。您需要在php fpm配置文件中使用
php\u admin\u标志[log\u errors]
进行设置。为此,我让docker compose将costom php fpm配置文件作为只读卷安装在现有配置文件的顶部。此外,如果此问题描述了您遇到的问题,请向上投票;)完成。实际上,我的意思是你的基本问题(Laravel不工作,而不是日志不工作)听起来非常相似。最后,我确实按照建议启用了日志记录,并发现问题在于引导/缓存和存储目录的权限。将RUN chmod-R 777添加到Dockerfile解决了这个问题。不过,不完全确定是否有更优雅的解决方案。啊,好的,当然。是的,你可以777你的权限,但如果这让你觉得脏:
user=1000
group=staff
在你的php-fpm.conf中会修复权限问题(对于mac docker,但是问题会导致linux主机)。最后,一些有用的东西,我已经搜索了太久了
php\u admin\u标志[log\u errors]=On