PHP - 程序报错实践汇总

1. 应用场景

为了因为踩了很多的坑,而避免踩重复的坑,以及没必要的坑,也想知道踩了多少坑,又能踩多少坑。

2.学习/实践

1. 文档

TBD

2. 整理输出

Note

报错[包括原因与解决办法]

2.1 ( ! ) Warning: Invalid argument supplied for foreach() in D:\wamp64\www\techmp\server\model\device_fit_tool.php on line 147

警告:第147行,D:\wamp64\www\xxxx\server\model\device_fit_tool.php中为foreach()提供的参数无效

解决办法: [原因: $vv并不是全是数组] 加个判断即可

if(isset($value['+CVars'])){
    foreach($value['+CVars'] as $vv){
        if(!is_array($vv)) continue;
        foreach($vv as $kkk => $vvv){
            if($kkk == 'r.TCQualityGrade'){
                $level = $vvv;
                return $level;
            }
        }
    }
    $level = $this->getParentLevel($value, $json);
}
 

2.2 ( ! ) Notice: Use of undefined constant level - assumed 'level' in D:\wamp64\www\techmp\server\model\device_fit_tool.php on line 172

(!)注意事项:使用未定义的常量 level——在D:\wamp64\www\xxx\server\model\device_fit_tool.php的第172行中

解决办法:

[原因: $level缺少$] 加上即可

2.3 获取文件内容: Linux下通过C语言程序工具生成json文件,但是一直读取不到文件, 使用file_exits()判断文件是否存在, 一直报500错误.没有具体报错信息.   

20191021 画了俩小时才调试找到原因, 也有因为服务器没有登录权限, 只能提交代码调试. 

原因:

没有文件权限, 同时file_exits()函数名写错, 应该是file_exists(); 

2.4 类型约束 20191122

<?php

function bubble_sort(Array $array = []){ // 前面一个Array是类型约束, 保证只能传递数组参数, 后一个是默认值
    var_dump($array);
    echo $count = count($array); // 如果参数是字符串, 会输出 1;
}

// bubble_sort('test'); // 会致命错误Fatal error [Uncaught TypeError]
bubble_sort(); // 会报错

2.5. 执行 composer 命令时, 出现报错, 如下: 

2020114 86号公寓

G:\phpstudy_pro\WWW\roast>composer -v

Fatal error: Allowed memory size of 2097152 bytes exhausted (tried to allocate 1937408 bytes) in Unknown on line 0

并且访问本地项目应用[其他应用也是]直接空白页面.

但是访问localhost, 正常返回 // 即web根目录下index.php

原因:

php.ini配置文件中memory_limit=256M的单位写成了MB, 导致出错. 具体详细原因TBD

解决办法:

将MB改为M即可

结果:

composer

项目应用

均正常!!

2.5 Redis 一直访问异常,但是项目中提示的报错,并不是没有安装php-redis扩展,而是其他的错误,很莫铭的错误,经过一番排查才知道是扩展没装,原始报错信息没有被打印出来,而是抛出另外的异常信息~~ 

202112xx 成都

原因:php扩展redis没安装

解决办法: 安装redis扩展

PECL :: Package :: redis

时反省,说明有时候,try...catch... 异常,但是有些异常还是尽量抛出原始的错误异常,应该让问题定位更加清楚,而不是统一都是相同的大范畴下,模糊不清的异常信息。

...

3.问题/补充

TBD

4. 参考

TBD

 后续补充

... 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值