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