php关闭错误输出

error_reporting 设定错误讯息回报的等级
2047我记得应该是E_ALL。

php.ini 文件中有许多配置设置。您应当已经设置好自己的php.ini 文件并把它放在合适的目录中,就像在 Linux 上安装PHP和 Apache 2 的文档说明中所示的那样(请参阅 参考资料)。在调试PHP应用程序时,应当知道两个配置变量。下面是这两个变量及其默认值:
display_errors = Off
error_reporting = E_ALL

E_ALL能从不良编码实践到无害提示到出错的所有信息。E_ALL 对于开发过程来说有点太细,因为它在屏幕上为一些小事(例如变量未初始化)也显示提示,会搞糟浏览器的输出
所以不建议使用2047,最好把默认值改为:error_reporting = E_ALL & ~E_NOTICE

PHP .ini中display_errors = Off失效的解决
问题:
PHP 设置文件php .ini中明明已经设置display_errors = Off,但是在运行过程中,网页上还是会出现错误信息。
解决:
经查log_errors= On,据官方的说法,当这个log_errors设置为On,那么必须指定error_log文件,如果没指定或者指定的文件没有权限写入,那么照样会输 出到正常的输出渠道,那么也就使得display_errors 这个指定的Off失效,错误信息还是打印了出来。于是将log_errors = Off,问题就解决了。

经常见到error_reporting(7)直意为:设定错误讯息回报的等级。

value   constant
1   E_ERROR
2   E_WARNING
4   E_PARSE
8   E_NOTICE
16   E_CORE_ERROR
32   E_CORE_WARNING
64   E_COMPILE_ERROR
128   E_COMPILE_WARNING
256   E_USER_ERROR
512   E_USER_WARNING
1024   E_USER_NOTICE
2047   E_ALL
2048   E_STRICT
然而7=1+2+4
就是出错时显示1 E_ERROR    2 E_WARNING      4 E_PARSE
<?php
//禁用错误报告
error_reporting(0);
//报告运行时错误
error_reporting(E_ERROR | E_WARNING | E_PARSE);
//报告所有错误
error_reporting(E_ALL);
?>

 

另附

问:
可否关闭PHP的错误提示?我不希望让别人看到我程序的报错。

答:
由于PHP.ini中的设置是全局性的,我们不能为您单独某个用户直接修改全局配置信息,但您可以通过error_reporting这个php函数来调整您所运行的脚本的错误信息输出,例如:

error_reporting(E_ALL^E_NOTICE^E_WARNING);

可以关闭所有notice 和 warning 级别的错误。

把这个语句放在您脚本的功用包含文件中,通常为config.php 或者conn.php 中就可以控制输出了。

kloxo安装后suphp模式出现服务器错误500的解决办法

其实这个问题是由于php版本过高导致的,只需要降低版本即可。

# backup php.ini
cd /etc
yes | cp -rf php.ini php.ini.bck
cd /

# downgrade to get old version
rpm -e --nodeps php
rpm -e --nodeps php-cli
rpm -e --nodeps php-common
rpm -e --nodeps php-fpm
yum install php-5.2.17-1

# copy to old version
yes | cp -rf /usr/bin/php /usr/bin/php_pure
yes | cp -rf /usr/bin/php-cgi /usr/bin/php-cgi_pure

# make suphp call old version instead new one
cd /usr/local/lxlabs/kloxo/file/
yes | cp -rf etc_suphp.conf etc_suphp.conf.orig
sed -i 's/\/usr\/bin\/php-cgi"/\/usr\/bin\/php-cgi_pure"/' etc_suphp.conf
cd /etc
sed -i 's/\/usr\/bin\/php-cgi"/\/usr\/bin\/php-cgi_pure"/' suphp.conf

# restore php.ini
yes | cp -rf php.ini.bck php.ini

cd /

# back to upgrade
yum upgrade php*

reboot

apache屏蔽指定的来路

屏蔽来路
SetEnvIfNoCase Referer “^http://www.baidu.com/” local_ref=1

Order Allow,Deny
Allow from all
Deny from env=local_ref

屏蔽指定agent
The first line we add to our config file is:

SetEnvIfNoCase User-Agent “^Wget” bad_bot
SetEnvIfNoCase User-Agent “^EmailSiphon” bad_bot
SetEnvIfNoCase User-Agent “^EmailWolf” bad_bot

The ‘SetEnvIfNoCase’ simply sets an enviornment (SetEnv) variable called ‘bad_bot’ If (SetEnvIf) the ‘User-Agent’ string contains Wget, EmailSiphon, or EmailWolf, regardless of case (SetEnvIfNoCase). In english, anytime a browser with a name containing ‘wget, emailsiphon, or emailwolf’ accesses our website, we set a variable called ‘bad_bot’. We’d also want to add a line for the User-Agent string of any other Spidert we want to deny.

Now we tell Apache which directories to block the Spiderts from with the directive:


Order Allow,Deny
Allow from all
Deny from env=bad_bot

其他有用的资料
http://httpd.apache.org/docs/1.3/logs.html