require抛出的错误不可见

时间:2012-01-14 15:54:21

标签: php include require

我正在阅读php here中include和require之间的区别。

require will throw a PHP Fatal Error if the file cannot be loaded. 

我在php中创建了一个测试文件,以便更好地了解差异,但两者都没有显示任何内容(我在require中没有看到任何错误。)

请帮帮我。感谢

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<?php
for( $value = 0; $value < 10; $value++ )
if($value>10)
require("boom.php"); // no such file exits in real
?>
</body>
</html>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
    </head>

    <body>
    <?php
    for( $value = 0; $value < 10; $value++ )
    if($value>10)
    include("boom.php"); // no such file exits in real
    ?>
    </body>
    </html>

3 个答案:

答案 0 :(得分:3)

您的测试代码错误,$value永远不会超过10.尝试此操作,您将获得致命错误

<?php
require("boom.php"); // no such file exits in real
?>

答案 1 :(得分:0)

可能您的PHP已关闭display_errors,这意味着您不会在客户端输出中看到错误消息。您应该在开发环境中的php.ini中启用此设置。

如果你有类似的东西,你至少会看到失败:

<html>

<body>
<p>Before require</p>
<?php require('does-not-exist'); ?>
<p>After require</p>
</body>

</html>

如果有一些实际输出,你会看到只输出'before require'文本 - 当require()失败时,脚本将终止执行。

使用您的版本,您没有可见的输出,并且必须在浏览器中查看页面来源才能看到没有</body></html>

答案 2 :(得分:0)

可能display_errors已停用。您可以致电phpinfo()来查看此内容。

尝试放置

ini_set('display_errors',1);
error_reporting(E_ALL|E_STRICT);

在脚本的开头,直接在屏幕上显示错误(仅推荐用于开发系统)。

编辑 Doh!我跟Damien一起回答。