2012-04-10 29 views
0

我有下面的代碼,但它似乎並沒有創建一個文件夾。PHP通過控制器在服務器上創建一個文件

我應該使用is_dir而不是file_exists

 $location = $_SERVER['DOCUMENT_ROOT'].'/_assets/quote/uploads/'; 

     $folderName = $this->quote->getCompanyDetails()->companyName; 
     $folderName = str_replace(" ", "_", $folderName); 
     $folderName = strtolower($folderName); 

     if(!file_exists($folderName)) 
     { 
      mkdir($location.$folderName, 0777); 

     }else{ 

回答

2

使用

if (!file_exists($dir) && !is_dir($dir)) { 
    mkdir($location.$folderName, 0777); 
} 
+1

這是多餘的。如果文件存在,mkdir將不會覆蓋它。如果目錄存在,is_dir將返回true。因此,您可以使用其中之一。 – Corbin 2012-04-10 05:14:25

+0

@corbin你會推薦使用什麼? – 2012-04-10 05:16:58

+0

@JessMcKenzie取決於你的最終目標是什麼。你想刪除一個文件並在其位置創建一個目錄嗎?如果你只是想創建一個目錄,如果它不存在,並且你知道一個具有所需名稱的文件將永遠不存在,那麼我將使用is_dir。真的,他們在這種情況下在功能上是等同的。如果一個文件可能實際存在,並且具有所需的目錄名稱,那麼這很重要。 – Corbin 2012-04-10 06:09:07

0

is_dir函數只有在定義的路徑是文件夾檢測。可能,您沒有足夠的權限來創建文件夾。嘗試使用

<?php 
if (is_writable($dir)) { 
echo "Path is writable"; 
} 
?> 

檢測您的路徑是否真的可寫。

+0

回頭清楚:) – 2012-04-10 05:23:13

0

這似乎是許可問題。檢查您是否在您使用mkdir的目錄中擁有寫入權限。

還可以使用

echo $location.$folderName ; 

,以檢查它的發生在正確的地方。

希望得到這個幫助。

相關問題