搜狐云景上部署的wordpress重启后回到安装界面

邮件和搜狐沟通过,对方说是

轻量虚拟机-容器里面是一个“临时性文件系统”;也就是说,应用在容器中动态创建的文件、目录,是随时可能消失的。这是因为当轻量虚拟机出现故障,或者轻量虚拟机所在物理机器出现故障的情况下,需要将这个轻量虚拟机动态的迁移到别的物理机器上,保证应用的“高可用性”。迁移后,原来轻量虚拟机里面的文件、目录就都丢失了;这也是PaaS通用的处理逻辑。对于您这种问题,建议把需要持久化的数据存在云存储上。

看样子,wordpress可能是判断了某个文件是否存在来确定是否需要安装,但是本地的文件是没办法持久化的,判断状态的文件丢失了,导致wordpress回到安装界面。

所以我就想问一下,wordpress是到底是怎么判断是否已经进行了安装了,然后怎么patch一下源代码从而能正常使用呢。

之前grep出来了几个函数,但是我也不懂php,不知道怎么修改。谢谢大家了~

grep -r "wp_not_installed"
wp-settings.php:wp_not_installed();
wp-includes/load.php:function wp_not_installed() {

virusdefender@asus:~/Desktop/wordpress$ grep -r "is_blog_installed"
wp-admin/install.php:if ( is_blog_installed() ) {
wp-admin/includes/upgrade.php:  if ( ! is_blog_installed() )
wp-admin/upgrade.php:<?php if ( get_option( 'db_version' ) == $wp_db_version || !is_blog_installed() ) : ?>
wp-admin/maint/repair.php:  if ( isset( $_GET['referrer'] ) && 'is_blog_installed' == $_GET['referrer'] )
wp-includes/default-widgets.php:    if ( !is_blog_installed() )
wp-includes/functions.php:function is_blog_installed() {
wp-includes/functions.php:  if ( wp_cache_get( 'is_blog_installed' ) )
wp-includes/functions.php:  wp_cache_set( 'is_blog_installed', $installed );
wp-includes/functions.php:      $wpdb->error = sprintf( __( 'One or more database tables are unavailable. The database may need to be <a href="%s">repaired</a>.' ), 'maint/repair.php?referrer=is_blog_installed' );
wp-includes/functions.php:  wp_cache_set( 'is_blog_installed', false );
wp-includes/load.php:       if ( ! is_blog_installed() && ! defined( 'WP_INSTALLING' ) ) {
wp-includes/load.php:   } elseif ( ! is_blog_installed() && false === strpos( $_SERVER['PHP_SELF'], 'install.php' ) && !defined( 'WP_INSTALLING' ) ) {

阅读 5.3k
3 个回答
新手上路,请多包涵

据我所知,你可以不需要修改 wp 代码,建议 wp 在你本地安装后,直接打包可以运行的代码部署上去。

安装后,根目录会生成一个wp-config.php文件,这个文件存在,就说明已经安装了,不存在,就跳到安装界面了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进