当前位置:  编程技术>php
本页文章导读:
    ▪php记录错误日志      本文为大家介绍php记录错误日志的相关内容,感兴趣的朋友可以参考下。 error_log函数是PHP内置的一个函数,主要是用来写错误日志的函数,我们在多人开发,或者在比较复杂,并且没有单元.........
    ▪php 定义404页面的方法      用php定义404页面 首先,定义404状态,核心代码:   代码如下: @header("http/1.1 404 not found"); @header("status: 404 not found"); echo 'echo 404'; exit(); 如果需要加载指定的404页面,可以这样做(注意文件.........
    ▪php执行linux系统命令的方法介绍      本文介绍如何在PHP中执行系统命令从而实现一些特殊的目的,比如监控服务器负载,重启MySQL、更新SVN、重启Apache等。 首先先要给大家介绍PHP执行linux系统命令的几个基本函数。我曾经很长一.........

[1]php记录错误日志
    来源: 互联网  发布时间: 2013-12-24

本文为大家介绍php记录错误日志的相关内容,感兴趣的朋友可以参考下。

error_log函数是PHP内置的一个函数,主要是用来写错误日志的函数,我们在多人开发,或者在比较复杂,并且没有单元测试的开发项目中,完全可以使用它来记录我们程序中的错误,特别是数据库查询语句执行的错误。

error_log()函数。php手册的解释:
error_log
(PHP 3, PHP 4, PHP 5)

bool error_log ( string message [, int message_type [, string destination [, string extra_headers]]] )
发送一个错误信息到Web服务器的错误日志,一个TCP的端口或者是一个文件。

我们看它的参数,第一个参数message是消息内容,第二个参数type是消息类型,第三个参数是目标文件,第四个参数是其他的头信息。其实一般 第四个参数都用不到,我们主要看前面三个参数,第二个参数是消息类型,包括0, 1, 2, 3等四种类型,0是默认的类型。四个类型的作用:
0
信息内容发送到PHP的系统日志记录,使用操作系统的自己的日志记录机制或一个文件,整个取决于php.ini中的配置选项error_log的内容。这是缺省选项。

1
把信息内容发送到一个邮件地址,第三个参数就是一个邮件地址,第四个参数是一个头信息发送邮件的,第二个类型使用mail()函数来发送邮件

2
消息通过PHP的调试服务器,远程的写入到某个PHP调试服务器上,当然,PHP在编译的时候--enable-debugger必须打开,另外,整个类型只是针对PHP 3有效

3
消息作为一个新行附加在一个目标文件中

其实对于我们来说,日志为了简便起见,一般直接使用类型3就比较合适了,把日志文件写到自己需要的文件中。

为了示例error_log()函数的简单使用,我们个例子说明。假设我们数据库抽象类使用PEAR::DB类,现在我想在程序中记录我们的程序是 否有执行错误。那么我们使用error_log()来记录我们那些SQL语句执行错误或者失败了,至少我们的PEAR::DB类提供了 DB::isError() 方法来获取某个执行结果对象是否有错误,那么我们就能够旁断是否执行某条SQL出现了错误,再来考虑是否记录日志,同时对象有个userinfo的属性, 该属性记录了错误的SQL语句,那么我们可以构造这样一个函数:
 

代码如下:
function logError($object)
{
if(DB::isError($object))
{
error_log(date("[Y-m-d H:i:s]")." -[".$_SERVER['REQUEST_URI']."] :".$object -> userinfo."\n", 3, "/tmp/php_sql_err.log");
return true;
}
return false;
}

这个函数就是能够记录发现了错误SQL的地方,那么自动会把时间,当前页面,和错误的SQL语句信息记录到 /tmp/php_sql_err.log 文件当中,那么,当我们在调试程序的时候,发现数据提取不正确或者没有数据提取的时候,那么我们完全可以查看 /tmp/php_sql_err.log 文件来查看我们的错误页面和错误的SQL语句。

当然,我们必须在我们执行SQL查询的程序中去使用这个函数,比如我们执行一个编写一个提取新闻信息的函数:
 

代码如下:
function getNewsContent($news_id, $field="")
{
global $db;
$result = $db->getRow("SELECT $field FROM news WHERE news_id = '$news_id'");
if (logError($result))
{
return false;
}
return $result;
}

我们在里面判断SQL是否错误,如果错误了则返回false,然后我们就可以查看日志一下,看我们的函数运行是否如我们预期想象的一样。
我们执行: tail /tmp/php_sql_err.log
能看到类似于这样的信息:
[2006-01-12 11:44:34] -[/news_list.php?news_id=1] :SELECT FROM news WHERE news_id = '1' [nativecode=1064 ** You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version fo
r the right syntax to use near 'FROM news WHERE news_id = '1']

大致是因为我们select的时候,没有把需要提取的字段名写进去,那么我们就可以检查news_list.php文件,减产 getNewsContent()函数法向没有传递$field参数进去,导致SQL执行错误。所以error_log()函数就帮助检查我们的SQL写 的是否正确,或者是参数没有传递正确,这样大大的减轻了开发负担,想但于了对我们的程序进行了单元测试。

当然,你也可以利用error_log()函数做更多记录错误日志,方便PHP开发,这个全是由自己决定。


    
[2]php 定义404页面的方法
    来源: 互联网  发布时间: 2013-12-24

用php定义404页面
首先,定义404状态,核心代码:
 

代码如下:
@header("http/1.1 404 not found");
@header("status: 404 not found");
echo 'echo 404';
exit();

如果需要加载指定的404页面,可以这样做(注意文件路径):
 

代码如下:
@header("http/1.1 404 not found");
@header("status: 404 not found");
include("../../404.htm");
exit();

查看404是否设置成功可以利用firefox 的firebug插件来查看。

查看方法

在已经安装firebug的情况下,用firefox浏览器打开要检查404状态码的页面,点击右下角小虫的图标,启动"网络"标签,依次打开"网络–所有/html–headers";如果一切正常,你就可以看到包括headers、响应在内的各项页面参数了。

404页面对网站影响

对seo的影响并不大。但是有,总比没有好。如果你拥有这个权限,你最好还是设置一下404页面。这个东西跟网站地图一样,不是所有的网站都得设置,但是有时候有设置的必要。
再考虑是不是要设置404页面时,应该多考虑用户体验,而不是seo。

apache中404页面的设置
apache里设置404错误页面为apache server设置 404错误页面的方法很简单,只需在.htaccess 文件中加入如下内容:
 

代码如下:
errordocument 404 /notfound.php

    
[3]php执行linux系统命令的方法介绍
    来源: 互联网  发布时间: 2013-12-24

本文介绍如何在PHP中执行系统命令从而实现一些特殊的目的,比如监控服务器负载,重启MySQL、更新SVN、重启Apache等。

首先先要给大家介绍PHP执行linux系统命令的几个基本函数。我曾经很长一段时间都分不清下面几个函数的具体用法区别。

system函数
说明:执行外部程序并显示输出资料。
语法:string system(string command, int [return_var]);
返回值: 字符串

详细介绍:
本函数就像是 C 语中的函数 system(),用来执行指令,并输出结果。若是 return_var 参数存在,则执行 command 之后的状态会填入 return_var 中。同样值得注意的是若需要处理用户输入的资料,而又要防止用户耍花招破解系统,则可以使用 EscapeShellCmd()。若 PHP 以模块式的执行,本函数会在每一行输出后自动更新 Web 服务器的输出缓冲暂存区。若需要完整的返回字符串,且不想经过不必要的其它中间的输出界面,可以使用 PassThru()。

实例代码:
 

代码如下:
< ?php
$last_line = system("ls", $retval);
echo "Last line of the output: " . $last_line;
echo "<hr />Return value: " . $retval;
?>

exec函数
说明:执行外部程序。
语法:string exec(string command, string [array], int [return_var]);
返回值: 字符串

详细介绍:
本函数执行输入 command 的外部程序或外部指令。它的返回字符串只是外部程序执行后返回的最后一行;若需要完整的返回字符串,可以使用 PassThru() 这个函数。

要是参数 array 存在,command 会将 array 加到参数中执行,若不欲 array 被处理,可以在执行 exec() 之前呼叫 unset()。若是 return_var 跟 array 二个参数都存在,则执行 command 之后的状态会填入 return_var 中。

值得注意的是若需要处理使用者输入的资料,而又要防止使用者耍花招破解系统,则可以使用 EscapeShellCmd()。

实例代码:
 

代码如下:
< ?php
echo exec("whoami");
?>

popen函数
说明:打开文件。
语法:int popen(string command, string mode);
返回值: 整数

详细介绍:
本函数执行指令开档,而该文件是用管道方式处理的文件。用本函数打开的文件只能是单向的 (只能读或只能写),而且一定要用 pclose() 关闭。在文件操作上可使用 fgets()、fgetss() 与 fputs()。若是开档发生错误,返回 false 值。

实例代码:
 

代码如下:
< ?
$fp = popen( "/bin/ls", "r" );
?>

    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,