WolfiOS Docker镜像中PHP无输出及错误信息问题排查
调试WolfiOS Docker镜像中的Laravel应用:
php artisan无输出且错误信息无法打印 我在调试WolfiOS Docker镜像里的Laravel应用时,执行php artisan没有任何输出(正常情况下应显示帮助信息):
/var/www/html # php -d "display_errors=On" -d "display_startup_errors=On" artisan /var/www/html #
已做的排查操作
- 临时开启错误输出配置并验证生效
原本PHP配置中display_errors是关闭状态,我通过-d参数临时开启,且确认配置已生效:
/var/www/html # php -d "display_errors=On" -d "display_startup_errors=On" -i |grep error display_errors => STDOUT => STDOUT display_startup_errors => On => On error_append_string => no value => no value error_log => /var/log/php_error.log => /var/log/php_error.log error_prepend_string => no value => no value error_reporting => E_ALL => E_ALL html_errors => Off => Off ignore_repeated_errors => Off => Off log_errors => On => On xmlrpc_error_number => 0 => 0 xmlrpc_errors => Off => Off intl.error_level => 0 => 0
- 修改PHP配置文件并验证
我修改了PHP配置文件:
expose_php = Off error_reporting = ${PHP_ERROR_REPORTING} display_errors = On display_startup_errors = On
验证配置生效:
/var/www/html # php -i |grep error display_errors => STDOUT => STDOUT display_startup_errors => On => On error_append_string => no value => no value error_log => /var/log/php_error.log => /var/log/php_error.log error_prepend_string => no value => no value error_reporting => E_ALL => E_ALL html_errors => Off => Off ignore_repeated_errors => Off => Off log_errors => On => On xmlrpc_error_number => 0 => 0 xmlrpc_errors => Off => Off intl.error_level => 0 => 0
测试错误文件与标准输出
- 创建含语法错误的测试文件
error.php,执行后无输出:/var/www/html # cat error.php <?php echo "teststring /var/www/html # php error.php /var/www/html # - 确认STDOUT工作正常,创建无错误的
noerror.php执行有正常输出:/var/www/html # cat noerror.php <?php echo "no error" . PHP_EOL; /var/www/html # php noerror.php no error
- 创建含语法错误的测试文件
strace追踪发现异常相关记录
用strace前缀执行命令时,发现与ContainerException相关的文件读取记录:
openat(AT_FDCWD, "/var/www/html/vendor/psr/container/src/ContainerExceptionInterface.php", O_RDONLY) = 4
核心疑问
我暂时不关注具体的业务错误原因(后续可自行排查),想知道为什么已经开启了所有错误报告配置,程序出错时仍无法打印任何错误信息?
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

