Archive

Archives pour la catégorie ‘PHP’

Exécuter du PHP dans du code 4D ?

15/05/2010 Comments off
Rating 2.50 out of 5
[?]

4DLe terminal de Mac OS enferme de nombreux outils vraiment utiles, voir indispensable aux développeurs. Par exemple, il est possible à partir d’une commande du terminal d’exécuter du PHP.
Par exemple, vous avez besoin de calculer un MD5 ou évaluer une expression.

Allez dans le terminal, tapez la ligne qui suit et Ho Miracle votre MD5 s’affiche.

$php -r "echo(md5('password'));"
5f4dcc3b5aa765d61d8327deb882cf99

Hum hum, cela me donne une idée d’utilisation dans 4D. En utilisant la commande LANCER PROCESS EXTERNE, je devrais donc pouvoir utiliser du PHP dans du code 4D ?

Hé bien testons :

$dbquote:=Caractère(34)
$stin:=""
$stout:=""
$err:=""
$password:="password"
LANCER PROCESS EXTERNE("php -r "+$dbquote+"echo(md5('"+$password+"'));"+$dbquote;$stin;$stout;$err)

Alerte($stout)

Euréka, j’ai bien une alerte contenant mon MD5…

Nous pouvons étendre cette utilisation en exécutant un fichier PHP avec l’option php -f … pour cela je vous laisse lire la doc en faisant man php dans le terminal.


Categories: 4D, Développement, Mac OS X, PHP Tags:

Utiliser correctement la fonction mail de PHP

13/11/2009 Comments off
Rating 4.50 out of 5
[?]

PHPLa plupart du temps l’utilisation  la fonction mail de PHP par les développeurs n’est pas correcte, cela se traduit pas la non réception des retours d’erreurs concernant les mails expédiés à des adresses erronées.

Dans le manuel de php la syntaxe de cette fonction est la suivante :

bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )

La plupart des développeurs utilisent cette fonction de manière basique, ce qui n’est pas une bonne idée.

Si vous désirez recevoir vos mails d’erreur, composez votre code sous cette forme :

<?php mail($to, $subject, $message, $headers, "-finfo@example.com");

?>

Il est également possible de s’affranchir de la commande mail() de PHP en écrivant sa propre classe utilisant le protocol SMTP. Vous trouverez un exemple de cette pratique sur ce site.

Categories: PHP Tags: ,

Installer GD pour PHP5 sur Mac OS X Server

03/09/2009 Comments off
Rating 3.00 out of 5
[?]

Ce qui nous intéresse aujourd’hui est la compilation de l’extension GD pour PHP5. L’environnement doit être :

– Mac Os X Léopard 10.5.3 (ou plus) et Mac OS X Léopard Server
– Xcode 3.x
– X11
– X11 SDK
– Apache 2
– PHP 5

Mac Os X ne dispose pas en natif de la librairie JPEG. Il faut donc commencer par la compiler et l’installer. Pour ce faire :

1) Ouvrez le terminal
2) tapez les commandes suivantes (sans le $):

$ mkdir -p /SourceCache
$ cd /SourceCache
$ curl -O http://www.ijg.org/files/jpegsrc.v6b.tar.gz

Note : La dernière commande permet de télécharger le fichier et l’enregistrer dans le dossier SourceCache qui se trouve à la racine du disque dur. Il est possible de télécharger l’archive par le navigateur. Enregistrez l’archive dans le dossier SourceCache qui est à la racine du disque dur. Puis décompressez le !

3) Nous allons maintenant décompressez l’archive si vous ne l’avez pas déjà fait :

$ tar xzpf jpegsrc.v6b.tar.gz

4) Nous allons rentrez dans le dossier puis préparer la compilation de la librairie :

$ cd /SourceCache/jpeg-6b
$ cp /usr/share/libtool/config.sub .
$ cp /usr/share/libtool/config.guess .

Les deux dernière commande permettent de copier des fichiers dans le dossier en cours. Il faut bien mettre la commande complète avec le « . » (point).

