带有Photocrati主题的WordPress不断重置站点URL-帮助解决根本问题

时间:2016-04-17 作者:Tim

我有一个网站在AWS t2上运行Photorati主题版本4.9.3。micro运行Amazon Linux。我将PHP 5.6与PHP fpm和最新版本的Nginx一起使用,Nginx由几个模块编译而成。我在网站前面有CloudFlare,但它只接受来自CloudFlare的连接,不直接接受。

一个运行Photograti的Wordpress 4.5站点持续下降,因为出于某种原因,wp\\U选项表中的siteurl不断更改为

https://www.example.com/wp-login.php/wp-content/themes/photocrati-theme/styles/wp-admin/wp-admin/wp-admin/wp-content/themes/photocrati-theme/styles/wp-admin/wp-content/themes/photocrati-theme/styles/wp-content/themes/photocrati-theme/styles/wp-content/themes/photocrati-theme/styles/wp-content/themes/photocrati-theme/styles/wp-content/themes/photocrati-theme/styles/wp-content/themes/photocrati-theme/styles/wp-content/themes/photocrati-theme/styles/wp-content/themes/photocrati-theme/styles/wp-content/themes/photocrati-theme/styles
我可以用下面的SQL来修复它,但这很烦人,会导致停机。我已经编写了脚本,所以cron每五分钟运行一次——显然这不是一个很好的解决方案,但在我能够正确修复它之前,它会一直运行。

update wp_options set option_value = "https://www.example.com/" where option_id = 1
我有三个其他网站在同一台服务器上,这是很好的。没有运行Photorati-他们运行各种其他主题。据我所知,最近没有什么变化——大约一周前,我从Nginx切换到PHP 5.6,但这是在我做出更改后3-5天开始的。所有站点都运行相同的插件,如下所示。我已经在RDS上设置了MySQL查询日志,也许这会给我一个提示。

Akismet
CloudFlare
Contact Form 7
Contact Form DB
Google Analytics by MonsterInsights (it just changed its name to this)
Remove query strings from static resources
Ultimate Nofollow
UpdraftPlus - Backup/Restore
Yeost SEO
Photocrati的支持人员回答说,他们不知道发生了什么。

我用securi(插件和网站)和Wordfence进行了网站安全扫描。未发现任何问题。

文件权限都设置得非常严格,但仍然允许通过web ui进行自动更新和插件/主题安装。我可以看到数据库中正在执行的SQL,当我在访问日志中查找任何恶意的内容时,那里没有什么重要的内容-一个对博客类别无影响的查询。

有人见过类似的东西吗?有没有关于如何解决根本问题的建议?我怎么才能找到这个?我需要找出哪行代码正在运行该查询。

To be clear - 我可以在网站宕机时很容易地将其打开,我非常感谢您的帮助,找出它发生的原因。我是一名前enterprize开发人员,所以我技术相当熟练,我已经使用Wordpress好几年了,我对它很在行-我只是不为它开发,所以我真的不知道问题所在。

请注意,我首先在这个网站上发布了这个问题,但有人告诉我这个网站不支持。我把它贴在服务器故障上,他们把它移回了这里。

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

若这是通过WP Options API完成的(相对于数据库上的直接SQL查询),那个么您可以使用挂钩来记录它。

大致如下(未测试,请确保它在正常选项“保存”下工作):

add_filter( \'pre_update_option_siteurl\', function ( $value ) {

    error_log( wp_debug_backtrace_summary() );

    return $value;
} );
下次发生这种情况时,你应该从回溯中更好地了解潜在的原因。

在修复之前,您还可以将其硬编码到配置中,以防止其本身损坏:

define(\'WP_HOME\',\'http://example.com\');
define(\'WP_SITEURL\',\'http://example.com\');

SO网友:RRikesh

我想你把价值搞糟了。homesiteurl 值不应以斜杠结尾。

更好的查询(假设WP位于根目录中)是:

UPDATE wp_options
SET options_value = \'https://www.example.com\'
WHERE option_name IN (\'home\',\'siteurl\');

相关推荐

有没有可能将代理WP MULTISE反向转换为具有Nginx的单独服务器?

最近迁移了一个多站点网络,却发现一些站点使用的主题与服务器的PHP版本不兼容。虽然我正在进行长期修复,但我希望使用NGINX将非工作站点反向代理到旧服务器,同时保持当前工作站点指向新服务器。当我尝试以下操作时,我能够访问旧站点的页面,但静态资产(js、css等)返回404,并且我无法访问任何/wp管理页面。我应该改变什么?这是整个服务器块配置。保存为location /oldsite, 我也将此配置用于其他服务器块。在这种情况下,我的所有WordPress文件都存储在各自独立的/wordpress/ 目录