kostenloser Webspace werbefrei: lima-city


copy() Problem

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    g**o

    Hallo,

    habe ein Problem mit meiner PHP-Seite,
    habe in einem verzeichnis ./Bild/Bilder/Bla/ ein paar große bilder liegen, diese mache ich mit PHP und den ganzen grafik funktionen zu kleinen mini thumbnails die im vorerst im ordner ./ abgelegt werden..

    dann erstelle ich in
    ./Bild/Bilder/Bla/ das Unterverzeichnis "mini/" und gebe mit chmod('...mini',0777); die vollen schreib und lese rechte für den Ordner frei, dann verschiebe ich den Thumbnail von ./ in diesen Ordner rein, und das will irgendwie nicht so wie ich..

    copy($name.'.png','Bild/Bilder/'.$ordner.'/mini/'.$name.'.png') or die('Kopieren ist fehlgschlagen');

    so sieht das aus.. rein theoretisch richtig, keine syntax fehler, aber das skript wird abgebrochen und gibt mir die die(); meldung aus..

    Hmm.. ok hab ich mir gedacht, scheint der Fehler irgendwo anders zu liegen und wurschtel ein bisschen in meinem Code rum.. irgendwann habe ich mal das Verzeichnis "mini/" manuell angelegt und - ihr werdet es nicht glauben - alles funktioniert ohne Probleme.. alle Thumbnails werden ohne weitere Probleme in den Ordner reingepackt..

    HMMMM.. MERKWÜRDIG!! und jetzt kommt meine Frage an euch: Was ist da faul und was kann ich dagegen tun?!

    hier der code vom erzeugen des ordners:
    mkdir('./Bild/Bilder/'.$ordner.'/mini/');
    chmod('./Bild/Bilder/'.$ordner.'/mini/',0777);

    funktioniert auch, der ordner ist danach vorhanden und die rechte sind vergeben nur die Bilder wollen nicht rein.. und wenn ich den Ordner manuell anlege und auch die rechte manuell vergebe läuft es.

    und jetzt viel Spaß beim Knobeln xD bin schon die halbe Woche am rätzeln und das sind meine ganzen Erkenntnisse die ich gewinnen konnte ;)

    für Antworten wäre ich SEHR dankebar :)

    schöne Grüße,
    gero
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage


  3. ...
    copy($name.'.png','Bild/Bilder/'.$ordner.'/mini/'.$name.'.png') or die('Kopieren ist fehlgschlagen');

    so sieht das aus.. rein theoretisch richtig, keine syntax fehler, ...


    Oh, ich bin mir sicher, dass es Fehlermeldungen gibt. Du siehst sie nur nicht. Stell mal error_reporting(E_ALL); vor dein Script. Dann poste die Fehlermeldung(en). Dann sehen wir weiter.

    Denn ohne konkrete Fehlermeldung herumzurätseln macht keinen Spaß. Es gibt verschiedene Möglichkeiten, warum das Schreiben einer Datei fehlschlagen könnte. Neben den falschen Dateiattributen können auch andere Einschränkungen die Ursache sein.
  4. Autor dieses Themas

    g**o

    Keine Fehlermeldungen, es sei denn ich habe error_reporting(E_ALL); falsch platziert, habe es direkt in die erste Zeile unter <?php geschrieben.. wenn ich das "or die();" hinter dem copy raus nehme, läuft das skript ohne fehler oder warnungen zu ende, nur die bilder sind trotzdem nicht kopiert, wenn ich es jedoch dahinter stelle, bricht das skript an dieser stelle ab und gibt mir nur den string aus "or die();" zurück..

    gruß,
    gero
    EDIT:
    Hab mal absichtlich nen Fehler eingebaut, wird auch n icht angezeigt, wo genau muss ich also error_reporting(E_ALL); hinpacken? habe es wie oben geschrieben direkt hinter das <?php gestellt


    Beitrag geaendert: 15.4.2007 0:37:01 von gero
  5. Wo man error_reporting() hinschreibt, ist eigentlich egal. Nur wenn du im Script selbst das irgendwo schon eingebaut hast, dann ist es natürlich sinnvoll, es direkt vor die Anweisung zu schreiben, die du überprüfen willst.

    Allerdings ist es merkwürdig, das copy() keinen Fehler meldet. Das müsste normalerweise der Fall sein, wenn was schiefläuft (und error_reporing auf E_ALL) steht). Zumindest machen das die mir bekannten Datei-Handling-Funktionen.

    Dass das Script abbricht, ist klar: Wenn copy() FALSE zurückliefert, wird der "Anweisungszweig" nach "or" ausgeführt. Das verhält sich hier ähnlich wie in einer If-Else-Verzweigung.

    Die Frage ist, warum copy() nichts kopiert und daher FALSE zurückliefert ...

    Du hast ohne konkrete Fehlermeldung verschiedene Möglichkeiten, um rauszufinden, was nun genau schiefläuft ...

    Möglicherweise ...
    ... kann die Quell-Datei nicht gelesen werden.
    ... kann die Zieldatei nicht geschrieben werden.
    ... kann in das Zielverzeichnis nicht geschrieben werden.
    ... ist auf dem Ziellaufwerk nicht mehr genug Platz.

    Du kannst sowas auch mit anderen Funktionen, wie file_get_contents(), file_put_contents(), is_writable(), file_exists(), is_dir() usw. testen. Das dauert aber ein wenig ...

    Einschränkungen können u.A. durch den Safe-Mode (de Datei gehört jemand anderem als das Kopier-Script), Open-Base-Dir-Restriction (die Dateien liegen ober-/außerhalb des erlaubten Verzeichnispfades), und durch falsch konfigurierte PHP-Systeme (dann hat der Webhoster Mist gebaut) verursacht sein.


    http://de3.php.net/manual/en/function.copy.php
  6. Autor dieses Themas

    g**o

    hey, danke für deine Antwort,
    also werde mal nach dem Ausschlussverfahren vorgehen und die möglichen Ursachen durch checken,

    was ich im Moment nur nicht ganz begreife ist warum ich keine Fehlermeldung bekomme obwohl ich die Funktion eingebaut habe, mir ist da auch nichts anderes bekannt, als das es eine geben müsste..

    Tatsache ist aufjeden Fall, dass das Skript lokal ohne Probleme durchläuft..

    Naja, ich probier dann mal was rum und melde mich falls es Neuigkeiten gibt ;)

    danke nochmal,
    gero
    Edit:
    Also das mit dem error_reporting(E_ALL); scheint garnicht zu gehn, habs mal vor einen Fehler gestellt ($c="bla) und bekomme keine Meldung zurück.. woran kann das liegen? Also das keine Meldung zurück kommt?

    Beitrag geaendert: 16.4.2007 14:27:56 von gero
  7. Autor dieses Themas

    g**o

    ok, Problem erkannt,
    safe-mode ist an.. gibts irgend eine möglichkeit den aus zu schalten?

    gruß,
    gero
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!