【问题标题】:Including wp-load.php in custom .php file causes page processing to stop. Why ?在自定义 .php 文件中包含 wp-load.php 会导致页面处理停止。为什么 ?
【发布时间】:2018-03-14 12:47:33
【问题描述】:

我有一个运行 4.8.2 版的 WP 网站。 我在主题的根文件夹中创建了一个自定义 php 页面,其中包含带有以下代码的 Wordpress 函数:

<?php
echo 'ralph';
clearstatcache();
echo file_exists('../../../wp-load.php');
require_once('../../../wp-load.php');
echo 'joe';
?>

最终结果应该是在页面上显示字符串“ralph1joe”(1 代表 wp-load.php 实际存在的事实)。

问题是:当我启动自定义页面时,仅显示字符串“ralph1”。 require_once 行之后的任何指令都将被忽略。我在页面和日志文件中都看不到任何错误。页面的进程被简单地打断了。

我可以做些什么来让 require_once 行正常工作吗?

【问题讨论】:

  • 您是否检查过 HTML 源代码以查看“joe”是否嵌套在某处?错误报告也打开了吗?
  • 我确实检查了 HTML 源代码:它只显示“ralph1”。错误报告处于活动状态。
  • 更准确地说,我实际上有一个延迟错误可视化(该网站位于共享托管平台上)。此错误:未捕获错误:调用未定义函数 is_user_logged_in() 实际上可能是由我的自定义页面引起的,但我不能确定。
  • 试试echo file_exists('../../../wp-load.php')? 'yes' : 'no';,这样你就可以真正看到它是否在你认为的位置。假设您的主题位于目录下,您可以尝试$uriParts = explode( 'wp-content', $_SERVER['SCRIPT_FILENAME'] ); require_once( $uriParts[0] . 'wp-load.php' ); 之类的方法来获取正确的位置。
  • @Newcomsas 错误可能来自您所包含的文件(尝试追踪它所说的文件)。然后在到达echo 'joe'; 之前使您的脚本崩溃。

标签: php wordpress wordpress-theming require-once


【解决方案1】:

我认为问题出在 wp_load.php 或者您可能没有正确读取 wp_load.php 文件。

wp_load 总是需要 wp_config.php 如果它没有得到它,它将因错误而死。请参阅 wp_load.php 文件中的以下代码

$die  = __( "There doesn't seem to be a <code>wp-config.php</code> file. I need this before we can get started." ) . '</p>';

类似这样的一些更相同的代码以及与之相关的错误。

所以当你 require_once 'wp_load.php' 并且它没有得到 wp_config.php 它会死掉并停止执行,你不会得到任何进一步打印声明

希望它能澄清你。

【讨论】:

    【解决方案2】:

    我解决了这个问题。我安装的一个插件显然引起了冲突。 该插件名为All 404 Redirect to Homepage 停用它会导致我的自定义页面再次正常工作。

    【讨论】:

      【解决方案3】:

      在我的代码中,此错误是由函数内的必需行引起的。我删除了这一行并将其放在主代码中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-09-03
        • 2021-12-07
        • 2013-10-17
        • 1970-01-01
        • 2010-11-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多