Drupal7 SMTP模块7.x-1.7在PHP8下each()函数报错的修复问询
Drupal SMTP 7.x-1.7 兼容PHP 8的修复方案
问题根源
Drupal SMTP 7.x-1.7版本的smtp.transport.inc文件中使用了PHP 7.2已弃用、PHP 8已移除的each()函数,服务器升级到PHP 8后触发报错,涉及两处代码:
- 第393行:
while (list(, $line) = @each($lines)) { - 第423行:
while (list(, $line_out) = @each($lines_out)) {
修复方案
直接将两处each()遍历逻辑替换为PHP全版本兼容的foreach循环:
- 第393行替换为:
foreach ($lines as $line) { - 第423行替换为:
foreach ($lines_out as $line_out) {
补充说明
foreach是PHP官方推荐的数组遍历方式,完全匹配原each()的遍历逻辑,同时无需保留原代码中的@错误抑制符——foreach在数组遍历完成后不会触发警告,代码更简洁可靠。
内容的提问来源于stack exchange,提问作者henrik23
相关产品推荐
相关产品推荐

