probleem met afbeeldingen in TCPDF library

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Paul van Eck

Paul van Eck

09/11/2013 10:27:47
Quote Anchor link
Goedemorgen,

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
 
PHP hulp

PHP hulp

25/12/2024 08:13:48
 
Michiel Mussies

Michiel Mussies

09/11/2013 15:19:27
Quote Anchor link
volgens een poster op stack overflow: (vertaalde quote) 'probeert TCPDF de afbeelding met cURL te laden in de "cache"-directory waar je TCPDF-installatie is opgeslagen (check wat de K_PATH_CACHE-constant bevat om zeker te zijn).

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
 
Paul van Eck

Paul van Eck

09/11/2013 15:46:36
Quote Anchor link
Goedemiddag Michiel,

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
 
Ward van der Put
Moderator

Ward van der Put

09/11/2013 16:05:57
Quote Anchor link
Toch heeft Michiel waarschijnlijk de juiste oplossing. Ik heb precies hetzelfde namelijk al eens gehad met een fork van de PDF-library. Een HTML-tag zoals

<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.
 
Michiel Mussies

Michiel Mussies

09/11/2013 18:04:58
Quote Anchor link
Hoi Paul, dank voor je weder-reply- Jammer! Sry2hear dat het niet helpt-
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
 
Paul van Eck

Paul van Eck

09/11/2013 20:45:26
Quote Anchor link
Hmm.. nog niet opgelost.

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
 
Michiel Mussies

Michiel Mussies

09/11/2013 21:07:27
Quote Anchor link
Hoi Paul, tja, das onhandig. Ik weet niet of je shared zit maar wie weet kun je vragen of ze het kunnen uitzetten (in php.ini or httpd.conf?)
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
 
Paul van Eck

Paul van Eck

10/11/2013 13:17:25
Quote Anchor link
safe_mode inmiddels 'off', dus dat is één. Blijkt nog niet de oplossing, dus we zoeken verder. Toch een 'rechten'-verhaal schat ik in. Heb nu maar een ticket ingeschoten bij mijndomein, dus wacht op antwoord.

Groet en wordt vervolgd.

Paul
 
Paul van Eck

Paul van Eck

13/11/2013 08:20:33
Quote Anchor link
Ik heb de oplossing gevonden, ik had een beginnersfout gemaakt: de url van de afbeelding in de fopen()-functie had ik met http:// aangegeven (een absolute url dus).

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
 
Pierre Web

Pierre Web

28/12/2017 15:23:58
Quote Anchor link
Hallo ,

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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.