2012-04-10 3 views
0

Ich habe den folgenden Code, aber es scheint überhaupt keinen Ordner zu erstellen.PHP Erstellen einer Datei auf dem Server über Controller

Sollte ich is_dir statt file_exists verwenden?

 $location = $_SERVER['DOCUMENT_ROOT'].'/_assets/quote/uploads/'; 

     $folderName = $this->quote->getCompanyDetails()->companyName; 
     $folderName = str_replace(" ", "_", $folderName); 
     $folderName = strtolower($folderName); 

     if(!file_exists($folderName)) 
     { 
      mkdir($location.$folderName, 0777); 

     }else{ 

Antwort

2

Verwenden

if (!file_exists($dir) && !is_dir($dir)) { 
    mkdir($location.$folderName, 0777); 
} 
+1

Das ist redundant. Wenn eine Datei existiert, überschreibt mkdir sie nicht. Und is_dir gibt true zurück, wenn das Verzeichnis existiert. Daher können Sie nur einen von ihnen verwenden. – Corbin

+0

@corbin was würdest du empfehlen zu verwenden? –

+0

@JessMcKenzie Hängt davon ab, was dein Endziel ist. Möchten Sie eine Datei löschen und an ihrer Stelle ein Verzeichnis erstellen? Wenn Sie nur ein Verzeichnis erstellen möchten, wenn es nicht existiert und Sie wissen, dass eine Datei mit dem gewünschten Namen niemals existiert, dann würde ich mit is_dir gehen. Tatsächlich sind sie in dieser Situation beide funktional gleichwertig. Wenn es wichtig wäre, wenn eine Datei tatsächlich existiert, die den gewünschten Verzeichnisnamen hat. – Corbin

0

is_dir ermitteln Funktion nur, wenn definierte Pfadordner ist. Wahrscheinlich haben Sie nicht genügend Rechte, um einen Ordner zu erstellen. Versuchen Sie zu verwenden

<?php 
if (is_writable($dir)) { 
echo "Path is writable"; 
} 
?> 

zu erkennen, ob wirklich Ihr Pfad beschreibbar ist.

+0

Komm zurück klar :) –

0

Es scheint Berechtigungsproblem zu sein. Überprüfen Sie, ob Sie Schreibberechtigung in dem Verzeichnis haben, in dem Sie mkdir verwenden.

verwenden Auch

echo $location.$folderName ; 

es passiert am richtigen Ort zu überprüfen.

Hoffe diese Hilfe.

Verwandte Themen