使用force_ssl_admin强制使用SSL

时间:2019-12-05 作者:lonix

我跟着this advice 从官方文件中强制SSL:

define(\'FORCE_SSL_ADMIN\', true);
if (strpos($_SERVER[\'HTTP_X_FORWARDED_PROTO\'], \'https\') !== false)
$_SERVER[\'HTTPS\']=\'on\';
Wordpress在docker容器中运行。当它开始时,它说

警告:未设置\\u服务器变量。默认为空字符串。

Wordpress的日志显示:

PHP致命错误:赋值只能发生在/var/www/html/wp config中的可写值上。php

所以_SERVER 这就是问题所在。如何修复此问题?

1 个回复
最合适的回答,由SO网友:blumatse 整理而成

如果使用docker compose和WORDPRESS_EXTRA_CONFIG 就我而言,当我偶然发现这个错误时,解决方法是使用双美元符号表示法,如相应的issue in the docker-compose repo on GitHub.

该附加环境变量在;“如何使用此图像”;属于the official image documentation on hub.docker.com.

docker-compose.yml 将是:

wordpress:
  image: wordpress:latest
  environment:
    WORDPRESS_CONFIG_EXTRA: |
      define(\'FORCE_SSL_ADMIN\', true);
      if (strpos($${_SERVER}[\'HTTP_X_FORWARDED_PROTO\'], \'https\') !== false)
      $${_SERVER}[\'HTTPS\']=\'on\';
当然,使用适当的数据库容器和相应的数据库环境变量以及用户名和密码进行扩展。

这将导致环境变量_SERVER 仅在容器中展开。如果使用单美元符号,docker compose将尝试将指定环境变量的值从周围上下文填充到compose文件中,如中所述official compose docs.