Php opendir()在使用GET时发出警告

时间:2015-01-29 14:03:27

标签: php warnings dir opendir readdir

我的一个PHP应用程序出了问题。我使用以下代码块将我的函数包含在应用程序中:

    // Opening the directory where the functions are located and reading the contents
    if (is_dir(__FDIR__)){
        if ($dh = opendir(__FDIR__)){
            while (($file = readdir($dh)) !== false){

                if ($file != "." && $file != "..") {

                    //include all files found in the functions directory
                    include_once(__FDIR__.$file);

                }

            }
            closedir($dh);
         }
    }

正常工作正常,但只要在URL中加载带有$ _GET参数的URL,我就会收到以下警告:

    Warning: readdir(): 11 is not a valid Directory resource in C:\xampp\htdocs\portcms\functions.php on line 6
    Warning: closedir(): 11 is not a valid Directory resource in C:\xampp\htdocs\portcms\functions.php on line 16

这里奇怪的是$ _GET参数不针对上面的代码。它们被传递给不同的代码块以选择应加载哪个内容div。 另外在我使用此设置的另一个应用程序中,它可以完美地工作而不会发出任何警告。

编辑:非工作示例如下: 在index.php中我有以下代码:

    <?php 

//starting the session;
session_start();

//getting required files;
require_once('fileloc.php');                            //file locater
require_once(__CONFIG__);                       //config file;
require_once(__FUNCTIONS__);                //function loader-file;
require_once(__CDIR__."class.db.php");      //database class for database manipulation (replace with class-loader?);

//verifying the logged on user;
$ver = login($_SESSION['username'], $_SESSION['pass']);
if (!isset($ver) || $ver != 1) {

    //could not verify user, destroying session and return to login screen;
    session_destroy();
    header('location: login.php');

}   
    //building the page;
require_once(__MDIR__. "header.php");
if ($ver == 1) {
    require_once(__MDIR__."main.php");
}
echo __FDIR__.'overview.php';
require_once(__MDIR__. "footer.php");

?>

包括我的配置文件以及我的定义文件(filelocater)。 它还包括main.php,其中包含以下代码:

    <div class="container">
<div class="bar">
    <p>welcome: <b><?php echo $_SESSION['username']; ?> |  <a href="logout.php">logout</a></b></p>
</div>

<div class="nav">
    <ul>
        <li><a href="?mod=overview">overview</a></li>
        <!--<li><a href="">settings*</a></li>-->
        <li><a href="">pages</a></li>
        <li><a href="">portfolio management</a></li>
        <!--<li><a href="">themes*</a></li>
        <li><a href="">users*</a></li>
        <li><a href="">plugins*</a></li>-->
    </ul>
</div>

<div class="main">
<?php
    if (isset($_GET) && !empty($_GET['mod'])) {
        clean_input($_GET['mod']);

        include_once(__MDIR__.$mod.'.php');
    }
?>
</div>
</div>

否如果我登录index.php加载时没有?mod = overview,所有都是peacy。只要按下概览链接即可加载概述&#34; mod&#34; (现在是一个空文件,只包含单词&#34; test&#34;)我收到了警告。

验证我的常量没有问题我在functions.php中将 FDIR 交换为目录的硬编码文件路径字符串。这也没有解决警告。 另一个奇怪的事情是,即使发生警告,函数似乎也应该加载。例如,通过此函数加载检查登录是否有效的函数。它似乎加载没有问题

希望我提供了足够的信息。否则让我知道所以我可以提出更多的代码。

另请注意,我是Stackoverflow的新手,所以可能没有做好一切。然而,我在这里和其他互联网上研究了多个类似的问题以找到解决方案。

提前致谢

1 个答案:

答案 0 :(得分:0)

我发现了导致问题的原因。 在我的函数文件夹中,我有一个名为mainloader.php的脚本 这包含了函数声明之外的一些内容(在将函数重写为函数后我忘了将其删除)。

承认我只是发现这是问题,而我正在尝试解决另一个问题,即div没有加载到它的正确位置但是在索引文档的开头。当我删除剩余的代码时,div弹回到位,函数加载器停止弹出错误。

感谢您对此进行调查! - MisterP