文件包括导致程序流中断

时间:2013-05-27 23:40:50

标签: php

我遇到了PHP中的文件包含的奇怪问题。此文件具有类定义,但是当我尝试将其包含在脚本中时,脚本会在包含时终止。这是一个例子:

<?php
    require_once('../php_include/twitter_config.php');
    echo 'line '.__LINE__.' executed</br />';
    require_once('../php_include/db_config.php');
    echo 'line '.__LINE__.' executed</br />';
    require_once('../php_include/db_lib.php');
    echo 'line '.__LINE__.' executed</br />';
?>

当我运行这个脚本时,我总是得到:

line 3 executed
line 5 executed

正如您所看到的,我没有创建db_lib.php中定义的类的实例。我正在使用的IDE(netbeans)似乎并不认为db_lib.php中存在任何错误。有什么想法可能会发生这种情况吗?

1 个答案:

答案 0 :(得分:0)

此文件db_lib.php可能包含exit()die()命令。如果在运行此操作时发生这种情况,则必须使用包含的函数来终止父文件:

require_once('../php_include/db_lib.php');

有时当关闭error reporting的文件中存在错误(解析错误)时,页面无法呈现(留下空白页面)。如果您的PHP安装允许overwriting the PHP ini file,那么您可以在包含require_once语句的页面上使用:

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

由于您正在使用相对require_once语句,因此可能会尝试正确构建文件路径(例如,在root文件夹中名为php_include的目录),如果相对文件不是放置在require_once函数所需的相对位置:

require_once($_SERVER['DOCUMENT_ROOT'].'/php_include/db_lib.php');

此路径当然必须是文档根目录上方文件的位置。如果文件在文档根目录之外,那么您可以使用相对文件夹点(很少但不是闻所未闻)。

require_once($_SERVER['DOCUMENT_ROOT'].'/../php_include/db_lib.php');