仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1320|回复: 19
打印 上一主题 下一主题

[学习教程] PHP教程之PHP中error

[复制链接]
灵魂腐蚀 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:37:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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^)。
莫相离 该用户已被删除
沙发
发表于 2015-2-4 03:51:01 | 只看该作者
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
精灵巫婆 该用户已被删除
板凳
发表于 2015-2-9 14:56:03 | 只看该作者
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
小魔女 该用户已被删除
地板
发表于 2015-2-27 07:48:24 | 只看该作者
写的比较杂,因为我也是个新手,不当至于大家多多指正。
小女巫 该用户已被删除
5#
发表于 2015-2-27 08:17:59 | 只看该作者
当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,
活着的死人 该用户已被删除
6#
发表于 2015-3-6 15:19:23 | 只看该作者
学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
海妖 该用户已被删除
7#
发表于 2015-3-7 00:06:17 | 只看该作者
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
愤怒的大鸟 该用户已被删除
8#
发表于 2015-3-11 04:56:01 | 只看该作者
当然这种网站的会员费就几十块钱。
飘飘悠悠 该用户已被删除
9#
发表于 2015-3-13 03:08:31 | 只看该作者
首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。
第二个灵魂 该用户已被删除
10#
发表于 2015-3-15 04:02:19 | 只看该作者
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
蒙在股里 该用户已被删除
11#
发表于 2015-3-19 19:32:28 | 只看该作者
,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。
柔情似水 该用户已被删除
12#
发表于 2015-3-22 17:08:16 | 只看该作者
为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。
飘灵儿 该用户已被删除
13#
发表于 2015-3-24 08:52:19 | 只看该作者
如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,
因胸联盟 该用户已被删除
14#
发表于 2015-3-26 15:32:05 | 只看该作者
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年  具体的记不清啦,囧。
爱飞 该用户已被删除
15#
发表于 2015-4-4 00:01:24 | 只看该作者
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
谁可相欹 该用户已被删除
16#
发表于 2015-4-5 14:36:07 | 只看该作者
建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。
简单生活 该用户已被删除
17#
发表于 2015-5-10 07:22:41 | 只看该作者
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
老尸 该用户已被删除
18#
发表于 2015-6-9 04:05:15 | 只看该作者
最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。
admin 该用户已被删除
19#
发表于 2015-7-11 21:05:57 | 只看该作者
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
若相依 该用户已被删除
20#
发表于 2015-7-12 21:38:16 | 只看该作者
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-13 14:57

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表