2012-03-24 86 views
0

我正在使用PHP構建Intranet客戶經理。爲每個客戶創建一個供商店添加文件的目錄。我的腳本應該做的是如果沒有目錄存在創建它,如果它存在不創建它。 什麼是實際發生的情況是,如果該目錄已經存在我收到以下錯誤:即使目錄已存在,也會顯示錯誤

Warning: mkdir() [function.mkdir]: File exists in  C:\server2go\server2go\htdocs\customermgr\administrator\components\com_chronoforms\form_actions\custo m_code\custom_code.php(18) : eval()'d code on line 14 

所以發生它試圖反正創造它,即使if語句應該停止它,即時通訊困惑嗎?我做錯了:-S。

<?php 
    $customerID = $_GET['cfid']; 
    $directory = "/customer-files/$customerID"; 

    if(file_exists($directory) && is_dir($directory)) { 
    } 
    else { 


    $thisdir = getcwd(); 


    mkdir($thisdir ."/customer-files/$customerID" , 0777); } 

    ?> 

回答

1

替換:

if(file_exists($directory) && is_dir($directory)) {

有:

$thisdir = getcwd(); 
if(file_exists($thisdir.$directory) && is_dir($thisdir.$directory)) { 

或更好:

<?php 
    $customerID = $_GET['cfid']; 
    $directory = "./customer-files/$customerID"; 

    if(file_exists($directory) && is_dir($directory)) { 
    } 
    else { 


    mkdir($directory , 0777); } 

    ?> 
+0

並在比較之前移動'$ thisdir = getcwd();'。 – Adonais 2012-03-24 23:07:23

+0

嗨,我仍然得到有關目錄已存在的錯誤 – 2012-03-24 23:09:47

+0

如果你嘗試'$ directory =「./customer-files/$customerID」;'和'mkdir($ directory,0777);'? – stewe 2012-03-24 23:12:22

1

剛接手短期看,但我會嘗試這樣的:

$directory = $thisdir . "/customer-files/$customerID"; 

並從mkdir()中移除$ thisdir;

也應該在$目錄申報

+0

還是一樣的錯誤:-( – 2012-03-24 23:11:39

1

功能file_exists()不使用相對路徑,其中is_dir()之前可以將您的$ THISDIR。相反,請使用公分母並傳遞這些函數的絕對路徑。此外,您可以將呼叫轉移到$directory作業中,並在稍後重新使用$directory來創建目錄。

<?php 

    $customerID = $_GET['cfid']; 

    // Get full path to directory 
    $directory = getcwd() . "/customer-files/$customerID"; 

    if(file_exists($directory) && is_dir($directory)) { 
     // Do nothing 
    } 
    else { 
     // Directory doesn't exist, make it 
     mkdir($directory , 0777); } 
    } 

?> 
相關問題