tutorials.de Buch-Aktion 05/2012
Seite 2 von 2 ErsteErste 12
ERLEDIGT
NEIN
ANTWORTEN
18
ZUGRIFFE
932
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #16
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Interessanterweise hat er error_reporting() eingeschaltet, sowie display_errors auf 1 und es kommt keine E_NOTICE, das auf ein nicht-existentes Array-Index ($imagearray[0] und $imagearray[1]) zugreift. Alles sehr seltsam das...
    HerbertJ bedankt sich. 
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  2. #17
    Avatar von Dr Dau
    Dr Dau Dr Dau ist offline ich wisch hier durch
    Registriert seit
    Feb 2005
    Ort
    hinterm Mond gleich Links
    Beiträge
    6.160
    Blog-Einträge
    4
    Zitat Zitat von saftmeister Beitrag anzeigen
    Interessanterweise hat er error_reporting() eingeschaltet, sowie display_errors auf 1 [..]
    Nützt nur nichts wenn diese Funktionen (und ini_set()) in der php.ini unter den deaktivierten Funktionen eingetragen ist.
    Und wenn in der php.ini dann auch noch das error_reporting() deaktiviert ist, dann gute Nacht.
    Über den "Sinn" einer solchen Konfiguration brauchen wir sicherlich nicht diskutieren, aber sie ist halt nicht auszuschliessen.

    Fakt ist dass der von mir gezeigte Code mit der URL zur Grafik von php.net funktioniert (getestet), sofern allow_fopen_url auf "on" steht.
    Es ist ja auch nicht auszuschliessen dass das Hotlinking beim TE unterbunden wird, da kann ein Test mit einer fremden Grafik auf einem fremden Server (wie die von mir verwendete Grafik) nicht schaden.
    Ich sehe derzeit jedenfalls keinen Sinn darin das Problem irgendwo im Code vom TE zu suchen..... das Problem liegt irgendwo anders.
     
    Schri-Schra-Schrödi *g*
    mehrspaltiges/zeiliges Seitenlayout mit DIV's und CSS
    Dinge, die mit Tabellen besser klappen als mit CSS
    Ausgabe von Datum/Zeit unabhängig von der Server Zeitzone [php]
    Meine Links zum Thema Linux (Last update: 29.10.2011)
    Kein Busen ist so flach wie das Niveau dieser Party!
    ----
    Alte Weisheit: wer uns in den Arsch kriecht wird beschissen!
    ----
    Ich habe 3 Kinder und kein Geld!
    Warum kann ich nicht keine Kinder haben und 3 Geld?! (Homer Jay Simpson)

  3. #18
    HerbertJ HerbertJ ist offline Mitglied Silber
    Registriert seit
    Oct 2009
    Beiträge
    82
    Zitat Zitat von Dr Dau Beitrag anzeigen
    Hallo!

    Wo hast Du diese Zeile her?
    Sieht mir ganz nach php.ini aus.
    Dann würde ich mal kontrollieren dass Du auch die richtige php.ini erwischt hast.
    phpinfo() sagt Dir welche php.ini die richtige ist..... und nennt Dir auch gleich dessen Einstellungen.

    Kannst Du denn sicherstellen dass ini_set() und error_reporting() z.b. nicht unter "disable_funktions =" in der php.ini eingetragen sind?

    Ja, sowas gibt var_dump() für getimagesize() aus wenn allow_fopen_url deaktiviert ist oder die Datei nicht gefunden wurde.
    Da Du aber sagst dass die Datei existiert und sich auch aufrufen lässt, bleibt ja nurnoch übrig dass allow_fopen_url deaktiviert ist.

    Versuche mal einen Gegentest (inkl. der genannten URL):
    PHP-Code:
    $imageurl "http://static.php.net/www.php.net/images/php.gif";
    //$image_array = getimagesize($imageurl);
    $image_array fopen($imageurl"r");
    var_dump($image_array); 
    Wenn Du wieder ein bool(false) bekommst, ist die Sache klar.
    Wenn Du ein "resource(2) of type (stream)" bekommst, dann nimm den Code nochmal für getimagesize().
    Dann solltest Du dieses zurückbekommen:
    Code :
    1
    
    array(7) { [0]=> int(120) [1]=> int(67) [2]=> int(1) [3]=> string(23) "width="120" height="67"" ["bits"]=> int(7) ["channels"]=> int(3) ["mime"]=> string(9) "image/gif" }

    Gruss Dr Dau

    Vielen Dank Dr Dau. Zu meinem erstaunen kam als Meldung tatsächlich
    Code :
    1
    
    resource(2) of type (stream)
    und auch
    Code :
    1
    
    array(7) { [0]=> int(120) [1]=> int(67) [2]=> int(1) [3]=> string(23) "width="120" height="67"" ["bits"]=> int(7) ["channels"]=> int(3) ["mime"]=> string(9) "image/gif" }

    Danach habe ich mit meinen Script ein Bild verwenden, dass nicht auf meinem Server liegt. Und siehe da, es funktioniert! Anscheinend darf ich bei Bildern die auf meinem Server liegen nicht den kompletten Pfad verwenden http://.. Ist zwar komisch, aber wenigstens weiß ich jetzt was zu tun ist.

    Vielen Dank an alle!
     

  4. #19
    Avatar von Dr Dau
    Dr Dau Dr Dau ist offline ich wisch hier durch
    Registriert seit
    Feb 2005
    Ort
    hinterm Mond gleich Links
    Beiträge
    6.160
    Blog-Einträge
    4
    Damit steht schonmal fest dass es nicht an allow_fopen_url liegt.

    Ich habe nochmal etwas getestet.
    Sind in den Verzeichnis- und/oder Dateinamen zufälligerweise Leerzeichen enthalten?
    Wenn ja:
    PHP-Code:
    $imageurl "my file.jpg";
    $image_array getimagesize($imageurl);
    var_dump($image_array); 
    funktioniert.

    Ein:
    PHP-Code:
    $imageurl "http://www.my-domain.de/my file.jpg";
    $image_array getimagesize($imageurl);
    var_dump($image_array); 
    liefert hingegen ein bool(false) zurück.

    Abhilfe wird geschafft wenn man die Leerzeichen konvertiert:
    PHP-Code:
    $imageurl str_replace(" ""%20""http://www.my-domain.de/my file.jpg");
    $image_array getimagesize($imageurl);
    var_dump($image_array); 
    Aber, ein:
    PHP-Code:
    $imageurl str_replace(" ""%20""my file.jpg");
    $image_array getimagesize($imageurl);
    var_dump($image_array); 
    liefert wiederum ein bool(false) zurück.

    Zusammenfassung:
    Man muss zwischen lokalen und entfernten Dateien unterscheiden.
    Bei lokalen Dateien dürfen die Leerzeichen nicht konvertiert werden.
    Bei entfernten Dateien müssen die Leerzeichen konvertiert werden.

    Damit wir flexibel sind, prüfen wir mittels regulärer Ausdrücke ob der String aus §imageurl mit http:// oder ftp:// beginnt:
    PHP-Code:
    $imageurl "http://www.my-domain.de/my file.jpg";

    if(
    preg_match('/^(http|ftp):\/\//'$imageurl)) { // wenn $imageurl mit http:// oder ftp:// beginnt.....
        
    $image str_replace(" ""%20"$imageurl); // dann konvertiere die Leerzeichen und setze eine neue Variable
    } else { // sonst.....
        
    $image $imageurl// setze eine neue Variable mit dem unveränderten String aus $imageurl
    }

    var_dump($image); 
    Alternativ würde es auch kürzer funktionieren:
    PHP-Code:
    $imageurl "http://www.my-domain.de/my file.jpg";

    if(
    preg_match('/^(http|ftp):\/\//'$imageurl)) { // wenn $imageurl mit http:// oder ftp:// beginnt.....
        
    $imageurl str_replace(" ""%20"$imageurl); // dann konvertiere die Leerzeichen und überschreibe die alte Variable
    }

    var_dump($imageurl); 
     
    Schri-Schra-Schrödi *g*
    mehrspaltiges/zeiliges Seitenlayout mit DIV's und CSS
    Dinge, die mit Tabellen besser klappen als mit CSS
    Ausgabe von Datum/Zeit unabhängig von der Server Zeitzone [php]
    Meine Links zum Thema Linux (Last update: 29.10.2011)
    Kein Busen ist so flach wie das Niveau dieser Party!
    ----
    Alte Weisheit: wer uns in den Arsch kriecht wird beschissen!
    ----
    Ich habe 3 Kinder und kein Geld!
    Warum kann ich nicht keine Kinder haben und 3 Geld?! (Homer Jay Simpson)

Ähnliche Themen

  1. Preloader für Slideshow mit externen Bildern
    Von sexmagic im Forum Flash Plattform
    Antworten: 7
    Letzter Beitrag: 11.04.07, 17:33
  2. getimagesize() x & y problem
    Von ciberjoerg im Forum PHP
    Antworten: 6
    Letzter Beitrag: 07.03.07, 22:34
  3. getimagesize - Problem
    Von Prophet05 im Forum PHP
    Antworten: 4
    Letzter Beitrag: 22.05.05, 11:18
  4. getimagesize Problem
    Von Bencher im Forum PHP
    Antworten: 4
    Letzter Beitrag: 11.09.03, 14:00
  5. getimagesize() problem
    Von redback79 im Forum PHP
    Antworten: 2
    Letzter Beitrag: 17.04.02, 12:49