Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 28/10/2008, à 13:04

Keneyda

[How To] - [imagerotate] - GD - PHP

Bonjour,

Après avoir chercher plusieurs jours comment utiliser "imagerotate" de http://fr2.php.net/imagerotate, qui ne fonctionne pas dans GD après avoir fait un

apt-get install php5-gd

comme le confirme le tuto sur http://doc.ubuntu-fr.org/modules_php, j'ai enfin trouver la solution et tenez a vous en faire profiter pour ceux qui chercherais ou cherche comme moi, il faut tout "simplement" allez chercher le fichier "gd.so" sur http://www.cartefoi.net/compl_compl_2.php.

Ma méthode :

# Aller dans le répertoire ou se trouve les sites Web, afin de pouvoir l'envoyer en FTP facilement (évidement, on peut le placer ou l'on veut :))
cd /var/www/

#trouver ou se trouve le fichier gd.so actuellement sur son serveur
locate gd.so

#faire une copy (ça ne mange pas de pain)
# mon fichier se trouvait dans : /usr/lib/php5/20060613+lfs/gd.so
cp /usr/lib/php5/20060613+lfs/gd.so /usr/lib/php5/20060613+lfs/gd.so_copy

#Ensuite copier le nouveau fichier, que l'on a au préalable mis dans le fameux repertoire /var/www/ via le FTP (ou autre méthode)
cp /var/www/gd.so /usr/lib/php5/20060613+lfs/gd.so

# Puis redémarrer Apache pour qu'il le prenne en compte
/etc/init.d/apache2 restart

Vous pouvez ensuite tester le code PHP suivant pour faire une rotation de l'image (ne pas oubliez les droits si nécessaire...)

<?php
// File and rotation
$filename = 'test.jpg';
$degrees = 9;

// Content type
header('Content-type: image/jpeg');

// Load
$source = imagecreatefromjpeg($filename);

// Rotate
$rotate = imagerotate($source, $degrees, 0);

// Output
imagejpeg($rotate,"",100);
?>

Dernière modification par Keneyda (Le 28/10/2008, à 13:08)

Hors ligne

#2 Le 27/01/2009, à 19:10

ChRiiS

Re : [How To] - [imagerotate] - GD - PHP

Merci beaucoup pour ce post !
C'est pile ce que je cherchais, bien expliqué en plus !!
Merci 1000x !

Et pour ne pas venir pour rien, voila une tentative (non testée) pour faire du "one-shot":

cd `locate gd.so | grep php | sed s@/gd.so@@` && sudo mv gd.so gd.so.bak && sudo wget http://www.cartefoi.net/archives/gd.so

Puis relancer apache.

Hors ligne

#3 Le 28/01/2009, à 10:40

Keneyda

Re : [How To] - [imagerotate] - GD - PHP

Merci ChRiiS pour le code, je testerais à la prochaine installation big_smile

Hors ligne

#4 Le 08/09/2009, à 21:14

cpt_aimless

Re : [How To] - [imagerotate] - GD - PHP

Bonjour,

Je cherche à installer la lib GD2 (ce que je fais sans pb avec les dépôt) pour une version 8.04 LTS mais le soucis c'est que la lib n'implémente pas imageantialias().

Quelqu'un aurait une idée pour remédier à ce problème ?

Merci d'avance

cdlt

Hors ligne

#5 Le 09/09/2009, à 22:00

ChRiiS

Re : [How To] - [imagerotate] - GD - PHP

@cpt_aimless, hé bah au moins t'es bien dans le bon topic ! big_smile

Version courte (non testée), tu ouvres un terminal et tu tape :

wget http://www.cartefoi.net/archives/Informatique/GD.zip && unzip GD.zip && rm GD.zip && GD=`locate gd.so | egrep "php(.*)gd.so$"` && sudo mv $GD $GD.bak && mv gd.so $GD

Version "longue" :
1. Tu télécharge ce zip
2. Tu backup le fichier gd.so (par sécurité) qui se trouve dans /usr/lib/php.'version_de_php'./'.un_dossier.'/gd.so (chez moi : /usr/lib/php5/20060613+lfs)
2(bis). Au cas où, pour le trouver tu copie/colle dans un terminal :

locate gd.so | egrep "php(.*)gd.so$"