Maintenant les choses se complique un peu ! Il va falloir connaitre n’architecture de votre Mac. Pour cela allez dans le menu pomme puis « A propos de ce Mac ».

Si en face de processeur vous avez :

– PowerPC G3 (très tare)
– PowerPC G4
– Core Duo
– Pentium 4 (parfois écrit P4)

Et bien votre ordinateur a une architecture 32 bits !

Si vous avez :

– PowerPC G5
– Core 2 Duo
– Xeon

Et bien votre ordinateur a une architecture 64 bits !

5) Maintenant que vous connaissez votre architecture choisissez la commande pour préparer la compilation selon votre cas :

Architecture 32 bits :

$ ./configure –enable-shared

Architecture 64 bits :

$ MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS= »-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp » CCFLAGS= »-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe » CXXFLAGS= »-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe » LDFLAGS= »-arch ppc -arch ppc64 -arch i386 -arch x86_64 -bind_at_load » ./configure –enable-shared

Attention : tout doit être sur la même ligne !

6) La compilation :

$ make

7) Préparation à l’installation :

$ sudo mkdir -p /usr/local/include
$ sudo mkdir -p /usr/local/bin
$ sudo mkdir -p /usr/local/lib
$ sudo mkdir -p /usr/local/man/man1

Note : lors de la première utilisation de « sudo » il vous demandera votre mot de passe tapez-le. Vous avez droit à 3 essai avant que cela annule la commande ! Rien ne s’affiche lors de la saisie du mot de passe et c’est normal !

8) Installation :

$ sudo make install

Maintenant les pré-requis pour la compilation de GD en temps que module de PHP est complète ! Nous allons pouvoir nous concentrer sur PHP et GD :

1) Le terminal est encore ouvert (si c’est pas le cas ouvrez le)
2) Retournons dans notre cache de code source :

$ cd /SourceCache

3) On télécharge les sources de PHP. Les sources contiennent les dossiers d’extension pour PHP.

Nous le téléchargeons là ou Apple à mis à disposition les codes sources de la partie libre de Mac Os X ! Il pèse 7,5Mo environ !

$ curl -O http://www.opensource.apple.com/darwinsource/10.5.2/apache_mod_php-44/php-5.2.5.tar.bz2

4) On décompresse :

$ tar xjf php-5.2.5.tar.bz2

5) On rentre dans le dossier de PHP puis des extensions puis GD :

$ cd /SourceCache/php-5.2.5/ext/gd

6) on prépare l’extension à devenir une extension de PHP avec la commande :

$ phpize

Note : si la commande indique des erreurs de permission exécutez : « $ sudo phpize » et saisissez votre mot de passe. Sudo garde le mot de passe 5 minutes. Passez ce délai il redemande le mot de passe pour continuer.

7) Encore une fois choisissez la commande qui correspond à votre architecture :

Architecture 32 bits :

$ ./configure –with-zlib-dir=/usr –with-jpeg-dir=/usr/local/lib –with-png-dir=/usr/X11R6 –with-freetype-dir=/usr/X11R6 –with-xpm-dir=/usr/X11R6

Architecture 64 bits :

$ MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS= »-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp » CCFLAGS= »-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe » CXXFLAGS= »-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe » LDFLAGS= »-arch ppc -arch ppc64 -arch i386 -arch x86_64 -bind_at_load » ./configure –with-zlib-dir=/usr –with-jpeg-dir=/usr/local/lib –with-png-dir=/usr/X11R6 –with-freetype-dir=/usr/X11R6 –with-xpm-dir=/usr/X11R6

Note : Selon certain critère pas très bien connu, il arrive que la commande génère l’erreur suivante : « /usr/X11/lib/libpng12.0.26.0.dylib: No such file or directory ». Dans ce cas éditez le fichier : « /usr/X11/lib/libpng.la » par la commande : « $ sudo pico /usr/X11/lib/libpng.la ».

Rechezchez les lignes :

library_names=’libpng12.0.dylib libpng12.dylib libpng12.0.26.0.dylib’
current=26
age=26

