probleem met afbeeldingen in TCPDF library
In een project gebruik ik de TCPDF library om dynamisch een PDF-document te maken. Alles werkt prima, met uitzondering van het invoegen van afbeeldingen.
De volgende foutmelding wordt gegeven: TCPDF ERROR: [Image] Unable to get the size of the image: http://www.xxxxxxxx.nl/css/images/logo_groot.jpg
De opgevraagde afbeeldingsfile bestaat, dat is het probleem niet. Bovendien werkt het script op een andere server (een private server) prima. Ook wanneer ik het script draai op mijn lokale ontwikkelomgeving is er niets aan de hand.
Alleen op de shared hosting omgeving waar de site live staat krijg ik dus dit probleem.
Nu heb ik al gezocht naar mogeljke oplossingen. Ik weet dat TCPDF gebruik maakt van Curl om de afbeeldingen te laden. Dus Curl moet enabled zijn. Dat is ook het geval. Ook moet allow_url_fopen geactiveerd zijn, en ook dat is het geval. Als laatste moet de GD library aanwezig zijn, en ook dat is het geval.
Andere instellingen van de shared hosting omgeving zijn (wellicht niet eens relevant):
safe_mode = on
register_globals = off
Weet iemand de oorzaak/oplossing voor dit probleem?
Paul van Eck
Schrijf-toestemming aan die directory zou het probleem moeten oplossen...' (einde vertaling)
Ik heb er geen verstand van maar kwam het probleem drie dagen terug tegen ;-)
Hier is de url voor het hele bericht voor het geval er nog andere complicaties optreden... ik hoop dat dit wat helderheid brengt,
Michiel
Gewijzigd op 09/11/2013 15:20:31 door Michiel Mussies
Dank voor je feedback. Ik had uiteraard die bron ook al gevonden, en de schrijfrechten gecontroleerd. Zelfs de hele directory op 777 ge-chmod, maar zonder resultaat.
Dat is dus in dit geval niet de oplossing.
Groet,
Paul van Eck
<img src="/foo/bar/logo.jpg">
bleek alleen te werken wanneer /foo/bar/logo.jpg lokaal te vinden is. Met andere woorden: er gaat helemaal geen HTTP-verzoek uit naar de afbeelding, maar de afbeelding wordt lokaal op de server gezocht.
Ja, zo te lezen kunnen meerdere oorzaken hier (samen)een rol spelen. Jammer dat geen van de daar geboden andere opossingen mag meewerken om tot een goed einde te komen (.htaccess ivm opheffen evt. wachtwoord bescherming op directory, plaatjes lokaal ophalen ipv absoluut zoals Ward ook aangeeft, etc.).
Hmm, ik lees ergens anders nog deze tip:
modify php.ini (allow_url_fopen = On; allow_url_include = On;)
Trouwens, het gaat volgens de error niet om je image zelf maar de image size en in de url die je laat zien staan inderdaad geen height="n" width="n" (!) .... is dat dan mogelijk het probleem?
Fijne avond, Michiel
Gewijzigd op 09/11/2013 18:06:25 door Michiel Mussies
Ik zie nu trouwens wel dat php safe_mode is ingeschakeld op deze server. Aangezien de tcpdf-library gebruik maakt van fopen() en fopen() door safe_mode wordt geblocked (http://www.php.net/manual/en/features.safe-mode.functions.php).??
Zou dit er iets mee te maken kunnen hebben?
Ik kan overigens safe_mode niet zelf uitschakelen merk ik..
groet,
Paul
In php 5.4 is safe mode verwijdered, een mooi argument om je host over de streep te halen...
Nogmaals fijne avond, M
Even erbij gesleurd: aanwijzingen om in shared omgeving safe mode uit te zetten voor een bepaalde directory
Gewijzigd op 09/11/2013 21:21:08 door Michiel Mussies
Groet en wordt vervolgd.
Paul
Wanneer fopen() wordt gebruikt om een file te lezen ('r'), dan is dat geen probleem. Wanneer echter een bestand wordt geopend om te schrijven ('w'), dan moet de te openen file via een lokaal pad te bereiken zijn. Heel logisch natuurlijk, anders zou je files op een andere server kunnen wijzigen.
groet,
Paul
Loop tegen soortgelijke problemen aan in TCpdf ik haal tekst met afbeelding op uit tabel
komt melding:
Warning: getimagesize(/upload/files/type-1/test1.jpg)
afb. is opgelagen als <img alt="" height="201" width="300" src="/upload/files/type-1/test1.jpg" />
Maak ik er een absolute url van werkt het wel goed. bijv.
https://mijnsite/upload/files/type-1/test1.jpg