OVH Community, votre nouvel espace communautaire.

Gallerie GD en php, ne fonctionne pas avec mon hébergement ovh perso !


acsm14
29/11/2010, 00h43
Oups, j'avais totalement oublié de vérifier la version php. Elle était en PHP 4,3, donc maintenant je l'ai mis en PHP 5,3 , et le test avec @imagecreatefromjpeg() marche bien.

Sur ma page "create.php", j'ai remplacé toutes mes variables de SESSION par des valeurs, et enfin en appelant le fichier, il m'affiche une jolie carte en Jpeg.

Donc le soucis n'était pas la librairie GD mais les sessions. Il y a t-il une configuration particulière sur ovh pour les sessions (qui marche parfaitement bien sur wamp) ?

A savoir que j'ai bien mis au tout début de fichier :
Code PHP:
session_start();
. Sans espace avant.

Merci à toi Nowwhat , si c'est encore toi qui me répond. Je ne sais pas comment je ferais sinon. D'ailleurs grâce à toi j'ai appris pas mal de chose dans ce post (phpinfo(), les test en GD ...).

Merci

acsm14
28/11/2010, 23h41
C'est encore moi, je viens de tester le code suivante (super simple) :

Code PHP:

header
("Content-Type: image/jpeg");
$img = @imagecreatefromjpeg("cartes/carte20.jpg");
imagejpeg($img);
?>
Et même lui ne marche pas! voici le début du message d'erreur :

Code HTML:
Warning: Cannot modify header information - headers already sent by (output started at /homez.312/cartaweb/www/essai/create.php:2) in /homez.312/cartaweb/www/essai/create.php on line 4
ÿØÿà�JFIF������ÿþ�>CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality ÿÛ�C�    $.' ",#(7),01444'9=82<.342ÿÛ�C  2!!22222222222222222222222222222222222222222222222222ÿÀ�©"�ÿÄ����������� ÿÄ�µ���}�!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ�������� ÿÄ�µ��w�!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ
donc je pense que c'est bien la fonction @imagecreatefromjpeg qui ne marche pas avec la version GD de ovh.

S'il vous plait, merci de me dire si je me trompe ! et comment résoudre le soucis. Convertir tout en jpeg ?

Merci d'avance

Nowwhat
28/11/2010, 23h34
Citation Envoyé par acsm14
Donc la question est la suivante : Quelle est la version de GD sur les hébergement perso d'ovh ?
Trop compliquée, cette question

Google moi ça .... perso OVH phpinfo !!
Et ça donne avec un peu de réflexion: http://perso.ovh.net/test.php5
Donc: ton GD est 2.0.34 compatible.

Tu tourne bien ton site sur PHP version 5, n'est pas ?

=> fichier "test-moi-ma-version-de-php-s-il-vous-plait.php"
Code PHP:
 echo phpinfo();
?>
et appelle le.

Dépose ça sur ton hébergement, dans le /www, et t'as aussi ta question répondue

acsm14
28/11/2010, 23h23
bonsoir,

Après avoir fait plusieurs test pour centrer mon problème, je pense que c'est ce code là qui pose un soucis :

Code PHP:
$image imagecreatefromjpeg($nom_image); 
Car je ne pars pas d'une image vide comme dans le test ci-dessus, mais je pars d'une image jpeg.
Et sur le manuel php, j'ai vu ceci :

"Le support JPEG n'est disponible que si PHP a été compilé avec GD-1.8 ou supérieur."

Donc la question est la suivante : Quelle est la version de GD sur les hébergement perso d'ovh ?

Yannick

