php报错和时间

错误处理
    错误的分类
        语法错误
            这种错误最常见,但也最容易搞定;一旦出现,一行代码都不执行
        运行时错误
            在页面上给你报出来,有的会终止代码执行,有的不会
        逻辑错误
            这种错误最麻烦
    
    错误的级别
        notice  
            提示级别,不会影响后续代码的执行
            如:输出不存在的变量
        warning 
            警告级别,也不会终止代码执行
            如:include包含文件
        error   
            错误级别,会终止代码执行
            如:语法错误或者require
        deprecated 
            反对级别,不赞成这样的使用,不会终止代码执行
            如:(5.6用mysql_connect、echo mktime())
        strict
            语法不够严谨


    处理错误:
        1.用@屏蔽错误信息
            有的错误屏蔽不了
        2.通过配置文件php.ini控制错误的显示
            display_errors
                display_errors = off    //不显示任何错误
                注意:关闭错误显示后,如果页面中有error级别的错误,服务器会直接返回500错误
            error_reporting
                error_reporting = E_ALL //显示所有错误
        3.通过ini_set函数设置
            ini_set('配置项', '配置值')
            (不是所有的选项都可以用这个函数设置,具体哪些可以设置请参考手册:附录-》php.ini配置-》php.ini配置选项列表)
        4.通过error_reporting函数设置错误级别
            error_reporting(0); //屏蔽所有错误


    自定义错误处理:
        可以通过set_error_handler函数自己接管错误处理。
        注意:致命错误无法被自定义(手册中搜索set_error_handler)


    记录错误日志
        1、以文件的方式记录(默认)
            log_errors = On     开启错误日志的记录
            error_log = C:/sb.txt 指定错误的路径
        2、记录到操作系统日志中
            error_log = syslog 指定错误的路径
            我的电脑-》管理-》事件查看器-》windows日志-》应用程序


        函数error_log('日志信息'),手动写日志




PHP的时间和日期
    获取Unix时间戳
        time()  获取当前时间戳
            因为Unix操作系统的诞生,1970年为Unix元年
        mktime() 获取一个指定日期的时间戳
            mktime(时,分,秒,月,日,年)
            没有给的参数默认为当前的!
        strtotime()将英文的时间日期描述转换为时间戳


修改PHP默认时区:
    1、改php.ini配置文件:
        date.timezone = "PRC"   //默认为UTC
            //PRC 中华人民共和国的简写
            //People's Republic of China
        
        date.timezone = "Asia/shanghai"//上海
        中原(Asia/Shanghai)       上海
        陇蜀(Asia/Chongqing)      重庆
        长白(Asia/Harbin)         哈尔滨
        新藏(Asia/Urumqi)         乌鲁木齐(慢两小时)
        昆仑(Asia/Kashgar)        喀什(慢两小时)
        参考:五大时区的划分:http://www.niubb.net/a/2015/11-15/961925.html
        date.timezone = "Asia/hong_kong"//香港
    2、通过ini_set函数来临时设置
        ini_set('date.timezone', 'PRC');
    3、通过专门的函数来设置或者获取
        date_default_timezone_set('PRC');


        //获取当前的时区设置
        date_default_timezone_get();


    格式化输出:
    date(格式字串[, 时间戳])
        格式字串中不能被识别的字符将原样显示


        echo date('Y');  //4位完完整年份
        echo date('m');  //月份
        echo date('d');  //日
        echo date('H');  //时
        echo date('i');  //分
        echo date('s');  //秒


        y 两位数的年份
        n 没有前导0的月份
        j 没有前导0的日
        G 没有前导0的小时


    获取微秒数: microtime([true])
        给了参数true返回一个浮点数
### PHP 打印 `phpinfo()` 报错的原因分析与解决方法 当尝试调用 `phpinfo()` 函数时,可能会遇到各种报错情况。以下是可能导致该问题的一些常见原因及其对应的解决方案。 #### 1. **`phpinfo()` 被禁用** 某些服务器出于安全考虑会禁用 `phpinfo()` 函数。可以通过检查 `disable_functions` 配置项来确认这一点。 如果在 `php.ini` 文件中有如下配置,则说明 `phpinfo()` 已被禁用: ```ini disable_functions = phpinfo ``` 要启用它,可以删除或注释掉这一行,并重启 Web 服务以使更改生效[^1]。 #### 2. **权限不足** 运行脚本的用户可能缺乏执行 `phpinfo()` 的必要权限。这通常发生在设置了严格的文件访问控制策略的情况下(例如启用了 `open_basedir`)。尽管当前场景无需考虑 `open_basedir` 是否开启,但如果存在其他类似的限制也可能引发错误。 建议验证用户的权限设置以及是否有足够的读取写入能力[^3]。 #### 3. **模块未加载** 部分 Apache 或 Nginx 模块缺失也会阻止 `phpinfo()` 正常工作。例如,在 Mac 自带的 Apache 中,如果没有正确加载核心模块或其他依赖模块,就可能出现异常行为。确保以下模块已加载: ```apache LoadModule authz_core_module libexec/apache2/mod_authz_core.so LoadModule authz_host_module libexec/apache2/mod_authz_host.so LoadModule userdir_module libexec/apache2/mod_userdir.so ``` 这些模块对于处理请求至关重要。 #### 4. **语法错误** 即使是最简单的代码片段也有可能因拼写失误而导致失败。比如下面这段示例展示了如何正确地使用 `phpinfo()` 函数: ```php <?php phpinfo(); ?> ``` 注意这里没有多余的字符或者标签闭合不匹配等问题[^2]。 #### 5. **输出缓冲区溢出** 有时由于页面内容过多或者其他因素影响,浏览器无法完全渲染由 `phpinfo()` 生产的内容。此时可尝试增加内存限制或是调整超时时间参数: ```php ini_set('memory_limit','128M'); set_time_limit(30); ``` --- ### 示例修复后的完整测试脚本 为了便于排查具体问题所在,提供一个完整的测试脚本供参考: ```php <?php // 设置更高的资源限制以防潜在冲突 ini_set('display_errors', 1); error_reporting(E_ALL); if (!function_exists('phpinfo')) { die('The function phpinfo is disabled.'); } try { phpinfo(); // 输出PHP配置详情页 } catch (Exception $e) { echo 'Error occurred: ', $e->getMessage(), "\n"; } ?> ``` --- ### 总结 以上列举了几种常见的导致 `phpinfo()` 报错的情况及相应的解决办法。实际操作过程中需结合具体的错误提示信息逐一排除可能性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值