2015-01-29 2 views
0

У меня проблема с одним из моих 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, поэтому, возможно, все было не так. Тем не менее, я исследовал несколько подобных проблем здесь и остальную часть Интернета, чтобы найти решение.

заранее спасибо

+0

Вы должны указать нерабочий пример (с $ _GET) и значение, которое вы найдете в переменной при небольшой отладке. –

+0

, возможно, вы можете получить свой ответ здесь http: // stackoverflow.com/questions/4572241/php-readdir-3-is-not-a-valid-directory-resource –

+0

Рафик, я уже посмотрел на это спасибо. к сожалению, это не моя проблема, что закрытый не находится внутри цикла while. также он бросает предупреждение в тот момент, когда я пытаюсь открыть рельс. Я отредактирую вопрос, чтобы включить нерабочий пример. – misterp

ответ

0

я обнаружил, что вызывает проблему. В моей папке с функциями у меня был скрипт mainloader.php , который содержал некоторые вне объявления функции (которые я забыл удалить после перезаписи вещи в функцию).

признаю, что я только выяснил, что это была проблема, когда я пытался решить другую проблему, когда div не был загружен в нужное место, но в начале индексного документа. когда я удалил оставшийся код, div выскочил на место, и загрузчик функций прекратил выскакивать ошибки.

спасибо за внимание! - MisterP

Смежные вопросы