Avertissement








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

Copix Framework (http://www.copix.org)

Avertissement


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

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

  • « Drupal sous IIS » pour l’installation de MySQL sous Windows.

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 le framework PHP « Copix ». Ce site est initialement hébergé par WAMP, au sein d’un environnement de développement, sur la base de la version 3.0.4 de Copix. Le site que nous avons utilisé présente simplement une liste de news.

Création de la base de données


Le site Internet développé avec le framework Copix que nous souhaitons migrer a évidemment besoin d’une base de données. Cette base de données s’appelle « copix ». Nous allons la créer en utilisant l’outil d’administration de MySQL (« MySQL Administrator »), normalement installé si vous avez consulté l’article « Drupal sous IIS ».

Ajouter la base de données


Pour cela, cliquez simplement sur la catégorie « Catalogs », puis faîtes un clic droit au sein de la zone inférieure droite (qui présente la liste des bases de données installées par défaut) et choisissez l’option « Create new schema ». Au sein de la boîte de dialogue qui apparaît, dans le champ « Schema name », nous indiquons « copix ». Si le nom de votre base de données est différent, remplacez évidemment « copix » par ce qui convient. Le principal, c’est que le nom de la base de données reste le même que l’original.

Peupler la base de données


Pour être le plus efficace possible, nous allons effectuer un « dump » de notre base de données originale pour ensuite injecter les contenus dans la base de données de destination, celle qui sera utilisée par IIS. Pour cela, accéder au binaire « mysqldump.exe » présent dans l’arborescence du dossier d’installation de WAMP.

Pour créer le fichier SQL contenant l’ensemble des données à migrer, utilisez la commande :

mysqldump –u root copix > copix.sql

mysqldump-access-2.jpg

Bien sûr, il faut remplacer « copix » par le nom réel de votre base de données. A la suite de cette commande, un fichier « copix.sql » a été généré. Il contient toutes les données utiles au fonctionnement du framework Copix et de notre site.

Nous allons ensuite utiliser « MySQL Administrator » pour injecter les données dans notre nouvelle base de données. Pour cela, sélectionner la catégorie « Restore », cliquez ensuite sur le bouton « Open Backup File », choisissez le fichier SQL que nous venons de générer et activez les options comme ci-dessous.

mysql-administrator-restore.jpg

Comme nous avons déjà créé la base de données de destination, il faut vous assurer que l’option « Another schema » est activée et que son nom apparaisse bien.

Comme le fichier SQL n’a pas été généré par « MySQL Administrator », des erreurs pourraient être signalées. Pour ne pas en tenir compte, activez aussi l’option « Ignore Errors ».

mysql-query-browser-access.jpg

Pour vérifier que toutes les données ont correctement été ajoutées, nous allons utiliser « MySQL Query Browser ». Utilisez toujours les mêmes paramètres de connexion et n’oubliez pas de renseigner le champ « Default Schema », en y indiquant le nom de la base de données de destination.

En cliquant, dans la zone latérale droite, sur le nom de notre base de données, nous pouvons vérifier que l’ensemble des tables nécessaires ont bien été créées.

mysql-query-browser-tables-list.jpg

Création du site

Création de l’alias


Nous allons maintenant procéder à la création de l’espace web. Il faut d’abord créer un dossier qui va contenir l’ensemble des sources de notre site Internet.

Il est possible de créer ce dossier à l’emplacement de votre choix. Dans notre cas, nous allons utiliser le dossier « C:\work\web\news.copix.org ». Pour tester, nous y plaçons un simple fichier index.php qui contient un appel à phpinfo() :

phpinfo();
?>

Pour créer l’alias « copix » 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 :

config-add-website-2.jpg

Indiquez alors l’alias, puis dans le champ « Chemin d’accès physique », le dossier dans lequel nous allons placer notre site Internet. 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 « copix » 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. Normalement, vous devriez voir l’écran ci-dessous.

phpinfo.jpg

Installation du site


Dans cette étape, nous allons copier les fichiers sources de notre site Internet au sein de notre arborescence web, celle vers laquelle l’application « copix » pointe.

La première chose à faire est de supprimer le fichier « index.php » qui contenait l’appel à phpinfo().

Nous récupérons ensuite la totalité de l’arborescence et des fichiers du framework Copix pour en faire une copie au sein du dossier « C:\work\web\news.copix.org ».

copix-copy.jpg

L’arborescence du framework Copix place le Front Controller « index.php » dans un dossier « www ». Il faut donc modifier la configuration de notre application « copix » sous le « Gestionnaire des Services Internet ». Pour cela, il faut faire un clic droit sur l’application « copix », sélectionner la commande « Gérer une application » puis « Paramètres avancés… ». Dans la boîte de dialogue qui s’ouvre, modifier l’entrée « Chemin d’accès physique » pour y ajouter « www ».

copix-iis-change.jpg

Après avoir validé, il vous suffit d’actualiser le contenu de votre page http://localhost/copix/, au sein de votre navigateur.

Vous devriez voir l’affichage ci-dessous :

pdo-not-found.jpg

Le framework Copix, depuis sa version 3, a obligatoirement besoin de la couche d’abstraction aux bases de données PDO. Nous allons donc maintenant voir comment installer et activer les extensions PDO nécessaires.

Installation et activation d’extensions pour la prise en compte de PDO

Récupération des fichiers


Sous IIS, les extensions PHP sont gérées par des fichiers *.dll. Nous devons donc premièrement récupérer les fichiers *.dll dont nous avons besoins pour activer PDO.

Nous avons plusieurs fichiers *.dll à récupérer : le fichier « php_pdo.dll », qui assure l’abstraction centrale, ainsi qu’un fichier pour chaque base de données à prendre en compte. Comme notre site Internet utilise actuellement MySQL, il nous faut obligatoirement « php_pdo_mysql.dll ». Plus loin dans cet article, nous allons migrer les données vers SQL Server, il nous faut donc aussi récupérer le fichier « php_pdo_mssql.dll ».

Ces fichiers sont inclus dans les distributions de PHP pour Windows que vous pouvez télécharger à l’URL http://windows.php.net/downloads/releases/php-5.2.9-2-nts-Win32-VC6-x86.zip.

download-php-dll.jpg

Dès que le fichier a été téléchargé, vous pouvez le décompresser au sein d’un dossier temporaire, puis aller dans le dossier « ext », qui contient tous les fichiers *.dll de la distribution. Repérer et sélectionner les fichiers « php_pdo.dll », « php_pdo_mysql.dll » et « php_pdo_mssql.dll » pour les copier dans le dossier d’installation de PHP, au sein du dossier « ext ». Dans notre cas, le chemin complet d’accès à ce dossier est « C:\Programs Files\PHP\ext ».

dll-paste.jpg

Pour activer la prise en compte de ces nouveaux fichiers *.dll, il faut également éditer en mode administrateur le fichier « php.ini » présent dans le dossier d’installation de PHP. Pour cela, nous allons simplement utiliser le Bloc-notes de Windows. Pour qu’il soit exécuté en mode administrateur, dans la liste des programmes installés, nous effectuons un clic droit sur « Bloc-notes » et nous choisissons l’option « Exécuter en tant qu’administrateur ».

A partir du Bloc-notes, nous ouvrons le fichier « php.ini » contenu dans le dossier « C:\Programs Files\PHP » et nous y ajoutons à la fin les trois lignes ci-dessous :

extension=php_pdo.dll
extension=php_pdo_mysql.dll
extension=php_pdo_mssql.dll

Nous enregistrons le fichier « php.ini ».

php-ini-add-extensions.jpg

Pour que ces modifications soient prises en compte, nous devons redémarrer IIS. Nous utilisons pour cela le « Gestionnaire des Services Internet ». Dans la zone latérale gauche, sélectionnez le nom de votre ordinateur, puis cliquez en haut à droite sur le lien « Redémarrer ».

Pour tester que tout fonctionne correctement, actualisons la page http://localhost/copix au sein de notre navigateur et nous cliquons sur le lien « Actualités ». Nous obtenons le résultat qui suit :

copix-actualites.jpg

Et voilà ! Nous avons migré en quelques étapes notre site Internet réalisé avec le framework Copix, de WAMP vers IIS7, grâce à Web Platform Installer.

Nous allons maintenant procéder à la migration des données sous SQL Server Express 2008.

Migration des données vers SQL Server Express 2008

Installation de SQL Server Express 2008


Avec Web Platform Installer, rien de plus facile ! A partir du « Gestionnaire de Services Internet », il faut double cliquer sur l’icône « Web Platform Installer ».

iis-web-pi.jpg

Il suffit ensuite d’activer les coches correspondant à « SQL Server Express 2008 » et « SQL Server 2008 Management Studio Express ». Elles se trouvent dans la catégorie « Web Platform », au sein de la zone « Database ». En cliquant sur le lien « customize » de cette zone, vous trouverez les options attendues.

sql-server-2008-install.jpg

Cliquez sur le bouton « Install », puis acceptez les conditions d’utilisation. Web PI demande ensuite un mot de passe pour l’administrateur de SQL Server Express 2008. Renseignez comme ci-dessous.

sql-server-2008-password.jpg

Web PI procède alors au téléchargement des fichiers nécessaires à l’installation de SQL Server Express 2008. Le téléchargement et l’installation prenne plusieurs minutes. A la fin de l’installation, si cela est demandé, redémarrez votre ordinateur.

Création de la base de données


Nous allons maintenant créer la base de données « copix » 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

Nous indiquons simplement le mot de passe. Pour éviter de devoir le faire systématiquement, nous cochons l’option « Remember password ».

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

sql-server-management-create-db.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 :

sql-server-management-created-db.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 « copix » 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 « copix » :

mysql-administrator-backup-config.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é.

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 copix;
USE copix;

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

copix.dbo.nomdematable1

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

TYPE=MyISAM;

  • 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) ;

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

  • Protéger les champs qui portent des noms réservés pour SQL Server par des crochets. Les champs concernés sont dans notre cas :

    • user qui doit devenir [user] ;

    • file qui doit devenir [file] ;

  • 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 : ‘Le Web 2.0 est l\’extension...’ », alors il doit devenir : ‘Le Web 2.0 est l’’extension...’) ;

  • Supprimer les éventuels \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).

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 « copix ». 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.

