У меня проблема с одним из моих PHP-приложений. Я использую следующий блок кода, чтобы включить свои функции в приложение:Php opendir() дает предупреждение при использовании GET
// 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 не нацелены на вышеуказанный код. они передаются в другой блок кода, чтобы выбрать, какой контент должен быть загружен. Кроме того, в другом приложении, где я использую эту настройку, он работает отлично, не бросая никаких предупреждений.
редактировать: нерабочего пример выглядит следующим образом: в index.php я имею follwing код:
<?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 загружается без мод = Обзор и все peacy?. как только я нажимаю ссылку обзора, чтобы загрузить обзор «mod» (который теперь является пустым файлом, содержащим только слово «тест»), я получаю предупреждения.
Чтобы проверить, не возникла проблема с моей константой, я обменялся FDIR в functions.php для строки hardcoded filepath в каталог. это также не разрешило предупреждение. еще одна странная вещь заключается в том, что функции, похоже, загружаются, как и должно быть, даже несмотря на предупреждение. например, через эту функцию загружается функция, которая проверяет правильность входа. и, похоже, без нагрузки загружается
надеюсь, что я предоставил достаточно информации. в противном случае дайте мне знать, поэтому я могу выставить больше кода.
также обратите внимание, что я новичок в Stackoverflow, поэтому, возможно, все было не так. Тем не менее, я исследовал несколько подобных проблем здесь и остальную часть Интернета, чтобы найти решение.
заранее спасибо
Вы должны указать нерабочий пример (с $ _GET) и значение, которое вы найдете в переменной при небольшой отладке. –
, возможно, вы можете получить свой ответ здесь http: // stackoverflow.com/questions/4572241/php-readdir-3-is-not-a-valid-directory-resource –
Рафик, я уже посмотрел на это спасибо. к сожалению, это не моя проблема, что закрытый не находится внутри цикла while. также он бросает предупреждение в тот момент, когда я пытаюсь открыть рельс. Я отредактирую вопрос, чтобы включить нерабочий пример. – misterp