Ошибка, выдаваемая по требованию не видна - PullRequest
0 голосов
/ 14 января 2012

Я читал разницу между include и require в php здесь .

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 ]

3 голосов
/ 14 января 2012

Ваш код тестирования неверен, $value никогда не будет больше 10. Попробуйте, и у вас будет Неустранимая ошибка :

<?php
require("boom.php"); // no such file exits in real
?>
0 голосов
/ 14 января 2012

Возможно display_errors отключено.Вы можете проверить это, вызвав phpinfo().

Попробуйте поместить

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

в начале вашего скрипта, чтобы отображать ошибки непосредственно на экране (рекомендуется только для систем разработки).

РЕДАКТИРОВАТЬ Дох!Я иду с ответом Дэмиена.

0 голосов
/ 14 января 2012

Возможно, в вашем PHP отключены display_errors, что означает, что вы не увидите сообщений об ошибках в выводе на стороне клиента.Вы должны включить этот параметр в своем php.ini в своих средах разработки.

Если бы у вас было что-то подобное, вы бы хотя бы увидели сбой:

<html>

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

</html>

С некоторымина самом деле, вы увидите, что выводится только текст «перед требованием» - сценарий прервет выполнение, когда произойдет сбой require().

С вашей версией у вас нет видимых выходных данных и вы получитепосмотреть на источник страницы в вашем браузере, чтобы увидеть, что нет </body></html>

...