Avertissement








télécharger 46.77 Kb.
titreAvertissement
date de publication06.07.2017
taille46.77 Kb.
typeDocumentos
ar.21-bal.com > loi > Documentos
Framework PHP sous IIS

Zend Framework (http://framework.zend.com)

Avertissement


Dans le cadre de cet article, nous avons besoin d’un environnement complet de développement (PHP sous IIS7 et SQL Server Express 2008). La mise en place de cet environnement est abordée dans deux autres articles :

  • « Web Platform Installer » pour l’installation de PHP sous IIS7 ;

  • « Framework PHP sous IIS : Copix Framework » pour l’installation de SQL Server Express 2008.

Si votre environnement de développement doit posséder à la fois WAMP et IIS, vous pouvez consulter l’article « Faire cohabiter WAMP et IIS ».

Préambule


Dans cet article, nous allons faire passer vers IIS7 un site Internet développé avec « Zend Framework ». Ce site est initialement hébergé par WAMP, au sein d’un environnement de développement, sur la base de la version 1.8.3 du framework. Le site que nous avons utilisé est une boutique en ligne de vente d’écharpes.

La boutique sous WAMP


Avant de commencer, regardons rapidement à quoi ressemble notre boutique en ligne lorsqu’elle est hébergée sous WAMP. La capture écran qui suit vous donnera une idée de son apparence.

Dans notre cas, la configuration de WAMP a été modifiée afin que le serveur HTTP Apache écoute sur le port 8080. Ceci nous permet de ne pas être en conflit avec les applications et sites hébergés par IIS qui sont placés sur le port 80.

Ainsi, pour accéder à la version WAMP de notre boutique, nous employons l’URL http://localhost:8080/echarpe-belle.com.

wamp-liste-produits.jpg

Création de la base de données


Notre boutique en ligne a évidemment besoin d’une base de données. Cette base de données est actuellement hébergée par MySQL et s’appelle « echarpes ». Nous allons en faire une duplication pour SQL Server Express 2008 et nous l’appellerons « shop ».

Ajouter la base de données


Passons maintenant à la création de la base de données « shop » au sein de SQL Server Express 2008. Pour cela, nous allons utiliser l’outil de gestion associé : « Microsoft SQL Server Management Studio ». Dans la liste de vos programmes, dans le dossier « Microsoft SQL Server 2008 », il faut sélectionner « Microsoft SQL Management Studio ».

sql-server-management-studio-access.jpg

Si nécessaire, nous indiquons le mot de passe pour accéder à l’outil de gestion de SQL Server Express 2008.

Dans la zone supérieure gauche de l’outil, nous faisons un clic droit sur « Base de données » puis nous choisissons l’option « Nouvelle base de données… ». Nous renseignons la boîte de dialogue qui s’affiche comme ci-dessous :

new-database.jpg

Pour paramétrer l’encodage de la base de données, il faut cliquer à gauche sur « Options » et choisir dans le menu « Classement » la valeur « SQL_Latin1_General_CP1_CI_AS ».

sql-server-management-create-db-encoding.jpg

Nous validons en cliquant sur le bouton « OK ». Notre base de données est maintenant créée, comme nous le montre l’illustration qui suit :

database-created.jpg

Génération d’un fichier SQL


Pour assurer la création des tables et l’intégration des données au sein de la base de données « shop » que nous venons de créer, nous avons besoin d’un fichier SQL. Nous allons générer ce fichier SQL grâce à l’outil « MySQL Administrator ».

Pour cela, lancez « MySQL Administrator » que vous trouvez normalement dans le dossier « MySQL » de la liste de vos programmes. Indiquez le mot de passe, puis cliquez sur « OK ». Dans la zone supérieure gauche de l’outil, choisissez « Backup » :

mysql-administrator-backup.jpg

Ensuite cliquez en bas à droite sur le bouton « New Project », puis donnez le nom « export » au projet. Sélectionnez ensuite toutes les tables de la base de données « echarpes » :

database-sql-export.jpg

Dans le panneau « Advanced Options », activez les options comme dans l’illustration ci-dessous puis cliquez sur le bouton « Execute Backup Now ».

mysql-administrator-backup-execute.jpg

Pour plus de simplicité, prenez soin de nommer votre fichier SQL « export.sql ». Placez-le dans le dossier de votre choix.

Modification du fichier SQL


Les requêtes SQL de MySQL et de SQL Server n’étant pas parfaitement compatibles, nous allons procéder à quelques modifications à l’intérieur de notre fichier SQL généré.

Ces informations ont déjà été présentées dans l’article « « Framework PHP sous IIS : Copix Framework ». Cependant, ce qui suit a été quelque peu adapté au contexte de notre article.

Ouvrez donc le fichier « export.sql » dans votre éditeur préféré pour y apporter les modifications ci-dessous :

  • Supprimez toutes les guillemets doubles qui encadrent les noms des tables et des champs ;

  • Supprimez les deux lignes ci-dessous (elles se trouvent plutôt au début du fichier) :

CREATE DATABASE IF NOT EXISTS echarpes;
USE echarpes;

  • Complétez le chemin d’accès aux tables en ajoutant devant tous les noms des tables l’information ci-dessous (ceci doit être fait pour les requêtes CREATE TABLE et INSERT) :

shop.dbo.nomdematable1

  • Supprimer toutes les mentions ci-dessous (elles se trouvent toutes derrière les déclarations de création de table) :

TYPE=InnoDB;

  • Supprimer également les mentions (si elles existent, elles suivent toujours la déclaration du type des tables) :

AUTO_INCREMENT=X;

Il est important de vérifier que les fins de déclaration de création de table (CREATE TABLE) se terminent toujours bien par un point-virgule.

  • Si des champs sont déclarés en AUTO_INCREMENT, remplacez cette mention par IDENTITY ;

  • Si des champs sont déclarés en UNIQUE KEY nom (champ), remplacez cette mention par CONSTRAINT nom UNIQUE(champ) ;

  • Supprimer toutes les définitions de longueur des champs INT ou TINYINT (par exemple INT(11) doit devenir simplement INT) ;

  • Si possible, remplacer le type DOUBLE par le type MONEY pour une colonne chargée de stocker une information monétaire. Le type MONEY est proposé par toutes les bases de données SQL Server. Il permet de stocker des informations monétaires jusqu’à 19 chiffres dont 4 après le séparateur. On peut même y insérer certains symboles monétaires. Pour plus d’informations à ce sujet, vous pouvez consulter l’URL http://msdn.microsoft.com/fr-fr/library/ms188688.aspx. Sinon, remplacer le type DOUBLE par le type DECIMAL(6,2). La première valeur spécifie le nombre total de chiffres que l’objet peut posséder. La seconde, le nombre de chiffres qui peuvent être placés après le séparateur. Pour plus d’informations à ce sujet, vous pouvez consulter l’URL http://msdn.microsoft.com/fr-fr/library/ms187912.aspx.

  • Dans les requêtes INSERT, supprimer tous les champs et valeurs associées qui sont définis en IDENTITY ;

  • Protéger éventuellement les champs qui portent des noms réservés pour SQL Server par des crochets (nous n’avons pas dans notre cas) ;

  • Doubler les éventuels guillemets droits simples présents dans les contenus des champs de type TEXT ou VARCHAR (par exemple, si on a comme texte : 'Petite soirée d\'hiver' », alors il doit devenir : 'Petite soirée d''hiver') ;

  • Supprimer éventuellement les \r\n présents dans les contenus des champs de type TEXT ou VARCHAR ;

  • Supprimer tous les commentaires placés au début du fichier, avant la première requête SQL (les suivantes ne devraient pas poser de problème).

Enregistrez les modifications : notre fichier est prêt pour être importé dans SQL Server Express 2008.

Création des tables et des données


Nous allons maintenant créer les tables et les données dans SQL Server Express 2008 en utilisant notre fichier SQL modifié.

Si l’outil « Microsoft SQL Server Management Studio » n’est pas lancé, lancez-le, indiquez le login « sa » et le mot de passe associé.

Dans la zone latérale gauche, déployez la liste des bases de données, et faîtes un clic droit sur la base de données « shop » que nous avons créée il y a quelques instants. Choisissez l’option « Nouvelle requête », puis faîtes un copier – coller du contenu du fichier « export.sql » que nous venons de modifier dans la partie centrale qui apparaît.

database-table-data-import.jpg

Dans le menu « Affichage », « Barres d’outils », vérifiez que « Editeur SQL » soit coché. Pour envoyer les requêtes SQL au serveur, cliquez sur le bouton « Exécuter ».

database-table-data-execute.jpg

L’ensemble des tables et des données nécessaires au fonctionnement de notre boutique sont maintenant placées au sein de notre base de données « shop » sur SQL Server Express 2008.

Plus loin dans cet article, nous verrons comment indiquer à notre application qu’elle doit faire appel aux données stockées dans notre base de données « shop » de SQL Server Express 2008.

Création du site

Récupération et copie des sources


Avant de procéder à la création de l’espace web de notre boutique, nous allons tout d’abord créer un dossier qui va contenir une copie de l’ensemble de nos sources. C’est vers ce dossier que l’alias créé ensuite pointera.

Le dossier peut être créé à l’endroit qui vous convient. Dans notre cas, nous créons un dossier « echarpe-belle.com » dans « C:\work\web ». Nous y copions ensuite les sources. Comme notre boutique était précédemment hébergée sous WAMP, ses sources étaient placées dans le dossier « C:\wamp\www\echarpe-belle.com ».

website-src-copy.jpg

Il est important de vérifier que toute l’arborescence attendue par une application ou un site web développé avec Zend Framework soit présente.

Création de l’alias


Nous allons maintenant procéder à la création de l’espace web. Notre dossier est créé, il nous reste donc simplement qu’à indiquer à IIS la création d’un nouvel alias qui dirigera vers ce dossier.

Pour créer l’alias « echarpe-belle.com » au sein d’IIS, nous allons utiliser le « Gestionnaire des Services Internet ». Quand le gestionnaire est initialisé, déplier l’arborescence de la zone latérale gauche jusqu’à voir la liste des sites. Dans la liste des sites, faîtes un clic droit sur « Default Web Site », puis sélectionnez l’option « Ajouter une application ».

config-add-website-1.jpg

La boîte de dialogue ci-dessous apparaît alors :

website-alias-create.jpg

Indiquez alors l’alias, puis dans le champ « Chemin d’accès physique », le dossier dans lequel nous avons placé les sources de notre boutique. Validez en cliquant sur le bouton « OK ».

Pour visualiser le contenu de ce nouveau site, il suffit de faire un clic droit sur l’application « echarpe-belle.com » que nous venons de créer, toujours au sein de la zone latérale gauche du « Gestionnaire de Services Internet ». Choisissez alors l’option « Gérer une application », puis « Parcourir ». Une fenêtre s’ouvre alors au sein de votre navigateur par défaut à l’URL http://localhost/echarpe-belle.com. Pour l’instant, nous obtenons l’affichage ci-dessous :

website-step-1.jpg

Problématique des balises courtes d’ouverture de PHP


Le souci d’affichage que nous obtenons est lié à la prise en charge des balises courtes d’ouverture de PHP (short_open_tag) par IIS. En effet, tous les scripts de vue et layouts de notre projet Zend Framework emploient ces balises courtes.

Pour remédier à cela, nous allons modifier le fichier « php.ini » en utilisant le Bloc-notes en mode administrateur.

Une fois le Bloc-notes lancé, il faut ouvrir le fichier « php.ini » qui se trouve dans le dossier « C:\Program Files\PHP » et y rechercher la directive « short_open_tag » pour placer sa valeur à « on » (au lieu de « off » par défaut). On termine en enregistrant les modifications apportées au fichier, puis en redémarrant IIS.

Nous rappelons ici que pour redémarrer IIS, on utilise aussi le « Gestionnaire de Services Internet » : dans la zone latérale gauche, cliquez sur le nom de votre ordinateur, puis dans la zone latérale droite, cliquez sur l’option « Redémarrer », comme le montre la capture écran ci-dessous :

iis-restart.jpg

Nous actualisons la page de notre boutique à l’URL http://localhost/echarpe-belle.com et nous obtenons l’affichage ci-dessous :

website-step-2.jpg

Gestion de la réécriture d’URL (URL Rewriting)


En cliquant sur le lien « Toutes nos écharpes », nous obtenons l’affichage ci-dessous :

website-step-3.jpg

Ceci est lié au fait que nous n’ayons pas encore configuré les règles de réécriture d’URL.

Pour cela, il nous faut avant tout, procéder à l’installation du module de gestion de la réécriture d’URL. Le plus simple est d’utiliser Web Platform Installer. Nous y accédons en utilisant le Gestionnaire des Services Internet.

Au sein du Gestionnaire des Services Internet, repérez l’icône Web Platform Installer et double-cliquez dessus.

web-pi-config-access.jpg

web-pi-url-rewrite-add.jpg

Dès que Web Platform Installer est lancé, activez l’option « URL Rewrite 1.1 ». Si jamais une mise à jour de Fast CGI vous est proposée, activez-la également.

Acceptez éventuellement les conditions d’utilisation et laissez l’installation s’opérer. Lorsqu’elle est terminée, quittez Web Platform Installer.

Pour que nous ayons accès aux fonctionnalités de réécriture d’URL, nous devons aussi quitter le Gestionnaires des Services Internet et le redémarrer. Une fois que cela est fait, vous verrez apparaître l’icône ci-dessous :

url-rewrite-icon.jpg

Cela confirme que le module de gestion de la réécriture d’URL est actif et correctement installé.

Nous pourrions utiliser l’interface de gestion des URL proposé par le module, mais le plus simple dans notre cas est de faire une copie des règles de réécriture proposées par Zend à l’URL http://framework.zend.com/manual/fr/zend.controller.html#zend.controller.quickstart.go.rewrite pour les placer dans un fichier « web.config » à placer dans la racine de notre espace web. Dans notre cas, ce fichier devra donc être dans le dossier « C:\work\web\echarpe-belle.com\public ».

Les directives à placer dans ce fichier sont les suivantes :



     
         
             
                 
                     
                     
                                                      matchType="IsFile" pattern=""
                             ignoreCase="false" />
                                                      matchType="IsDirectory"
                             pattern="" ignoreCase="false" />
                     
                     
                 
                 
                     
                     
                 
             

         

     



Utilisez votre éditeur de texte préféré pour ajouter ces directive dans le fichier « web.config », enregistrez les modifications apportées.

Pour visualiser ces règles de réécriture d’URL au sein du Gestionnaire de Services Internet, vous devez sélectionner dans la zone latérale gauche le site Internet que vous avez ajouté puis double-cliquer sur l’icône « URL rewrite » :

url-consult-1.jpg

Vous devriez alors voir apparaître la liste des règles comme ci-dessous :

url-consult-2.jpg

En double-cliquant sur une des règles de réécriture, vous pourrez voir comment il se compose.

Comme promis, voyons maintenant comment indiquer à notre application qu’elle doit faire appel aux données stockées dans notre base de données « shop » de SQL Server Express 2008.

Modifier la configuration d’accès aux données


Dans notre cas, l’accès à la base de données est configuré dans un fichier « config.ini ». Il est placé dans le dossier « C:\work\web\echarpe-belle.com\application\config ».

Ce fichier de configuration contient une section « [database] » qui contient tous les paramètres de connexion à la base de données. Nous allons les modifier pour désormais accéder à la nouvelle base de données « shop ».

Voici ce que nous avions précédemment à la section « [database] » :

[database]
database.adapter = Pdo_Mysql
database.params.host = localhost
database.params.port = 3307
database.params.username = root
database.params.password =
database.params.dbname = echarpes

Précision : dans notre cas, le port d’accès à la base de données MySQL a été paramétré 3307 car nous avons plusieurs instances de cette base de données installées au sein de notre environnement de développement : une pour fonctionner avec WAMP et une autre pour fonctionner avec IIS. De plus, notre configuration d’accès à MySQL ne possède pas de mot de passe, ce qui ne sera pas le cas pour la configuration d’accès à SQL Server Express 2008.

Nous modifions le contenu de cette section comme ci-dessous :

[database]
database.adapter = Pdo_Mssql
database.params.host = BASILIC
database.params.username = sa
database.params.password = votremotdepasse
database.params.dbname = shop

La ligne qui détermine le port a été supprimée car nous utilisons le port par défaut de SQL Server. Pour la ligne qui définit l’hôte, il faut y placer le nom de votre machine. Et le plus important, bien sûr, c’est d’indiquer l’adaptateur PDO qui convient : nous utiliserons évidemment « Pdo_Mssql ».

Attention : cela suppose bien sûr que l’extension PDO_MSSQL soit installée et active. Si ce n’est pas le cas vous pouvez vous reporter à l’article « Framework PHP sous IIS : Copix Framework ».

En actualisant la page http://localhost/echarpe-belle.com/toutes-nos-echarpes de notre boutique, nous obtenons l’affichage qui suit :

website-step-5.jpg

Ceci est dû au fait que certaines requêtes SQL décrites pour MySQL ne sont pas compatibles avec SQL Server. L’erreur ci-dessus nous indique que la requête qui pose problème est « SET NAMES 'utf8' » qui permet de garantir sous MySQL que toutes les transactions à suivre se feront en utilisant l’encodage UTF-8.

Nous allons simplement retirer de notre code source l’appel à cette requête. Dans notre cas, cet appel se situe dans le module « shop », dans le contrôleur « products », au sein de l’action « list ».

Nous actualisons à nouveau notre page. Cette fois nous obtenons l’affichage ci-dessous :

website-step-6.jpg

SQL Server nous retourne l’erreur suivante :

La colonne 'categories.idCategory' n'est pas valide dans la liste de sélection parce qu'elle n'est pas contenue dans une fonction d'agrégation ou dans la clause GROUP BY.

Cette erreur apparaît parce que la colonne « idCategory » de la table « categories » n’est pas appelé dans la clause « GROUP BY ». Nous modifions donc simplement notre requête comme ci-dessous :

$sql = "SELECT c.name category, c.idCategory id FROM categories c ";
$sql .= "RIGHT JOIN products p ON c.idCategory = p.idCategory ";
$sql .= "GROUP BY c.idCategory, c.name ";
$sql .= "ORDER BY category";

Ce qui est souligné et en italique correspond à ce qui a été ajouté pour que notre requête devienne fonctionnelle.

Gestion de l’encodage


Comme les transactions ne se font plus en UTF-8, il faut penser à encoder ce qui est affiché par les scripts de vues et les layouts en UTF-8 en utilisant tout simplement la fonction PHP « utf8_encode() ».

Par exemple, le titre d’une de nos écharpes ne se présente pas correctement :

encodage-utf8-1.jpg

Pour corriger ce problème, nous ouvrons le script de vue chargé d’afficher la liste des produits. Dans notre cas, il s’agit du fichier « products.phtml » stocké dans « C:\work\web\echarpe-belle.com\application\modules\shop\views\scripts ». A la L. 5 de ce fichier nous ajoutons l’appel à la fonction PHP « utf8_encode() » :


utf8_encode($this->name); ?>


Après correction, si nous visualisons à nouveau notre écharpe, nous observons que l’affichage est devenu correct :

encodage-utf8-2.jpg

Résultat


Pour terminer, nous actualisons la page qui liste les produits de notre boutique et nous obtenons le résultat ci-dessous :

website-step-4.jpg

En quelques étapes, nous avons donc réussi à migrer notre boutique développée avec Zend Framework sous IIS et SQL Server Express 2008.

Framework PHP sous IIS | Adenova /

similaire:

Avertissement iconAvertissement

Avertissement iconAvertissement

Avertissement iconAvertissement de la première édition

Avertissement iconAvertissement concernant la première partie

Avertissement iconSÉcurité avancée de la verano 2014 de buick avec systèmes d'avertissement par caméRA

Avertissement iconAvertissement
«Hé ! Tom», lança-t-elle, assez fort cette fois pour que sa voix portât au loin

Avertissement iconPIÈce 1 : avis d’appel d’offres et avertissement
«Approvisionnement en eau, promotion de l’hygiène et de l’assainissement dans les écoles du Mali»

Avertissement iconPréambule
«Préambule» ou un «Avertissement» à l’adresse du lecteur, exercice convenu mais qui importe particulièrement ici pour nous

Avertissement iconAvertissement au lecteur1
«Mein Kampf» est une édition intégrale ne comportant ni choix ni coupures pouvant masquer certains aspects de l’œuvre de Hitler et...

Avertissement iconAvertissement
«de la bière fraîche et des cigarettes». Le garçon répondit que «des cigarettes, IL n’en avait pas»








Tous droits réservés. Copyright © 2016
contacts
ar.21-bal.com