【问题标题】:After migration of WordPress website I can't access the admin (white page)迁移 WordPress 网站后,我无法访问管理员(白页)
【发布时间】:2013-03-11 13:32:50
【问题描述】:

我正在尝试将 WordPress 网站从我的本地服务器移动到在线服务器。

问题是,在迁移之后,如果我尝试打开管理页面 (wp-admin),我只会得到一个白色页面,如您在此处看到的:http://scorejava.com/wordpress/wp-admin/。主页中的其他所有内容似乎都运行良好:http://scorejava.com/wordpress/。

在我的本地 Web 服务器中,我将 WP 站点放入文件夹中:/var/www/wordpress。我已将其移至 wordpress 文件夹中,该文件夹位于我的在线 Web 服务器的根目录中。

我还使用 MySql 将本地数据库导入到 onlyne 数据库中,然后我使用 Search and Replace for WordPress Databases Script 自动将所有出现的 http://localhost/wordpress 更改为数据库表http://scorejava.com/wordpress/.

【问题讨论】:

  • 您是否更新了您的.htaccess 和wp-config.php 文件?
  • 我已经更新了 wp-config.php 但我还没有更新 .htaccess 这个 .htaccess 文件在哪里?以及我必须做些什么来更新它?
  • 实际上,如果您不使用漂亮的网址,您可能没有.htaccess。尝试打开错误报告以阐明问题。
  • 嗯还有这个东西......你是什么意思“漂亮的网址”?以及如何开启错误报告?

标签: php wordpress content-management-system


【解决方案1】:

这可能是一个较晚的重播,但希望它可以帮助其他人。

就我而言,这里是我用来解决问题的步骤。

  1. 从您的 WordPress 项目根目录编辑 wp-config.php 文件并更改 define('WP_DEBUG', true); 而不是 false。
  2. 将相同的文件上传到新服务器的项目根目录。
  3. 尝试像以前一样登录 www.yourDomain.com/wp-admin - 希望现在您能够登录后端管理员
  4. 转到设置 -> 固定链接 - 在常用设置下 - 选择单选按钮 plan 然后点击保存按钮,然后再次选择 day and name 再次保存,不要忘记点击保存,找回你的域并检查您的网站,内页应该可以正常工作。
  5. 返回 wp-config.php 并将值恢复为 false 并再次上传。
  6. 就是这样。

我不是 wordpress 开发人员,但上述解决方案对我来说非常好,但没有找到任何正确解释的地方。