et remplacez les par :

library_names=’libpng12.0.dylib libpng12.dylib libpng12.0.24.0.dylib’
current=24
age=24

Attention : évitez le copier-coller ! Des caractères spéciaux pourait géner !

Note : l’utilisation de pico se fait avec les racourcis suivant : Ctrl + W pour faire une recherche; Ctrl + O pour enregistrer le fichier; Ctrl + X pour quitter.

8) Compilation de l’extension :

$ make

9) Installation de l’extension :

$ sudo make install

Résultat de l’installation :

iMac-G5:gd admin $ sudo make install Password: Installing shared extensions: /usr/lib/php/extensions/no-debug-non-zts-20060613/ Installing header files: /usr/include/php/

Copier le chemin se trouvant après : « Installing shared extensions: « . Cela sera utile pour la configuration de PHP.

10) configuration de PHP pour prendre en compte les extensions.

$ sudo pico /etc/php.ini

La première chose à faire est de rechercher (raccourci : Ctrl + W ) le texte : « extension_dir » (sans les guillemets).

La valeur par défaut est : extension_dir = « ./ »

Mettez un ; (point-virgule) au début de la ligne pour la désactivez puis saisissez : extension_dir = «  »

et collez entre les guillemet le chemin que vous avez copier avant d’éditer le fichier de configuration de PHP.

Cela doit donner :

extension_dir = « /usr/lib/php/extensions/no-debug-non-zts-20060613/ »

Puis faire une recherche de « extension= »

Avant la ligne « ; Windows Extensions » ajoutez des lignes vide et sur l’une d’elle écrivez :

extension=gd.so

Maintenant enregistrez (Ctrl + O puis entrée) puis quittez pico (Ctrl + X).

Dernière chose : redémarrer le serveur Apache par la commande :

$ sudo apachectl restart

Un petit test pour voir si PHP charge bien la l’extension ?

tapez dans le terminal :

$ php -i|grep -i gd

Note : la barre vertical s’obtiens par le raccourcis : alt (option) + Maj + L

Le résultat doit être à quelque chose près :

gd GD Support => enabled GD Version => bundled (2.0.34 compatible)

Si rien n’apprait c’est que l’extension n’est pas chargé!

Autre moyen de le savoir :

1) tapez dans le terminal :

$ echo «  » > /Library/WebServer/Documents/info.php

2) puis dans safari allez à l’adresse : http://localhost/info.php

3) Cherchez GD. Si vous l’avez, l’extension est chargé !

Merci d’avoir suivi mon tutoriel. Il est le résultat d’une journée de travail ! N’hésitez pas à me faire part de vos retour !

Categories: Internet, Mac OS X, PHP, Serveur Tags:

Mac OS X Server et GD (PHP)

03/09/2009 Comments off
Rating 3.00 out of 5
[?]

Il n’y a aucun danger à appliquer la nouvelle mise à jour. Alors vous vous êtes lancé.

Au redémarrage vous vous rendez compte que votre installation a la mano de la librairie GD (qui permet la manipulation d’images avec PHP) est cassée.

Je ne sais pas pourquoi GD n’est pas inclus dans la distribution de PHP de Mac OS X Server, il y a peut-être une très bonne explication, mais je sais que presque toutes les mises à jour de sécurité et les mises à jour du système cassent GD.

Même, et surtout, quand Apple ne précise rien à ce sujet, quand les détails de la mise à jour ne mentionnent rien à propos de PHP, et bien à la sortie, re-boum !, plus de GD.

Petit truc pour éviter de passer sa vie à compiler :

sudo cp /usr/libexec/apache2/libphp5.so /usr/libexec/apache2/libphp5.so.old

sudo cp /usr/bin/php /usr/bin/php.old

Et ensuite, vous réincrémentez votre sauvegarde en faisant les commandes inverses. Vous redémarrez Apache et, re-re-boum !, tout rentre dans l’ordre.

Categories: Apache, Mac OS X, PHP, Serveur Tags: