在保证 SSL 证书是正确的配置时,因为我可以使用
https:// 进行访问后台,
只是 Enable SSL 这一项是不可用的。试过有试过
删除缓存、开启 Debug、关闭OpCache
都是无用的或者试者去数据库配置表中直接修改参数,这样的话访问会出错的。
现在只能去查看代码点击 “Please click here to check if your shop supports HTTPS.”
这到底是什么功能,它请求到
\controllers\admin\AdminPreferencesController.php
在这文件中发现有一段代码
if (!Tools::usingSecureMode() && !Configuration::get('PS_SSL_ENABLED')) {
...
}
关键在于
Tools::usingSecureMode() 这个方法的调用
方法内代码的作用是判断服务器是否开启 HTTPS
if (isset($_SERVER['HTTPS'])) {
return in_array(Tools::strtolower($_SERVER['HTTPS']), array(1, 'on'));
}
// $_SERVER['SSL'] exists only in some specific configuration
if (isset($_SERVER['SSL'])) {
return in_array(Tools::strtolower($_SERVER['SSL']), array(1, 'on'));
}
。。。
在这调试时发现$_SERVER['HTTPS']这些值都是没有的
原来在 Nginx 配置SSL并开启时,还需要通知 php-fpm 接口,我使用了 HTTPS 了.
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fcgi.conf;
fastcgi_param HTTPS on; # 添加配置
}
重启服务,在后台Enable SSL可用了
不过有些些奇怪,我配置过几台已工作的服务器,并没出现这一问题,也就是并没有
配置
fastcgi_param HTTPS on; 确也可以正常的工作。让我有疑惑??,有大神可解
惑?