Ajoutez les drivers sqlsrv à Php7 en 5 étapes

Aujourd’hui, je vous propose un petit Mémo/Tuto simple, rapide et efficace : ajouter les drivers sqlsrv à Php7 64 bits en 5 étapes. Comme d’habitude, si vous souhaitez des compléments d’information, n’hésitez pas à me contacter. Vous êtes prêts ? C’est parti !

phpinfo pdo_sqlsrv

1. Téléchargez les .dll (archive zip) sur le Github officiel de l’équipe de développement Microsoft : https://github.com/Azure/msphpsql/releases

2. Extrayez l’archive et copiez les fichiers php_sqlsrv_7_ts.dll, php_pdo_sqlsrv_7_ts.dll et dans le répertoire /ext de php (C:/php/ext/).

3. Ouvrez le fichier php.ini et ajoutez les lignes suivantes à la suite de la liste des extensions :

extension=php_sqlsrv_7_ts.dll
extension=php_pdo_sqlsrv_7_ts.dll

 

4. Téléchargez et installez Microsoft® ODBC Driver 11 for SQL Server®

5. Redémarrez Apache

Et le tour est joué 🙂

SQL Server : Générer un hash MD5 en Transact-SQL identique au hash MD5 MySQL

Comme indiqué dans mon billet précédent, je travaille actuellement sur une migration de base de données de MySQL vers SQL Server. Ce billet est un mémo personnel (donc, un peu rédigé à la va-vite) mais qui sait… il pourrait vous être utile. ^^

SQL Server et MySQL ne retournent pas le même résultat lors d’un hash MD5 :

Différence entre hash MD5 SQL Server et MySQL
SQL Server MySQL
 HASHBYTES('MD5', 'Test')   MD5('Test') 
 0x0CBC6611F5540BD0809A388DC95A615B   0cbc6611f5540bd0809a388dc95a615b 

 

Comme vous pouvez le constater, les résultats ne sont pas tout à fait identiques. Si vous souhaitez obtenir un hash MD5 en Transact-SQL rigoureusement identique à un hash MySQL, la commande à saisir est :

CONVERT(NVARCHAR(32),HASHBYTES('MD5', cast('Test' as varchar)),2)

 

Pour les versions antérieures à SQL Server 2008, la fonction CONVERT() est inopérante. Préférez :

SUBSTRING(sys.fn_sqlvarbasetostr(HASHBYTES('MD5',cast('Test' as varchar))),3,32)

 

Et le tour est joué ^^

PS : j’avoue ne pas avoir le temps de détailler la commande. Si vous souhaitez de plus amples explications, n’hésitez pas à me contacter. 🙂

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é ! ^^

Netbeans : masquer les TODOs des composants externes

Je travaille actuellement sur un projet dans lequel j’utilise pas mal de composants externes (ex. Twig, Idiorm, datatables, TWB, etc.). Comme tout développeur, je parsème mon code de diverses annotations, dont les fameux TODO.

Malheureusement, lorsque je souhaite afficher la liste des TODOs de mon projet, je retrouve les miens noyés au milieu des TODOs des composants externes. Et autant vous dire qu’il y en a un paquet !

Netbeans todo list

 

Plutôt gênant, n’est ce pas ?

 

Après quelques recherches, j’ai enfin trouvé le moyen de créer un filtre pour n’afficher que mes TODOs. Pour ce faire :

Netbeans Action Items Menu

 

Netbeans Action Items Filter

 

Et le tour est joué ^^

Si vous avez d’autres astuces sympathiques pour Netbeans, n’hésitez pas à m’en faire part. 🙂

Visual Studio Code : Pas pour tout de suite

Finalement, je n’aurai pas tenu longtemps avec Visual Studio Code. Pourtant, je me suis fait violence pour l’utiliser. J’aurai tenu un jour et demi. Changer d’IDE est un exercice difficile. Il faut s’approprier le nouvel environnement, le personnaliser, modifier ses habitudes, etc. J’étais motivé, mais plusieurs points m’ont fait revenir à Netbeans. En vrac :

  • pas d’onglets pour les documents ouverts… la navigation par side-bar n’est pas pratique à l’utilisation
  • impossible d’ouvrir plusieurs « Projets » en même temps
  • pas de fonction « Remove Trailing Space »
  • pas de conversion auto des « tab » en « space »
  • la coloration syntaxique est austère à en pleurer
  • pas de fonctionnalités « History » permettant de faire un « revert » d’un clic
  • etc.

 

Visual Studio Code austère

 

Pourtant, l’outil n’est pas dénué d’intérêt et dispose de quelques fonctionnalités bien pratiques (exemple : la sélection multiple d’un mot surligné via Ctrl + F2 ou Ctrl + Shift + F1). Mais cela ne suffit pas à combler les manques d’un IDE tout juste naissant.

Netbeans est très lourd, c’est indéniable. Cependant, il dispose de nombreux atouts :

  • il est stable (pour peu que l’on dispose de suffisamment de RAM)
  • il dispose « out-of-box » de très nombreuses fonctionnalités
  • il dispose d’extensions abouties et parfaitement intégrées

D’autre part, je suis assez attaché aux interfaces « old-school ». Ce que j’apprécie dans Netbeans par rapport à ses concurrents ? Il dispose de fenêtres de configuration et surtout, il gère Git du feu de dieu. Bien que je n’utilise pas vraiment les outils de push, commit et add intégrés à Netbeans, je ne peux me passer de l’onglet « History ». Il permet de faire des « REVERT » d’un clic.

 

Netbeans : History

 

J’utilise Netbeans HTML5 & PHP depuis sa version 7 et, jusqu’à présent, je n’ai pas trouvé un IDE qui pousse les outils dédiés au PHP aussi loin… si, Komodo IDE mais son tarif prohibitif a littéralement calmé mes ardeurs.

Bref, pour l’instant, Visual Studio Code manque cruellement de fonctionnalités de base et sa coloration syntaxique est beaucoup trop austère à mon goût. Je vais continuer à suivre l’évolution de cet IDE mais pas en tant qu’utilisateur pour le moment.

Netbeans devrait sortir une nouvelle version en juillet. J’espère qu’elle sera plus eye-candy et plus « légère » que la version 8 sans quoi, je pense qu’ils vont finir par perdre des parts de marché !

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

Cmder ou Installer facilement Git sous Windows

L’invite de commande de Windows (toutes éditions confondues) est une catastrophe esthétique, ergonomique et fonctionnelle. Pour pallier à son manque total de fonctionnalité – convivialité – ergonomie, essayez Cmder. Vous ne serez pas déçu.

Comme l’indique son créateur sur la page github du projet :

Cmder is a software package created out of pure frustration over the absence of nice console emulators on Windows. It is based on amazing software, and spiced up with the Monokai color scheme and a custom prompt layout. Looking sexy from the start.

Qui peut se traduire par :

Cmder est un logiciel né de la frustration de l’absence d’un émulateur de Console esthétique et pratique sur Windows. Il est basé sur un logiciel incroyable agrémenté du thème Monokai ainsi que d’une interface de saisie personnalisé. « Sexy » dès son lancement.

 

Lire la suite…

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…