Erreur image crée avec la biblio GD, en architecture POO

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour,
je crée un site avec une architecture POO, et un framework plus ou moins maison (voir vidéos grafikart).
Dans un controller, je souhaiterai afficher une image, créée en php, mais firefox me renvoi une erreur, comme quoi mon image ne peut être affichée car elle contient des erreurs.
Voici mon code:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
<?php

class imgController extends Controller{


public function echoImg(){

        header ("Content-type: image/png");
        $image = imagecreatefrompng("http://1day-online.fr/webroot/img/texture.png");
        imagepng($image);


    }
}

(c'est le seul code de la page)
Quand je tape http://1day-online.fr/img/echoImg, je suis sensé voir l'image (le rooter fonctionne).
Cordialement, merci d'avance!

Cette réponse a aidé l'auteur du sujet

imagecreatefrompng ne peut pas ouvrir ton url, le serveur renvoie un 403.

  • Puisque ton image est sur le même serveur que la page 1day-online.fr/img/echoImg tu devrais mettre un chemin relatif.
  • T'as un serveur apache, à moins que tu modifie l'image à la volée, laisse le gérer tes images pour toi.

La prochaine fois, vérifie le contenu de tes variables, je suis sûr que $image est null

+0 -0
Auteur du sujet

Merci! Je testerai tout après-demain, et vous tiendrez au courant. Par contre j'ai pas trop compris quand tu me dis de laisser Apache gérer pour moi, enfait c'est pour protéger l'accès à ce dossier, qui ne sera donc plus accessible avec l'url (merci .htaccess!). Et pourquoi mon serveur renvoi une 403?
Encore merci!

Auteur du sujet

Bonjour,
petit up: je n'ai pas eu le temps de régler le problème avant, je viens de tester les solutions proposées.
J'ai voulu vérifié la valeur de $image, avec ce code:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<?php
class imgController extends Controller{
  public function echoImg(){
    $image = imagecreatefrompng("http://1day-online.fr/webroot/img/texture.png");
        if(!empty($image)){
            echo "Image existante!";
        }
        elseif (empty($image)) {
            echo "erreur";
        }
    }
}

Mais voici ce que la page me retourne:

Warning: imagecreatefrompng(http://1day-online.fr/webroot/img/texture.png): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden in /home/dayonlin/www/controller/imgController.php on line 9

Pourquoi ça me renvoi une 403? Une solution pour régler le problème?
Merci d'avance!
PS: je ne peux pas mettre en chemin relatif, à cause de mon rooter, et j'ai besoin d'avoir l'image en php pour contrôler l'accès aux images

Staff

je ne peux pas mettre en chemin relatif, à cause de mon rooter, et j'ai besoin d'avoir l'image en php pour contrôler l'accès aux images

mattis25

Je veux bien que tu nous explique pourquoi : le but du router est justement de simplifier la gestion des chemins relatifs en faisant passer toutes les pages par le même script principal.

Auteur du sujet

Le problème vient en fait du "framework" du site (celui de grafikart, dans la série de vidéo "Développer un site de A à Z, on aurait plutôt du prendre un framework plus connu, mais l'erreur est faite, et c'est bien trop tard pour la corriger). C'est assez compliqué à expliquer… En gros, on peut passer que les liens vers des controllers en relatif.
Bon après si ça réglait le problème, je chercherais une solution à ça…

Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte