Search code examples
phploopsfor-loopexit-codefile-exists

How to exit the script if the directories already exist?


Bellow there is a PHP code to make multiple directories inside the current directory.
I need to terminate the script in case the directories already exist.
But instead, I get multiple "file exists" warning messages.

Code

<?php

//Creates multiple directories inside the current directory.

$curdir = getcwd();
$slash = "/0";

for ($dir = 1; $dir <= 12; $dir++){

      $concat = $slash . $dir;

      if (!file_exists($concat)) {

        mkdir($curdir . "$concat" , 0777);

      } else {

        exit("Files already exist.");

      }

} 

?>

Output

Warning: mkdir(): File exists in /opt/lampp/htdocs/SQL/mkdir.php on line 14

Warning: mkdir(): File exists in /opt/lampp/htdocs/SQL/mkdir.php on line 14

Warning: mkdir(): File exists in /opt/lampp/htdocs/SQL/mkdir.php on line 14

Warning: mkdir(): File exists in /opt/lampp/htdocs/SQL/mkdir.php on line 14

Warning: mkdir(): File exists in /opt/lampp/htdocs/SQL/mkdir.php on line 14

Warning: mkdir(): File exists in /opt/lampp/htdocs/SQL/mkdir.php on line 14

Warning: mkdir(): File exists in /opt/lampp/htdocs/SQL/mkdir.php on line 14

Warning: mkdir(): File exists in /opt/lampp/htdocs/SQL/mkdir.php on line 14

Warning: mkdir(): File exists in /opt/lampp/htdocs/SQL/mkdir.php on line 14

Warning: mkdir(): File exists in /opt/lampp/htdocs/SQL/mkdir.php on line 14

Warning: mkdir(): File exists in /opt/lampp/htdocs/SQL/mkdir.php on line 14

Warning: mkdir(): File exists in /opt/lampp/htdocs/SQL/mkdir.php on line 14

Solution

  • You have to edit your if statement. You are checking a different directory than what you were creating:

    <?php
    
    $curdir = getcwd();
    $slash = "/0";
    
    for ($dir = 1; $dir <= 12; $dir++){
    
          $concat = $slash . $dir;
    
          if (!file_exists($curdir . $concat)) {
    
            mkdir($curdir . $concat , 0777);
    
          } else {
    
            exit("Files already exist.");
    
          }
    
    }