sites-enabled
想象一下可以从中获得的几个/etc/apache2/sites-available
。(只有基于 Debian 的发行版这样工作。)
是否可以将warning
来自 php 脚本的消息静音特定站点,而不触及实际htdocs
?
通常有几种解决方案可以实现相关目标:
- 向执行的脚本添加
error_reporting()
指令(例如) 。error_reporting(E_ERROR);
- 在文件中设置 php_flags
.htaccess
如下:php_flag display_errors off
使用
ini_set
内部脚本:ini_set('display_errors', 'Off'); ini_set('display_startup_errors', 'Off'); error_reporting(0);
添加
@
到引发警告或错误的函数前面。- 改为
php.ini
实际说
error_reporting = E_ALL ^ E_WARNING
display_errors = 1
但是,这些都意味着要修改 htdocs 或全局应用更改。想象一下,它们以htdocs
只读方式挂载。我如何才能仅抑制某些网站的警告(或通知)?
我假设 Debian/Ubuntu 有a2ensite
特定的配置是有原因的,我希望我可以改变这些配置。示例“站点可用”配置中有一个log_level
指令,但它处理记录的消息量。而不是 php 脚本输出的消息。
如果可能的话,手动添加php.ini
或apache2.conf
或部分httpd.conf
也可以。
也可以看看:
答案1
如果您有权访问 apache vhost 配置,当然您也可以在 sites-available 目录中的虚拟主机中使用 php_flag 指令。这样,它们仅适用于此 vhost。
在您的虚拟主机中添加类似这样的内容:
<IfModule mod_php5.c>
php_admin_flag display_errors off
</IfModule>
编辑:
如果只想显示实际错误,则可以使用error_reporting
带有整数值的 php 指令,该整数值描述要显示的错误级别类型:
<IfModule mod_php5.c>
php_admin_flag display_errors on
php_admin_value error_reporting 22517
</IfModule>
这相当于设置
error_reporting = E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT & ~E_DEPRECATED;
在 php.ini 中。更多可能的值例如这里:
错误报告值计算器:
http://www.bx.com.au/tools/ultimate-php-error-reporting-wizard
答案2
我补充道:
<IfModule mod_php5.c>
php_admin_flag display_errors on
php_admin_value error_reporting 30711
</IfModule>
到 /etc/apache2/sites-enabled/work 并且运行正常。
是的,我知道我应该修复这些通知,但我正在处理一个旧脚本,需要回到那个脚本,现在这已经解决了我的问题,也是 op 所寻找的。希望这对某人有所帮助。
答案3
如果没有 .htaccess 或全局应用配置,则无法实现此目的。Apache 无法“查看”其根文件夹 (htdocs) 之外的文件,并且 .htaccess 文件仅在站点文件夹中有效。php_flag 在 .htaccess 之外也不起作用。
因此,基本上,如果不进行网站间协作,就不可能一些修改或 .htaccess 文件。