2014-05-20 127 views
-1

我想將我的'對象'目錄中的文件轉換爲數組,然後使用它們來加載對象。但是,出於某種原因,我不斷收到此錯誤警告:opendir():系統找不到指定的文件。 (代碼:2)

警告:執行opendir(C:\ XAMPP \ htdocs中/對象,C:\ XAMPP \ htdocs中/對象):該系統找不到指定的文件。 (代碼:2)

這裏是代碼:

public function loadObjects(){ 
    $files = array(); 
    if ($handle = opendir(APP_PATH . 'objects')) 
    { 
     while (false !== ($entry = readdir($handle))) 
     { 
      if ($entry != "." && $entry != "..") 
      { 
       $files[] = $entry; 
      } 
     } 
    } 

    closedir($handle); 
    if(is_array($files) && count($files) > 0) 
    { 
     foreach($files as $value) 
     { 
      require_once(APP_PATH . 'objects/' . $value); 
      $value = stristr($value, '.', true); 
      self::$objects[$value] = new $object(self::$instance); 
     } 
    } 
} 
+0

幾項檢查,並在目錄肯定是存在的,它必須被Apache訪問燙髮? – scragar

+0

什麼讓你認爲路徑「C:\ xampp \ htdocs/objects,C:\ xampp \ htdocs/objects」存在 - 是否可以在Windows上創建該路徑?看看你的APP_PATH常量的值。 – AD7six

+0

可能我建議使用PHP'glob()'函數? –

回答

0

你試圖打開一個 「/」 這個目錄。

嘗試更換:

C:\ XAMPP \ htdocs中/對象

C:\ XAMPP \ htdocs中\對象


請確保APP_PATH變量不爲空且值正確。你的代碼沒有scandir函數的用法。

之後,我建議你使用DirectoryIterator。

http://www.php.net/manual/en/class.directoryiterator.php

完整的示例:

http://fabien.potencier.org/article/43/find-your-files

+0

我已更正錯誤消息。我收到的第一條消息來自使用不同代碼的不同嘗試。請再看一下。 – user3656876

+0

我已經更新了我的答案。 –

0

我知道這是一個老問題,但今後的任何觀衆,我會發佈一個anwser以防萬一。 這種類型的錯誤通常來自簡單的疏忽。在開發最aplication開發商usualy使用像 http://localhost/myAppHomehttp://96.82.102.233/myAppHome(if on remote server)

的路徑在這種perticular情況下,APP_PATH大概定義somethig這樣的:

define('APP_PATH',$_SERVER['DOCUMENT_ROOT']); 

這將是錯誤的在任何情況下,當應用程序正在域名之外開發。

$_SERVER['DOCUMENT_ROOT']將解析到域的根,在這種情況下將是

http://localhosthttp://96.82.102.233

爲本地主機或IP地址將是服務器本身的diretory根主目錄= >drive:/xampp/htdocs (for example)

基本上爲了避免這個問題,您應該始終注意在開發時沒有指向您的應用程序的域名時,請不要問'DOCUMENT_ROOT'。

如果你不要求reqular部署你可以添加缺少的文件夾的定義,像這樣:

define('APP_PATH',$_SERVER['DOCUMENT_ROOT'].'/myAppHome'); 

如果你部署reqular基礎上,你是怕你會忘記之前,逆向工程&這種變化在定義APP_PATH時,你總是可以插入一個IF:

if($_SERVER['SERVER_NAME']=='localhost'){ 
    define('APP_PATH', $_SERVER['DOCUMENT_ROOT'].'/myAppHome'); 
}else{ 
    define('APP_PATH', $_SERVER['DOCUMENT_ROOT']); 
} 
0

APP_HOST = DIR文件夾;
APP_PATH = APP_PATH + DIR文件夾;
示例=「C:/xampp/htdocs」 +「/parent/child/index.php

if ($_SERVER['SERVER_NAME'] == "localhost") { 

    define('APP_HOST', pathinfo($_SERVER['PHP_SELF'], PATHINFO_DIRNAME)); 
    define('APP_PATH', $_SERVER['DOCUMENT_ROOT'] . APP_HOST); 

} else { 

    define('APP_PATH', $_SERVER['DOCUMENT_ROOT']); 

} 
相關問題