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文件,是否有自定义重定向规则 - 清除缓存:清空浏览器缓存,删除PrestaShop
app/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
相关产品推荐
相关产品推荐

