PHP 中的打印变量导致服务器返回 false


Printing variable in PHP cause server to return false

我有145064642个字符长的HTML字符串,我正在尝试打印。

当我尝试在其上回显/var_dump/死亡时,它会导致页面返回 false(0),但如果我尝试只打印变量的一半,它工作正常。

例子:

不工作:

echo $MY_HTML_STR; die($MY_HTML_STR); var_dump($MY_HTML_STR)

两条线中的每一条都有效:

die(var_dump(substr($MY_HTML_STR,strlen($MY_HTML_STR)/2)));

die(var_dump(substr($MY_HTML_STR,0,strlen($MY_HTML_STR)/2)));

但是当尝试将两者打印在一起时:

var_dump(substr($MY_HTML_STR,strlen($MY_HTML_STR)/2));
die(var_dump(substr($MY_HTML_STR,0,strlen($MY_HTML_STR)/2)));

它又崩溃了。

一种回声方式确实给了我一个错误:

echo <<<EOF
    TEXTTEXT...
       $MY_HTML_STR                   
    BLABLAHTML...
EOF;

错误:Fatal error: Out of memory (allocated 324009984) (tried to allocate 145090561 bytes) in .....page.php on line 675

675路是EOF;线。该脚本正在使用WAMPSERVER在我的家用计算机上运行,memory_limit设置为-1(无限制)。

检查输出缓冲是否打开。请记住,如果启用了输出缓冲,则输出的所有内容都将保留在内存中,直到输出被刷新(这也在脚本关闭时隐式发生)。

在打印之前尝试使用 ob_end_clean(),看看是否能解决您的问题。

另外,请尝试在打印之前添加以下代码。您可能处于嵌套输出缓冲中(例如,如果您在 php 中启用了它.ini并在脚本开头调用ob_start)

print ob_get_level();
exit;

echo 不喜欢太长的字符串。 如果要打印,请使用 for 循环将其拆分为较小的字符串,substr() 约为 10000 个字符或更小,如果这会产生问题。

您超出了内部写入缓冲区太多。