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

时间:2012-03-24 23:00:57

标签: php if-statement directory mkdir

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

    ?>

3 个答案:

答案 0 :(得分: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); }

    ?>

答案 1 :(得分:1)

只是看了一眼,但我会尝试这个:

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

并从mkdir();

中删除$ thisdir

你也应该在$ directory声明之前移动$ thisdir

答案 2 :(得分:1)

函数file_exists()不使用is_dir()可以使用的相对路径。因此,使用公分母并将绝对路径传递给这些函数。此外,您可以将getcwd()的呼叫转移到$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); }
    }

?>