即使目录已存在,也会显示错误

问题描述:

我正在使用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); } 

    ?> 

替换:

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

刚接手短期看,但我会尝试这样的:

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

并从mkdir()中移除$ thisdir;

也应该在$目录申报

+0

还是一样的错误:-( – 2012-03-24 23:11:39

功能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); } 
    } 

?>