最近在做一个简单的开发工作时,遇到了几个小问题,其中有些是之前工作中也遇到过的,但是忘记了当时怎么解决的,还是得重新上网查资料,浪费了很多时间。为了提高点效率,在这里记录一下,做个备忘。
PHP部分
1.php中页面输入转int,可以用intval()函数来解决,实现效果类似于c++中atoi()函数,在遇到第一个非数字输入后返回。
2.php获取请求的信息时,可以用$_SERVER[]超级变量来取值,php.net的php manul中给出了$_SERVER[]的可用参数的详细说明,这里用到了'REMOTE_ADDR'获得请求的ip以及'HTTP_REFERER'获得从哪个页面跳转过来的。
3.通过浏览器运行php,中间有调用shell脚本时,出现脚本执行权限的问题,一般因为页面调用php使用的用户为apache,对shell文件或目录没有相应的读写权限,导致失败,可以将目标目录或文件权限更改为所有用户可读写,以解决该问题。另外推荐使用exec()函数调用,并在系统调用时重定向2>&1,同时选择结果数组,例如:
$ret_info = array();
exec("sh demo.sh 2>&1",$ret_info,$ret);
print_r($ret_info);
这样可以将脚本执行的结果输出,可以查看出错的原因。
mysql
注意表名不要和mysql命令中的关键字重复,不然会出现命令执行失败的情况。
本文链接
在php.ini中设置时区
date.timezone = PRC
在代码中设置时区
date_default_timezone_set('Asia/Shanghai');
date_default_timezone_set('Asia/Chongqing');
date_default_timezone_set('PRC'); // PRC为中华人民共和国
ini_set('date.timezone','Etc/GMT-8');
ini_set('date.timezone','PRC');
ini_set('date.timezone','Asia/Shanghai');
ini_set('date.timezont','Asia/Chongqing');
本文链接
内容在代码中体现出来:
1、
//打开一个文件 未做任何处理
//$fp =fopen("aa.txt","r");
//echo "OK";
//处理:判断文件是否存在 file_exists
/*
if(!file_exists("aa.txt")){
echo "文件不存在";
//不存在就退出
exit(); //退出后,下面面的代码就不执行了
}else{
$fp =fopen("aa.txt","r");
//...操作完之后 关闭
fclose($fp);
}
echo "OK";
*/
//PHP处理错误的3种方法
//第一种:使用简单的die语句
/* if(!file_exists("aa.txt")){
die("文件不存在。。。"); //不存在就直接退出
}else{
$fp =fopen("aa.txt","r");
//...操作完之后 关闭
fclose($fp);
}
echo "OK";
*/
//更简单的方式
file_exists("aa.txt") or die("文件不存在");
?>
2、
//第二种:错误处理器 错误级别 处理错误方式
/*
使用error_function(error_level,error_message,
error_file,error_line,error_context)
该函数必须有能力处理至少两个参数 (error level 和 error message),
但是可以接受最多五个参数(可选的:file, line-number 以及 error context):
*/
//改写set_error_handler方法
//如果出现 E_WARNING 这个错误就调用my_error 处理方法
set_error_handler("my_error",E_WARNING);
set_error_handler("my_error2",E_USER_ERROR);
//设置中国对应的时区
date_default_timezone_set('PRC');
function my_error($errno,$errmes){
echo "<font size='5' color='red' >$errno</font>"; //输出错误报告级别
echo "错误信息是:".$errmes;
exit();
}
function my_error2($errno,$errmes){
//echo "错误信息是:".$errno,$errmes;
//exit();
//把错误信息输入到文本中保存已备查看 使用到error_log()函数
$message ="错误信息是:".$errno." ".$errmes;
error_log(date("Y-m-d G:i:s")."---".$message."\r\n",3,"myerror.txt"); // \r\n 表示换行
}
//打开一个文件 未做任何处理
//$fp =fopen("aa.txt","r");
//echo "OK";
//使用自定义错误 要添加触发器 这个trigger_error()函数来指定调用自定义的错误
$age=200;
if($age>150){
//echo "年龄过大";
//调用触发器 同时指定错误级别 这里需要查看帮助文档
trigger_error("不好了出大问题了",E_USER_ERROR);
//exit();
}
?>
本文链接