You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IIS服务器升级PHP 8.3后出现PhpSpreadsheet弃用错误求助

PHP 8.3升级后PhpSpreadsheet弃用警告的解决办法

升级PHP到8.3后,PhpSpreadsheet的ColumnIterator和Worksheet\Iterator类因未遵循PHP 8.1+对Iterator接口方法的返回类型要求,触发了一系列弃用警告,以下是几种有效解决方法:

方案一:升级PhpSpreadsheet到兼容版本(推荐)

这是最彻底的解决方案,新版本已修复返回类型兼容问题:

  • 若使用Composer管理依赖,执行命令:
    composer update phpoffice/phpspreadsheet
    
    确保安装的版本为1.29.0及以上(该版本开始全面支持PHP 8.3)
  • 若为手动下载的包,直接替换为PhpSpreadsheet最新稳定版文件

方案二:临时抑制弃用警告(快速临时修复)

适合不想立即升级依赖的场景,但不建议长期使用:

  • 代码层面抑制:在项目入口文件开头添加以下代码,屏蔽DEPRECATED级别的错误:
    error_reporting(E_ALL & ~E_DEPRECATED);
    
  • 配置层面抑制:修改php.ini文件,调整错误报告级别:
    error_reporting = E_ALL & ~E_DEPRECATED
    
    修改后需重启IIS服务器使配置生效

方案三:手动修改类文件(不推荐)

仅在无法升级依赖时临时使用,后续升级会覆盖修改:
对每个触发警告的方法,添加#[\ReturnTypeWillChange]属性,示例如下:

#[\ReturnTypeWillChange]
public function rewind()
{
    // 原有方法代码
}

需为以下文件中的对应方法添加该属性:

  • C:\inetpub\wwwroot\dev_iscoms\ordful\Classes\PHPExcel\vendor\phpoffice\phpspreadsheet\src\PhpSpreadsheet\Worksheet\ColumnIterator.php:rewind()、current()、key()、next()、valid()
  • C:\inetpub\wwwroot\dev_iscoms\ordful\Classes\PHPExcel\vendor\phpoffice\phpspreadsheet\src\PhpSpreadsheet\Worksheet\Iterator.php:rewind()、current()、key()、next()、valid()

内容的提问来源于stack exchange,提问作者Vinayak M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 03:10:55