我在 php 中调试它时遇到了一些问题。当我包括这一行时:
require_once("http://" . $_SERVER["HTTP_HOST"] . "/dompdf/dompdf_config.inc.php");
我得到的只是一个空白页面,我没有得到任何 html 代码作为响应。也许错误消息被隐藏了?
我在 php 中调试它时遇到了一些问题。当我包括这一行时:
require_once("http://" . $_SERVER["HTTP_HOST"] . "/dompdf/dompdf_config.inc.php");
我得到的只是一个空白页面,我没有得到任何 html 代码作为响应。也许错误消息被隐藏了?
很多时候,当你得到一个 WSOD (死机白屏)时,这是因为有一个致命错误,它没有显示在标准输出上——即生成的页面上。
要显示它,您需要:
error_reporting
为正确的水平display_errors
一种简单的方法是在 PHP 脚本的顶部执行此操作,其中的一部分代码如下所示:
error_reporting(E_ALL);
ini_set('display_errors', 'On');
在您的特定情况下,您正在尝试通过 HTTP 包含/要求某些内容;这通常是禁用的。
见allow_url_include
指令,关于那个。
一种可能性是在您的 PHP 配置中启用该配置...但通常不认为这是一个好主意:出于安全原因,它已被禁用。
并且发送包含文件的 HTTP 请求很慢——这意味着如果远程服务器没有响应,您的应用程序将不再工作!
此外,在这里,您正在尝试包含来自远程服务器的文件$_SERVER["HTTP_HOST"]
...
...所以,您正在尝试包含来自远程服务器的文件,实际上,您自己的服务器?即不是远程的?
如果是这样,您不应该尝试通过 HTTP 包含;相反,您应该使用本地文件;这样(需要一些调整):
require_once dirname(__FILE__) . "/dompdf/dompdf_config.inc.php";
这边走 :
allow_url_include
我还应该补充:
您不应要求/包含这样的远程文件。而是提供本地绝对或相对路径。
虽然不安全且不推荐,但如果设置了某些配置选项,从技术上讲是可行的。(allow_url_include)
请参阅下面有关 display_errors 的其他答案,以了解未来的调试问题。我经常使用 PHP 命令行解释器来获取真正的错误,而不允许将错误详细信息呈现给 Web 访问者。
这是包含文件的一种非常不寻常且不安全的方式,但是如果您仍想使用它,请确保您包含的文件没有在远程服务器上执行,因为您可能将 php 源代码定位在 require_once这里不是它的最终输出。
尝试将此添加为脚本的第一行(显然在 <?php 之后):
error_reporting(E_ALL);