You are currently browsing the archives for the Php category.

Mini compte-rendu du petit Déjeuner symfony du 23 avril

J’ai pu assisté à une conférence mené par Fabien Potencier, le 23 avril au Centre Etoile Saint Honore sur le framework dont il est l’initiateur, symfony auquel il continue d’y contribuer via sa société Sensio Labs.

Dés mon arrivé, j’ai été surnommé Mr Jelix (amicalement bien sûr). Mon but n’était pas vraiment de dire symfony ça pue et jelix c’est bien mais vraiment de pouvoir poser des questions (pas forcement les plus intelligentes :p) et d’avoir une présentation de symfony par son auteur et ses contributeurs dans le cadre du choix d’un framework, une problématique qui se présente de plus en plus dans une offre de plus en plus pléthorique.

A l’accueil, on vous donne un petit sac avec quelques brochures, un callepin et une clé usb aux couleurs de Sensio Labs et de symfony. Un petit-déjeuner copieux était servi en attendant le début de la conférence.
J’ai pu discuté un moment avec Nicolas Perriault et voir un peu ce que symfony pouvait apporter au niveau des projets et j’ai pu aussi en apprendre davantage sur le framework.

La conférence était intéressante avec la possibilité de poser des questions à différents interlocuteurs, d’en savoir un peu plus.
Je n’avais pas d’à priori sur symfony mais pour le moment je reste sur mon impression de framework qui peut tout faire (ce qui est déjà très bien) mais que c’est au sacrifice bien sûr à mon avis des performances (je parle bien sûr de projets qui n’ont pas le budget serveur de yahoo par exemple), ce qui est normal.
Il ne colle pas vraiment avec mon idée de ce que je me fais d’un framework mais qui reste une option intéressante.
Sensio Labs propose maintenant un support sur symfony qui ne m’a pas trop convaincu en tant que développeur par rapport au rapport prix / type de support. Maintenant, c’est un plus non négligeable pour symfony.

A tester pour vous faire votre propre opinion.

Quelques idées reçues sur Jelix

Jelix est un excellent framework, malheureusement il ne jouis pas encore d’une réputation comme symfony (j’ai fait gaffe à bien l’écrire hein) ou Zend Framework et pour cela, beaucoup de développeurs ou d’entreprises peuvent se poser la question de son choix.
C’est pour cela que j’ai rédigé ce petit billet afin de tordre un peu le coup aux idées reçues qu’on pourrait avoir sur Jelix.
Read the rest of this entry »

Présentation de Jelix

Avant de commencer un petit tutoriel sur Jelix, je crois bon de commencer par vous le présenter afin d’avoir les idées un peu plus clair avant de débuter tout développement avec ce dernier.

Jelix est un framework initié par un français Laurent Jouanneau qui a l’origine si je ne dis pas de bêtise avait bossé sur Copix.

Cette article va présenter plus en détails les différents API de Jelix et permettre par la suite d’aborder plus sereinement un petit tutoriel.

Read the rest of this entry »

Les différentes solutions Apache, MySQL, PHP sous Mac

Il existe sous MacOS X plusieurs façons d’obtenir un MAMP (Mac Apache MySQL Php) :

- MAMP
- XAAMP
- Utilisation des packages pré-compilés
- Compilation soi-même

Même si Leopard est fourni désormais avec php 5, certaines librairies sont manquantes et il peut être utile de se faire sa propre installation de zéro.

MAMP

A203C0DC-EA20-4908-80BF-099AF4BFDB2D.jpg

MAMP est la solution tout en un qui ne nécessite aucune connaissance particulière. Un simple glisser-déposer dans le dossier Application et vous avez vos serveurs qui sont prêt à démarrer.
Aucune configuration particulière.
L’avantage est qu’en quelques clicks on a une installation complète d’une solution basé sur Mac MySQL et PHP. Néanmoins, dés lors qu’on souhaite pousser la solution et par exemple installer une librairie via Pear, on constate que cela ne marche pas vraiment et on se retrouve coincé :/.
MAMP est donc à recommandé pour les personnes qui n’ont pas de besoins spécifiques et qui peuvent se contenter des librairies fournies.

XAMPP

9E338BF2-2F64-4E23-945B-AB9459CFACEC.jpg