3. Tu extraits le gd.so du zip téléchargé en étape 1 puis tu place le gd.so qui en est sorti à l'endroit de l'ancien wink

Hors ligne

#6 Le 09/09/2009, à 23:51

toufalk

Re : [How To] - [imagerotate] - GD - PHP

Juste une question : au niveau  de la sécurité ?
Il faut faire confiance au type qui met a dispo la librairie parce que je suppose que, s'il veux, il peux faire pas mal de chose dans notre dos, non ??

Hors ligne

#7 Le 10/09/2009, à 17:46

cpt_aimless

Re : [How To] - [imagerotate] - GD - PHP

Merci pour vos réponses,

Mais malheureusement ça fonctionne pas sur mon serveur !

Lorsque j'installe la lib gd.so sur ma version 8.04 LTS (je suis en 64bits peut-être y a t il un impact ?), là j'ai le message d'erreur m'indiquant que je dois compiler PHP5 (dans mon cas) avec le support GD2.

Dans PHPINFO, le support GD disparait complètement.

Merci pour la ligne de commandes, notre ami Linux est plein de petites subtilités très intéressantes. D'ailleurs à ce sujet, comment fait-t-on pour sélectionner le chemin qui t'intéresse lorsque la variable GD contient plusieurs chemins ? (J'ai compris tout seul comme un grand newbie big_smile la commande avec le locate egrep et que echo permet d'afficher le contenu comme sous windows... Mais dans mon cas j'avais plusieurs chemin donc je n'ai pas pu exploiter les lignes de commande avec les $GD)

Et une autre solution pour le support de GD2, je suis preneur ? je vais essayer ce soir la compilation de PHP5... pour le newbie que je suis, je pense que je vais bien ramer lol... Y a un début à tout !

Cdlt

Hors ligne

#8 Le 14/09/2009, à 01:31

cpt_aimless

Re : [How To] - [imagerotate] - GD - PHP

re de retete (je suis content tongue)

Bon je crois que j'ai trouvé une solution pour implémenter le support GD dans PHP, en tout cas ça fonctionne (après des heures de compilations... Je suis un noob alors évité les ricanements smile... pour les pros du pot)

En faisant le panaché de plusieurs tutoriaux sur le net et de nombreux tests, je pense avoir réussi à implémenter GD "proprement" sur une LTS 8.04 en recompilant PHP5. J'ai mes graphs à la place de l'erreur sus mentionnée plus haut tongue

Je vais re-faire une installation de mon pc de test et vous transmettre mes infos, que je mettrai à dispo dans ce post et sur la page qui va bien (celle qui concerne le tutorial d'installation d'un serveur WEB de ce même site).

Voilà, voilà... Je vais enfin me coucher... avec le sourire et faire de beaux rêves (on s'en fou mais je l'écris big_smile)

PS 1 : Je vais essayer de respecter l'implémentation de la distrib Ubuntu
PS 2 : Pour les curieux, j'ai utilisé le dernier snapshots de PHP tongue
PS 3 : Je vous mets les infos nécessaires pour vos commentaires (je ferai la ré-install  à partir de mardi... car pas de VM pour moi faute de puissance proc et peu de moyen, et je vous laisse un temps de latence pour les réactions)

PHP Version 5.2.11RC4-dev

System     Linux serversweethome 2.6.24-24-generic #1 SMP Tue Aug 18 17:04:53 UTC 2009 i686

Build Date     Sep 14 2009 01:02:10

Configure Command     './configure' '--prefix=/usr/' '--with-apxs2=/usr/bin/apxs2' '--with-config-file-path=/etc/php' '--disable-ipv6' '--enable-inline-optimization' '--disable-debug' '--enable-bcmath' '--enable-calendar' '--with-curl' '--enable-ctype' '--enable-dbase' '--enable-discard-path' '--enable-exif' '--enable-ftp' '--with-gd' '--enable-gd-imgstrttf' '--with-freetype-dir' '--with-jpeg-dir' '--with-png-dir' '--enable-gd-native-ttf' '--enable-magic-quotes' '--enable-intl' '--enable-mbstring' '--with-mcrypt' '--with-mysql=/usr/bin/' '--with-pdo-mysql' '--enable-soap' '--with-pear' '--with-xsl' '--with-zlib' '--with-openssl' '--enable-sockets' '--with-mysql-sock=/var/run/mysqld/mysqld.sock'

