PHP 错误日志级别控制:htaccess vs php.ini vs code 和 virtualhost



我的WAMP本地服务器中有一个虚拟主机,我在那里设置了日志文件。

我想将我的 PHP 日志错误级别更改为仅警告和错误。

最好的方法应该是.htaccess,我尝试了这个解决方案:

如何在 .htaccess 文件中禁用 PHP 中的通知和警告?

Dind不起作用(也尝试了其他人(。

最后转到php.ini文件,但是是不太灵活的选项。

1( 此级别错误指令的优先级是什么?(PHP.ini vs htaccess vs code( 我猜那个顺序?

2( 为什么在 .htaccess 中不起作用? 我只是将其设置在.htaccess之上,并没有工作。

我的建议是使用 httpd 环境变量。

这可以充当一个标志,以通知 Web 应用程序有关环境的信息。假设您有一个白标产品,例如,在设置应与特定虚拟主机一起使用的配置时,它可能很有用。

<VirtualHost *:80>
DocumentRoot "/srv/www/foo/public"
ServerName foo.com
<Directory /srv/www/foo/public>
# production | development | staging
SetEnv APPLICATION_ENV development
...

然后在你的PHP代码中,你可以像这样访问它:

<?php
define('APPLICATION_ENV_LOCAL', 'local');
define('APPLICATION_ENV_DEVELOPMENT', 'development');
define('APPLICATION_ENV_STAGING', 'staging');
define('APPLICATION_ENV_PRODUCTION', 'production');
$app_env = (getenv('APPLICATION_ENV')) ? getenv('APPLICATION_ENV') : false;
if (empty($app_env) || ! in_array($app_env, array(APPLICATION_ENV_LOCAL, APPLICATION_ENV_DEVELOPMENT, APPLICATION_ENV_STAGING, APPLICATION_ENV_PRODUCTION))) {
throw new Exception("APPLICATION ENV IS NOT SPECIFIED OR IS INVALID.");
}

我要做的是根据环境包含完全独立的配置/INI 类型文件。这些可以确定错误报告行为,维护不同的数据库连接,以及依赖于应用程序环境的任何其他内容。

  1. 为什么在.htaccess中不起作用?

是否可以在.htaccess中设置 PHP 标志取决于 PHP 在服务器上的安装方式。PHP需要作为Apache模块安装。

但是,从 PHP 5.3 开始,每个目录的 PHP 配置文件以.user.ini文件的形式得到支持(请注意点前缀(。它们采用与php.ini文件相同的形式,但在用户空间代码中基于每个目录工作。

例如:

; All errors and warnings only
error_reporting=E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT & ~E_USER_NOTICE & ~E_USER_DEPRECATED
  1. 此级别错误指令的优先级是什么?(PHP.ini vs htaccess vs code(我猜那个顺序?

是的,该顺序(.htaccess.user.ini(。除了某些设置只能在链的更高位置设置,例如。在php.ini.

最新更新