+ Antworten
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 15 von 23

Thema: PHP - Probleme mit mkdir()

  1. #1
    TP-Senior T:-)M macht alles soweit korrekt Avatar von T:-)M
    Registriert seit
    Jun 2001
    Ort
    Deutschland, Berlin
    Beiträge
    284

    PHP - Probleme mit mkdir() gelöst siehe unten - jetzt aber Skriptlaufzeit zu lang

    Hallo,

    das folgende Skript soll mir Fotos verkleinern und hochladen.
    Falls die benötigte Ordnerstruktur noch nicht vorhanden ist, soll sie erstellt werden.
    Das Problem ist, das die Ordner nicht erstellt werden, wenn sie noch nicht vorhanden sind.

    Kann mir von Euch Jemand weiter helfen?

    Vielen Dank im Voraus.

    Gruß

    T:-)M


    Die Fehlermeldungen:

    Warning: mkdir(): Unable to access match in /mnt/kw1/06/468/00000012/htdocs/dyn_test/fotoalbum/foto_index.php on line 94

    Warning: chdir(): Unable to access match in /mnt/kw1/06/468/00000012/htdocs/dyn_test/fotoalbum/foto_index.php on line 97

    Warning: mkdir(): Unable to access klein in /mnt/kw1/06/468/00000012/htdocs/dyn_test/fotoalbum/foto_index.php on line 107

    Warning: mkdir(): Unable to access normal in /mnt/kw1/06/468/00000012/htdocs/dyn_test/fotoalbum/foto_index.php on line 119

    Warning: imagejpeg(): Unable to open 'klein/foto_alt.jpg' for writing in /mnt/kw1/06/468/00000012/htdocs/dyn_test/fotoalbum/foto_index.php on line 137

    Warning: imagejpeg(): Unable to open 'normal/foto_alt.jpg' for writing in /mnt/kw1/06/468/00000012/htdocs/dyn_test/fotoalbum/foto_index.php on line 146


    Die Skripten:

    Die Variablen werden aus einem Formular übergeben:

    Code:
    <form enctype="multipart/form-data" action="foto_index.php" method="post">
    <p><font size="2"><font face="Verdana, Arial, Helvetica, sans-serif"><strong>1. </strong>Bitte das Jahr hier ausw&auml;hlen</font></font></p>
    <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
      <select name="jahr">
        <option value="nix" selected>Bitte Jahr auswaehlen ...</option>
        <option value="2005">2005</option>
        <option value="2006">2006</option>
        <option value="2007">2007</option>
      </select>
    </font></p>
    <p><font size="2"><font face="Verdana, Arial, Helvetica, sans-serif"><strong>2. </strong>Bitte Regatta hier ausw&auml;hlen</font></font></p>
    <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
      <select name="regatta">
        <option value="nix" selected>Bitte Regatta auswaehlen ...</option>
        <option value="senat">Senatspreis</option>
        <option value="match">Match Race H-Boot</option>
      </select>
    </font><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
    </font></p>
    <p><font size="2"><font face="Verdana, Arial, Helvetica, sans-serif"><strong>3. </strong>Bitte Datei hier ausw&auml;hlen </font></font>
      </p>
    <font face="Verdana, Arial, Helvetica, sans-serif"><p><font size="2">
        <input type="hidden" name="max_file_size" value="5000000">
        <input name="file" type="file" size="30">
        </font></p>
      </font>
    <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>4.</strong> Bitte den Button klicken um das Foto hochzuladen<br>
        <br>
        <input type="submit" value="Senden">
      </font></p>
    </form>
    an dieses PHP Skript:

    Code:
    <?php
    
    /**************************************************************/
    /* Fotoskript                                               ***/
    /* Erzeugt Thumbnails und Normalbilder von einem jpg-Foto   ***/
    /* das ueber die Eingabemaske hochgeladen werden kann       ***/
    /* egal ob Hoch- Querformat oder quadratisch                ***/
    /**************************************************************/
    
    
    /********************************************************/
    /* Part 1                                               */
    /* Bilddaten zur auslesen                               */
    /********************************************************/
    
    /* übergebene Variablen in Superglobals geändert */
    
    echo "Bildname ist ";
    echo $_FILES['file']['name'];
    
    // Daten auslesen
    // hoehe und breite
    $groesse = getimagesize($_FILES['file']['tmp_name']); 
    
    $breite = $groesse[0];
    $hoehe = $groesse[1];
    echo "Höhe ist $hoehe , Breite ist $breite";
    
    // neue hoehe und breite des bildes berechnen
    // bild ist querformat wenn breite groesser als hoehe 
    if($breite>$hoehe) {
    echo "Bild ist im Querformat";
    // groesse fuer die thumbnails im Querformat 100 px breit
    $breite_klein = 100;
    $hoehe_klein = floor(($hoehe/$breite) * $breite_klein);
    // hoehe normalbild berechnen im Querformat 350 px breit
    $breite_normal = 350;
    $hoehe_normal = floor(($hoehe/$breite) * $breite_normal);
    }
    
    // bild ist im hochformat wenn breite kleiner als hoehe
    else if($breite<$hoehe) {
    echo "Bild ist im Hochkantformat";
    $hoehe_klein = 100;
    // breite thumbnails berechnen / floor rundet nach unten ab - da nur ganze zahlen
    $breite_klein = floor(($breite/$hoehe) * $hoehe_klein);
    // breite normalbild berechnen im hochformat 350 px hoch
    $hoehe_normal = 350;
    $breite_normal = floor(($breite/$hoehe) * $hoehe_normal);
    }
    
    // sonst ist das bild quadratisch - breite = hoehe
    else {
    echo "Bild ist im Quadratisch";
    $breite_klein = 100;
    $hoehe_klein = 100;
    $breite_normal = 350;
    $hoehe_normal = 350;
    }
    
    echo "<br>Breite klein: $breite_klein <br>";
    echo "Hoehe klein: $hoehe_klein <br>";
    echo "Breite normal: $breite_normal <br>";
    echo "Hoehe normal: $hoehe_normal <br>";
    
    /********************************************************/
    /* part 2                                               */
    /* verzeichnisse anlegen wenn sie noch nicht existieren */
    /********************************************************/
    
    // Verzeichnis für das Jahr anlegen
    
    /*
    if (!file_exists($_POST['jahr'])){
    mkdir($_POST['jahr'], 0777);
    }
    */
    if (!is_dir($_POST['jahr'])){
    mkdir($_POST['jahr'], 0777);
    }
    
    // gehe in das Verzeichnis des aktuellen Jahres
    chdir($_POST['jahr']);
    // verzeichnis für die regatta anlegen
    // der name wird durch $regatta aus dem Formular übergeben
    // pruefen ob das verzeichnis schon existiert - sonst verzeichnis anlegen
    
    /*
    if (!file_exists($_POST['regatta'])){
    mkdir($_POST['regatta'], 0777);
    }
    */
    if (!is_dir($_POST['regatta'])){
    mkdir($_POST['regatta'], 0777);
    }
    // gehe in das Verzeichnis der aktuellen regatta
    chdir($_POST['regatta']);
    // prüfe ob das Verzeichnis "klein" für die thumbnails existiert - wenn nicht anlegen
    
    /*
    if (!file_exists("klein")){
    mkdir("klein", 0777);
    }
    */
    
    if (!is_dir("klein")){
    mkdir("klein", 0777);
    }
    
    //// prüfe ob das Verzeichnis "normal" für die großen Bilder existiert - wenn nicht anlegen
    
    /*
    if (!file_exists("normal")){
    mkdir("normal", 0777);
    }
    */
    
    if (!is_dir("normal")){
    mkdir("normal", 0777);
    }
    
    
    /********************************************************/
    /* part 3                                               */
    /* Bilder in die Verzeichnisse schreiben				*/
    /********************************************************/
    
    // bild erzeugen - mit hilfe des handlers $bild
    
    /***** Thumbnail erzeugen *******/
    
    
    $bild_alt=ImageCreateFromJPEG($_FILES["file"]["tmp_name"]);
    $bild_klein=ImageCreateTruecolor($breite_klein,$hoehe_klein);
    ImageCopyResized($bild_klein, $bild_alt,0,0,0,0,$breite_klein,$hoehe_klein,$breite,$hoehe);
    // Bild als jpg speichern
    ImageJPEG($bild_klein, "klein/".$_FILES['file']['name'], 75);
    
    /***** Bild normalgroesse erzeugen *******/
    
    
    $bild_alt=ImageCreateFromJPEG($_FILES["file"]["tmp_name"]);
    $bild_normal=ImageCreateTruecolor($breite_normal,$hoehe_normal);
    ImageCopyResized($bild_normal, $bild_alt,0,0,0,0,$breite_normal,$hoehe_normal,$breite,$hoehe);
    // Bild als jpg speichern
    ImageJPEG($bild_normal, "normal/".$_FILES['file']['name'], 75);
    
    echo "Der Upload ist beendet<br><br>";
    echo "<a href=\"foto_index.htm\">Weiteres Bild hochladen.</a><br>";
    echo "<a href=\"foto_anzeigen.htm\">Bilder anschauen.</a><br>";
    ?>
    Geändert von T:-)M (14.02.2005 um 12:56 Uhr) Grund: ein Problem gelöst - ein anderes hinzugekommen
    --------------------------------------
    Nur ein toter Fisch schwimmt
    mit dem Strom .....................

    -> -> -> -> -> -> ->
    -> -> -> ->
    -> <- -> -> ->
    -> -> ->
    -> -> -> -> -> ->


  2. #2
    TP-Specialist Dennis The Menace bringt sich richtig ein Dennis The Menace bringt sich richtig ein Avatar von Dennis The Menace
    Registriert seit
    Nov 2004
    Ort
    Ich komme aus dem Zauberwald
    Beiträge
    2.035
    fotoalbum/ <= Dieses Verzeichniss brauch generell erstmal den Chmod 777 (den kannst du über FTP ändern). Dass ist so die Grundvorraussetzung, damit php da Schreibrechte auf dem System bekommt.

    Dann kann PHP Ordner/Dateien selbst erstellen und gibt denen natürlich auchg direkt die richtigen Schreibrechte mit.

    Zwar versucht das Skript, den Chmod selbstständig umzuändern, nur - dass lassen wenige Systemadministratoren zu, da man damit schnell viel ungewollten Zugriff auf das System gestattet (dass kann schnell mal schief gehen ^^).
    Zwei Dinge sind Unbestreitbar:
    • In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
    • Die Erde ist eine Scheibe!
    Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
    Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!

  3. #3
    TP-Senior T:-)M macht alles soweit korrekt Avatar von T:-)M
    Registriert seit
    Jun 2001
    Ort
    Deutschland, Berlin
    Beiträge
    284
    Hi Dennis The Manace,

    die Rechte sind bereits überall auf 777 - mehr geht nicht ;-)

    Gruß

    T:-)M
    --------------------------------------
    Nur ein toter Fisch schwimmt
    mit dem Strom .....................

    -> -> -> -> -> -> ->
    -> -> -> ->
    -> <- -> -> ->
    -> -> ->
    -> -> -> -> -> ->


  4. #4
    TP-Moderator Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Avatar von Adromir
    Registriert seit
    Jun 2004
    Ort
    Hannover
    Beiträge
    4.806
    Versuch mal folgendes:

    PHP-Code:
    mkdir("{$_SERVER[DOCUMENT_ROOT]}/Unterverzeichnis/{$_POST[jahr]}"0777); 
    Hatte vor zwei Tagen das gleiche Problem, wenn ich keinen Absoluten Serverpfad angegeben habe..

  5. #5
    TP-Senior T:-)M macht alles soweit korrekt Avatar von T:-)M
    Registriert seit
    Jun 2001
    Ort
    Deutschland, Berlin
    Beiträge
    284
    Hallo Adromier,

    danke für Deine Antwort.

    Wäre in meinem Fall:
    mkdir("{$_SERVER[DOCUMENT_ROOT]}/dyn_test/fotoalbum/{$_POST[jahr]}", 0777);

    .... funktioniert leider auch nicht .

    Gruß

    T:-)M
    --------------------------------------
    Nur ein toter Fisch schwimmt
    mit dem Strom .....................

    -> -> -> -> -> -> ->
    -> -> -> ->
    -> <- -> -> ->
    -> -> ->
    -> -> -> -> -> ->


  6. #6
    TP-Moderator Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Avatar von Adromir
    Registriert seit
    Jun 2004
    Ort
    Hannover
    Beiträge
    4.806
    Dann ersetze die $_SERVER-Variabel mal mit dem Wert ( /mnt/kw1/06/468/00000012/htdocs/ )

    Ansonsten wüsste ich echt nicht weiter..

  7. #7
    TP-Senior T:-)M macht alles soweit korrekt Avatar von T:-)M
    Registriert seit
    Jun 2001
    Ort
    Deutschland, Berlin
    Beiträge
    284
    Hi Adromir,

    es geht beides:

    mkdir("{$_SERVER[DOCUMENT_ROOT]}/dyn_test/fotoalbum/{$_POST[jahr]}", 0777);

    und

    mkdir("/mnt/kw1/06/468/00000012/htdocs/dyn_test/fotoalbum/{$_POST[jahr]}", 0777);

    Vielen Dank.

    Gruß

    T:-)M
    --------------------------------------
    Nur ein toter Fisch schwimmt
    mit dem Strom .....................

    -> -> -> -> -> -> ->
    -> -> -> ->
    -> <- -> -> ->
    -> -> ->
    -> -> -> -> -> ->


  8. #8
    TP-Senior T:-)M macht alles soweit korrekt Avatar von T:-)M
    Registriert seit
    Jun 2001
    Ort
    Deutschland, Berlin
    Beiträge
    284
    Hallo,

    wie im Titel bereits geschrieben - ein Problem (dank andromirs Hilfe) gelöst ein neues dafür hinzugekommen:

    Das Skript läuft mit kleineren Dateien (ca. 700 kb). Bei größeren Dateien übersteigt die Skriptlaufzeit die zulässige Dauer von 30 Sekunden. Die File-uploadsize liegt bei 2 mb - die ich natürlich auch nutzen möchte, da die user Bilder direkt von der digicam hochladen können sollen.

    Habt Ihr ein ähnliches Problem gehabt oder eien Idee, wie ich dieses Problem lösen kann?

    Danke im Voraus.

    Gruß

    T:-)M
    --------------------------------------
    Nur ein toter Fisch schwimmt
    mit dem Strom .....................

    -> -> -> -> -> -> ->
    -> -> -> ->
    -> <- -> -> ->
    -> -> ->
    -> -> -> -> -> ->


  9. #9
    TP-Specialist Dennis The Menace bringt sich richtig ein Dennis The Menace bringt sich richtig ein Avatar von Dennis The Menace
    Registriert seit
    Nov 2004
    Ort
    Ich komme aus dem Zauberwald
    Beiträge
    2.035
    PHP-Code:
    ini_set('Max_execution_time'300); 
    In die erste Zeile schreiben, wenn du glück hast, funktioniert das. Liegt deinem ISP natürlich frei, ob er dir das gestattet, oder nicht (was er eigentlich nicht tun sollte)
    Zwei Dinge sind Unbestreitbar:
    • In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
    • Die Erde ist eine Scheibe!
    Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
    Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!

  10. #10
    TP-Senior T:-)M macht alles soweit korrekt Avatar von T:-)M
    Registriert seit
    Jun 2001
    Ort
    Deutschland, Berlin
    Beiträge
    284
    Hi DenisTheManace,

    hmm.... schade funktioniert leider nicht.

    Gruß

    T:-)M
    --------------------------------------
    Nur ein toter Fisch schwimmt
    mit dem Strom .....................

    -> -> -> -> -> -> ->
    -> -> -> ->
    -> <- -> -> ->
    -> -> ->
    -> -> -> -> -> ->


  11. #11
    TP-Moderator Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Avatar von Adromir
    Registriert seit
    Jun 2004
    Ort
    Hannover
    Beiträge
    4.806
    Ich wüsste keinen anderen Weg, als den, den Dennis schon gebracht hat...
    Vieleicht könnte man noch was mit "register_shutdown_function" machen.
    Damit kann man eine Funktion definieren, die nach dem Scriptende noch ausgeführt wird. Ich bin mir aber nicht sicher, ob das auch be der max_execution_time hilft

  12. #12
    TP-Senior T:-)M macht alles soweit korrekt Avatar von T:-)M
    Registriert seit
    Jun 2001
    Ort
    Deutschland, Berlin
    Beiträge
    284
    also die Servereinstellungen sind nicht zu ändern...
    Mich würde interessieren was so lange dauert - der Dateiupload, das Verkleinern und Speichern... oder.....oder......

    T:-)M
    --------------------------------------
    Nur ein toter Fisch schwimmt
    mit dem Strom .....................

    -> -> -> -> -> -> ->
    -> -> -> ->
    -> <- -> -> ->
    -> -> ->
    -> -> -> -> -> ->


  13. #13
    TP-Moderator Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Avatar von Adromir
    Registriert seit
    Jun 2004
    Ort
    Hannover
    Beiträge
    4.806
    Also wenn du im gleichen Script diese einzelnen Funktionen durchlaufen lässt, dann würde ich die dann in 3 Schritte unterteilen und der User wird automatisch "umgeleitet", ohne daß er was mitbekommt..

    Also erst Speichern des Uploads->danach eine Headerweiterleitung auf die Verkleinerung..
    Ich denke mal, daß man nicht so pauschal sagen kann, daß es an Funktion x oder y liegt.
    Der Upload ist abhängig von Geschwindigkeit des Users und der Größe der Datei.
    Die Verkleinerung abhängig von den Systemressourcen des Servers und der Größe des Bildes...

  14. #14
    TP-Specialist Dennis The Menace bringt sich richtig ein Dennis The Menace bringt sich richtig ein Avatar von Dennis The Menace
    Registriert seit
    Nov 2004
    Ort
    Ich komme aus dem Zauberwald
    Beiträge
    2.035
    Sagen wir es mal so: 30 Sekunden sind für PHP sehr sehr sehr viel. Der Dateiupload geschieht, bevor PHP ausgeführt wird, daran dürfte es eigentlich nicht liegen.

    Verkleinern und Speichern dauern auf einem voll ausgelasteten Server aber auch nicht länger als 2 Sekunden^^

    Schmeißt denn PHP den Fehler, oder der Server ( Apache )?
    Zwei Dinge sind Unbestreitbar:
    • In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
    • Die Erde ist eine Scheibe!
    Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
    Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!

  15. #15
    TP-Senior T:-)M macht alles soweit korrekt Avatar von T:-)M
    Registriert seit
    Jun 2001
    Ort
    Deutschland, Berlin
    Beiträge
    284
    Nein keine Fehlermeldung.
    Bei größeren Dateigrößen wird das größere Bild einfach nicht erstellt.
    --------------------------------------
    Nur ein toter Fisch schwimmt
    mit dem Strom .....................

    -> -> -> -> -> -> ->
    -> -> -> ->
    -> <- -> -> ->
    -> -> ->
    -> -> -> -> -> ->


+ Antworten
Seite 1 von 2 1 2 LetzteLetzte

Ähnliche Themen

  1. zwei Bilder mit PHP überlagern lassen
    Von halla im Forum Traum-Dynamik
    Antworten: 5
    Letzter Beitrag: 05.01.2005, 02:00
  2. Diverse Probleme mit FLASH MX !!!
    Von Thomas74 im Forum Flash & Multimedia
    Antworten: 10
    Letzter Beitrag: 16.11.2003, 23:20
  3. seite in frame zwingen mit php ... wie ?
    Von Gorgul im Forum Traum-Dynamik
    Antworten: 1
    Letzter Beitrag: 09.09.2003, 13:09
  4. Probleme mit loadSound MP3 bei MX
    Von Christian im Forum Flash & Multimedia
    Antworten: 1
    Letzter Beitrag: 28.10.2002, 06:58
  5. Folgendes Problem mit Java Script und PhP
    Von sugar2 im Forum Traum-Dynamik
    Antworten: 5
    Letzter Beitrag: 13.07.2002, 12:30

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51