1,PHP7中以下代码出现Uncaught Error: Cannot use string offset as an array
$children = ''; foreach ($category as $cid => $cate) { $children[$cate['parentid']][] = $cate; }
原因是$children声明了字符型,下面以数据操作出错,声明为数组即可。
2, php -m命令看不到新安装的php扩展,phpinfo()里面有
这种情况一般是因为php-fpm模式与cli模式的配置文件不一致,使用命令 php -i | grep Loaded\ Configuration\ File 可以看出在cli模式下没有找到配置文件php.ini:
解决办法:通过 which php 命令查看php安装位置:
使用 strace 命令打印log:strace /usr/local/bin/php -i 2>/phplog.log
在log文件中搜索关键字php.ini,发现cli模式到这个目录下去找php.ini文件,然而这个目录下没有php.ini:
需要做的是,把php.ini文件复制到这个目录下一份:cp /etc/php.ini /usr/local/bin/php.ini
或者直接修改php-cli.ini
3, PHP7.4报错getimagesize(): SSL operation failed with code 1问题
{“status”:400,”msg”:”生成图片时,系统错误”,”data”:{“line”:470,”message”:”getimagesize(): SSL operation failed with code 1. OpenSSL Error messages:\nerror:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed”}}
先下载cacert.pem证书,https://curl.se/ca/cacert.pem,下载完后我直接上传到了/www/server/php目录下
找到对应的php版本的php.ini文件
将openssl.cafile其路径替换为openssl.cafile=/etc/pki/tls/certs/cacert.pem也就是你刚把cacert.pem证书上传的路径
最后重启php服务即可
4,解决strtotime增加减少一个月日期不准的问题
var_dump(date(“Y-m-d”, strtotime(“2017-06-31”)));
//输出2017-07-01
解决办法:
var_dump(date(“Y-m-d”, strtotime(“last day of -1 month”, strtotime(“2017-03-31”))));
//输出2017-02-28
var_dump(date(“Y-m-d”, strtotime(“first day of +1 month”, strtotime(“2017-08-31”))));
//输出2017-09-01
var_dump(date(“Y-m-d”, strtotime(“first day of next month”, strtotime(“2017-01-31”))));
//输出2017-02-01
var_dump(date(“Y-m-d”, strtotime(“last day of last month”, strtotime(“2017-03-31”))));
//输出2017-02-28
转载请注明:清韵逸-博客生活分享 » 收集PHP中的坑