php5.6 sur WampServer 2.5

Note du 16/06/2017 : Cette procédure fonctionne également avec php7.1.6 sur WampServer 3.0.6 ^^

 

Cette semaine, au boulot, nous sommes passés à php5.6.16 sur notre serveur de production. Pour développer efficacement, il m’a donc fallu upgrader mon environnement de développement.

Ça tombe bien, WampServer 2.5 (Wamp, pour les intimes) permet d’installer plusieurs versions de php côte à côte et de switcher de l’une à l’autre aisément. Il faut malgré tout respecter la procédure d’installation des nouvelles (ou anciennes) versions de php que l’on souhaite ajouter.

Je vous propose donc de découvrir comment installer php5.6.16 aux côtés de la version 5.5.12 fourni de base avec Wamp.

Si ce n’est déjà fait, téléchargez WampServer 2.5 (http://www.wampserver.com/) puis procédez à son installation.
Personnellement, j’installe toujours Wamp dans le dossier proposé par défaut : c:/wamp. Si vous n’avez pas fait ce choix, pensez à adapter le chemin tout au long du tuto.

 

Lire la suite…

Php – SQL Server : SQLSTATE[IMSSP]: An error occurred translating string for input param 1 to UCS-2

Actuellement, je travaille sur une migration de SGBD. En effet, je vais passer d’un environnement MySQL à un environnement Microsoft SQL Server. D’un point de vue PHP, si la surcouche PDO (pour info, j’utilise l’ORM idiorm) facilite grandement la migration, je tombe parfois sur des erreurs qui me laissent pantois.

Pas plus tard qu’aujourd’hui, en testant l’insertion d’un enregistrement contenant des caractères spéciaux (ex. Raphaël) via formulaire, je me suis retrouvé face à cette erreur :

Erreur : SQLSTATE[IMSSP]: An error occurred translating string for input param 1 to UCS-2: Il n’y a pas de caractère correspondant au caractère Unicode dans la page de codes multi-octet cible.

 

Le problème semble provenir de l’encodage UTF-8 qui est mal pris en compte par le driver sqlsrv. Après de longues heures à parcourir les forums, wikis et autres joyeusetés, j’ai enfin trouvé la solution.

En fait, il suffit simplement d’ajouter (avant le script de connexion au serveur SQL Server) :

mb_internal_encoding( 'UTF-8' );

 

Et le tour est joué ! ^^

Ma logithèque : les indispensables

Comme énoncé dans un de mes précédents billets, j’ai procédé il y a peu à la réinstallation de Windows sur mon Yoga. Je vous propose aujourd’hui un petit tour d’horizon des logiciels composants ma logithèque de base.

Le premier logiciel que j’installe est bien entendu LE navigateur : Firefox !

Ensuite, je passe à l’installation des divers outils composants mon environnement de développement.

Type Sous Windows Sous GNU/Linux
Environnement de développement
  Serveur local Apache (MySQL Php) WampServer LAMP
  Emulateur de Terminal Cmder Yakuake (si KDE)
  Git MySysGit git
  Git dans explorateur de fichiers TortoiseGit RabbitVCS
  Dépendances PHP composer
  IDE Netbeans
  Outil MySQL MySQL Workbench
  Client FTP Filezilla
  BDD sécurisée de mots de passe Keepass

 

Développer, c’est bien, mais il me faut également divers logiciels nécessaires aux travaux « bureautiques ».

Type Sous Windows Sous GNU/Linux
Bureautique
  Suite bureautique Microsoft Office LibreOffice
  Prise de notes OneNote
  Finances personnelles BankPerfect
  Gestion des archives 7zip
  Captures d’écran GreenShot Shutter
  Traitement d’images Gimp (+ Paint.net sous Windows)
  Lecteur audio (travail en musique ^^) Clementine

 

Tous ces outils me sont indispensables que ce soit d’un point de vue professionnel ou personnel. Bien entendu, il s’agit là d’une base. Ma logithèque s’étoffe ensuite au fur et à mesure de mes besoins mais globalement, ce sont là les logiciels que j’utilise le plus au quotidien.

Maildev : interceptez, testez et visualisez les emails envoyés par votre serveur de dev

Si vous développez un site ou une appli web, vous êtes forcément confronté, à un moment ou à un autre, à devoir tester ou vérifier les emails de notification qui en émanent. Pour ce faire, il existe un superbe outil qui intercepte tous les emails envoyés depuis votre serveur de développement.

 

Qu’est ce que MailDev ?

MailDev est un serveur SMTP couplé à une interface Web (franchement jolie qui plus est) qui intercepte les emails émanant de votre serveur Web afin de les visualiser et les tester. Les emails interceptés n’étant pas délivrés, vous n’aurez plus à modifier les adresses de destinataires lors de vos tests. 🙂

MailDev dispose de nombreuses fonctionnalités vraiment très pratique. Vous en trouverez le détail sur le site de l’éditeur : https://maildev.github.io/maildev/.

Personnellement, les fonctionnalités que j’apprécie particulièrement sont :

  • simplicité de mise en place de l’outil
  • interface web claire et épurée
  • dès qu’un email est intercepté, un indicateur apparaît dans l’onglet (cf. fin du billet)
  • visualisation du header complet des emails en un clic
  • possibilité de tester la « responsivité » des emails
  • passage de la version HTML à Plain Text d’un clic

 

Lire la suite…

Php – preg_match : recherches multi-lignes et insensibles à la casse (eregi)

Ou comment passer de la fonction eregi à la fonction preg_match.

Jusqu’à présent, au boulot, notre serveur web tournait sur Php 5.2. Une migration vers Php 5.4 est imminente mais nous avons encore certains (très vieux) scripts qui tournent avec des fonctions devenues obsolètes dès la version 5.3.

Parmi ces fonctions passées de vie à trépas, il y a la fonction eregi.

La documentation PHP indique qu’il suffit de remplacer eregi par preg_match en ajoutant le paramètre i.

On pourrait donc penser qu’il suffit de remplacer :

eregi($pattern, $subject, $matches);

 

Par :

preg_match($pattern.'i', $subject, $matches);

 

En fait, ce n’est pas suffisant. Tout d’abord, il faut savoir que la fonction preg_match nécessite des délimiteurs. Vous pouvez librement les choisir. Personnellement, j’ai opté pour ~ car mon preg_match va traiter des portions de code Html. Cela m’évitera donc de devoir échapper le délimiteur. Ensuite, vu la nature de ma chaîne d’entrée (Html), il me faut un traitement multi-lignes. Je vais donc ajouter l’option de recherche (Pattern Modifier) s en plus de l’option i qui, je le rappelle, rend la recherche insensible à la casse (le même i qu’à la fin de eregi).

 

Au final, la fonction eregi doit être remplacée par :

preg_match('~'.$pattern.'~is', $subject, $matches);

 

Je résume. Pour passer de la fonction eregi à preg_match, il faut :

  • ajouter un délimiteur (par exemple : ~ ou # ou / ou ! ou autre)
  • ajouter l’option i pour une recherche insensible à la casse
  • ajouter l’option s pour une recherche sur plusieurs lignes

Et le tour est joué ^^

 

Source : http://stackoverflow.com/questions/12667369/php-preg-match-not-matching-past-line-breaks

Mon IDE du moment : Netbeans (HTML5 & PHP)

J’ai longtemps développé avec Komodo Edit. Malheureusement, le « bridage » de la version gratuite m’a assez rapidement contraint à chercher un autre éditeur. J’aurai bien aimé investir dans une licence Komodo IDE mais la réalité économique est ce qu’elle est.

 

Illustration code source

 

Je suis donc passé à Netbeans dans sa version « HTML5 & PHP ».

 

Lire la suite…

Git – Premiers pas

Billet initialement rédigé le 15/05/2014.

Git logo

 

Dans le cadre de mon activité professionnelle, je développe une application en PHP/MySQL. Jusqu’à présent, je n’avais pas l’utilité d’un outil de versioning comme Git vu que je développais seul. Cela dit, nous sommes en plein recrutement et il va bientôt falloir que je m’habitue à ne plus être le seul développeur du projet. Du coup, j’ai décidé d’apprendre à utiliser Git. Le choix de Git est totalement arbitraire. J’ai vu qu’il en existait d’autres (SVN, Mercurial, Bazaar, etc.) mais j’ai l’impression que Git a beaucoup plus le vent en poupe actuellement.

Malheureusement, j’ai l’impression que je vais devoir abandonner mon IDE préféré, Komodo Edit, car seule la version payante Komodo IDE intègre la gestion du versioning Git. Je vais donc non seulement devoir apprendre à utiliser Git, mais en plus je vais devoir prendre en main Netbeans. Bref, un beau challenge en perspective.

 

Lire la suite…

Lancer un script PHP en ligne de commande sous Windows

Comme je le disais dans mes deux derniers billets, je travaille actuellement sur des scripts de migration de données. Le problème avec ce genre de scripts qui traitent plusieurs milliers de lignes, c’est que vous êtes vite bloqué par les délais d’exécution lorsque vous les lancez via un navigateur Web.

Vous avez alors deux possibilités :

  • Fractionner le traitement des données en fixant des plages de traitement (traitement par lots)
  • Lancer votre script directement sur le serveur en ligne de commande

Fractionner le traitement est souvent fastidieux, surtout lorsqu’on doit traiter plus de 80 000 lignes.

La solution la plus simple est donc de lancer votre script directement dans une console (Invite de commandes). Pour ce faire, ouvrez une console et rendez vous dans le répertoire contenant le fichier php.exe. Si vous utilisez WampServer, le chemin par défaut est :

C:\wamp\bin\php\php5.5.12>

 

N.B. : la version de PHP varie selon votre version de wamp

Pour lancer votre script, il vous suffit d’exécuter la commande suivante :

C:\wamp\bin\php\php5.5.12>php.exe -f c:\chemin\vers\votre\script.php

 

Et le tour est joué ! ^^

Si vous exécutez souvent des commandes PHP en ligne de commandes, vous pouvez également déclarer le chemin de votre php.exe dans vos variables d’environnement du système. Cela vous évitera de devoir vous positionner dans le répertoire de php avant de lancer vos scripts. Pour plus d’informations, n’hésitez pas à consulter la documentation PHP sur php.net : Ligne de commande PHP sous Microsoft Windows

Komodo Edit : un éditeur PHP puissant et quasi complet

Ce billet, initialement rédigé le 08/04/2014, n’est plus du tout d’actualité car depuis quelques mois j’utilise NetBeans. Cependant, il fait partie d’une suite de billets concernant mes outils de développement. Je le publie donc tout de même pour marquer la chronologie de mes choix.

 

Illustration code source

 

Je suis développeur Web depuis de nombreuses années. J’ai démarré, au début des années 2000, avec un petit éditeur intitulé Weaverslave. Devant l’absence de mise à jour de ce dernier, je suis ensuite passé à Notepad++. Puis, j’ai découvert Linux (ou GNU/Linux pour les puristes). Comme beaucoup, j’ai commencé par me faire la main avec Ubuntu (6.06) puis je suis passé d’une distribution à l’autre (Ubuntu, Frugalware, Debian, etc).

 

Lire la suite…