|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
给你的建议是,有些最常用的语句是需要记住的 比如if for while这些、其他的一般语句你只要知道有这个函数或者有这个功能就可以了,当你用的时候你可以凭借记忆搜索就可以了。 明天进修CI框架过程当中碰到个成绩:
A PHP Error was encountered
Severity: Notice
Message: Undefined variable: user
普通在默许的通俗PHP文件中输入一个不决义声明的变量是不会报毛病的,但在codeigniter框架下却要报毛病,这关于想集成 添加 和 修正 页面于一体的”懒人”很不便利,因为是初学者入手下手还想怎样在代码中屏障这一毛病提醒呢.乃至用到了@,但听良多人都说@会大大下降功能….
最初俄然想到,是否是codeigniter成心让这毛病信息提醒出来了呢,咱们该若何去屏障失落这一类毛病呢有意中搜刮到了”若何让codeigniter不显示Notice信息?”,恍然大悟.本来是进口index.php中的error_reporting(E_ALL);在作祟.只需求把它改成
error_reporting(E_ALL ^ E_NOTICE);
就能够屏障失落这个毛病,而不影响其他的报错.
下边是搜刮到的一些材料:
error_reporting() 设置 PHP 的报错级别并前往以后级别。
语法
error_reporting(report_level)
假如参数 level 未指定,以后报错级别将被前往。上面几项是 level 能够的值:
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
E_NOTICE 暗示普通情况不纪录,只要程式有毛病情况时才用到,例如妄图存取一个不存在的变数,或是呼唤 stat() 函式检视不存在的档案。
E_WARNING 凡是城市显示出来,但不会中止程式的履行。这对除错很无效。例如:用有成绩的惯例暗示法呼唤 ereg()。
E_ERROR 凡是会显示出来,亦会中止程式履行。意即用这个遮罩没法清查到记忆体设置装备摆设或其它的毛病。
E_PARSE 从语法中分析毛病。
E_CORE_ERROR 相似 E_ERROR,但不包含 PHP 中心酿成的毛病。
E_CORE_WARNING 相似 E_WARNING,但不包含 PHP 中心毛病正告。
PHP 的毛病呈报
php.ini 文件中有很多设置装备摆设设置。您应该已设置好本人的 php.ini 文件并把它放在适合的目次中,就像在 Linux 上装置 PHP 和 Apache 2 的文档申明中所示的那样。在调试 PHP 使用法式时,应该晓得两个设置装备摆设变量。上面是这两个变量及其默许值:
display_errors = Off
error_reporting = E_ALL
经由过程在 php.ini 文件中搜刮它们,可以发明这两个变量以后的默许值。display_errors 变量的目标很分明 ―― 它告知 PHP 是不是显示毛病。默许值是 Off。然而,要闪开发进程加倍轻松,请把这个值设为 On:
display_errors = On
error_reporting 变量的默许值是 E_ALL。这个设置会显示从不良编码理论到有害提醒到失足的一切信息。E_ALL 关于开辟进程来讲有点太细,由于它在屏幕上为一些大事(例如变量未初始化)也显示提醒,会弄糟阅读器的输入。我只想看到毛病和不良编码理论,然而不想看到有害的提醒。所以,请用以下值取代 error_reporting 的默许值:
error_reporting = E_ALL & ~E_NOTICE
从头启动 Apache,就全体设置好了。接上去,将进修若何在 Apache 上做一样的事。
办事器上的毛病呈报
依附于 Apache 正在做的任务,在 PHP 中翻开毛病呈报能够没法任务,由于在盘算机上能够有多个 PHP 版本。有时很难辨别 Apache 正在利用哪一个 PHP 版本,由于 Apache 只能检查一个 php.ini 文件。不晓得 Apache 正在利用哪一个 php.ini 文件设置装备摆设本人是一个平安成绩。然而,有一种办法可以在 Apache 中设置装备摆设 PHP 变量,从而包管设置了准确的失足级别。
并且,最好晓得若何在办事器端设置这些设置装备摆设变量,以否决或抢占 php.ini 文件,从而供应更初级其余平安性。
在设置装备摆设 Apache 时,应当已接触过 /conf/httpd.conf 中 http.conf 文件中的根基设置装备摆设。
要做在php.ini文件中已做过的事,请把以下各行添加到 httpd.conf,掩盖任何 php.ini 文件:
php_flag display_errors on
php_value error_reporting 2039
这会掩盖在 php.ini 文件中为 display_errors 已设置的标记,和 error_reporting 的值。值 2039 代表 E_ALL & ~E_NOTICE。假如情愿采取 E_ALL,请把值设为 2047。一样,仍是要重启 Apache。
接上去,要在办事器上测试毛病呈报。
关于error_reporting()这个函数,它是可以屏障到一些毛病信息,然而PHP 中心酿成的毛病,是没法屏障的,由于PHP 中心酿成的毛病会直接招致PHP文件编译掉败,由于书写格局没有依照PHP的编码划定规矩写而酿成的毛病,是没法屏障的
复制代码 代码以下:
* For now, avoid warnings of E_STRICT mode
* (this must be done before function definitions)
*/
if (defined('E_STRICT')) {
$old_error_reporting = error_reporting(0);
if ($old_error_reporting & E_STRICT) {
error_reporting($old_error_reporting ^ E_STRICT);
} else {
error_reporting($old_error_reporting);
}
unset($old_error_reporting);
罕见的以下:
复制代码 代码以下:
// Turn off all error reporting;封闭一切的毛病
error_reporting(0);
// Report simple running errors;呈报一个复杂的运转毛病
error_reporting(E_ERROR E_WARNING E_PARSE);
// Reporting E_NOTICE can be good too (to report uninitialized
// variables or catch variable name misspellings …);包含呈报一些未初始化的变量或捕获变量名的拼写毛病
error_reporting(E_ERROR E_WARNING E_PARSE E_NOTICE);
// Report all errors except E_NOTICE
// This is the default value set in php.ini;呈报一切的毛病但不包含E_NOTICE 这也是php.ini的缺省设置
error_reporting(E_ALL ^ E_NOTICE);
// Report all PHP errors (bitwise 63 may be used in PHP 3);呈报一切的毛病
error_reporting(E_ALL);
// Same as error_reporting(E_ALL);同上
ini_set('error_reporting', E_ALL);
可以说你的马步已经扎的差不多了,接下来就要开始练把势的时候了,如果有条件的话,用笔或者打印一个简易的PHP手册在身上,时不时的摸出来看看,记得,去WC也不能放过(^2^)。 |
|