10


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

广告.php

<?php if(file_exists("dbas.php") && include("dbas.php")){
// some code will be here
}
else{echo"Database loading failed";}
?>

我成功测试了 file_exists() 部分,但不知道 include() 是否能正常工作,因为我在 localhost 中尝试过,如果文件在目录中,那么它永远不会包含在内。所以我不知道如果有很多流量,这段代码在服务器中的行为会如何。所以请告诉我我的代码是否正确?

-谢谢。

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

4

6 回答 6

17

如果您想绝对确定该文件是否包含在内,则使用 php 的require方法更合适。file_exists只检查文件是否存在,而不检查它是否真的可读。

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

编辑:

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

if( file_exists("dbas.php") && is_readable("dbas.php") && include("dbas.php")) {
    /* do stuff */
}
于 2012-12-06T07:48:36.330 回答
7

只需使用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 刹车,而不是渲染页面的其余部分。

于 2012-12-06T08:07:47.663 回答
0

file_exists("dbas.php")正在做检查。如果存在,则执行包含。

if(file_exists("dbas.php"){
    include("dbas.php")
    //continue with you code here
}
于 2012-12-06T07:46:10.290 回答
0

将您的功能放在一个函数中并使用function_exists它来检查它是否存在。

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
 }
于 2012-12-06T07:50:42.683 回答
0

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

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

此代码表示如果文件存在于服务器上,则函数包含 else 文件未找到echo

于 2012-12-06T07:57:00.513 回答
-1

echo "file is includ" 

在“dbas.php”的末尾

于 2012-12-06T07:45:25.783 回答