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

PrestaShop模块接入CodeIgniter站点后遇重定向及多类报错求助

问题背景

原本使用PrestaShop站点,后切换为CodeIgniter站点,为保留一款PrestaShop商品配置器模块,将PrestaShop站点保留在主站/prestashop子目录,并在主站index.php中调用该模块:

if (file_exists(dirname(__FILE__).'/prestashop/config/config.inc.php')) {
    include(dirname(__FILE__) . '/prestashop/config/config.inc.php');
    if (Module::isEnabled('itemstyle')) {
        Module::getInstanceByName('itemstyle');
    }
}

此前运行正常,后续将CodeIgniter站点切换至PHP7.4版本,但该版本与PrestaShop1.7不兼容,因此将/my-site.com/prestashop迁移至子域名prestashop.my-site.com以使用不同PHP版本,之后遇到以下问题:


问题1:子域名访问自动重定向至旧路径

排查方向

  • 检查PrestaShop后台配置:若还能访问旧路径my-site.com/prestashop/admin,进入首选项 > 商店参数 > 联系信息,确认商店URL和SSL商店URL已更新为子域名prestashop.my-site.com
  • 检查app/config/parameters.php:确认文件中PS_SHOP_DOMAIN和PS_SHOP_DOMAIN_SSL字段值为子域名
  • 检查服务器配置:查看Apache/Nginx虚拟主机配置,是否存在强制重定向规则指向旧路径;同时检查PrestaShop根目录下的.htaccess文件,是否有自定义重定向规则
  • 清除缓存:清空浏览器缓存,删除PrestaShopapp/cache/目录下的所有缓存文件,避免旧配置残留

问题2:数据库连接权限报错(mysqli_connect Access denied)

解决方案

  • 检查模块自定义连接:报错来自itemstyle模块的ItemStyleCore.php第602行,说明该模块未使用PrestaShop内置数据库连接,而是自行创建连接。打开该文件确认数据库用户名、密码、主机是否与app/config/parameters.php一致
  • 验证数据库用户权限:登录数据库管理工具(如phpMyAdmin),检查报错中的用户xxxxxxxx@localhost是否拥有对应PrestaShop数据库的读写权限;若迁移后更换环境,需重新为该用户授权数据库访问权限
  • 确认数据库主机地址:若数据库不在本地,需将主机地址从localhost改为实际的数据库IP或域名

问题3:Smarty缓存写入失败报错

解决方案

  • 调整目录权限:给app/cache/prod/smarty/compile/及其父目录设置权限,通常目录设为755、文件设为644,确保Web服务器进程(如www-data、apache)拥有写入权限
  • 清除现有缓存:删除app/cache/prod/目录下的所有文件,强制PrestaShop重新生成缓存文件
  • 检查SELinux设置(若服务器启用):执行以下命令赋予Web服务器写入权限:
    semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/vhosts/xxxxx.fr/prestashop.xxxxx.fr/app/cache(/.*)?"
    restorecon -Rv /var/www/vhosts/xxxxx.fr/prestashop.xxxxx.fr/app/cache
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 01:57:38