迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > PHP >

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

作者:迹忆客 最近更新:2022/12/26 浏览次数:

首先,一般情况下关于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])。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

使用 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 容器中日志的不同方法。日志是应用程序在特定事件或状态发生时记录的信息,它们帮助我们监控应用程序并采取必要的措施。

Docker 中的守护进程日志位置

发布时间:2023/04/18 浏览次数:175 分类:Docker

本文将讨论守护进程事件以及我们通常可以在哪里找到每个操作系统 (OS) 的守护进程日志。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便