我的一个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的新手,所以可能没有做好一切。然而,我在这里和其他互联网上研究了多个类似的问题以找到解决方案。
提前致谢
答案 0 :(得分:0)
我发现了导致问题的原因。 在我的函数文件夹中,我有一个名为mainloader.php的脚本 这包含了函数声明之外的一些内容(在将函数重写为函数后我忘了将其删除)。
承认我只是发现这是问题,而我正在尝试解决另一个问题,即div没有加载到它的正确位置但是在索引文档的开头。当我删除剩余的代码时,div弹回到位,函数加载器停止弹出错误。
感谢您对此进行调查! - MisterP