vmware+kickstart+vsftp+pxe实现centos5.3自动安装
2009-12-30 22:51
766 查看
一 , 使用PHP内置的异常处理类
参考php手册:
try catch throw Exception抛出异常
php异常处理程序应当包括:
Throw - 定义异常:在程序需要的位置定义触发异常满足的条件; (if(
xx ) { throw new Exception("") })
Try -
调用含可抛出一个异常的语句:使用其位于 "try" 代码块内;( try
{ aaa( ); })
Catch - 捕获异常:"catch" 代码块(即 catch(Exception
$e) { $e->getMessage() })中会捕获异常,并创建一个包含异常信息的对象($e)
说明:每一个try至少要有一个与之对应的catch。使用多个catch 可以捕获不同的类所产生的异常。
当try
代码块不再抛出异常或者找不到 catch能匹配所抛出的异常时,PHP 代码就会在跳转到最后一个 catch的后面继续执行。当然,PHP 允许在catch代码块内再次抛出(throw)异常。当一个异常被抛出时,其后(译者注:指抛出异常时所在的代码块)的代码将不会继续执行,而
PHP 就会尝试查找第一个能与之匹配的catch。如果一个异常没有被捕获,而且又没用使用 set_exception_handler() 作相应的处理的话,那么 PHP 将会产生一个严重的错误,并且输出Uncaught Exception ... (未捕获异常)的提示信息。(???)
Example #1 抛出一个异常
以上例程会输出:
Example #2 嵌套的异常
<?php
class MyException extends Exception { }
class Test {
public function testing() {
try {
try {
throw new MyException('foo!');
} catch (MyException $e) {
/* rethrow it */
throw $e;
}
} catch (Exception $e) {
var_dump($e->getMessage());
}
}
}
$foo = new Test;
$foo->testing();
?>
以上例程会输出:
二 ,写入到日志文件
1)fopen,fwrite, fclose自定义写入
define('WEB_ROOT_DIR' , dirname(__FILE__).'/../');
$fp = fopen(WEB_ROOT_DIR.'/log.txt', 'a+');
fwrite($fp, $content);
fclose($fp);
2)php函数:error_log()
boolerror_log (string
[,int
[,string
error_log() 函数向服务器错误记录、文件或远程目标发送一个错误。
例:
error_log(" You messed up!\r\n",3,"/var/tmp/my-errors.log");
//写入文件
error_log("
You messed up!\r\n" , 1,"test@test.com","From:
server@test.com"); //发送邮件日志
3)结合ob缓冲区,写文件
对于无法在屏幕显示,或者不允许有输出的情况,可以结合写日志,和缓冲区来达到测试记录的目的:
var_dump是直接推送到浏览器,可以用ob将其包住,再用函数取出输出的内容,这样数组就可以转成字符串,写log文件了。
ob_start();
var_dump($_COOKIE);
var_dump($this->user);
$content = ob_get_contents();
ob_end_clean();
$fp = fopen(WEB_ROOT_DIR.'/er.txt', 'a+');
fwrite($fp, '++'.$content);
fclose($fp);
三 ,直接输出到浏览器
参考文章:http://www.cnblogs.com/coxsoft/archive/2012/08/30/2664373.html
1. echo ,这是最简单的输出数据调试方法,一般用来输出变量值,或者你不确定程序执行到了哪个分支的情况下时用。
2. var_dump($val1, $val2, ....) 会额外输出数据类型,可以打印多个变量
3. print_r 输出:格式很整齐,跟 var_dump 的区别是没有类型数据,并且布尔值的false和值NULL输出为空
4. mixedvar_export
( mixed
第二个参数无时与var_dump相同,为true时,不再输出,而是返回该变量的字符串标示,可以赋值给其他变量
另外,当变量为resource类型时,var_export会返回NULL
四 ,断点调试
die()是exit()的别名;输出一个消息并且退出当前脚本。
例:exit('Line:'.__LINE__) 来截断程序,同时可以输出定位行数。
void exit(
注意:参数为string时,在退出之前该函数会打印$status; 如果
五 ,使用调试工具
xdebug
***待学习使用整理,求工具推荐***
本文出自 “breezelife” 博客,请务必保留此出处http://breezelife.blog.51cto.com/2477790/1185144
参考php手册:
try catch throw Exception抛出异常
php异常处理程序应当包括:
Throw - 定义异常:在程序需要的位置定义触发异常满足的条件; (if(
xx ) { throw new Exception("") })
Try -
调用含可抛出一个异常的语句:使用其位于 "try" 代码块内;( try
{ aaa( ); })
Catch - 捕获异常:"catch" 代码块(即 catch(Exception
$e) { $e->getMessage() })中会捕获异常,并创建一个包含异常信息的对象($e)
说明:每一个try至少要有一个与之对应的catch。使用多个catch 可以捕获不同的类所产生的异常。
当try
代码块不再抛出异常或者找不到 catch能匹配所抛出的异常时,PHP 代码就会在跳转到最后一个 catch的后面继续执行。当然,PHP 允许在catch代码块内再次抛出(throw)异常。当一个异常被抛出时,其后(译者注:指抛出异常时所在的代码块)的代码将不会继续执行,而
PHP 就会尝试查找第一个能与之匹配的catch。如果一个异常没有被捕获,而且又没用使用 set_exception_handler() 作相应的处理的话,那么 PHP 将会产生一个严重的错误,并且输出Uncaught Exception ... (未捕获异常)的提示信息。(???)
Example #1 抛出一个异常
< ![CDATA[ <?php
//定义一个含抛出异常的函数 function inverse($x) { if (!$x) { throw new Exception('Division by zero.'); } else return 1/$x; }
//调用: try { echo inverse(5) ."\n"; echo inverse(0) ."\n"; } catch (Exception $e) { echo 'Caught exception: ',$e->getMessage(),"\n"; } // Continue execution echo 'Hello World'; ?>
以上例程会输出:
0.2 //第一次合法执行输出结果 Caught exception: Division by zero. //第二次捕获到异常 Hello World //因为异常被处理,所以后面程序继续执行
Example #2 嵌套的异常
<?php
class MyException extends Exception { }
class Test {
public function testing() {
try {
try {
throw new MyException('foo!');
} catch (MyException $e) {
/* rethrow it */
throw $e;
}
} catch (Exception $e) {
var_dump($e->getMessage());
}
}
}
$foo = new Test;
$foo->testing();
?>
以上例程会输出:
string(4) "foo!"
二 ,写入到日志文件
1)fopen,fwrite, fclose自定义写入
define('WEB_ROOT_DIR' , dirname(__FILE__).'/../');
$fp = fopen(WEB_ROOT_DIR.'/log.txt', 'a+');
fwrite($fp, $content);
fclose($fp);
2)php函数:error_log()
boolerror_log (string
$message
[,int
$message_type= 0 [,string
$destination
[,string
$extra_headers]]] )
error_log() 函数向服务器错误记录、文件或远程目标发送一个错误。
例:
error_log(" You messed up!\r\n",3,"/var/tmp/my-errors.log");
//写入文件
error_log("
You messed up!\r\n" , 1,"test@test.com","From:
server@test.com"); //发送邮件日志
参数 | 描述 |
---|---|
error | 必需。要记录的错误消息。 |
type | 可选。规定错误记录的类型。 可能的记录类型: 0 - 默认。根据在 php.ini 文件中的 error_log 配置,错误被发送到服务器日志系统或文件。 1 - 错误被发送到 destination 参数中的地址。只有该类型使用 headers 参数。 2 - 通过 PHP debugging 连接来发送错误。该选项只在 PHP 3 中可用。 3 - 错误发送到文件目标字符串。 |
destination | 可选。规定向何处发送错误消息。该参数的值依赖于 "type" 参数的值。 |
headers | 可选。只在 "type" 为 1 时使用。 规定附加的头部,比如 From, Cc 以及 Bcc。由 CRLF (\r\n) 分隔。 注释:在发送电子邮件时,必须包含 From 头部。可以在 php.ini 文件中或者通过此参数设置。 |
对于无法在屏幕显示,或者不允许有输出的情况,可以结合写日志,和缓冲区来达到测试记录的目的:
var_dump是直接推送到浏览器,可以用ob将其包住,再用函数取出输出的内容,这样数组就可以转成字符串,写log文件了。
ob_start();
var_dump($_COOKIE);
var_dump($this->user);
$content = ob_get_contents();
ob_end_clean();
$fp = fopen(WEB_ROOT_DIR.'/er.txt', 'a+');
fwrite($fp, '++'.$content);
fclose($fp);
参考文章:http://www.cnblogs.com/coxsoft/archive/2012/08/30/2664373.html
1. echo ,这是最简单的输出数据调试方法,一般用来输出变量值,或者你不确定程序执行到了哪个分支的情况下时用。
2. var_dump($val1, $val2, ....) 会额外输出数据类型,可以打印多个变量
3. print_r 输出:格式很整齐,跟 var_dump 的区别是没有类型数据,并且布尔值的false和值NULL输出为空
4. mixedvar_export
( mixed
$expression[,bool
$return] ): 输出或返回一个变量的字符串表示。
第二个参数无时与var_dump相同,为true时,不再输出,而是返回该变量的字符串标示,可以赋值给其他变量
另外,当变量为resource类型时,var_export会返回NULL
四 ,断点调试
die()是exit()的别名;输出一个消息并且退出当前脚本。
例:exit('Line:'.__LINE__) 来截断程序,同时可以输出定位行数。
void exit(
$status);
注意:参数为string时,在退出之前该函数会打印$status; 如果
status是一个integer,该值会作为退出状态码,并且不会被打印输出。
五 ,使用调试工具
xdebug
***待学习使用整理,求工具推荐***
本文出自 “breezelife” 博客,请务必保留此出处http://breezelife.blog.51cto.com/2477790/1185144
相关文章推荐
- kickstart+vsftp+pxe+dhcp实现centos5.3自动安装
- DHCP+TFTP+VSFTP+pxelinux+kickstart实现RedHat的自动安装
- PXE+kickstart实现自动安装centOS6.5
- Kickstart+NFS+DHCP+TFTP+PXElinux实现CentOS的网络自动安装
- Kickstart+NFS+DHCP+TFTP+PXElinux实现CentOS的网络自动安装
- 基于PXE,kickstart实现通过网络自动安装CentOS6.5
- Kickstart+NFS+DHCP+TFTP+PXElinux实现CentOS的网络自动安装
- centos7/rhel7下配置PXE+Kickstart自动安装linux系统
- Kickstart+HTTP+DHCP+TFTP+PXElinux实现RedHat的网络自动安装
- PXE+TFTP+VSFTP+DHCP+Kickstart无人职守自动安装RHEL5
- 利用kickstart实现pxe自动安装
- pxe+dhcp+tftp+kickstart 实现系统自动安装
- Kickstart+PXE实现无人值守自动安装 推荐
- 部署PXE高效批量网络装机并实现Kickstart无人值守自动安装
- PXE结合Kickstart实现无人值守安装CentOS6.5
- 实现Kickstart + NFS + DHCP + PXE的全自动远程无人职守安装
- 利用kickstart实现pxe的自动安装
- Kickstart+TFTP实现无人值守自动安装centos6.4
- Kickstart+PXE+DHCP+TFTP+HTTP自动安装Centos 6.6
- 网络无人自动安装centos 6.2 + PXE + httpd + kickstart