(七)PHP错误_时间_文件

[复制链接]
发表于 2025-11-8 15:24:23 | 显示全部楼层 |阅读模式
一,错误处理

错误分为:  

语法错误:      代码不会被执行. 直接报告代码中的错误.

运行时错误:  代码会被执行, 执行到错误的地方, 才报错.

逻辑错误:      代码执行, 不会报错,  但就不是想要的结果.


所有报出来的错误级别, 可以分为:

提示性错误( Notice )   

警告性错误( Warning )   

致命性错误( Fatal error )

<?php

       getType($a);   // 未定义变量, 提示性错误
       getType( );      // 缺少参数, 警告性错误
       getTypes( );    // 函数名不对, 致命性错误

?>


错误报告方式:
页面上显示错误信息 + 错误记录在日志文件
不同的环境选择不同的报告方式:       
        1) 开发环境 (Development)
                页面上显示错误信息 + 错误记录在日志文件
        2) 生产环境 (Production)       
                页面上不显示错误信息 + 错误记录在日志文件




通过修改 php.ini 配置文件决定错误处理方式
display_errors = On | Off         是否在页面上显示错误信息
log_errors = On | Off                 是否把发生的错误记录在日志文件中
error_log = "D:/phpstudy_pro/Extensions/php/php5.6.9nts.log"      日志文件的位置
error_reporting = E_ALL & ~E_NOTICE    设置哪些错误需要报告        所有错误都报告, 除了提示性错误

在php代码中临时修改 错误处理方式
<?php
        // 关闭所有PHP错误
        error_reporting(0);

        // 开启所有PHP错误
        error_reporting(-1);
       
        // 除了 E_NOTICE,报告其他所有错误
        error_reporting(E_ALL ^ E_NOTICE);
        error_reporting(E_ALL & ~E_NOTICE);       
?>       


二,时间戳

指的是, 格林威治时间 1970 年 1 月 1 日 00:00:00 到当前时间的秒数。
计算机中多用时间戳的形式, 来计算和存储时间和日期

生成时间戳
time( ) 获取当前的时间戳
strtotime('2017-03-20 12:00:00') 以字符串形式, 指定某天的时间戳
mktime(时, 分, 秒, 月, 日, 年) 以数值形式, 指定某个时刻的时间戳
getDate( ) 返回数组形式的时间信息



格式化时间戳
格式化, 是指把不好看懂的时间戳转换成方便理解的 年月日时分秒的形式
date('Y-m-d H:i:s', 时间戳)
'Y-m-d H:i:s'  格式化字符串
        Y         4位格式的 年数
        m         2位格式的 月份
        d         2位格式的 日期
        H         2位格式的 小时
        i         2位格式的 分钟
        s         2位格式的 秒数
时间戳 参数为可选. 如果不填, 默认为当前时间戳



格式化时间戳有一个时区的概念, 把时区设置为 中国 或者是 亚洲/上海

通过函数设置时区
date_default_timezone_set('PRC')
date_default_timezone_set('Asia/Shanghai')

php配置文件设置时区
[Date]
date.timezone=Asia/Shanghai
截图202511080727563076.png


三,文件处理
1,目录操作


<?php
    $dir = './images/';
    $hd = opendir( $dir );         // 打开目录, 返回资源类型, 用 $hd 来代表被打开的目录
    $f = readdir( $hd );         // 读取目录, $f 为目录里面的文件名, 每次读出一个新的文件名
    /*
         读取到最后, 会返回 false
         每个目录中都会有两个隐藏目录 . 和 ..
    */
    closedir( $hd ); // 关闭目录
?>


2,遍历目录
<?php
    $dir = './images/';
    $hd = opendir($dir); // 打开目录
    // 逐条读取目录中的文件名
    while ( ($f = readdir($hd)) !== false ) {
            // 跳过目录中的 . 和 .. 目录
            if ($f == '.' || $f == '..') { continue; }
            // 输出文件名
            echo $f;
    }
    closedir( $hd ); // 关闭目录
    /*
            如果文件名是 '0' 会误判断为 false, 从而提前结束跳出循环,
            所以加一个 !== 判断  是全等于的关系
            '0' 不是 布尔类型 所以 就可以 输出 0 这个文件
            循环完之后 就是 布尔类型false
    */



3,文件操作
<?php
    /* 写文件 */
    $hf = fopen('./xxoo.txt','w');     // 找开一个文件,返回资源. 之后 $hf 就代表这个文件                        
    fwrite($hf, 'abcd');     // 将 'abcd' 写入文件   开头写入
    fclose( $hf );     // 关闭文件. 文件不用了就要及时关闭
?>




<?php
    /* 追加写文件 */
    $hf = fopen('./xxoo.txt','a');     // 找开一个文件,返回资源. 之后 $hf 就代表这个文件       
    fwrite($hf, 'abcd');     // 将 'abcd' 写入文件   追加写入
    fclose( $hf );     // 关闭文件. 文件不用了就要及时关闭
?>



<?php
    /* 读文件 */
    $hf = fopen('./xxoo.txt','r');    // 找开一个文件
    echo fread($hf, 4);    // 读取4个字节内容, 显示到页面
    fclose( $hf );    // 关闭文件.
?>



四,文件系统函数


is_file(文件的路径)   判断给定文件名是否为一个正常的文件
is_dir( 带路径的文件名 ) 判断一个给定的文件名是否是一个目录
file_exists( 带路径的文件名或目录名 ) 检查文件或目录是否存在
filetype( 带路径的文件名 ) 获取文件类型
filesize( 带路径的文件名 ) 获取文件的大小, 单位为字节
fileatime( 带路径的文件名 )  取得文件的上次访问时间        access
filectime( 带路径的文件名 )  取得文件的 inode 修改时间     change
filemtime( 带路径的文件名 )  取得文件的 修改时间      modify
dirname( 路径 ) 返回路径中的目录部分. 如果路径本身是一个目录, 函数会返回它的父目录.
basename( 路径 ) 返回基本的文件名
realpath( 文件或目录 ) 获取文件或目录 在本地电脑上的磁盘路径
pathinfo( 路径 ) 返回文件路径的信息


touch( 文件名 ) 创建文件
unlink( 文件名 ) 删除一个文件
copy( 源文件名, 新文件名 ) 复制文件
mkdir( 目录名称 ) 新建目录
rmdir( 空目录名称 ) 删除一个空目录
fgetc( 文件资源 ) 从文件指针位置读取一个字节
fgets( 文件资源 ) 从文件指针位置读取一行内容
file( 文件名 ) 将整个文件读入一个数组中


必火网络安全培训,北京实地培训,月月有开班,零基础入门,四个月打造渗透高手。
详情请加微信:nvhack/153-2000-4362,手机微信同号。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|女黑客安全网 |网站地图 | 津ICP备17008032号-3

GMT+8, 2026-2-2 05:15 , Processed in 0.084502 second(s), 27 queries .

Powered by Discuz! X3.5

Copyright © 2001-2020, Tencent Cloud.

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