У меня проблема с одним из моих 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 не нацелены на вышеуказанный код. они передаются в другой блок кода, чтобы выбрать, какой контент должен быть загружен. кроме того, в другом приложении, где я использую эту настройку, он отлично работает, не бросая никаких предупреждений.
edit: пример нерабочего процесса выглядит следующим образом: в 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 = обзор, и все это peacy. как только я нажимаю ссылку обзора, чтобы загрузить обзор "mod" (который теперь является пустым файлом, содержащим только слово "тест"), я получаю предупреждения.
чтобы проверить, что с моей константой не было никаких проблем, я обменялся FDIR в functions.php для строки жестко закодированной строки пути к каталогу. это также не разрешило предупреждение. Другая странная вещь заключается в том, что функции, похоже, загружаются, как и должно быть, даже несмотря на предупреждение. например, через эту функцию загружается функция, которая проверяет правильность входа. и, похоже, без проблем загружается
надеюсь, что я предоставил достаточно информации. в противном случае дайте мне знать, поэтому я могу выставить больше кода.
также обратите внимание, что я новичок в Stackoverflow, поэтому, возможно, все было не так. Тем не менее, я исследовал несколько подобных проблем здесь и остальную часть Интернета, чтобы найти решение.
заранее спасибо
Я узнал, что вызвало проблему. в моей папке с функциями у меня был скрипт mainloader.php, который содержал некоторые вне объявления функции (который я забыл удалить после перезаписи вещи в функцию).
допускаю, я только выяснил, что это была проблема, когда я пытался решить другую проблему, когда div не загружался в нужное место, а в начале индексного документа. когда я удалил оставшийся код, div выскочил на место, и загрузчик функций прекратил выскакивать ошибки.
спасибо за то, что посмотрел на него! - MisterP