【问题标题】:Error shown even if directory already exists即使目录已存在也会显示错误
【发布时间】:2012-04-09 00:42:55
【问题描述】:

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

    ?>

【问题讨论】:

    标签: php if-statement directory mkdir


    【解决方案1】:

    替换:

    if(file_exists($directory) &amp;&amp; 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); }
    
        ?>
    

    【讨论】:

    • 并在比较前移动$thisdir = getcwd();
    • 嗨,我仍然收到有关目录已经存在的错误
    • 如果您尝试$directory = "./customer-files/$customerID";mkdir($directory , 0777); 会怎样?
    【解决方案2】:

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

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

    并从 mkdir() 中删除 $thisdir;

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

    【讨论】:

      【解决方案3】:

      函数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); }
          }
      
      ?>
      

      【讨论】:

        猜你喜欢
        • 2013-07-16
        • 1970-01-01
        • 2016-12-15
        • 1970-01-01
        • 2019-12-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多