sql-server-management-create-data.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 ».

sql-server-management-execute-button.jpg

L’ensemble des tables et des données nécessaires au fonctionnement du framework Copix et à l’affichage de la liste et des détails de nos news sont maintenant placées au sein de notre base de données « copix » sur SQL Server Express 2008.

Il nous reste à configurer le nouveau profil de base de données dans Copix, puis à tester notre site Internet.

Configuration de Copix

Création d’un profil de base de données


Le framework Copix propose une interface d’administration de profils de bases de données. Nous allons l’utiliser pour ajouter un nouveau profil qui correspondra à l’accès à nos données hébergées dans la base de données « copix », mais sous SQL Server Express 2008.

Si nous accédons à l’interface d’administration de Copix, puis à la configuration des bases de données et que nous essayons d’ajouter notre nouveau profil de base de données, nous observons que Copix ne propose pas pour l’instant le driver « pdo_mssql » dont il a besoin pour accéder à des données positionnées dans un SQL Server.

Astuce : si des erreurs PHP de type « Notice » s’affichent en accédant à la page de configuration des profils de bases de données, pour les masquer, il faut s’assurer que les directives suivantes soient paramétrées comme ci-dessous (n’oubliez pas de redémarrer IIS pour que ces modifications soient prises en compte) :

display_errors = Off
log_errors = Off

