2017-02-10 36 views
1

我的應用程序是在IIS和物理目錄結構運行的相對路徑獲得的文件時看起來是這樣的:水珠在返回任何結果試圖從

C:\inetpub\wwwroot\myApplication\index.php 
C:\inetpub\wwwroot\myApplication\includes\myfunctions.php 
C:\inetpub\wwwroot\myApplication\includes\import_data\users\ 

這最後一個文件夾包含978個.cgi文件,我試圖從數據中讀取數據。

index.php包括includes/myfunctions.php並且對一個方法調用它 - CheckForUsersToImport()其定義如下所示:

function CheckForUsersToImport() 
{ 
    $usersDir = "import_data/users/"; 

    $globRes = glob($usersDir . "*.cgi"); 
    var_dump($globRes); 

    echo "End CheckForUsersToImport();"; 
} 

當我瀏覽到我的瀏覽器localhost/myApplication/index.php,我得到這樣的輸出:

array(0){} End CheckForUsersToImport();

我試着將第二行代碼簡單地改爲$globRes = glob("*.cgi");,但是這產生完全相同的輸出。

我發現this question但接受的答案並沒有爲我工作。

我已經試過:

$usersDir = "./import_data/users/"; 
$usersDir = "/import_data/users/"; 
$usersDir = "import_data/users/"; 

但所有3給我完全相同的輸出上面的代碼。

如何我可以得到目錄中的兩個級別「」之下,其功能正在執行的".cgi"擴展名的文件?

編輯:

我更新的功能如下:

function checkUserData() 
{ 
    $usersDir = "import_data/users"; 
    $globRes = scandir($usersDir); 
} 

在運行此,我得到下面的輸出:

[phpBB的調試] PHP的警告:在文件[ ROOT] /includes/myfunctions.php第5行:scandir(import_data/users,import_data/users):系統找不到指定的路徑。 (代碼:3)

[phpBB的調試] PHP警告:在文件[ROOT] /includes/myfunctions.php第5行:SCANDIR(import_data /用戶):未能打開DIR:沒有這樣的文件或目錄

[phpBB的調試] PHP的警告:在第5行文件[ROOT] /includes/myfunctions.php:SCANDIR():(錯誤2):沒有這樣的文件或目錄

爲什麼尋找scandir(import_data/users,import_data/users)在第一個錯誤?這完全不是我通過的 - 或者至少,不是我認爲我通過的 - 到scandir()

+1

檢查從'回聲GETCWD()的輸出;'來確定工作目錄已經改變。並且儘可能使用完整的路徑,如$ usersDir = __DIR__。 '/ import_data/users /';' –

+0

看起來像你使用的是phpBB - 我從來沒有爲它開發過,但是如果它在某個時刻需要'chdir()',這樣工作目錄不是'你期望什麼。我之前曾在Drupal中處理過這個問題。不知道有關奇怪的'scandir()'錯誤。 –

回答

1

考慮到你的錯誤信息提示你內phpBB的工作,它是可能的應用程序已經不得不改變當前的工作目錄代碼執行前,並在PHP目前正在執行的相對路徑是無效的。

您可以檢查工作目錄,看它是否確實是您的文檔根目錄或其它地方:

echo getcwd(); 

只要有可能,指定完整路徑到磁盤上的任何文件或目錄。在這種情況下,我可能會使用__DIR__不變指的是定義該功能的腳本在目錄:

$usersDir = __DIR__ '/import_data/users/'; 
+0

太棒了;使用'$ usersDir = __DIR__。 「path」;'我能夠獲得該目錄中所有文件的完整列表。謝謝。 – sab669