【讨论】:

    【解决方案2】:

    每个人。几天前,我通过 BlogVault 移植了 WordPress 多站点实例。过程进展顺利,站点按需要工作。但是我无法进入控制台,总是得到错误“您的浏览器不支持cookie,请启用它们并重试”。我花了几天时间研究并发现错误是由于页面“wp_options”的代码中的条目而发生的。

    原站使用线路

    define ('COOKIE_DOMAIN', strtolower (stripslashes ($ _SERVER ['HTTP_HOST'])));
    

    但新服务器使用该行

    define ('COOKIE_DOMAIN', mydomain.com);"
    

    替换代码行解决了这个问题。希望这对某人有帮助)

    【讨论】:

      【解决方案3】:

      我将这个答案添加到战斗中,希望它可以帮助其他人。我遵循了上述所有建议,但无济于事。实际上,我不得不破解 PHP 文件以强制我的管理员访问面板。通过面板,我发现我的管理员帐户没有被分配管理员角色。

      这是我对“wp-includes/capabilities.php”的破解

      function current_user_can( $capability ) {
          $current_user = wp_get_current_user();
      
          if ( empty( $current_user ) ) {
              return false;
          }
      
      return true;  // HACK to get superuser power to any logged in user
      
          $args = array_slice( func_get_args(), 1 );
          $args = array_merge( array( $capability ), $args );
      
          return call_user_func_array( array( $current_user, 'has_cap' ), $args );
      }    
      

      这允许管理员面板出现,可以访问https://example.com/wp-admin/users.php,然后我可以分配角色。然后我解锁了capabilities.php,以确保所有用户都拥有正确的权限,因为我已经分配了“管理员”。

      【讨论】:

        【解决方案4】:

        在许多情况下,当将文件迁移到不同的服务器时,这个问题的出现仅仅是因为您的一个 PHP 文件中的一个小错误。错误是关闭后的附加字符?> 文件中的 PHP 标记。这些可能只是简单的空白或返回,但它们通常是导致白屏死机的原因。

        罪魁祸首是 WordPress 主题中的 functions.php 文件。在纯文本文件编辑器中查看它(通常适用于大多数托管帐户)并确保删除结束标记后的所有行。

        如果它不在此文件中,请使用错误报告来识别罪魁祸首文件,它可能位于插件或主题中的其他文件中。

        正如 Jon Surrell 所说,启用错误显示,在 wp-config.php 中将以下设置更改为 true。

        define('WP_DEBUG', true);
        

        【讨论】:

          【解决方案5】:

          这些是我通常遵循的步骤。

          1. 上传文件和数据库。
          2. 设置正确的文件权限。
          3. 更新 wp-config.php 文件中的数据库配置以匹配服务器 db 登录。
          4. 更新 wp_options 表以更新站点 url 和 home url。
          5. 如果一切顺利,您应该能够使用 wp-login.php 作为 url 登录到管理员。
          6. 接下来要做的第一件事是转到永久链接并单击保存,它将自动更新.htaccess 文件。如果没有写权限,它将显示您可以通过 ftp 复制和编辑文件。
          7. 接下来,您可以使用名为 velvet urls 的插件轻松安全地更新所有网址。使用了很多年。它将更新数据库中的所有其他 url。

          如果一切顺利,所有这些步骤就足够了。

          如果你得到一个空白页或其他东西,你可以打开错误报告并从 wp 配置文件本身写入日志。您可以尝试其中一些进行调试。

          1. 只需从文件夹中一一删除插件即可。
          2. 删除您正在使用的自定义主题。

          除非您主要编辑核心文件,否则它将解决问题。只有其他机会是 php 或 mysql 的版本不匹配,这也是迁移时需要注意的非常重要的事情。希望这对某人有所帮助。

          【讨论】:

          • 多次尝试后,多次更改 htaccess,将 siteUrl 硬编码到数据库等。这是让我的网站再次工作的唯一原因!
          【解决方案6】:

          在您的 wp-config.php 文件中,停止编辑行上方添加此行:

          define('RELOCATE',true);
          /* That's all, stop editing! Happy blogging. */
          

          然后转到您的登录 URL,刷新页面并登录。 重要提示:如果您可以登录,请在前面删除 RELOCATE 行。 然后导航到:

          Settings > General
          

          将您的 Wordpress URL 和站点地址设置为正确的位置:

          WordPress Address (URL): http://example.com/wordpress
          
          Site Address (URL): http://example.com/myblog
          

          按“保存”。

          【讨论】:

          • 完整的说明在这里:link
          【解决方案7】:

          将以下行添加到wp-config.php 文件中:

          define('WP_HOME', 'http://' . $_SERVER['SERVER_NAME']);
          
          define('WP_SITEURL', WP_HOME . '/');
          

          【讨论】:

            【解决方案8】:

            编辑 wp-content/themes/active-theme-folder/function.php 并在之前添加此代码:

            <?php
            define('WP_HOME','http://www.myurl.com');     //<-- NO TRAILING /
            define('WP_SITEURL','http://www.myurl.com');
            

            【讨论】:

              【解决方案9】:

              迁移到本地服务器后,我遇到了同样的问题。 第一次尝试失败,因为数据库中有许多硬编码的文件路径。 所以我再次尝试并注意创建与实时服务器上相同的路径以及相同的主机名和数据库名。现在网站很好,但是 wp-login 出现了白屏。

              使用 wp-debug 我发现问题是由 wp-super-cache 插件引起的,该插件在 config.php 中硬编码了完整的文件路径 将此路径更改为完整的本地路径就可以了。

              【讨论】:

                【解决方案10】:

                迟到了,我最近遇到了这个问题,我设法解决了这个问题。这是我所做的。

                第 1 步:从 wp-config.php 文件中将 WP_DEBUG 设置为 true

                第 2 步:我尝试了 domain.com/wp-login.php 而不是 domain.com/wp-admin 通过这个我能够获得至少登录表单和 Warning: Cannot modify header information - headers already sent by 的一些错误

                第 3 步:我在 wp-login.php 文件中添加了 ob_start();,位于第一行 &lt;?php 之后,当然是为了让我进入一段时间。

                第 4 步:这个技巧奏效了。我已经禁用了所有插件,并且错误消失了。

                第5步: 将所有插件一一激活,找出是哪个插件导致错误,这样我就可以修复特定插件的错误。就像在wp_enqueque_style 之前有一个插件添加样式一样,所以我将它设置为一个函数并正确挂钩。

                也有一些小错误,例如deprecated 函数。是否要更正或使用替代插件取决于您。

                别忘了从wp_login.php 文件中删除ob_start。核心文件不应更改。

                希望这对像我这样的人有所帮助。

                【讨论】:

                • 给那个人一块饼干!这是完整且最正确的答案!
                • @Noamiko 谢谢
                【解决方案11】:

                您的网站出现错误,您需要了解发生了什么。

                WordPress 网址

                在迁移 URL 更改的 WordPress 站点时,您需要告知 WordPress 新 URL。 WordPress 将该信息存储在数据库中,因此如果您对此感到满意,您可以在数据库的 wp_options 表中找到正确的条目并更新其值。

                我将展示一些针对标准 WordPress 安装的修复(其中站点 URL 是 WordPress 根目录),但是您可能需要为 home 和 siteurl不同的设置。

                通过 SQL 修复 URL

                您需要更新数据库中的相关字段,即wp_options 的条目,其中option_name 是siteurl 或home。您可以使用 phpmyadmin、mysql-workbench 或其他数据库管理工具找到这些字段,也可以使用以下查询,将 URL 更改为您自己的。

                UPDATE `wp_options` SET `option_value`='http://www.myurl.com' WHERE `option_name` IN ('siteurl', 'home');
                

                通过wp-config.php修复网址

                不过,您也可以通过wp-config.php 执行此操作,我觉得这样更方便。只需打开 wp-config.php 并添加以下行:

                // Site URLS (override DB settings)
                define('WP_HOME','http://www.myurl.com');     //<-- NO TRAILING /
                define('WP_SITEURL','http://www.myurl.com');  //<-- NO TRAILING /
                

                显然您需要提供正确的网址。

                这可能是您遇到的唯一错误,将这些行添加到wp-config.php 后,您将能够正常登录并使用您的网站。

                调试 WordPress 错误

                但是,如果您继续遇到问题,并且在您开发网站的任何时候,您都会希望看到错误输出。您可以检查您的服务器日志以获取有关错误的信息,但您可能会发现 WordPress 更方便地在页面中简单地显示错误。要启用错误显示,请将wp-config.php中的以下设置更改为true。

                define('WP_DEBUG', true);
                

                现在 WordPress 将直接在网页中显示它遇到的任何错误。请务必将设置更改为 false 以在生产站点上使用。

                使用wp-config.php

                此文件将位于您的 wordpress 安装的根目录中。要进行此处提到的任何更改,您可以直接在服务器上编辑文件(例如通过ssh),或者使用 FTP 客户端下载文件,使用文本编辑器进行更改,然后再次上传文件.

                在进行任何更改之前保留一份备份副本也是一个好主意,以防您在工作时破坏了某些东西。

                参考文献

                您可以在 docs page 上阅读有关更改 WordPress 网站 URL 的所有信息。

                【讨论】:

                • 实际上我发现数据库中的很多字符串都包含硬编码的域。我的解决方案是在包含数据库导出的 .sql 文件中进行全面搜索和替换。
                • @Revious 我也遇到过这种情况,尤其是图片,但我认为这超出了这个问题的范围。
                • @Revious 这当然是可能的,具体取决于您的设置。
                【解决方案12】:

                在您的 WordPress 仪表板设置中,有两个字段名为“WordPress 地址 (URL)”和“站点地址 (URL)”。这些也称为您网站的“主页”和“站点 URL”设置。这些值需要与您实际运行的服务器相匹配。

                如果您无法访问管理员,您可以使用 phpmyadmin,进入您的数据库,找到 wp_options 表中的字段,并确保它们反映您的域。

                在大多数情况下应该足够了。

                【讨论】:

                  【解决方案13】:

                  我自己已经与可怕的“白屏死机”战斗了几次。您可以浏览Wordpress Support Site 上的主题以收集一些建议,或者在谷歌上搜索很多人的故事和处理这些问题的建议。我不能为此推荐一个单一的权威参考。

                  在我的大多数情况下,它是由关闭 ?&gt; 标记后的空白引起的,由于我的开发服务器和生产服务器之间的换行方案发生变化(通常在插件中)而引入。

                  您也可以尝试将 Wordpress 放入 debug mode 或将 error_reporting(E_ALL); 添加到您网站的 /wp-admin/admin.php 文件的第一行,看看这些是否会给您任何提示。

                  我个人已经能够通过使用XCloner plugin 在我的 Win 开发机器和 *nix 生产服务器之间进行传输来避免这些(触摸木头)。

                  【讨论】:

                  • 同样的问题,通过删除空格后得到解决?> 在我的例子中,它位于我的子主题的 function.php 中。希望这对某人有所帮助
                  猜你喜欢
                  • 2013-04-24
                  • 1970-01-01
                  • 1970-01-01
                  • 2018-12-30
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2014-05-17
                  • 1970-01-01
                  相关资源
                  最近更新 更多