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

TYPO3线上服务器pid类型错误:需int却传入string

TYPO3线上部署类型错误(pid为string而非int)解决方法

问题核心

本地Ddev开发无异常,线上服务器出现两个扩展的类型错误:

  • BK2K\BootstrapPackage\DataProcessing\ContainerContextProcessor::getPageRecords() 第2个参数$pid需为int,传入了string
  • FriendsOfTYPO3\TtAddress\Hooks\Tca\Label::getConfiguration() 同类pid类型错误
    停用内容元素后页面正常,手动转int可修复,但本地调试pid无输出、服务器端调试有效。

解决方案

1. 对齐PHP版本与类型检查模式

  • 检查线上PHP版本,确保和本地Ddev环境一致;若线上用PHP 8.0+,本地也升级到对应版本,提前发现类型问题
  • 查看TYPO3配置$GLOBALS['TYPO3_CONF_VARS']['SYS']['intvalStrict']:线上可能开启了严格模式,可临时在LocalConfiguration.php中设置'intvalStrict' => false,但建议后续从源头修复

2. 校验数据库表结构与数据

  • 对比本地与线上数据库中涉及pid的表(如pages、tt_content、tt_address),确保pid字段为int类型,避免数据导入时被转为字符串
  • 检查线上数据库中pid字段的实际值,是否存在非数字字符串的异常数据

3. 升级兼容的扩展版本

确认BootstrapPackage和tt_address扩展版本与线上TYPO3版本、PHP版本兼容,旧版本可能未适配高版本PHP的严格类型声明,更新到官方最新兼容版本

4. 修复pid传递的类型转换

找到pid被转为字符串的传递路径,在调用相关方法前强制转换为int:

  • 例如在调用ContainerContextProcessor::getPageRecords()时,将参数改为(int)$pid
  • 若扩展代码存在问题,可提交issue到对应扩展的仓库,或临时修改扩展代码(注意后续升级时的覆盖风险)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 12:35:28