Hors ligne

#9 Le 10/10/2009, à 17:46

cpt_aimless

Re : [How To] - [imagerotate] - GD - PHP

Chose promise, chose due...
Et voilà ce que j'ai fait après avoir installé, via aptitude, apache2 et mysql pour faire faire fonctionner GD correctement sous UBUNTU 8.04 LTS :

Support GD sous PHP
La mise en place du serveur WEB standard sous Ubuntu pose un problème lors de l'utilisation de la librairie GD. Certaines fonctions ne sont pas implémentées.

Pour remédier à ce problème, il est proposé de re-compiler PHP avec le support natif de GD.

Pour ce faire commencez par installer les outils de compilation :

	aptitude install build-essential

Téléchargement et compilation des codes sources FreeType
Au moment où ce document est écrit la version de FreeType est là 2.3.9 et la version de PHP utilisé est la 5.2.11.

Placez-vous dans le répertoire que vous souhaitez, dans cet article il a été créé un répertoire  php dans le répertoire home :

	mkdir /home/php
	cd /home/php

Pour télécharger FreeType, on exécute la commande :

	wget http://downloads.sourceforge.net/freetype/freetype-2.3.9.tar.gz

On décompresse les sources :

	tar -zxvf freetype-2.3.9.tar.gz

On se place dans le répertoire fraîchement décompressé :

	cd /home/php/freetype-2.3.9

On prépare la compilation :

	./configure

On compile :

	make

On installe la compilation :

	make install

Téléchargement et compilation des codes sources PHP5
Au moment où ce document est écrit la version de FreeType est là 2.3.9 et la version de PHP utilisé est la 5.2.11.

On installe les paquets suivants utiles à la compilation de PHP :

	apt-get install libpng12-* libjpeg* zlib1g gawk bison flex ^libxml2-* mcrypt libmcrypt-dev apache2-prefork-dev
	aptitude install perl libcurl4-gnutls-dev libicu-dev libxslt1-dev libcurl4-openssl-dev

On se place dans le répertoire précédemment créé :

	cd /home/php

Pour télécharger PHP, on exécute la commande (cette ligne est valable uniquement pour le 09-20-2009 entre 8:30 et 14:30 big_smile, il faut aller sur http://snaps.php.net pour récupérer le "dernier" bon fichier):

	wget  http://snaps.php.net/php5.2-200909200830.tar.gz

On décompresse les sources :

	tar -zxvf php5.2-200909200830.tar.gz

On se place dans le répertoire franchement décompressé :

	cd /home/php/php5.2-200909200830

Avant de lancer la ligne de configuration pour la compilation, nous allons rechercher l'emplacement des fichiers suivants : php.ini, mysqld.sock et mysql.h
L'objectif est d'essayer de rester conforme à l'installation d'UBUNTU. Et, théoriquement sur 8.04 LTS, les fichiers devraient se trouver dans les répertoires :
pour php.ini : /etc/php5/apache2/
pour mysqld.sock : /var/run/mysqld/
pour mysql.h : /usr/include/mysql/mysql.h

On installe les sources de mysql pour trouver le mysql.h
la commande pour trouver le fichier : find / -name mysql.h):
pour installer les sources :

	aptitude install libmysqlclient-dev

On prépare la compilation par la commande suivante :

	./configure --prefix=/usr/ --with-apxs2=/usr/bin/apxs2 --with-config-file-path=/etc/php5/apache2 --disable-ipv6 --enable-inline-optimization --disable-debug --enable-bcmath --enable-calendar --with-curl --enable-ctype --enable-dbase --enable-discard-path --enable-exif --enable-ftp --with-gd --with-freetype-dir --with-jpeg-dir --with-png-dir --enable-gd-native-ttf --enable-magic-quotes --enable-mbstring --with-mcrypt --with-mysql=/usr/bin/ --with-pdo-mysql --enable-soap --with-pear --with-xsl --with-zlib --with-openssl --enable-sockets --with-mysql-sock=/var/run/mysqld/mysqld.sock

(Il est vivement conseillé de faire une sortie vers un fichier)

On compile :

	make

On installe la compilation avec :

	make install --ignore-errors

