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_DEPRECATED
; display_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_*flag
和 php_*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_flag
和 php_value
指定的选项,是可以在PHP
代码中通过函数ini_set
覆盖的。 而php_admin_flag
和php_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]
)。
相关文章
使用 PHP MySQLi 函数获取最后插入的 ID
发布时间:2023/05/09 浏览次数:85 分类:MySQL
-
本篇文章简要介绍了 PHP mysqli() 函数并演示了如何使用它从 MySQL 数据库中获取最后插入的 ID。它是一个名为 mysqli 的 MySQL 驱动程序扩展版本,
在 PHP 中使用 MongoDB 作为文件存储
发布时间:2023/04/20 浏览次数:133 分类:MongoDB
-
在为大文件创建可扩展存储方面,MongoDB 及其 GridFS(使用 MongoDB 查询语言 - MQL 编写)是市场上最好的文件存储解决方案之一。 在本教程中,您将学习如何在 PHP 中使用 MongoDB 作为文件存储。
在 Linux 中托管 Docker Internal
发布时间:2023/04/18 浏览次数:139 分类:Docker
-
Docker 允许开发人员通过将应用程序包装在称为容器的标准化单元中来高效地构建、测试和部署应用程序。 在使用 Docker 容器时,您可能会遇到需要将容器与主机连接的场景。
在 Docker 中设置工作目录
发布时间:2023/04/18 浏览次数:82 分类:Docker
-
在 Docker 中,我们可以通过编辑 Dockerfile 并添加密钥 WORKDIR 来设置我们的工作目录。本文将讨论在 Docker 中更改我们当前和默认的工作目录。
在 Docker 容器中公开多个端口
发布时间:2023/04/18 浏览次数:143 分类:Docker
-
Docker 容器使用端口来实现万维网上不同设备之间的通信。 在本篇文章中,我们将学习如何使用 Nginx 应用程序在 Docker 容器中公开多个端口。
将用户添加到 Docker 容器
发布时间:2023/04/18 浏览次数:187 分类:Docker
-
在本文中,我们将学习如何通过实现返回产品数组的 Express 应用程序将用户添加到 Docker 容器。
使用 Docker 网络主机命令
发布时间:2023/04/18 浏览次数:112 分类:Docker
-
在本文中,我们将学习如何使用 --network 命令将容器添加到主机网络。 如果我们不使用此命令指定网络,我们还将了解如何将容器添加到默认网络。
清除 Docker 容器日志
发布时间:2023/04/18 浏览次数:181 分类:Docker
-
本文介绍了我们可以用来清除 docker 容器中日志的不同方法。日志是应用程序在特定事件或状态发生时记录的信息,它们帮助我们监控应用程序并采取必要的措施。