PHP 8 踩坑记

尝鲜是要付出代价的

curl_init#

这个函数返回类型从 resource 变成了 object,使用阿里云 OSS 的 SDK 时,代码里有个 if (is_resource($curl_handle)) 检测,导致调用一直失败。改成 if ($curl_handle !== false) 问题解决。
另外,curl_close 也失效了,需要加上 unset 做兼容处理

curl_close($handle);
+ unset($handle);

追述源头:www.php.net/releases/8.0/zh.php

类型系统与错误处理的改进#

  • 算术 / 位运算符更严格的类型检测 RFC
  • Abstract trait 方法的验证 RFC
  • 确保魔术方法签名正确 RFC
  • PHP 引擎 warning 警告的重新分类 RFC
  • 不兼容的方法签名导致 Fatal 错误 RFC
  • 操作符 @ 不再抑制 fatal 错误.
  • 私有方法继承 RFC
  • Mixed 类型 RFC
  • Static 返回类型 RFC
  • 内部函数的类型 Email thread
  • 扩展 Curl, Gd, Sockets, OpenSSL, XMLWriter, and XML 以 Opaque 对象替换 resource
本作品采用《CC 协议》,转载必须注明作者和本文链接
秦晓武
讨论数量: 6

还有支付宝 app 支付 github.com/alipay/alipay-easysdk/i...

4年前 评论
秦晓武 (楼主) 4年前
cvoid (作者) 4年前
秦晓武 (楼主) 4年前

我也是调了一天,发现了这个问题,要吐血身亡了

3年前 评论
秦晓武 (楼主) 3年前