406 Stimmen

Wie kann ich prüfen, ob ein Verzeichnis existiert? "is_dir", "file_exists" oder beides?

Ich möchte ein Verzeichnis erstellen, wenn es noch nicht existiert.

Ist die Verwendung des is_dir Funktion genug für diesen Zweck?

if ( !is_dir( $dir ) ) {
    mkdir( $dir );       
}

Oder soll ich kombinieren is_dir con file_exists ?

if ( !file_exists( $dir ) && !is_dir( $dir ) ) {
    mkdir( $dir );       
}

3voto

rons Punkte 31
$year = date("Y");   
$month = date("m");   
$filename = "../".$year;   
$filename2 = "../".$year."/".$month;

if(file_exists($filename)){
    if(file_exists($filename2)==false){
        mkdir($filename2,0777);
    }
}else{
    mkdir($filename,0777);
}

3voto

hour man Punkte 33
$save_folder = "some/path/" . date('dmy');

if (!file_exists($save_folder)) {
   mkdir($save_folder, 0777);
}

2voto

djordje Punkte 21

Dies ist eine alte, aber immer noch aktuelle Frage. Testen Sie einfach mit dem is_dir() o file_exists() Funktion für das Vorhandensein der . o .. in dem zu testenden Verzeichnis. Jedes Verzeichnis muss diese Dateien enthalten:

is_dir("path_to_directory/.");

1voto

Sebas Punkte 20444

Anstatt beides zu überprüfen, könnten Sie Folgendes tun if(stream_resolve_include_path($folder)!==false) . Es ist Langsamer sondern schlägt zwei Fliegen mit einer Klappe.

Eine andere Möglichkeit besteht darin, die E_WARNING , pas durch die Verwendung von @mkdir(...); (denn das würde einfach alle möglichen Warnungen außer Acht lassen, nicht nur die, dass das Verzeichnis bereits existiert), sondern durch die Registrierung eines speziellen Fehlerhandlers, bevor man es tut:

namespace com\stackoverflow;

set_error_handler(function($errno, $errm) { 
    if (strpos($errm,"exists") === false) throw new \Exception($errm); //or better: create your own FolderCreationException class
});
mkdir($folder);
/* possibly more mkdir instructions, which is when this becomes useful */
restore_error_handler();

1voto

Jetro Bernardo Punkte 27

So mache ich es

if(is_dir("./folder/test"))
{
  echo "Exist";
}else{
  echo "Not exist";
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X