OpenCart切换HTTPS后Journal2 admin panel无法加载故障排查
我之前帮客户处理过完全一致的场景,结合你的环境(PHP7 + Apache2 + OpenCart2.3.0.2 + Journal2.13),这个卡死问题基本逃不开缓存残留、混合内容拦截、Journal2专属配置遗漏这几个核心点,咱们一步步来定位解决:
1. 优先排查Journal2的顽固缓存(最常见原因)
Journal2自带独立的缓存系统,比OpenCart原生缓存更“执着”——你切换HTTPS后,它缓存的还是旧的HTTP资源路径,导致admin页面加载时请求HTTP资源被浏览器的混合内容策略拦截,直接卡在加载状态。
解决步骤:
- 登录服务器,找到Journal2的缓存目录:
system/storage/journal2/cache/,删除里面所有文件; - 同时清理OpenCart原生缓存:
system/storage/cache/目录下的所有文件也删掉; - 如果你的服务器开启了OPcache,重启Apache或PHP-FPM服务,确保OPcache的旧缓存完全失效。
2. 检查混合内容请求(浏览器开发者工具定位)
即使你改了config和admin的网站URL,Journal2的某些隐藏配置可能还残留HTTP路径,导致页面加载失败。
解决步骤:
- 打开浏览器开发者工具(F12),切换到「Network」标签;
- 刷新admin页面,看有没有红色的失败请求——如果是HTTP协议的资源被拦截,说明对应的路径还没改成HTTPS;
- 检查Journal2的后台设置:进入Journal2的「Settings」→「General」,核对「CDN URL」「自定义CSS/JS引入路径」这类字段,确保全是HTTPS;
- 另外检查OpenCart的
admin/controller/common/header.php,如果有硬编码的HTTP资源链接,也一并修改。
3. 核对Apache的HTTPS配置与Rewrite规则
如果Apache的.htaccess规则没适配HTTPS,可能导致Journal2 admin的AJAX请求(它的admin是全AJAX加载的)被强制跳转到HTTP,被浏览器阻止。
解决步骤:
- 检查根目录和admin目录的
.htaccess文件,添加HTTPS强制跳转规则:RewriteEngine On # 强制所有请求跳转到HTTPS RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] - 确保Apache已经启用
mod_rewrite和mod_ssl模块(可以用a2enmod rewrite ssl命令开启,然后重启Apache)。
4. 处理PHP7与Journal2.13的兼容性警告
Journal2.13是比较老的版本,在PHP7下可能会触发一些deprecated函数的警告,这些警告会打断AJAX请求的JSON输出,导致admin页面无法解析返回值,一直卡在加载。
解决步骤:
- 查看PHP的错误日志,看有没有类似
Deprecated: function xxx is deprecated的警告; - 如果有,在
admin/config.php里修改错误报告级别:error_reporting(E_ALL & ~E_DEPRECATED & ~E_NOTICE); - 条件允许的话,尽量升级Journal2到兼容PHP7的最新版本(如果能找到适配包的话)。
5. 启用Secure Cookie属性
切换HTTPS后,浏览器可能会拒绝发送未标记为Secure的Cookie,导致admin会话验证失败,AJAX请求无法正常执行。
解决步骤:
- 在
config.php和admin/config.php文件中添加以下代码:ini_set('session.cookie_secure', 'On'); ini_set('session.cookie_httponly', 'On'); - 或者直接在PHP.ini中设置
session.cookie_secure = On,然后重启Apache服务。
排查顺序建议
优先按「清缓存→检查网络请求→核对URL配置→Apache规则→PHP兼容性→Cookie设置」的顺序排查,大部分情况清完缓存就能解决问题,如果不行再一步步往下走。
内容的提问来源于stack exchange,提问作者cybersecuriosity.com

