PrestaShop 1.7.7.2 PHP版本适配问题:切7.3报500原7.4对接ShippingBo报错
解决方案
根因说明
最初的ShippingBo接口报错是PHP 7.4废弃了array_key_exists()作用于对象的用法,属于PrestaShop 1.7低版本与PHP 7.4的兼容性问题。你切换PHP 7.3后出现的数据库报错,大概率是PHP 7.3对应MySQL扩展缺失、PrestaShop旧缓存未清理或者MySQL版本与PHP 7.3不兼容导致的。
可执行修复步骤
你可以根据自己的需求选择以下任意一种方案:
方案一:保持PHP 7.4版本,直接修复兼容性代码(操作最简,无需调整服务端配置)
- 打开站点路径下的
/src/Adapter/EntityMapper.php文件 - 定位到第99行的
array_key_exists()调用代码 - 将原代码中作用于对象的
array_key_exists($属性名, $对象变量)替换为property_exists($对象变量, $属性名) - 保存文件后清理站点缓存即可解决报错,无需降级PHP版本
方案二:降级到PHP 7.3,修复数据库报错
如果希望严格匹配PrestaShop官方要求的PHP版本,按以下步骤操作:
- 确认PHP 7.3已安装启用
pdo_mysql和mysqli扩展:大部分服务商切换PHP版本时不会自动安装对应扩展,缺失会直接触发未知MySQL错误。你可以在站点根目录新建phpinfo.php文件,写入<?php phpinfo(); ?>访问验证扩展状态,确认后删除该文件避免安全风险。 - 清理全部PrestaShop缓存:手动删除
/var/cache/目录下的所有文件与文件夹,切换PHP版本后残留的旧缓存会导致各类运行错误。 - 适配MySQL认证方式:如果你使用的是MySQL 8.0版本,需要将数据库账号的认证插件修改为
mysql_native_password,PHP 7.3的MySQL扩展不支持MySQL 8.0默认的caching_sha2_password认证方式,修改后重启PHP服务即可。
所有操作前请提前备份整站文件与数据库,避免操作失误导致数据丢失。
内容的提问来源于stack exchange,提问作者Arnaud
相关产品推荐
相关产品推荐

