PHP:我得到了一个完全空白的页面,我没有';我不知道如何在PHP中调试它

PHP:我得到了一个完全空白的页面,我没有';我不知道如何在PHP中调试它,php,include,fatal-error,Php,Include,Fatal Error,我在php中调试时遇到了一些问题。当我包括这一行时: require_once("http://" . $_SERVER["HTTP_HOST"] . "/dompdf/dompdf_config.inc.php"); 我得到的只是一个空白页面,没有得到任何html代码作为响应。可能错误信息被隐藏了 您不应该要求/包含这样的远程文件。而是提供本地绝对或相对路径 虽然不安全且不推荐,但如果设置了某些配置选项,则在技术上可以这样做。(允许url包含) 请参阅下面关于显示错误的其他答案,以了解将来的

我在php中调试时遇到了一些问题。当我包括这一行时:

require_once("http://" . $_SERVER["HTTP_HOST"] . "/dompdf/dompdf_config.inc.php");

我得到的只是一个空白页面,没有得到任何html代码作为响应。可能错误信息被隐藏了

您不应该要求/包含这样的远程文件。而是提供本地绝对或相对路径

虽然不安全且不推荐,但如果设置了某些配置选项,则在技术上可以这样做。(允许url包含)


请参阅下面关于显示错误的其他答案,以了解将来的调试问题。我经常使用PHP命令行解释器来获取真正的错误,而不允许向web访问者显示错误详细信息。

尝试将其添加为脚本的第一行(通常在之后,当您获得WSOD(白色死亡屏幕)时),这是因为有一个致命错误,它没有显示在标准输出上,即生成的页面


要显示它,您需要:

  • 设置到正确的级别
  • 使能
一种简单的方法是在PHP脚本的顶部执行此操作,代码的一部分如下所示:

error_reporting(E_ALL);
ini_set('display_errors', 'On');

在您的特定情况下,您正试图通过HTTP包含/要求某些内容;这通常是禁用的

关于这一点,请参见指令

一种可能是在PHP的配置中启用该选项……但通常认为这不是一个好主意:出于安全原因,它被禁用。
发送包含文件的HTTP请求很慢,这意味着如果远程服务器不响应,应用程序将无法工作


此外,在这里,您试图包含来自远程服务器的文件,该服务器是
$\u server[“HTTP\u HOST”]

…那么,您正试图包含一个来自远程服务器的文件,该服务器实际上是您自己的服务器?即,不是远程服务器

如果是这样,您不应该尝试通过HTTP包含;相反,您应该使用本地文件;这样做(需要一些tunning):

这样:

  • 无需网络请求(您只需从本地磁盘读取)=>更快更安全

  • 无需启用
    allow\u url\u include

我还要补充:

  • 当包含一个本地.php文件时,.php文件的内容将包含在页面中;就像它是复制粘贴的一样
  • 当通过HTTP包含一个.php文件时,远程服务器很可能会解释php代码,并只将输出返回给您
    • 这意味着脚本中不会包含PHP代码
    • 但是只有通过执行PHP代码才能得到输出

require\u once语句的参数应该是文件路径,而不是URL

您告诉web服务器从文件系统导入文件,而不是让客户端从web导入文件


页面上有文档记录。

这是一种非常不寻常且不安全的包含文件的方式,但是如果您仍然想使用它,请确保您包含的文件没有在远程服务器上执行,因为您可能会将php源代码锁定在require上,而不是它的最终输出。

如果wrapper在配置中已启用,但它确实存在,这是非常不安全的
allow\u url\u include
,因此这个答案现在的措辞显然是错误的。这当然可能是原因(allow\u url\u include默认为sane并保存“off”),但我们不要因为正确的原因而提供错误的信息。
error_reporting(E_ALL);
ini_set('display_errors', 'On');
require_once dirname(__FILE__) . "/dompdf/dompdf_config.inc.php";