Rendre active l’extension PDO_MSSQL


Si nous affichons à nouveau la page de notre phpinfo(), nous voyons en effet que ni l’extension MSSQL, ni l’extension PDO_MSSQL ne sont présentées. Seul le driver MySQL pour PDO est activé.

phpinfo-no-mssql.jpg

Pourtant, plus haut dans cet article, nous avons bien récupéré et placer les fichiers .dll nécessaires et activé la prise en compte des extensions souhaitées dans « php.ini ».

Sous IIS, pour que les accès à une base de données MSSQL soient possibles, il faut ajouter un fichier supplémentaire dans le dossier d’installation de PHP. Pour plus d’informations, vous pouvez consulter l’URL http://fr2.php.net/manual/fr/mssql.requirements.php.

Nous allons récupérer ce fichier « ntwdblib.dll » pour le placer dans « C:\Programs Files\PHP ». Ce fichier est présent dans la version « Thread Safe » de la distribution de PHP pour Windows.

Important : il est essentiel de conserver la version « Non Thread Safe » des fichiers .dll de nos extensions (comme nous l’avons fait plus haut dans cet article). Ne remplacez donc surtout pas ces fichiers par leur version « Thread Safe » : cela provoquerait une erreur IIS.

Pour télécharger la version « Thread Safe » de PHP pour Windows, accédez à l’URL http://windows.php.net/downloads/releases/php-5.2.9-2-Win32-VC6-x86.zip, décompressez l’archive dans un dossier temporaire, puis faîtes un copier – coller du fichier « ntwdblib.dll » dans le dossier d’installation de PHP (dans notre cas : « C:\Programs Files\PHP »).

A l’aide du « Gestionnaire des Services Internet », redémarrez le serveur IIS et consultez à nouveau la page du phpinfo().

phpinfo-with-mssql.jpg

Activation du profil de connexion pour SQL Server


Nous allons maintenant pouvoir activer le profil de connexion pour SQL Server. Retournons dans l’administration de Copix, puis dans l’interface de configuration des bases de données. Nous voyons que désormais le driver « pdo_mssql » est disponible.

