"mkdir"- Problem

Vertigo21

Erfahrenes Mitglied
Hallo zusammen.

Wie oben schon erwähnt, versuche ich einen Ordner zu erstellen. Dazu verwende ich diesen Code:
PHP:
                    //*** Ablegen der Grafik auf der Festplatte ***
                    $directory = "/graphics/".$jahr1."/".$table."/".$merkmal[$i]."/";
                    if (mkdir ($directory)){                    
                      $filename = $directory;
                      $filename .= $tag1.'.'.$monat1.'.'.$jahr1.'_bis_'.$tag2.'.'.$monat2.'.'.$jahr2.'_wznr'.$wznr.'.gif';
                      if (imagegif($image1, $filename)){ 
echo '<div align="center"><font face="arial"><p><br><br><b>Erzeugung erfolgreich!</b>';
echo '<p><a href="'.$filename.'" target="_blank">zur Grafik (öffnet in neuem Fenster)</a></font></div>';
                      }
                    }
Allerdings gibt er mir hier immer folgenden Fehler aus:

Code:
Warning: mkdir() [function.mkdir]: No such  file or directory in ...\php-skript\test\Statistik\Statistik_Form2.php  on line 144

Mit den Zugriffsrechten sollte alles hinhauen.
 
Wenn ich den Slash vor "graphics" entferne, ändert sich nichts. Wenn ich realpath() verwende bekomme ich eine andere Fehlermeldung:

Code:
[15-May-2006 16:54:38] PHP Warning:  mkdir() [<a href='function.mkdir'>function.mkdir</a>]: File exists in ...\php-skript\test\Statistik\EDV_Statistik_Form2.php on line 145

##### Anmerkung: #####
Wenn ich mir den Pfad mit echo ausgeben lasse, gibt es keinen Unterschied, ob ich nun realpath() verwendet habe oder nicht.
Macht es eigentlich einen Unterschied, ob ich das Laufwerk (also den gesamten Pfad) mit angebe? Wenn nicht, müsste er doch eigentlich versuchen den Pfad in dem Ordner zu erstellen, in dem sich auch das Skript befindet, oder?
 
Zuletzt bearbeitet:
Ich habe es jetzt noch einmal probiert, auf dem betreffenden Ordner für jedermann "Vollzugriff" zu gewähren, aber daran hat es definitiv nicht gelegen.

Hat vielleicht noch jemand eine Idee?

########## Edit ##########
Ich habe jetzt nochmal probiert direkt mit Backslashes im Pfad zu arbeiten:
PHP:
//*** Ablegen der Grafik auf der Festplatte ***
					$directory = "D:\Test-Seiten\php-skript\test\Statistik\graphics\ ".$jahr1."\ ".$table."\ ".$merkmal[$auswertungen]."\ ";
					//$directory = "graphics\ ".$jahr1."\ ".$table."\ ".$merkmal[$auswertungen]."\ ";
					$directory = trim($directory);
					$directory = realpath ($directory);

					if (mkdir ($directory)){	
					  $filename = $directory;
					  $filename .= $tag1.'.'.$monat1.'.'.$jahr1.'_bis_'.$tag2.'.'.$monat2.'.'.$jahr2.'_wznr'.$werkzeugnr.'.gif';
					  if (imagegif($image1, $filename)){ 
              echo '<div align="center"><font face="arial"><p><br><br><b>Erzeugung erfolgreich!</b>';
              echo '<p><a href="'.$filename.'" target="_blank">zur Grafik (öffnet in neuem Fenster)</a></font></div>';
				    }
					}

Leider auch ohne Erfolg.
 
Zuletzt bearbeitet:
Bei Pfadangaben in Windows-Systemen müssen die Verzeichnisseparatoren selbst auch durch umgekehrte Schrägstriche maskieren, etwa:
PHP:
$directory = 'D:\\Test-Seiten\\php-skript\\test\\Statistik\\graphics\\'.$jahr1.'\\'.$table.'\\'.$merkmal[$auswertungen].'\\';
 
Ok, dann spare ich mir das trim(). Allerdings besteht der Fehler immer noch. Könnte es an einer Einstellung in der php.ini liegen? Falls ja, wonach müsste ich dann suchen?

########## EDIT ##########
Aha, ich komme dem Problem näher. Wenn ich einen kürzeren Dateinamen wähle, z.B. "d:\test\test.gif" klappt es, wenn er länger ist, z.B. "d:\test\bla\test.gif" scheitert es.
Er kann also immer nur einen Ordner erstellen. Ich müsste demnach also bei einem Ordner mit zwei Unterordnern drei Mal den Befehl mkdir() ausführen. Das ist doch irgendwie merkwürdig...

########### EDIT 02 ##########
Ich habe die PHP.ini jetzt komplett durchgesehen, aber nichts auffälliges entdeckt. Entweder hängt es mit irgendeinem Sicherheitsparameter zusammen, oder das Problem liegt auch nicht in der INI.

Für mich mit meinen zwei Unterordnern ist es noch ok, den Befehl drei Mal aufzurufen, aber sollte ich mal ein Umfangreicheres Projekt haben, habe ich natürlich ein Problem. Vielleicht hat ja noch jemand eine Idee. Ich markiere das Thema erstmal NICHT als erledigt.
 
Zuletzt bearbeitet:
Zurück