2010-07-05 5 views
1

J'utilise la bibliothèque FPDF pour générer des fichiers PDF par PHP. Cette bibliothèque fonctionne bien avec du texte brut (par exemple, les fichiers PDF génèrent du texte), mais cela me donne une erreur de FPDF error: Missing or incorrect image file:{MY_FILE_PATH} en essayant d'ajouter une image à ma page PDF. Accède à ce chemin de fichier à travers le navigateur, puis l'image correspondante apparaît très bien.Erreur FPDF: Fichier image manquant ou incorrect

Mon code est:

 
require('fpdf.php'); 

$pdf = new FPDF(); 
$pdf->AddPage(); 
$pdf->SetFont('Arial', 'B', 16); 
$pdf->Write(10, 'Example image'); 
$image_path = MY_FILE_PATH; // This variable contains my actual file path 
$pdf->Image($image_path, 10, 10, 350, 450); 
$pdf->Output(); 

Ce code fonctionne parfaitement dans mon localhost et générer les fichiers PDF correspondants même avec les images aussi, mais cela ne fonctionne pas après le déplacement sur le serveur.

J'ai essayé avec ces possibilités comme:

  1. Avec des chemins absolus et relatifs de l'image.

  2. Essayé avec une image locale placée dans le même dossier.

  3. Tous les formats d'image comme jpg, png et gif aussi.

  4. Vérifié également les autorisations pour l'image et les dossiers correspondants.

Aucun de ces cas ne fonctionne pour moi, bloqué par ce problème, quelqu'un peut-il m'aider à résoudre ce problème.

Merci!

Siva ...

+0

Pouvez-vous montrer un exemple de chemin que vous utilisez? –

+0

vous pouvez prendre le chemin http://www.desicomments.com/user/2008/03/7139/good.jpg à titre d'exemple. Pouvons-nous utiliser des chemins relatifs comme '/test.jpg' également avec FPDF? – Siva

+0

Pekka, merci pour votre réponse, a obtenu la raison de ce problème et a corrigé celui-là. – Siva

Répondre

3

Après une longue lutte, enfin je l'ai trouvé la raison de cette question que je l'ai déjà discuté here. Principalement ce problème est dû au paramètre 'allow_url_fopen' qui n'est pas activé pour mon serveur, j'ai résolu ce problème en utilisant le CURL. Je donne la procédure étape par étape pour résoudre ce problème, car cela peut être utile pour quelqu'un comme moi pour éviter le gaspillage de temps (pour trouver la solution).

 
1. Create a temporary file in the local system with write permission. 

Ex: $fp = @fopen($local_file_path, 'x'); 
    fclose($fp); 

2. Get the remote location file contents using CURL and write that to local file 
which is created in the previous step. 

Ex: $curl = new CurlWrapper($remote_file_path); 
    $curl->copyToFile($local_file_path); 

3. Now send this local file path to FPDF function(image) then the corresponding 
PDF will get generate for the file without any issues. 

Je pense que cela est une méthode pour résoudre ce problème, si quelqu'un sait d'autres façons, vous pouvez les poster ici afin que cette question peut être utile pour quelqu'un.

1

juste ajouter:

allow_url_fopen = ON

sur php.ini (créer un nouveau si existe pas) résout le problème.

http://www.solo-technology.com/blog/2010/04/07/quick-fix-for-url-file-access-is-disabled-issues/

+0

Mais ouvrir un monde de problèmes de sécurité potentiels dans le processus ... – nickhar

+1

@ user1638334, cela nous amène à une menace de sécurité dans le processus de correction d'un problème comme Nickhar dit, donc je pense qu'il vaut mieux résoudre cela d'une manière différente (Ex: en utilisant CURL). – Siva

+0

Pourquoi les votes négatifs? Je suis d'accord qu'il vaut mieux 'allow_url_include'. Mais quelle est cette menace de sécurité de 'allow_url_fopen'? PHP le fait même par défaut. – ficuscr

Questions connexes