XAMPP est une solution que j’ai découverte récemment grâce à un commentaire sur mon blog. Il fonctionne un peu comme MAMP sauf qu’il fournit également Perl. C’est encore une version en cours de développement qui est proposé, donc certaines fonctionnalité ne marche pas totalement.
J’ai notamment eu quelques soucis à faire marcher pear avec certaines librairies ou framework.
A garder de côté pour le moment. Je pense qu’il aura plus de succès que MAMP d’ici les mois qui viennent.

Utiliser les packages pré-compilés

A défaut de pouvoir utiliser les différentes solutions toute faites, il faut mettre un peu la main dans la cambouis. Par chance, Marc Liyanage maintient depuis quelques temps des versions compilés de php pour Tiger et Leopard.
Même si la version Leopard porte la mention bêta, elle fonctionne parfaitement et ne nécessite que quelques lignes de commandes pour pouvoir fonctionner pleinement.
Nous n’avons besoin que de php car Apple fournit par défaut avec MacOS X un serveur Apache parfaitement fonctionnel. Nous allons donc garder cette version d’apache qui va nous faciliter la vie.

Avant toute chose il faut télécharger la version qui correspond à votre version de MacOS (voir ci-dessus). Double-cliquer sur le fichier en question pour obtenir un dossier php5.
Il faut maintenant ouvrir le Terminal (que l’on peut trouver dans /Applications/Utilitaires/) pour y taper les lignes suivantes :

# il faut se rendre dans le dossier où vous avez décompresser php
cd dossier_ou_vous_avez_decompresser_php
# on va copier le dossier décompressé dans la dossier /usr/local
sudo mv php5 /usr/local/

On a maintenant une installation de php fonctionnelle qui est installé, il ne reste plus qu’à configurer l’ensemble.

# cette commande peut être tapé de n’importe où
cp /usr/local/php5/lib/php.ini-recommanded /usr/local/php5/lib/php.ini

Il faut à présent avec l’éditeur de votre choix modifier le fichier /etc/apache2/httpd.conf pour qu’il utilise la nouvelle version de php fraîchement installé.
Il faut remplacé la ligne suivante

LoadModule php5_module libexec/apache2/libphp5.so

par

LoadModule php5_module /usr/local/php5/libphp5.so

Afin de pouvoir utiliser nos commandes php à n’importe quoi sans les préfixer de /usr/local/php5/bin, il faut modifier la variable PATH de notre environnement. Pour cela, à l’aide du terminal, tapez :

# on va dans notre répertoire personnel
cd $HOME
nano .bash_profile

Dans ce fichier, il faut rajouter les lignes suivantes :

export PATH=$PATH:”/usr/local/php5/bin”

Sauvegarder le fichier. Pour que les modifications soit effectives, il faut fermer votre fenêtre du terminal et en ouvrir une nouvelle. Il vous suffit de taper la commande php –version afin de vérifier que c’est la bonne version. Pour cela, il faut vérifier le numéro de version, la 5.2.5 et la date de compilation built: Feb 20 2008 12:30:47.
Vous obtiendrez une sortie comme celle-ci :

BART:~ despe$ php –version
PHP 5.2.5 (cli) (built: Feb 20 2008 12:30:47)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies

Il ne reste plus qu’à redémarrer apache en tapant toujours dans le terminal

apachectl restart

Pour les allergiques à la ligne de commande, il est possible de passer directement par les préférences systèmes

pref_sys_1.jpg

Il suffit de cocher, décocher l’option partage web pour redémarrer Apache.

pref_sys_2.jpg

Pour accéder à vos sites, ils doivent être stockés dans le dossier Sites de votre répertoire personnel.

Installation de MySQL

L’installation de MySQL se trouve ici. Elle est simple à utiliser, il suffit de faire suivant, suivant en lisant néanmoins bien les éventuelles indications.

Une fois, l’installation terminé, je vous invite à installer le fichier dont l’extension est prefpane, cela va rajouter un panneau dans les préférences systèmes pour démarrer ou stopper le serveur MySQL.