acsm14
28/11/2010, 16h54
Je viens de refaire le test, cette fois-ci il marche bien (j'ai du faire une erreur hier).

Donc l'erreur doit être dans mon code, malgré le fait qu'il marche bien sous WAMP !

Voici comment je procède :

- Dans une première page, j'ai mon formulaire, avec le choix dans les modèles de cartes, typo du texte, couleur du texte.

- Dans une seconde page, je récupère toutes les variables du formulaire pour les mettre dans des sessions (pour pouvoir les transmettre à mon programme qui créer les cartes en php)

Voici mon code de cette 2eme page. Ne faîtes pas attention à la longueur, c'est juste du code pour récupérer chaque données du formulaire. La partie intéressante, c'est la fin. Celle ou je fait appel au fichier "create.php" pour créer ma carte en jpg.

Code PHP:
session_start();



/* Ce script permet d'ajouter du texte et une image à une autre image */
/* bibliothèque GD de rigueur */
/* A optimiser ?! Peut être ?! */

//récupération des données du formulaire


 
//--------------  modèle de carte ------------------------------------------------
$_SESSION['ok'] = true;

if(isset(
$_POST['carte'])) { 
    
$_SESSION['numcarte'] = $_POST['carte']; ;
}

else {
    
$_SESSION['numcarte'] = "" ;
    echo(

 Vous devez choisir un modèle de carte 

 "
);
    
$_SESSION['ok'] = true;
    }

//---------- couleur du texte de la carte ---------------------------------

if(isset($_POST['couleur'])) {
    
$numcouleur$_POST['couleur'];
}
switch (
$numcouleur) {
    case 
:
        
$tab= array(0,0,0);
        break;
    case 
:
        
$tab= array(0,0,255);
        break;
    case 
:
        
$tab= array(255,0,0);
        break;
    case 
:
        
$tab= array(0,255,0);
        break;
    case 
:
        
$tab= array(255,255,0);
        break;
    case 
:
        
$tab= array(255,153,255);
        break;
    case 
:
        
$tab= array(102,51,102);
        break;
    case 
:
        
$tab= array(100,100,100);
        break;
    case 
:
        
$tab= array(255,100,0);
        break;
    case 
10 :
        
$tab= array(255,255,255);
        break;        
}
$_SESSION['coul1'] =$tab[0];
$_SESSION['coul2'] =$tab[1];    
$_SESSION['coul3'] =$tab[2];        

//------------------------------  Police d'écriture ---------------------------------------
if(isset($_POST['police'])) {
    
$numpolice$_POST['police'];
}
else {
    
$nompolice="";
    
$coupure=20;
    
$taille=12;
    echo(

Vous devez choisir une police d'écriture

 "
);
    
$_SESSION['ok'] = false;
    }

switch (
$numpolice) {
    case 
:
        
$_SESSION['nompolice']="arial.ttf";
        
$_SESSION['taille']=11;
        
$_SESSION['coupure']=28;
        break;
    case 
:
        
$_SESSION['nompolice']="times.ttf";
        
$_SESSION['taille']=13;
        
$_SESSION['coupure']=28;
        break;
    case 
:
        
$_SESSION['nompolice']="CaviarDreams.ttf";
        
$_SESSION['taille']=11;
        
$_SESSION['coupure']=26;
        break;
    case 
:
        
$_SESSION['nompolice']="CloisterBlack.ttf";
        
$_SESSION['taille']=13;
        
$_SESSION['coupure']=28;
        break;
    case 
:
        
$_SESSION['nompolice']="effortless.ttf";
        
$_SESSION['taille']=12;
        
$_SESSION['coupure']=27;
        break;
    case 
:
        
$_SESSION['nompolice']="Garfield.ttf";
        
$_SESSION['taille']=9;
        
$_SESSION['coupure']=24;
        break;
    case 
:
        
$_SESSION['nompolice']="GeosansLight.ttf";
        
$_SESSION['taille']=12;
        
$_SESSION['coupure']=33;
        break;
    case 
:
        
$_SESSION['nompolice']="Gladifilthefte.ttf";
        
$_SESSION['taille']=13;
        
$_SESSION['coupure']=33;
        break;
    case 
:
        
$_SESSION['nompolice']="Gondola SD.ttf";
        
$_SESSION['taille']=11;
        
$_SESSION['coupure']=25;
        break;
    case 
10 :
        
$_SESSION['nompolice']="Harabara.ttf";
        
$_SESSION['taille']=12;
        
$_SESSION['coupure']=30;
        break;
    case 
11 :
        
$_SESSION['nompolice']="MiasScribblings~.ttf";
        
$_SESSION['taille']=11;
        
$_SESSION['coupure']=28;
        break;
    case 
12 :
        
$_SESSION['nompolice']="CHOPS___.TTF";
        
$_SESSION['taille']=15;
        
$_SESSION['coupure']=28;
        break;
    case 
13 :
        
$_SESSION['nompolice']="English_.ttf";
        
$_SESSION['taille']=15;
        
$_SESSION['coupure']=30;
        break;
    case 
14 :
        
$_SESSION['nompolice']="JOURNAL.TTF";
        
$_SESSION['taille']=17;
        
$_SESSION['coupure']=35;
        break;
    case 
15 :
        
$_SESSION['nompolice']="bgroveb.ttf";
        
$_SESSION['taille']=11;
        
$_SESSION['coupure']=28;
        break;
    case 
16 :
        
$_SESSION['nompolice']="Cicle Fina.ttf";
        
$_SESSION['taille']=12;
        
$_SESSION['coupure']=30;
        break;
        
}    

//------------------------------- Message de la carte ------------------------------------

if(isset($_POST['description'])) {              //On regarde si la variable $_POST['description'] existe 
    
$texterecup=(stripslashes($_POST['description'])); 
    
$_SESSION['texte'] = wordwrap($texterecup$_SESSION['coupure'],"\n"1);           // on formate le texte, avec un retour à la ligne tout les $coupure caractères.
}    
    
//----------------------- Nombre de cartes à imprimer par page --------------------------------------

if(isset($_POST['nbrcartes'])) 
$_SESSION['nbrcartes'] = $_POST['nbrcartes'];  
 
//-------------------------- Traitement création de la carte --------------------------------------------

if($_SESSION['ok']==true) {
echo(


    
     Voici votre carte perso, prête à imprimer ! 
    
    
    
    
     Pour enregistrer votre carte : 

    Clic droit sur la carte -> 'Enregistrer l'image sous' 
 

 ");

 switch (
$_SESSION['nbrcartes']) {
        case 
01 :
            echo (
'.time(). '" alt="cartecrée"/>  ');
            break;
        case 
02 :
            echo (
'.time(). '" alt="cartecrée"/> 
 
 .time(). '" alt="cartecrée"/>  ');
            break;
        case 
03 :
            echo (
'.time(). '" alt="cartecrée"/> 
 
 .time(). '" alt="cartecrée"/> 
 
 .time(). '" alt="cartecrée"/>  ');
            break;    
}

}
             
    
?>
Et puis voici mon fichier : create.php

Code PHP:
session_start();

$nom_image "cartes\carte".$_SESSION['numcarte'].".jpg";  // le nom de votre image avec l'extension jpeg


header ("Content-type: image/jpeg");
$image imagecreatefromjpeg($nom_image);
$color imagecolorallocate($image$_SESSION['coul1'], $_SESSION['coul2'], $_SESSION['coul3']);
ImageTTFText ($image$_SESSION['taille'], 020040,$color"polices/".$_SESSION['nompolice'],$_SESSION['texte']);

imagejpeg($image,NULL,100);



?>
Merci de m'éclaircir. Je ne suis pas très doué en création de site internet, d'ailleurs, c'est le seul site que j'ai fait. Et je suis un peu anéanti de voir qu'il ne marche pas sur mon hébergeur.

Merci à vous et à Nowwhat

acsm14
28/11/2010, 16h27
Ton lien marche, c'est dingue !

Je vais réessayer sur mon servir pour te tenir au courant.

Pour les listes (1. 2. 3....), je ne l'ai pas mis dans mon code, c'est juste que pour l'exemple, j'ai fait un copier/coller, un peu trop rapide, en incluant ces listes.

Nowwhat
28/11/2010, 01h25
A moi !

J'ai crée un fichier nommé index2.php dans mon /www (comme le index.php de l'exemple - j'ai déjà un index.php pour autre chhose)
et un fichier mon_image.php, dans le /www aussi (comme l'exemple).

Visite mon index2.php ici http://www.papy-team.fr/index2.php



J'ai un 90Plan - et je travaille avec PHP5 - codage fichiers = 'UNIX'


Pourquoi tu liste leur
1 .....
2 .....
3 .....
etc.

Mon code (mon_image.php) est comme ça:
Code PHP:
// on spécifie le type de document que l'on va créer (ici une image au format PNG
header ("Content-type: image/png");

// on dessine une image vide de 200 pixels sur 100
$image = @ImageCreate (200100) or die ("Erreur lors de la création de l'image");

// on applique à cette image une couleur de fond, les couleurs étant au format RVB, on aura donc ici une couleur rouge
$couleur_fond ImageColorAllocate ($image25500);

// on dessine notre image PNG
ImagePng ($image);
?>

acsm14
27/11/2010, 22h11
Bonsoir Nowwhat,

Merci pour ton lien très utile. J'ai donc testé phpinfo(). Et comme marqué sur l'offre perso d'ovh, la librairie GD en php est bien activé (enabled).

Par contre, pour le deuxième test, cela ne fonctionne pas. Donc le problème se trouve là.

Sur la première page, voici le code :

Code HTML:
   1. 
   2. 
   3. </span>Notre page de test<span style="color:#000080">
   4. 
   5.  
   6. 
   7. "./mon_image.php" alt="probleme"/>
   8. 
   9.  
  10.  
Et voici mon fichier "mon_image.php" :

Code PHP:
   1.    2. // on spécifie le type de document que l'on va créer (ici une image au format PNG
   
3. header ("Content-type: image/png");  
   
4.  
   5. 
// on dessine une image vide de 200 pixels sur 100
   
6. $image = @ImageCreate (200100) or die ("Erreur lors de la création de l'image");  
   
7.  
   8. 
// on applique à cette image une couleur de fond, les couleurs étant au format RVB, on aura donc ici une couleur rouge
   
9. $couleur_fond ImageColorAllocate ($image25500);  
  
10.  
  11. 
// on dessine notre image PNG
  
12. ImagePng ($image);  
  
13. ?>
Quand je lance le premier fichier, il devrait normalement m'afficher l'image créé avec GD (rectangle rouge) et finalement il ne m'affiche rien ( juste le alt "problème). L'image n'est donc pas créée.

Sachant que j'utilise le même principe pour créer mes cartes d'invitation, si vous m'aidez à résoudre ce problème de test, je pense que mon problème sera résolu.

Merci d'avance.

Nowwhat
27/11/2010, 19h00
A partir d'ici, difficile de s'informer concernant le pourquoi des tes questions.

Je m'arrête donc avec un question de base:
Le codage de tes fichiers source PHP est quoi ?

Pour que tu test le GD, utilise ces fonctions proposés ici: http://www.lephpfacile.com/cours/22-la-librairie-gd
En suite, compare les explications et exemples sur le net avec ton propre code PHP.

acsm14
27/11/2010, 18h46
Bon, je viens de réessayer, la fonction mail fonctionne ( à part un soucis d'accent, de ç ...)

Merci de m'aider, s'il vous plait !

Yannick

acsm14
27/11/2010, 18h31
Bonjour à tous,

J'ai créé un petit site, en local avec wamp. Il permet à l'internaute de créer des cartes d'invitations personnalisées. Sur la première il choisit une modèle de carte, il tape son texte, il choisit une couleur et la typo. En en cliquant sur valider, et grâce à la libraire Gd en php, sa carte (image de fond + texte) est affichée au format jpg.

A savoir que j'utilise aussi des sessions pour transmettre des variables d'une page à une autre.

Mon site marche parfaitement bien sur un serveur local (wamp) mais ne fonctionne pas une fois hébergé. Les include (header, footer) en php marche mais pas la création de carte avec GD. De plus la fonction mail() non plus ne marche pas.

Je voudrais savoir ou se trouve le soucis ? Il y a t-il un configuration à faire ? Pour info étant actuellement en test ,je n'ai pas mis le site à la racine mais dans : (exemple) www.monsite.fr/dossierTEST/index.html.

Merci pour votre aide précieuse.

Yannick