如何检查php文件是否成功包含?

如何检查php文件是否成功包含?,php,include,Php,Include,我想检查“ad.php”中是否包含“dbas.php”。我编写了代码- ad.php 我成功地测试了文件_exists()部分,但不知道include()是否能正常工作,因为我在localhost中进行了尝试,如果该文件位于目录中,那么它就永远不会包含失败。因此,我不知道如果存在大量流量,该代码在服务器中的行为如何。那么请告诉我我的代码正确吗 -谢谢 已解决:非常感谢您的回答。写信 echo "file is includ" 在“dbas.php”的末尾,存在文件(“dbas.php”)


我想检查“ad.php”中是否包含“dbas.php”。我编写了代码-

ad.php


我成功地测试了文件_exists()部分,但不知道include()是否能正常工作,因为我在localhost中进行了尝试,如果该文件位于目录中,那么它就永远不会包含失败。因此,我不知道如果存在大量流量,该代码在服务器中的行为如何。那么请告诉我我的代码正确吗

-谢谢

已解决:非常感谢您的回答。

写信

echo "file is includ" 
在“dbas.php”的末尾,存在文件(“dbas.php”)

正在进行检查。如果存在,则执行包含

if(file_exists("dbas.php"){
    include("dbas.php")
    //continue with you code here
}
如果您希望绝对确保包含该文件,那么使用php更合适。只检查文件是否存在,而不检查文件是否实际可读

如果包含失败,
require
将产生错误(您可以
catch
捕获错误,请参阅Cerburs的答案)

编辑:

但是,如果您不希望脚本在包含失败时停止,请使用方法
is_readable
以及
file_exists
,如:

if( file_exists("dbas.php") && is_readable("dbas.php") && include("dbas.php")) {
    /* do stuff */
}

将您的功能放入函数中,并使用它检查是否存在

include ("php_file_with_fcn.php");
if (function_exists("myFunc")) {
    myFunc();
    // run code
} else {
    echo "failed to load";
}
在您的情况下,包含文件将是

function db_connect() {
     $user = "user";
     $pass = "pass";
     $host = "host";
     $database = "database";
     mysql_connect($host, $user, $pass);
     return mysql_select_db($database);
}
和主文件:

include("db_connect.php");
if (function_exists("db_connect")) {
    if (db_connect() === TRUE) {
        // continue
     } else {
        // failed to connect (this is a different error than the "can't include" one and 
        // actually **way** more important to handle gracefully under great load
     }
 } else {
     // couldn't load database code
 }

使用此代码而不是您的代码,因为在您的代码中,如果服务器中不存在文件,则会出现php错误,这是不好的,因此请使用此代码:

if(file_exists("dbas.php")) {
    include_once("dbas.php");
} else {
    echo"file is not found";
}

此代码表示如果服务器上存在文件,则未找到函数include else file
echo
只需使用
require

try {
    require 'filename.php';
} catch (Exception $e) {
    exit('Require failed! Error: '.$e);
    // Or handle $e some other way instead of `exit`-ing, if you wish.
}
还有一点没有提到:您可以添加一个布尔值,例如:

$dbasIncluded = true;

dbas.php
文件中,检查代码中的布尔值。尽管通常情况下,如果一个文件没有正确包含,您会希望php踩刹车,而不是呈现页面的其余部分。

我的“dbas.php”代码是这样的,当包含该文件时,页面上的数据库代码是活动的。我想知道,如果服务器中存在大量流量,我的代码检查文件包含是否正确。(我不确定这是因为我只检查了localhost。所以不知道是否适合大量流量服务器。)您可以通过使
dbas.php
文件不被Web服务器读取来测试它。它将断言它存在,但不能包含它。当文件未找到时,不要在代码中使用代码bcoz。它显示php错误,这是不好的。您可以使用下面的我有post code,如果文件未在目录中找到,它不会抛出任何错误。如果文件在目录中,则只有以下代码将运行,否则将显示“数据库加载失败”。这就是我使用file_exists()检查文件是否在目录中的原因。OP似乎能够捕获错误。因此,
require
可能不是最好的主意?是的,我喜欢“if(file_exists(“dbas.php”)&&is_readable(“dbas.php”)&&include(“dbas.php”){/*dostuff*/}“此代码。感谢您的帮助。请参阅@Cerbrus answer,以获取使用
try/catch
的示例。抱歉,这是一个错误的建议,仅适用于某些特定情况!”!
file\u exists
有一个比它“只检查文件是否存在,而不检查它是否真正可读”更严重的问题:
include
将在不同的、有时是非平凡的地方寻找脚本(比如甚至不在“/”中寻找脚本,或者其他文件优先,尽管“/”中有一个文件,当然,哪个
文件存在将永远不会存在。因此,除非重新实现PHP自己的内置查找逻辑以包含脚本,否则坦率地说,您唯一的选择就是拦截PHP错误。另一个需要明确说明的严重不一致性是:
file\u存在(“dbas.PHP”)
查找当前目录,即使用
getcwd
获得的目录。OTOH,
include(“dbas.php”)
只保证在当前脚本自己的目录(即
\uuuuuuu DIR\uuuuu
)中找到该文件,该目录很可能与另一个目录不同。(请注意,
include_path
通常包含“.”,并且通常作为第一个条目,因此人们可能会继续避免像这样的草率行为,甚至不知道地雷……)我从您的代码中得到了一个想法,我将在dbas.php文件中初始化一个变量,并在ad.php中检查该值是否正确。然后确定dbas.php是否成功包含$i=100;//我将把这一行添加到dbas.php。我会在ad.php中检查,这个怎么样?我不会那样做的。我会把你的数据库连接代码放在一个函数中,检查它的存在并调用它。然后,您还可以处理连接故障,这比
echo
-ing或(恐怖的!)
die
要优雅得多失败,您不必检查该函数是否存在,因为您的页面将在include上返回一个错误。当包含发生时,为什么要检查它是否存在,如果它不能“不”存在?@Cerbrus:我们谈论的是高负载问题,而不是存在问题(我似乎理解)。IMHO,您应该只在include文件中放置函数/类,而不是实际的页面逻辑。它使生成PHP文件的页面更具可读性。与函数相比,函数有副作用。“那么php错误就出现了,这是不好的”这是什么意思?php错误比回显未找到文件要好,因为错误中通常包含更多信息。是的,我完全同意你的观点,但在ux中这并不好,这就是为什么我说+1,因为它不像其他回复中那样重复文件名。但这不起作用,不是吗?Require抛出致命错误,try/catch无法捕获。正如Frodik所说:Require抛出致命错误,无法捕获。相反,您可以使用include,它只发出警告。您可以向set_error_handler注册错误处理程序以查找警告。但检查是否有错误会更容易
$dbasIncluded = true;