docker 中 php 关于错误信息显示的配置

首先,一般情况下关于php的错误信息显示要在php.ini配置文件中进行配置。配置项如下:

error_reporting = E_ALL & ~E_STRICT & ~E_DEPRECATED

display_errors = On

display_startup_errors = On

log_errors = On

error_log = php_errors.log

display_errors 控制PHP是否要输出错误信息。默认情况下是On 开启的。在开发环境中这个选项要打开,方便开发过程中调试。但是到了生产环境,这个选项要关闭; error_reporting 是控制错误显示级别的 默认值 E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATEDdisplay_startup_errors 这个选项是控制PHP解析器在启动的过程中产生的错误是否显示,而 display_errors是PHP解析器已经准备完成,在解析执行我们的PHP代码的时候产生的错误信息。二者控制的阶段是不同的。 同样,在开发环境中开启,生产环境关闭。默认情况下是关闭的;

log_errors 控制是否将错误信息记录的日志中去,默认情况下是 Off,关闭将错误信息写入日志。 如果设置为On,则将错误信息写入error_log指定的日志文件或者日志服务。 该选项要想开启,则前提是display_errors必须关闭(Off)。 如果display_errors开启,则错误信息由PHP显示出来,而不会记录到日志中。也就是说 两者不可同时发生(当然可以同时关闭)。 所以说生产环境要将display_errors关闭,而将该选项打开。 error_log 指定错误信息记录的位置。 每个选项详细说明,以及需要搭配其他哪些选项等可以去php.ini文件中查看。

然而,如果我们的环境是 Docker + PHP-FPM ,错误信息的配置就不受php.ini的控制了。配置项在fpm的配置文件中。配置项

[www]

php_flag[display_errors] = off

php_admin_value[error_log] = /usr/local/var/log/php-fpm.www.error.log

php_admin_flag[log_errors] = on

php_admin_value[error_reporting] = E_ALL & ~E_DEPRECATED & ~E_STRICIT

php_admin_value[display_startup_errors] = on

可以看到[] 中对应的都是php.ini中的选项。每个选项的含义和上面我们说的是一样的。下面我们介绍一下 php_*flagphp_*value。一共有四种配置

  • php_flag

  • php_value

  • php_admin_flag

  • php_admin_value

其中 php_*flag 这种配置项的值只能是 on, off, 1, 0, true, false, yes or no。也就是说表示控制开关的选项要用php_*flag; 而php_*value 选择性就多了,它指定的选项可以根据需要任意的赋值。

对于 php_flagphp_value 指定的选项,是可以在PHP代码中通过函数ini_set覆盖的。 而php_admin_flagphp_admin_value 指定的选项是不能用ini_set函数覆盖的。

还有一个比较重要的地方是。如果要打开PHP的错误信息记录日志的功能,那么由error_log指定的日志文件必须是已经存在的。不要指望程序在写日志的时候自动创建日志文件(可以通过docker的文件映射功能,将本地的一个文件映射到相应的地方)。

其实 php_*flag/php_*value 就是用来覆盖php.ini中的选项的。php.ini中的配置项是对整个PHP环境生效,也就是所有的工作池都会受php.ini配置的影响。 而通过php_*flag/php_*value就可以根据每个工作池各自的需要来进行自己的配置。 就像上面的www工作池。 工作池通过 [] 进行指定([www])。

本文转载自:迹忆客(https://www.jiyik.com)

以上是 docker 中 php 关于错误信息显示的配置 的全部内容, 来源链接: utcz.com/z/290202.html

回到顶部