定制器未应用任何更改,未引发错误

时间:2019-04-13 作者:Samuel

这件事我已经坚持了好几天了。主题定制器没有应用任何更改,问题似乎与我在在线论坛上看到的一切都不同(幸运的我)。

页面自定义。php加载良好,不会引发任何错误,预览面板显示正确。我已经使用浏览器的开发工具检查了Ajax调用的响应。我已经将Apache日志设置为调试级别,还激活了Wordpress级别的日志,并增加了PHP级别的日志,但日志中没有任何错误消息。以及定制发送的Ajax请求。php都得到了成功的响应。

但是,当尝试编辑任何主题(包括默认主题和下载主题)时,预览面板已正确加载,并且预览面板显示褪色的动画,指示正在刷新预览面板以在键入修改时显示更改,但预览面板上实际未显示任何更改。即使单击“保存/发布”按钮,也不会应用更改。live网站上也没有应用任何更改。刷新页面时,在左侧编辑器中输入的所有修改都将丢失。

但是,可以从管理面板的其他部分毫无问题地创建文章和内容。设置可以更改,主题和插件可以安装,各种写入操作都可以顺利完成。

我已经检查了wordpress网站的URL是否与wordpress设置中wordpress目录的URL相同,如论坛中所建议的那样。我试图在主题之间来回切换,希望这个问题能像论坛上建议的那样神奇地消失。我还尝试禁用所有插件,甚至从头开始重新安装wordpress。但问题仍然存在,最令人沮丧的是,任何地方都不会抛出错误,它只是默默地失败,所以我在这里尝试猜测。

我已经检查了文件系统权限,但所有文件和文件夹都由正确的apache用户拥有。我认为可能请求被过滤器悄悄地“清理”,但管道中的任何地方都没有安装mod\\u security。

我们的设置如下,尽管我认为这与此无关:我们有一个前端apache服务器作为另一个apache实例的反向代理,该apache实例在另一个未直接暴露于internet的虚拟机上运行wordpress(出于各种安全策略原因)。我将在一分钟后发布HTTPD配置文件。

在前端Apache上(即,反向代理,它是SSL终止点。只是在上下文中提到它,因为我不确定要看哪里,但SSL有什么问题,所以通常这应该是无关的)

<VirtualHost *:443>
 ServerName mywebsite.com
 ServerAlias www.mywebsite.com

 ProxyPass "/" "http://192.168.185.12:80/"
 ProxyPassReverse "/" "http://192.168.185.12:80/"
 ProxyPreserveHost On

 CustomLog /var/log/mywebsite.com-access.log combined
 ErrorLog /var/log/mywebsite.com-error.log

 SSLCertificateFile /path/to/certicate
 SSLCertificateKeyFile /path/to/private/key
</VirtualHost>

<VirtualHost *:80>
 ServerName mywebsite.com
 ServerAlias www.mywebsite.com

Redirect / https://mywebsite.com/
</VirtualHost>

在Wordpress的Apache实例上(即后端)

<FilesMatch "\\.php$">
    SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch "\\.phps$">
    SetHandler application/x-httpd-php-source
</FilesMatch>

<VirtualHost *:80>
 ServerName mywebsite.com
 ServerAlias www.mywebsite.com
 DocumentRoot /usr/local/www/wordpress
 SetEnv HTTPS On
 LogLevel debug
</VirtualHost>

<Directory /usr/local/www/wordpress>
      AllowOverride All
      Options -Indexes +FollowSymLinks
      Order Allow,Deny
      Allow from all
      # For Apache 2.4 add:
      Require all granted
  </Directory>

<Location / >
 ExpiresActive On
 ExpiresDefault "now"
</Location>
任何线索、指针或想法都将不胜感激。

谢谢

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

所以我终于有了它。问题来自php。ini配置选项筛选器。违约选项设置为:

filter.default = full_special_chars
filter.default_flags = 0
如中所述the PHP documentation, 这起到了清理和剥离所有$\\u POST、$\\u GET、$\\u COOKIE、$\\u REQUEST和$\\u服务器数据中的字符的效果,以一种非常恶毒的方式有效地打击了我。我已注释掉这些行以将其设置回默认值:

;filter.default = unsafe_raw
;filter.default_flags =
我希望这会对将来的人有所帮助,因为我不希望这种徒劳无益的寻宝,即使是对我最大的敌人。

相关推荐