Le make install ne fonctionnera pas car sous UBUNTU les fichiers ne sont pas placés dans les répertoires attendus.

Et, on redémarre apache :

	/etc/init.d/apache2 restart

Dernière modification par cpt_aimless (Le 05/11/2009, à 10:58)

Hors ligne

#10 Le 05/11/2009, à 10:12

jacquesDz

Re : [How To] - [imagerotate] - GD - PHP

Merci infiniment cpt_aimless !!!
je galérais avec un serveur GandiAI sur lequel le PHP (Ubuntu) n'avait pas la fonction imagerotate. J'ai suivi pas à pas (et un peu inquiet) ta recette et maintenant tout baigne !!!
Juste une info, je suis passé en php 5.3 et il m'a fallu modifier ces deux lignes dans le php.ini pour que tout fonctionne comme avant :

; Defines the default timezone used by the date functions
date.timezone = "Europe/Paris"

et

error_reporting  =  E_ALL & ~E_NOTICE & ~E_DEPRECATED

Hors ligne

#11 Le 16/01/2010, à 10:56

iometrine

Re : [How To] - [imagerotate] - GD - PHP

Bonjour,

J'ai suivi pas à pas la démarche de recompilation de php.
L'installation semble s'etre bien passé mais lorsrque j'utilise imagecreatefromjpeg j'ai l'erreur suivante alors que je ne l'avais pas avant

Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 16000 bytes)

sachant que lorsque je change le
ini_set("memory_limit",'16M');
en
ini_set("memory_limit",'50M');
j'obtiens
Fatal error: Allowed memory size of 52428800 bytes exhausted (tried to allocate 16000 bytes)

Merci de vos reponses

Hors ligne

#12 Le 18/01/2010, à 12:24

iometrine

Re : [How To] - [imagerotate] - GD - PHP

Je n'ai toujours pas résolu mon problème.

En effet j'avais installé  PHP a l'aide de apt-get install php5 (tout marche sauf imagerotate) et j'ai installé une version que j'ai compilé sans supprimer l'ancienne.

Le probleme viendrait t'il de la ?

Sinon en continuant mes recherches je suis tombé la dessus:

http://cumu.li/2008/5/13/recompiling-php5-with-bundled-support-for-gd-on-ubuntu

Qu'en pensez vous ?

Hors ligne

#13 Le 22/07/2010, à 13:20

cpt_aimless

Re : [How To] - [imagerotate] - GD - PHP

Bonjour iometrine,

as tu trouvé la solution à ton problème ?

Si la réponse est non : Peux tu transmettre ton code utilisant imagerotate ?

cdlt,

cpt aimless

Hors ligne

#14 Le 01/09/2014, à 18:33

ninie 11

Re : [How To] - [imagerotate] - GD - PHP

Bonjour,
je déterre ce top car j'ai suivi la procédure de cpt_aimless + haut  (avec les versions adaptées de freetype et php5)
et après avoir tapé "./configure --prefix=/usr/ --with-apxs2=/usr/bin/apxs2 --with-config-file-path=/etc/php5/apache2 --disable-ipv6 --enable-inline-optimization --disable-debug --enable-bcmath --enable-calendar --with-curl --enable-ctype --enable-dbase --enable-discard-path --enable-exif --enable-ftp --with-gd --with-freetype-dir --with-jpeg-dir --with-png-dir --enable-gd-native-ttf --enable-magic-quotes --enable-mbstring --with-mcrypt --with-mysql-dir=/usr/ --with-pdo-mysql --enable-soap --with-pear --with-xsl --with-zlib --with-openssl --enable-sockets --with-mysql-sock=/var/run/mysqld/mysqld.sock --with-mysqli --enable-zip --with-tidy=/usr/ --with-bz2"
(pour préparer la compilation)

j'ai au final le message configure: "WARNING: unrecognized options: --enable-dbase, --enable-discard-path, --enable-magic-quotes, --with-mysql-dir"

puis je continuer et finir la compilation (c à d "make", puis " sudo make install --ignore-errors" ...etc) ou que faut il faire pour résoudre ces erreurs?
(libmysqlclient18-dev et mysql-source-5.5  sont installés, j'utilise la version 5.5.9 de php et la dernière version de linux mint)
merci par avance!

Hors ligne