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

2022-08-30 17:50:05

项目的 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项目。如果我用一个基本索引替换索引.php一个索引,并且如果我使用,我可以识别laravel索引的该部分.php确实被执行,那么这一切都可以正常工作。echo "hello world";echo "called";exit();

它死在第 53 行:

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

我不知道为什么会发生这种情况,我尝试使用在我的php-fpm容器中查看错误日志。所有日志都重定向到 stderr/stdout(由 docker 收集)。docker exec -it <cid> bash

下面是 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扩展程序会产生的正确错误日志的东西。


答案 1

根据我们在##php关于freenode的讨论...

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

您的选项是:

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

答案 2

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


推荐