Symfony 3 : Installation et création d'un projet

Comme annoncé dans un billet précédent, j'ai décidé de me lancer dans l'apprentissage de Symfony.

Jusqu'à présent, j'ai toujours développé mes applications web from scratch, tout en utilisant de multiples packages grâce à composer. C'est donc tout naturellement que l'idée de passer à Symfony a fait son chemin.

L'installation de ce framework est d'une simplicité enfantine. :) Il vous suffit de suivre la documentation disponible sur le site de Symfony. Bien entendu, il vous faudra un environnement Apache, Php, Mysql fonctionnel. Pour ma part, j'utilise Wampserver 2.5... oui, je sais, il faut que je mette tout ça à jour ^^.

Pour résumer, il vous suffit de taper :

c:\wamp\www\php -r "readfile('https://symfony.com/installer');" > symfony

Puis :

c:\wamp\www\php symfony new votre_projet

 

Si tout se passe bien, le tour est joué. :)

 

Alors pourquoi en faire un billet me direz-vous ? Et bien tout simplement car j'ai tout de même un peu lutté pour résoudre le problème dont la solution est pourtant bien en évidence sur la documentation d'installation :

[GuzzleHttp\Exception\RequestException]
  cURL error 60: SSL certificate problem: unable to get local issuer certificate

 

Symfony erreur cURL

 

Dans ce cas-là, il suffit de télécharger le fichier https://curl.haxx.se/ca/cacert.pem et de mettre à jour le fichier php.ini en remplaçant la ligne :

[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
;curl.cainfo =

 

Par :

[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
curl.cainfo = "C:\wamp\bin\php\cacert.pem"

N.B. :  Bien entendu, le chemin indiqué variera selon la localisation de votre fichier cacert.pem

 

J'ai donc suivi cette procédure mais malheureusement, cette erreur me sautait toujours au visage. En fait, pour modifier le fichier php.ini, je passais par le raccourcis présent dans la barre des tâches :

Wampserver barre des taches

Or, en procédant de la sorte, ce n'est pas le bon php.ini que je mettais à jour.

Il faut modifier le php.ini directement dans le dossier C:\wamp\bin\php\php5.6.16\ (la version de php peut varier selon la version de wampserver que vous utilisez).

Et le tour est joué. :)

 

Symfony nouveau projet

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é :)

Installation d'Apache et Php sur Windows

Aujourd'hui, je vous propose un petit mémo rapide sur l'installation d'un serveur Apache et de PHP sur Windows (dans mon cas, Windows Server 2012). Comme il s'agit d'un mémo pense-bête, vous n'y trouverez pas beaucoup d'explications. Cependant, si vous avez des questions, n'hésitez pas… les commentaires sont là pour ça. :)

N.B. : le mémo ne concerne que l'installation et la configuration de base. Je n'aborderai donc pas la question de la sécurisation.

Sommaire :

  1. Téléchargement et décompression des archives
  2. Édition des fichiers de configuration httpd.conf et php.ini
  3. Test de l'installation
  4. Automatisation du démarrage du service apache (httpd.exe)

Lire la suite de Installation d'Apache et Php sur Windows

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