Une dernière étape est requise pour autoriser votre utilisateur à lancer MySQL. Avec le finder, il faut se rendre dans la dossier /usr/local/mysql/. Etant donné que certains dossiers sont masqués par le finder, il faudra utiliser le menu “Aller” et “Aller au dossier” (avec le clavier POMME+SHIFT+G).
Une fois dans ce dossier, POMME+I sur le dossier data. Les informations de Partage et permissions vont être modifié. Il suffit de cliquer sur le + pour rajouter votre utilisateur.
Il faut que ces modifications s’appliquent au dossier et à ses sous-dossiers. Il faut pour cela cliquer sur l’icône à côté du - et sélectionner Appliquer aux éléments inclus.

Enfin, pour pouvoir accéder aux programmes de mysql (le client, mysqladmin, etc…), il faut modifier le .bash_profile comme nous l’avons fait pour php.

# on va dans notre répertoire personnel
cd $HOME
nano .bash_profile
export PATH=$PATH:”/usr/local/php5/bin”:”/usr/local/mysql/bin”

Attention, toutefois votre serveur MySQL dispose d’un compte root sans mot de passe avec tous les accès. Il ne faudra pas oublier de modifier ces paramètres.

Compilation soi-même

MacOS X étant un Unix, il est possible de compiler certains logiciels grâce à des gestionnaires de paquet comme FinkPorts ou DarwinPorts.
Néanmoins, l’opération est relativement longue selon le processeur de votre machine et assez compliqué à mettre en oeuvre pour un débutant.
Elle a le mérite d’exister.
Pour pouvoir utiliser ces outils, il vous faut les outils développeurs fourni sur votre dvd d’installation de MacOS X.

A quand une version de WAMPServer pour Mac ? :-)

Références et diverses sources : Olivier Mansour

Php et Curl pour poster son status twitter sur n’importe quel site

Twitter est de plus en plus utilisé (même moi qui au début y trouvait un attrait relatif) et il est assez simple de publier son statut sur la plupart des grandes plate-formes communautaires.

Que se passe-t-il si on a envie d’afficher son statut si un site qui ne permet pas d’afficher son statut mais qui permet de modifier sa description ou sa signature ?
Même si la plupart des sites communautaire permet d’afficher son dernier twit, c’est un bon cas pratique pour découvrir cURL et son utilisation avec php.

Nous allons voir dans cette article comment faire avec PHP et cURL pour pouvoir le faire de maniére automatisé.

Pré-requis

Il faut avoir PHP compilé avec le support cURL sinon impossible de faire ses manipulations.

cURL, c’est une technique de curling ?

cURL est un utilitaire qui existe en ligne de commande et qui permet à l’instar de wget d’aller récupérer des pages, images, etc.. sur Internet.
Il sait gérer les formulaires, les cookies, etc…
cURL se comporte comme un navigateur web sans interface graphique.

PHP supporte cURL et permet son utilisation de maniére totalement transparente et simplifié.

Dans le cadre de notre projet, nous avons besoin de :
- pouvoir nous identifier auprès du site
- pouvoir poster un formulaire de données
- pouvoir récupérer le contenu d’une page donnée

Créeons notre objet

Avant de commencer à jouer avec cURL, il faut d’abord prendre en compte un paramétre important.
PHP s’execute avec un temps d’attente maximum de 30 secondes. Nous allons surcharger ce paramétre afin d’éviter que notre script s’arrête en plein milieu d’un envoi d’information.

En effet, selon le temps de réponse du site, il peut arriver que cela prenne rapidement plus de 30 secondes.
Pour cela, nous allons utiliser la ligne de code suivante afin d’éviter de rencontrer ce problème :


/* suppression du temps limite */
set_time_limit(0);

cURL s’utilise de la manière suivante :
- on initialise la librairie et on récupéré une instance
- on définit les options
- on exécute l’action (récupération de page, envoie de données, etc…)
- on récupère le retour (contenu ou code http)
- on libère l’instance

Pour initialiser l’instance, rien de bien compliqué :


$monInstance = curl_init();

Voyons maintenant quelles options peuvent nous interresser. Si on fait un petit détour par le manuel de php, on constate qu’il y a des lignes et des lignes d’options pas souvent facile à comprendre.

J’en ai sélectionné quelques unes qui sont indispensables pour les actions que nous allons effectué.

