PrestaShop 1.7.3.1无法切换自定义主题问题求助
刚看到你的问题,我之前在PrestaShop 1.7.x版本升级时也碰到过几乎一模一样的主题切换问题,结合你的场景,给你几个实际可行的排查和解决方向:
先确认权限问题(最常见原因)
那个“您没有...”的提示基本指向权限不足。首先确保你的后台账号是超级管理员权限——普通管理员账号是没有切换主题的权限的。另外,上传主题后,服务器上的主题文件夹权限也要检查:- Linux服务器下,把主题文件夹权限设为
755,文件权限设为644 - 确保运行Apache/PHP的用户(比如www-data)拥有该主题目录的读写权限
- Linux服务器下,把主题文件夹权限设为
核对theme.yml的版本兼容性配置
虽然1.7.3.0和1.7.3.1版本差很小,但PrestaShop对主题的版本约束有严格校验。打开你的theme.yml文件,检查这部分配置:prestashop: min_version: 1.7.3.0 max_version: 1.7.3.1 # 如果原来只写了1.7.3.0,一定要改成兼容1.7.3.1同时确认
parent字段准确指向classic(毕竟是基于Classic开发的子主题),name和display_name不要包含特殊字符。排查自定义钩子与新版本的冲突
1.7.3.1对钩子的注册逻辑做了细微调整,自定义钩子可能触发了权限校验问题。你可以先临时移除主题里的自定义钩子相关代码:- 删掉
hooks/目录下的自定义钩子文件 - 注释掉
theme.yml里的hooks配置项
然后再尝试切换主题,如果能成功,再逐个恢复自定义钩子,排查出具体是哪个钩子导致的问题。
- 删掉
强制清理缓存(PrestaShop的老毛病)
版本升级后的缓存残留经常会引发各种奇怪问题,按这个步骤清理:- 后台进入高级参数 > 性能,清理所有类型的缓存(Smarty缓存、编译缓存、媒体缓存)
- 手动登录服务器,删除
var/cache/目录下的所有文件(注意保留目录里的index.php文件) - 回到主题管理页面,点击“重置主题”按钮(如果有)后再尝试切换
查看PHP错误日志(别只看Apache日志)
你说Apache日志没报错,但PHP的错误日志可能藏着关键信息。可以临时开启调试模式:
打开config/defines.inc.php,把_PS_MODE_DEV_的值改成true,然后再尝试切换主题,此时PrestaShop调试器应该会显示更详细的错误提示。如果还是没提示,就直接去服务器上找PHP的error.log文件(位置取决于你的服务器配置,比如/var/log/apache2/error.log或/var/log/php5.6-fpm.log)。
内容的提问来源于stack exchange,提问作者Patryk Tchórzewski