Nous créons donc le nouveau profil de base de données pour SQL Server avec les informations ci-dessous :

  • Nom : « sqlserver » ;

  • Driver : « pdo_mssql » ;

  • Chaîne de connexion : « dbname=copix;host=my-pc » (remplacer « my-pc » par le nom réel de votre ordinateur) ;

  • Utilisateur : « sa » ;

  • Mot de passe : « monmotdepasse » (celui que vous avez indiqué à l’installation de SQL Server Express 2008 avec Web PI).

copix-db-profiles-save.jpg

Cliquez sur le bouton « Tester » pour vérifier que la connexion à la base de données « copix » de SQL Server se fait correctement, indiquez que ce nouveau profil de connexion doit être celui par défaut, puis validez le tout en cliquant sur le bouton « Enregistrer ».

Suppression des requêtes non gérées


En nous connectant à notre site Internet pour consulter la liste des news, nous avons obtenu une première erreur retournée par Copix :

website-test-erreur-0.jpg

Une CopixDBException est levée car une requête n’est pas compatible avec SQL Server. Cette requête est celle qui permettait d’assurer que toutes les transactions avec MySQL se faisaient au format UTF-8. Nous allons simplement la mettre en commentaire. Nous avons donc ouvert le fichier :

default.actiongroup.php

qui se trouve dans le dossier :

project\modules\public\stable\standard\news\

de l’arborescence de Copix.

Et nous mettons en commentaire la L. 21 :

function beforeAction() {
CopixHTMLHeader::addCSSLink(_resource('news|css/news.css'));
// _doQuery('SET NAMES utf8;');
}

Correction du driver PDO pour SQL Server


Si on teste à nouveau notre liste de news de notre site Internet, le framework Copix nous a retourné l’erreur ci-dessous :

Attribut « name » obligatoire dans une balise « property »

website-test-erreur-1.jpg

Pour corriger ce problème, il a fallu que nous intervenions sur la classe de Copix en charge de la gestion du driver « PDO_MSSQL ». Nous avons donc ouvert le fichier :

CopixDbConnection.pdo_mssql.class.php

qui se trouve dans le dossier :

utils\copix\db\drivers\pdo_mssql\

de l’arborescence de Copix.

Nous y avons apporté les modifications ci-dessous :

  • L. 160, ajout du code :

$arTypes = array('text' => 'string', 'int' => 'int', 'varchar' => 'varchar');

Ce code est un array qu’il conviendra sans doute de renseigner davantage dans le cadre d’autres projets, afin que le driver PDO_MSSQL de Copix gère des types de champs supplémentaires.

  • Après L. 179, ajout du code :

$p_result_line->name = $result_line->Field;
if (isset ($arTypes[$result_line->type])) {
$p_result_line->type = $arTypes[$result_line->type];
} else {
throw new CopixDBException ("Le type " . $result_line->type . " n'est pas reconnu.");
}

  • Suppression de l’ancienne L. 180 :

$p_result_line->type = $result_line->type;

Correction de la définition des DAO


Après avoir modifié ce fichier, nous avons rencontré une autre erreur, liée à la classe Copix de définition des DAO :

Champs de table étrangère manquants pour la propriété dans la définition de la DAO body

website-test-erreur-2.jpg

Pour corriger ce problème, il faut modifier un autre fichier :

CopixDAODefinition.class.php

qui se trouve dans le dossier :

utils\copix\dao\

de l’arborescence de Copix.

La modification apportée est celle-ci :

  • L. 562, remplacement complet de la ligne par le code :

$this->fkTable = isset ($params['fktable']) && trim($params['fktable']) != '' ? $params['fktable'] : null;

Correction de l’encodage


En testant à nouveau notre site, nous avons observé des problèmes d’encodage des chaînes de caractères. En effet, l’encodage original était « UTF-8 » ; or, nous avons choisi pour SQL Server un encodage de type « Latin1 ». Les pages de notre site Internet continuant de s’afficher en UTF-8, la correspondance n’est donc plus bonne.

website-test-erreur-3.jpg

Pour corriger rapidement ce problème, nous avons simplement ouvert les templates de notre modules « news » et placé devant les chaînes de texte à afficher l’appel à la fonction utf8_encode().

Ainsi, au sein de notre template « news.list.php » chargé d’afficher la liste des news, la ligne :

>title; ?>


a été remplacée par :

>utf8_encode($news->title); ?>

Le résultat


Et voilà le résultat !

website-test-ok.jpg

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 iconAvertissement
«Framework php sous iis : Copix Framework» pour l’installation de sql server Express 2008

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...








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