Nom Type Description Exemple
CURLOPT_RETURNTRANSFER boolean par défaut, cURL affiche directement le contenu de la page ou de la ressource souhaité, pour éviter de s’encombrer d’affichage surperflu, le contenu de la page sera retourné lors de l’exécution de l’action. true
CURLOPT_HEADER boolean Evite d’avoir les headers HTTP dans le contenu de la page ou de la ressource false
CURLOPT_USERAGENT chaîne de caractères Permet de faire passer cURL pour tel ou tel navigateur Mozilla/5.0 (Macintosh; U; Intel Mac OS X; fr; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9
CURLOPT_TIMEOUT temps en secondes le temps de réponse maximal avant de stopper le processus. 60
CURLOPT_FOLLOWLOCATION boolean spécifie si on suit les redirections http ou non. true
CURLOPT_MAXREDIRS entier le nombres de redirections maximum avant de considérer qu’il y a un problème. 10
CURLOPT_COOKIESESSION boolean true
CURLOPT_COOKIEJAR fichier un fichier pouvant être modifié par l’utilisateur qui lance apache et qui va contenir les variables des cookies des sites visités ./cookie.txt
CURLOPT_URL url l’url que l’on souhaite utiliser http://www.despe974.org/
CURLOPT_POST boolean permet de dire que les valeurs transmises sont en POST true
CURLOPT_POSTFIELDS chaine de caractères spécifie les valeurs des différents champs d’un formulaire (ne pas oublier de spécifier toutes les valeurs du formulaire même les hidden et les submit) login=tarte&password=bidule

Pour définir une option, il suffit d’utiliser curl_setopt comme ci-dessous :


curl_setopt($monInstance, NOMDELOPTION, VALEUR);

Une fois l’instance configuré comme nous le souhaitons, il ne reste plus qu’à lancer notre action (envoi de formulaire, récupération de contenu, etc…)


$contenu = curl_exec($monInstance);

La variable contenu va contenir le code HTML de la page ou le contenu binaire du fichier que vous avez souhaité récupérer.

Pour obtenir plus d’informations sur comment la requête HTTP s’est passé, il est possible de récupérer un tableau contenant ces paramètres.


$info = curl_getinfo($monInstance);

Enfin, si on ne souhaite plus utiliser notre instance, il faut la libérer avec curl_close. Si vous souhaitez récupérer une autre page, etc… il est possible d’utiliser la même instance en changeant l’option CURLOPT_POST et éventuellement celle qui vous sont nécessaire.


curl_close($monInstance);

Voici un exemple par exemple pour se logguer sur le site City974


$monInstance = curl_init();
curl_setopt($monInstance, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($monInstance, CURLOPT_HEADER, false);
curl_setopt($monInstance, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X; fr; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9');
curl_setopt($monInstance, CURLOPT_TIMEOUT, 60);
curl_setopt($monInstance, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($monInstance, CURLOPT_MAXREDIRS, 10);
curl_setopt($monInstance, CURLOPT_COOKIESESSION, true);
curl_setopt($monInstance, CURLOPT_COOKIEJAR, './cookie.txt');
curl_setopt($monInstance, CURLOPT_URL, 'http://www.city974.com/ident/identification.php');
curl_setopt($monInstance, CURLOPT_POST, 1);
//remplacer les paramètres par vos informations
curl_setopt($monInstance, CURLOPT_POSTFIELDS, 'pseudo=ahahahaha&mdp=ouioui&retenir=1&Submit=Ok');
$contenu = curl_exec($monInstance);
$info = curl_getinfo($monInstance);
//affiche le contenu pour voir qu'on est loggué
echo $contenu;
curl_close($monInstance);

Récupérer son dernier Twitt

Twitter comme tout bon site web 2.0 propose une API assez simple à utiliser.
Il suffit d’utiliser un cURL avec l’url adéquate pour récupérer ce qui nous intéresse.

L’url pour récupérer nos tweets sont de la forme http://www.twitter.com/statuses/user_timeline/username.format?count=10 où username est votre nom d’utilisateur et format le format dans lesquels vous souhaitez récupérer ces informations (xml et json principalement).

Voici comment faire avec cURL pour récupérer ce flux.


$monInstance = curl_init();
curl_setopt($monInstance, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($monInstance, CURLOPT_HEADER, false);
curl_setopt($monInstance, CURLOPT_TIMEOUT, 60);
curl_setopt($monInstance, CURLOPT_MAXREDIRS, 10);
curl_setopt($monInstance, CURLOPT_URL, 'http://www.twitter.com/statuses/user_timeline/despekiroule.xml?count=10');
$contenu = curl_exec($monInstance);
$info = curl_getinfo($monInstance);
$xml = $curl->getContent('');
$twitts = new SimpleXMLElement($contenu);
$lastTwitt = $twitts->status[0]->text;

Conclusion

Nous avons vu de manière succincte comment utiliser cURL pour récupérer et poster des informations dans le cadre précis de pouvoir poster son statut Twitter un peu n’importe où.
Un exemple plus complet est disponible ici.

Petit Déjeuner Symfony

Même si c’est pas mon framework de prédilection (je suis 100% Jelix), je vous relais l’information.

Symfony est un framework PHP orienté objet développé par Fabien Potencier.
Il reprend des designs patterns comme MVC notamment pour la séparation des couches.

Ce petit déjeuner aura lieu le jeudi 10 Avril au Centre Etoile Saint Honore (Paris 8ème) à partir de 8h45.

Prochain rendez-vous le mercredi 23 avril.

Pour s’inscrire c’est par ici.

Recherche de conférenciers pour le forum PHP 2008

Le forum PHP 2008 , organisé par l’Afup qui se tiendra du 8 au 9 décembre, est en quête de conférenciers.
Si vous pouvez couvrir un des sujets suivants, contacter les au plus vite :
- Comment gérer un projet PHP (outils, méthodes, …)
- Assurer la qualité du code
- Le Droit sur Internet
- Monter son entreprise autour de PHP
- La montée en charge
- Connecter des services (web services)
- Les interfaces riches (choix technologie, implémentation, …)

Conférences sur PHP en avril, mai 2008

Quelques conférences dans les mois à venir, auquel je compte y aller, je vous les listes au cas où vous seriez intéresser ou passer à côté de l’information.

- Apéro PHP le 22 avril à la Panfoulia à partir de 20h00, 20h30. [s'inscrire]

- Industrialiser les développements PHP, le cas eTF1, le 29 avril de 20h00 à 21h30 à la FIAP. [s'inscrire]

- PHP et Silverlight animé par Christophe Lauer et Pierre Lagarde, le 14 mai à la Cantine (Paris) à partir de 19h00. [s'inscrire]

Ca me fait penser qu’il faudrait que j’adhère à l’AFUP.

Debian et PHP

Debian est la distribution qu’on utilise au travail malgrés que je sois plutôt gentoo-iste (autrefois sourcemage-iste).
Pour de multiples raisons, je préfère utiliser une gentoo car j’ai le contrôle sur beaucoup plus d’aspects lors de la mise en place de mon serveur. Ce qui n’est pas le cas avec une autre distribution, sauf si on compile les différentes logiciels à la mano.
Malheureusement ou heureusement d’ailleurs, on a pas toujours le choix ou le dernier mot dans le choix de l’OS et des composants du serveur et donc il faut faire avec.
Je me suis rendu compte âpres de multiples arrachages de cheveux dans le cadre de test des procédures stockées en mysql 5 que la version de php était compilé avec le support mysql 4. Ce qui faisait que malgrés mes efforts et passant par des api diverses et variées, il n’était pas possible de récupérer un résultat cohérent.

Pour outrepasser ces limites, il existe un repository de paquets supplémentaires qui se nomme DotDeb et qui permet d’avoir des paquets un peu plus à jour et mieux compilés.

Comment récupérer des données sur une ou plusieurs pages d’un site internet ?

Dans le cadre de ma création d’entreprise, j’ai besoin d’avoir des chiffres sur mes potentiels concurrents sans me mettre hors la loi bien sûr. J’ai besoin de savoir par exemple l’évolution en terme de membres / clients, combien de personnes sont connectés de tel heure à tel heure.
Ces outils sont pratique pour se faire une idée sur son marché éventuel et éventuellement faire un peu de veille.
Le temps étant limité, le mieux serait que le tout soit automatisé et qu’à tout moment, je puisse consulter les évolutions de ce que je souhaite mesurer ou comparer.

Read the rest of this entry »

Flux RSS

Twitter

http://snurl.com/295dk arghhhhhh