php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 26.09.2007, 13:27  
Neuer Benutzer
 
Registriert seit: 26.09.2007
Beiträge: 25
Hawk befindet sich auf einem aufstrebenden Ast
Standard Probleme mit der Funktion - ImageTTFText()

PHP-Code:
<?PHP
header
("Content-type: image/png"); // Festlegung des Bildformats (hier *.png) für das Codebild
session_start(); // Startet die Session
$grafik ImageCreate (9030); // Erzeugt ein 90x30 px großes Bild
$hintergrundfarbe ImageColorAllocate($grafik240240240); // Definiert die Farben in RGB
$schriftfarbe ImageColorAllocate($grafik176177178); // in RGB-Farben

// Klammert man die nächste Zeile aus, funktioniert alles... :-(
ImageTTFText ($grafik2051025$schriftfarbe"/bau.ttf"$_SESSION['code']); // Sessioncode in Grafik schreiben

ImagePNG($grafik); // Grafik erzeugen
imagedestroy($grafik); // Zwischenspeicher löschen
?>


wie man sehen kann, versuche ich mit diesem script eine grafik zu erzeugen, die einen vorher definierten code abgelegt in der $_SESSION darstellen soll. das ganze soll als spambot dienen.

das script funktioniert auch fehlerfrei auf 3 verschiedenen serveroberflächen. aber auf dem server wo es ankommt (Linux) eben nicht.

grund für das problem ist die funktion ImageTTFText().

klammer ich diese aus. funktioniert das script, jedoch wird mir nur die blanko-grafik angezeigt, ohne schrift!


die phpinfo sagt mir hierzu folgendes:

gd
GD Support => enabled
GD Version => 2.0 or higher
FreeType Support => enabled
FreeType Linkage with freetype T1Lib Support => enabled
GIF Read Support => enabled
GIF Create Support => enabled
JPG Support => enabled
PNG Support => enabled
WBMP Support => enabled

Soweit ist auch alles ok, funktionieren tut es aber trozdem nicht. mir wird nicht einmal eine fehlermeldung ausgegeben. lediglich dieses kleine quadratische bild mit dem X wenn die grafik fehlt oder nicht zu laden ist aus irgendwelchen gründen.

hat jemand eine idee woran das liegen könnte?! ich hab den code in der $_SESSION['CODE'] schon gegen einen normalen string ("TEST") ausgetauscht, aber geholfen hat das auch nicht. das font-file "bau.ttf" ist auch an der richtigen adresse verfügbar.
Hawk ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 26.09.2007, 14:03  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Hallo, der mitgesendete Header verhindert die Ausgabe einer möglichen Fehlermeldung. Kommentier den Teil mal aus. Könnte schon an der Code-Reihenfolge liegen (header's already sent), stell mal session_start() noch vor den header().
Zergling-new ist offline  
Alt 26.09.2007, 14:36  
Neuer Benutzer
 
Registriert seit: 26.09.2007
Beiträge: 25
Hawk befindet sich auf einem aufstrebenden Ast
Standard

also session_start(); kann ich problemlos ausklammern, da ich testweise als Text "TEST" drinen habe, somit fällt diese variable eh hinten runter...

wenn ich den header ausklammer bekomme ich folgende meldung:

Zitat:
Warning: imagettftext(): Could not find/open font in /var/www/.../httpdocs/spambot/code.php on line 7
‰PNG  IHDRZ–¯›;PLTEððð°±²cHUe IDAT•c`â€*õLÅ’IEND®B`‚
dürfte aber wohl daher kommen, dass im header nicht mehr der datei-typ definiert wird.
bringen tut es aber nichts...
komisch ist jedoch, dass ich genau das gleiche script auf bereits 3 anderen servern getestet habe und hier funktioniert es.

ich tippe hier ja ganz stark auf die FreeType-Bibliothek die diese funktion benötigt. laut meiner php.ini ist diese bibliothek unterstütz. wäre der einzig schlüssige ansatz für mich, da alles andere was mit den GD-Bibliotheken zu tun hat funktioniert. ich kann rechtecken erzeugen, ellipsen dazu bauen... nur die ttf-schriften funktionieren nicht...

könnte mir die haare ausraufen. hänge hier schon den ganzen tag drann und komme nicht weiter. selbst google hat nichts gebracht.
Hawk ist offline  
Alt 26.09.2007, 14:37  
CIX88
Gast
 
Beiträge: n/a
Standard

Zitat:
"/bau.ttf"
Sicher das dein File dort liegt ?
Linux wird das etwas anders sehen
 
Alt 26.09.2007, 14:44  
Neuer Benutzer
 
Registriert seit: 26.09.2007
Beiträge: 25
Hawk befindet sich auf einem aufstrebenden Ast
Standard

ach mom. lese ich jetzt erst "could not find/open font in /var/.../"
hier hab hier schon mit den pfaden gespielt. hat aber nichts gebracht. selbst die schrift hab ich gegen arial ausgetauscht.

eventuell liegt es an den zugriffsrechten der font-datei... der fpt-client is doch nem anderem user zugeordnet als dem ausführenem php...
kann ich mir aber nicht wirklich vorstellen.

selbst die übertragen ind binär und txt hat nichts gebracht.
Hawk ist offline  
Alt 26.09.2007, 14:47  
Neuer Benutzer
 
Registriert seit: 26.09.2007
Beiträge: 25
Hawk befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von CIX88
Zitat:
"/bau.ttf"
Sicher das dein File dort liegt ?
Linux wird das etwas anders sehen

hm... meinst also doch, dass linux die datei dort nicht findet?

ich hab das script auf nem server von 1blu getestet hier läuft auch linux, und dort funktiniert es.

System => Linux v31647 2.6.9-023stab033.9-smp #1 SMP Tue Dec 5 14:24:39 MSK 2006 x86_64

Build Date => Nov 7 2006 14:19:23
Configure Command => './configure' '--prefix=/usr' '--datadir=/usr/share/php' '--mandir=/usr/share/man' '--bindir=/usr/bin' '--libdir=/usr/share' '--includedir=/usr/include' '--sysconfdir=/etc' '--with-_lib=lib64' '--with-config-file-path=/etc' '--with-exec-dir=/usr/lib64/php/bin' '--disable-debug' '--enable-inline-optimization' '--enable-memory-limit' '--enable-magic-quotes' '--enable-safe-mode' '--enable-sigchild' '--disable-ctype' '--disable-session' '--without-mysql' '--disable-cli' '--without-pear' '--with-openssl' '--with-apxs2=/usr/sbin/apxs2-prefork' 'x86_64-suse-linux'

Server API => Apache 2.0 Handler
Hawk ist offline  
Alt 26.09.2007, 15:13  
CIX88
Gast
 
Beiträge: n/a
Standard

Najaaaaa nicht jeder Server ist gleich.
Am besten kommst du wenn du den absoluten Pfad ($_SERVER['DOCUMENT_ROOT'] + Verzeuchnisse zur TTF) zur TTF angibst.
Also /home/blabalbla/website/lalalal/ttf.tff (beispiel)
 
Alt 26.09.2007, 17:55  
Neuer Benutzer
 
Registriert seit: 26.09.2007
Beiträge: 25
Hawk befindet sich auf einem aufstrebenden Ast
Standard

danke für den tip, hätte ich auch selbst drauf kommen können...
jetzt funktioniert das script zwar mit einschränkungen, aber immerhin schon mal ein fortschritt...

die folgende Zeile gibt jetzt ein grafisches "TEST" aus. so wie es sein soll.
PHP-Code:
ImageTTFText ($grafik2051030$schriftfarbe$_SERVER['DOCUMENT_ROOT']."/spambot.ttf""TEST"); // Sessioncode in Grafik schreiben 
leider funktioniert jetzt die übernahme bzw. die verarbeitung einer variable nicht mehr.
PHP-Code:
ImageTTFText ($grafik2051030$schriftfarbe$_SERVER['DOCUMENT_ROOT']."/spambot.ttf"$_SESSION['spambot']); // Sessioncode in Grafik schreiben

ImageTTFText ($grafik2051030$schriftfarbe$_SERVER['DOCUMENT_ROOT']."/spambot.ttf"session_id()); // Sessioncode in Grafik schreiben

$spambotcode $_SESSION['spambot'];
ImageTTFText ($grafik2051030$schriftfarbe$_SERVER['DOCUMENT_ROOT']."/spambot.ttf"$spambotcode); // Sessioncode in Grafik schreiben 
weder funktioniert das mit doppelten anführungszeichen ("), mit einfachen (') noch ohne irgendwelche anführungszeichen was ja sinn machen würde...
vorher funktionierte die variante $_SESSION['spambot'] problemlos.
zumal die variable auch verfügbar ist. ich gebe diese nach dem spambot nochmal mit echo aus um die verfügbarkeit zu überprüfen. selbst session ist gestartet, denn auch mit echo session_id(); wird die session-id ausgegeben. dachte mir, so prüf ich mal, ob überhaupt die session gestartet wird...
aber das ist alles der fall...

entweder ich seh den wald vor lauter bäumen nicht mehr, oder es soll einfach nicht funktionieren...

denn alles was bei den drei möglichen lösungen raus kommt, ist eine leere grafik mit der richtigen größe und hintergrundfarbe jedoch OHNE text...
Hawk ist offline  
Alt 26.09.2007, 18:54  
CIX88
Gast
 
Beiträge: n/a
Standard

Jo hast du den Hinweis von Zergling auch mit beachtet ?
Und auch mal kontrolliert ob $_SESSION['spambot'] überhaupt verfügbar ist ?
 
Alt 26.09.2007, 20:59  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Korrigier erstmal ALLE Fehler (und Hinweise), erst dann schick den header() für die Grafik mit.

error_reporting(E_ALL);

an den Anfang deines Skriptes (auch vor session_start()). Vorher hast du übrigens $_SESSION["code"] verwendet, wenn du beim Coden genauso wankelmütig wie beim Posten bist, wundert mich nichts mehr ..
Zergling-new ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
JS: Einführung - Javascript im Schichtenmodell nikosch Tutorials 4 11.04.2009 17:06
Probleme mit der Funktion - ImageTTFText() Hawk PHP Tipps 2008 1 01.10.2007 10:57
probleme mit max() funktion Crypi Datenbanken 4 09.01.2007 14:37
Probleme mit der mail() Funktion Kein Genie PHP Tipps 2006 2 22.10.2006 16:37
Funktion macht Probleme mokus PHP Tipps 2006 19 20.06.2006 03:16
Probleme mit imagettftext() Sundriver PHP Tipps 2006 6 14.04.2006 21:44
Probleme mit einer Funktion ThaRider PHP Tipps 2006 3 06.04.2006 15:01
Probleme mit einer Funktion ThaRider PHP Tipps 2007 9 21.11.2005 21:54
PHP-GTK Tutorial Beitragsarchiv 9 02.11.2005 21:07
[Erledigt] probleme mit Funktion PHP Tipps 2005-2 3 06.10.2005 23:53
Rückgabewert einer rekrusiven Funktion PHP-Fortgeschrittene 7 06.10.2005 18:44
(schnellere) Funktion zum Zusammenfassen von CSS PHP-Fortgeschrittene 21 08.08.2005 16:47
probleme mit date funktion PHP Tipps 2005-2 8 02.08.2005 18:51
Funktion in einer Funktion aufrufen? PHP Tipps 2005-2 11 14.06.2005 15:14
[Erledigt] Wie kann ich beliebig viele Werte an eine Funktion übergeben PHP Tipps 2005 11 25.01.2005 10:44

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
imagettftext hintergrundfarbe, imagettftext hintergrund, php.ini imagettftext, imagettftext php.ini, imagettftext anführungszeichen, imagettftext schriftfarbe, imagettftext fontfile, http://www.php.de/php-tipps-2008/44825-probleme-mit-der-funktion-imagettftext.html, php imagettftext fontfile url, imagettftext linux schlechte qualität ttf, imagettftext keine schrift, imagettftext escape slashes, php imagettftext hintergrund, function.imagettftext, imagettftext unscharf, imagettftext speicher leeren, anführungszeichen imagettftext, php imagettftext, $schriftfarbe, php imagettftext linux

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:07 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.