Docker php-fpm/nginx 设置:php-fpm 抛出空白 500,没有错误日志
Docker php-fpm/nginx set-up: php-fpm throwing blank 500, no error logs
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 项目。如果我将 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 容器以获取错误日志。所有日志都重定向到 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 的 运行 请求,是否也在 Mac 上设置了 docker 环境?
如果可以,您可以通过 php-fpm 容器上的 运行 bash 尝试写入暴露的卷吗? (/var/www/html
在容器上)
根据我们在 freenode 上的##php 中的讨论...
您的问题是 php.ini 设置 "log_errors" 设置为关闭。
您的选择是:
- 在 php.ini
中设置 log_errors=开启
- 在您的池配置中设置 php_admin_flag[log_errors]=On(对于基于文件
/usr/local/etc/php-fpm.conf
中的 php:5.6-fpm
的 docker 容器)
- 或可能在 .user.ini 中设置 log_errors=On(php 的每个目录配置,类似于 .htaccess)
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 项目。如果我将 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 容器以获取错误日志。所有日志都重定向到 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 的 运行 请求,是否也在 Mac 上设置了 docker 环境?
如果可以,您可以通过 php-fpm 容器上的 运行 bash 尝试写入暴露的卷吗? (/var/www/html
在容器上)
根据我们在 freenode 上的##php 中的讨论...
您的问题是 php.ini 设置 "log_errors" 设置为关闭。
您的选择是:
- 在 php.ini 中设置 log_errors=开启
- 在您的池配置中设置 php_admin_flag[log_errors]=On(对于基于文件
/usr/local/etc/php-fpm.conf
中的php:5.6-fpm
的 docker 容器) - 或可能在 .user.ini 中设置 log_errors=On(php 的每个目录配置,类似于 .htaccess)