pico journal

café, clavier, clope

Présentation de WebMatrix

clock November 16, 2010 03:06 by author pierre couzy

Microsoft a sorti cet été la première beta de WebMatrix, un nouvel outil de développement web. Pourquoi un nouvel outil ? La panoplie existante est déjà riche et couvre la majorité des besoins :

  • Visual Studio, qui couvre tous les types de développement, y compris web
  • Visual Web Developer, la version gratuite tournée vers le développement web
  • Expression Web, l’outil d’édition de pages

Il reste cependant un trou dans la raquette. Les environnements de développement Microsoft sont aujourd’hui optimisés pour le développement d’applications ambitieuses : toute la richesse de .Net y est directement exposée, et cette richesse ne va pas sans une certaine complexité. Le but avéré de Webmatrix est de se focaliser sur des scénarios moins techniques et plus orientés tâches. A cet effet, Microsoft a fait de grands efforts de simplification, pour fournir un outil de prise en main immédiate.

Installation de WebMatrix

Webmatrix s’installe de façon un peu particulière sur votre machine. L’installation se fait depuis la page http://www.microsoft.com/web/webmatrix, mais au lieu de télécharger un installeur et de lancer son exécution, vous allez simplement cliquer sur un lien de la forme suivante : http://www.microsoft.com/web/gallery/install.aspx?appid=webmatrix

Ce lien vous emmènera tout d’abord vers le téléchargement et l’installation de Web Platform Installer (en abrégé WebPI). Cet outil est dédié à l’installation d’applications web, et couvre à la fois les pré-requis, les frameworks, les outils de développement web, et les applications web Open Source les plus populaires. Une fois WebPI installé sur votre machine, un assistant vous guidera dans l’installation de WebMatrix et de tous les composants additionnels requis (notamment .Net 4, qui vous permet d’exploiter la nouvelle syntaxe Razor fournie dans WebMatrix et prochainement dans Visual Studio) :

image

 

Le contenu de WebMatrix

WebMatrix se veut un outil tout-en-un de développement, test et déploiement d’applications Web. Il reprend donc les composantes classiques d’une infrastructure web, tout en s’efforçant de simplifier au maximum chaque brique de l’édifice :

WebMatrix Stack

Reprenons ces briques de bas en haut :

Le serveur Web : IIS Express

IIS Express est un serveur web directement tiré de IIS 7.5, la version fournie avec Windows Server 2008 R2. La principale différence est qu’il ne s’installe pas en tant que service (il est lancé en même temps que WebMatrix chaque fois que vous travaillez sur un site Web) et qu’il est du coup disponible sur toutes les versions de Windows depuis Windows XP Home jusqu’à Windows Server 2008 R2. Il n’a pas non plus besoin de droits administrateur pour s’exécuter, ce qui vous permet de travailler sur n’importe quelle machine.

Les frameworks et applications Web

Beaucoup de nouveautés dans cette brique ! La première est la présence d’applications Web dans WebMatrix. Lorsque vous lancez WebMatrix pour la première fois, vous êtes accueilli par l’écran suivant : 
image

Le bouton “Site From Web Gallery” vous conduit à une liste d’applications Open Source, tant en PHP qu’en ASP.Net. Vous serez sans doute surpris de trouver des applications PHP installables depuis un produit Microsoft, mais n’oubliez pas qu’à côté de sa casquette d’environnement de développement Web (ASP.Net est et restera chez Microsoft la principale technologie Web), Microsoft fournit un serveur web (IIS), et que ce serveur est parfaitement adapté à l’exécution d’applications PHP.

Ce bouton vous donne accès à une longue liste d’applications Web, que vous pouvez toutes installer en quelques secondes sur votre machine de développement: WebMatrix se charge de toutes les étapes d’installation, y compris l’installation et le paramétrage de PHP si nécessaire. Nous parlerons plus en détail des frameworks disponibles dans la suite tout à l’heure, mais sachez que vous pourrez manipuler trois environnements ASP.Net : ASP.Net WebForms (disponible depusi ASP.Net 1), Asp.Net MVC (bientôt en version 3), et ASP.Net Web Pages (prochainement disponible dans Visual Studio).

La base de données : Sql Server Compact

Pourquoi une nouvelle base de données ? En réalité, WebMatrix sait se connecter à trois bases de données différentes : Sql Server (2005 et ultérieures), MySql (5 et 6), et Sql Server Compact. Cette dernière base de données a une grande importance dans les hébergements mutualisés car elle ne demande pas d’installer une base de données “complète” sur le serveur de production. C’est une base de données fichier, directement embarquée dans l’arborescence du site web, que vous pouvez utiliser même si votre hébergeur n’offre pas Sql Server.

Découverte de l’environnement de développement

WebMatrix comporte toutes les fonctionnalités vues ci-dessus, mais c’est aussi un environnement de développement Web permettant d’écrire, de modifier et de publier vos propres applications Web.

Les principales facettes de WebMatrix sont

Un éditeur de code

image

Cet éditeur de code vous propose une coloration syntaxique pour les fichiers suivants :

  • ASPX, ASCX, CS, VB, et tous les formats couramment utilisés en ASP.Net
  • HTML, CSS, Javascript, et tous les formats couramment utilisés pour le développement html
  • PHP, INC, et tous les formats couramment utilisés en développement PHP
  • CSHTML et VBHTML : les nouveaux formats de fichier apportés par ASP.Net Web Pages

Des outils de test et de débogage

Commençons par un outil bienvenu des WebMasters, WebMatrix comporte un module d’optimisation des pages pour les moteurs de recherche. Cette fonctionnalité est tirée d’un outil appelé le SEO Toolkit (disponible sur http://www.microsoft.com/web/seo/) et qui inspecte votre site à la recherche de toutes les erreurs et maladresses qui nuisent au bon référencement de votre site.

image

Les autres outils sont moins innovants mais pratiques, avec notamment un module qui trace toutes les requêtes parvenant à IIS Express et qui vous permet d’isoler rapidement les requêtes intéressantes (images, erreurs, et une fonction de recherche dans les requêtes) :

image

Si vous avez l’habitude d’utiliser Visual Studio, deux différences importantes vont vous sauter aux yeux : d’une part, il n’y a pas d’intellisense, uniquement de la coloration syntaxique (cette lacune sera probablement comblée dans la V2 au vu des demandes répétées de tous les beta-testeurs), et il n’y a pas de notion de page de démarrage du site : WebMatrix lance directement la page que vous êtes en train d’éditer quand vous appuyez sur le bouton Run (à noter une fonctionnalité agréable, ce bouton permet de lancer la page simultanément dans tous les navigateurs installés sur la machine)

image

Des outils de publication

WebMatrix comporte deux assistants de publication web, tous deux accessibles à partir du bouton Publish. Le premier utilise FTP, il n’y a rien de particuler à en dire, le second mode utilise Web Deploy, une technologie de déploiement automatisé introduite par IIS 7.

image

Cette technique vous permet d’automatiser toutes les étapes du déploiement, y compris la gestion des permissions sur les répertoires et la création des bases de données. Elle dispose également d’un mode Mise à Jour qui ne transfère sur le serveur de destination que les fichiers dont le contenu a changé. Cette technique est plus riche, et est notamment à la base des applications disponibles dans WebMatrix, mais nous en parlerons dans un prochain article.

Razor, la nouvelle syntaxe d’Asp.Net Web Pages

Cette technologie de développement Web est une version simplifiée de ASP.Net MVC : elle repose sur l’un des moteurs de rendu d’ASP.Net MVC, appelé Razor. Les pages développées dans cette technologie utilisent les extensions de fichier cshtml et vbhtml, ce qui vous permet de mélanger les deux langages à votre gré dans un développement Web.

Les caractéristiques de cette version d’ASP.Net sont les suivants :

 

 

 

Accès simplifié aux bases de données :

image

Imbrication simple de code et de rendu html :

image

Intégration de fonctions de haut niveau en une seule ligne de code pour simplifier l’écriture des tâches courantes. Ces fonctions s’appellent des helpers et en voici une liste non exhaustive :

  •  
    • WebGrid : affichage de grilles de données triables et paginables
    • WebMail : envoi d’un email en une seule fonction
    • Recaptcha : vous donne automatiquement un anti-spam graphique pour empêcher les robots de spammer votre site
    • Twitter : affiche tous les micro-messages publiés par une personne ou sur un sujet donné.
    • WebImage : vous permet de retravailler une image sans avoir à la stocker ou l’ouvrir.
    • Chart : affichage de graphiques (camemberts, diagrammes en barres, etc)
    • Analytics : insère automatiquement le javascript de suivi Yahoo, Google, etc
    • Bing : ajoute la fonctionnalité de recherche à votre page
    • Json : effectue le codage et le décodage au format JSON
    • Video : insertion d’une video aux formats WMV, Flash ou Silverlight
    • WebCache : gestion simplifiée du cache

Voici par exemple une page twitter IE9 avec le code source correspondant :

image

Ces fonctionnalités sont trop riches pour en faire le tour dans un article d’introduction, mais nous en reparlerons.

A qui est destiné WebMatrix ?

WebMatrix est un outil beaucoup plus simple de prise en main que Visual Studio, et ses fonctionnalités d’installation d’applications Open Source le mettent également à la portée des développeurs PHP même s’ils ne pratiquent pas ASP.Net. Cette simplicité a naturellement un prix (pas de fonctions d’intégration avec TFS, pas d’éditeur pour Entity Framework, pas de débogueur) qui nous permet de distinguer plusieurs cas d’utilisation de WebMatrix ou Visual Studio :

  • Pour le développeur ASP.Net travaillant sur des projets complexes ou en équipe : Visual Studio est nettement préférable
  • Pour retoucher une application Open Source : WebMatrix simplifie énormément l’installation et la prise en main des applications.
  • Pour le développeur PHP : WebMatrix a un environnement d’édition bien conçu, mais ce sont surtout les fonctionnalités de publication qui sont intéressantes.
  • Pour des développements très courts (un seul développeur) : la syntaxe très concise de Razor permet d’écrire plus rapidement certaines parties du site.

Pour la petite histoire, WebMatrix n’est pas le premier outil Microsoft utilisable en PHP : Expression Web a également cette fonctionnalité, même si elle est plus orientée vers l’édition HTML que vers le développement. WebMatrix est en beta 3 depuis le 9 novembre, et devrait sortir en version 1 dans les mois qui viennent. Si vous désirez creuser les fonctionnalités de Razor sans attendre le prochain article, vous pourrez trouver une série de tutoriaux en anglais (http://www.asp.net/webmatrix) et en français (http://msdn.microsoft.com/fr-fr/asp.net/web-webmatrix.aspx) sur les sites ASP.Net et MSDN.



Faille ASP.Net (oracle cryptographique), suite et fin

clock September 29, 2010 01:17 by author pierre couzy

Bientôt sur Windows update, voici le (enfin, les) correctif officiel pour remédier à la faille exposée il y a deux semaines.

Quelques petits avertissements :

1/ à installer en même temps sur tous les serveurs d’une même ferme

2/ l’installation prend un certain temps (quelques minutes) et les sites peuvent être inaccessibles pendant ce délai.

3/ Si vous reposez sur un cookie pour que les gens n’aient pas à se réauthentifier d’une session à une autre, ce cookie sera perdu.

L’installation comporte entre 1 et 7 mises à jour (chaque version du framework .net fait l’objet d’un à deux correctifs distincts), et Scott Guthrie a publié la liste des correctifs en fonction de la version de l’OS que vous utilisez et des versions de .net déployées.

Une fois ces correctifs déployés, les précédentes mesures de contournement deviennent inutiles.

Le post donnant la liste des correctifs : http://weblogs.asp.net/scottgu/archive/2010/09/28/asp-net-security-update-now-available.aspx



Installer et configurer PHP sur Windows

clock September 17, 2010 04:17 by author pierre couzy

Depuis quelques années, PHP prend de plus en plus d’importance en développement Web. Comment faire tourner PHP sur une plateforme Microsoft ? Comment l’installer ? Quels sont les petits (et gros) pièges ? Il est évidemment impossible d’être exhaustif en quelques pages, mais cet article essaie de balayer les fondamentaux.

Quelle version de PHP installer ?

PHP se compose aujourd’hui de plusieurs grandes briques :

  • Le runtime
  • Les extensions
  • Les frameworks divers

Le runtime est le binaire chargé d’intercepter vos requêtes et de les traiter. La version majoritaire actuelle est PHP 5.2, mais PHP 5.3 devient rapidement la norme, et il existe des différences non négligeables entre les deux environnements, particulièrement sur une plateforme Microsoft.

En effet, les binaires PHP est composés de plusieurs sources (en gros, le runtime lui-même et les extensions), et pour les unifier il faut un compilateur adapté. Le premier compilateur utilisé fréquemment sous windows pour produire un binaire PHP est Visual C 6, c’est-à-dire un produit qui a plus de 10 ans. Même si la qualité de ce compilateur n’est pas à prouver, force est de constater qu’il a vieilli : nous en sommes aujourd’hui à la version 9, qui apporte un certain nombre de nouveautés intéressantes pout PHP :

  • Compilation 64 bits
  • Optimisations de performance
  • Meilleure sécurité

Pour n’en citer que quelques-unes. Comme nous sommes en période de transition, vous trouverez PHP 5.3 en plusieurs versions : des versions VC6, pour assurer la compatibilité avec des modules non encore disponibles sous VC9, et VC9.

Au-delà du compilateur, il existe également deux versions de PHP : l’une est thread-safe, et l’autre non. En d’autres termes, la version thread-safe a été conçue pour être réentrante, en protégeant certaines sections de code pour garantir qu’une exécution simultanée est impossible et que vous ne pouvez pas corrompre les données d’un utilisateur lorsqu’un autre utilisateur consulte votre site Web. Intéressant ? Oui, mais le prix à payer en performance n’est pas négligeable. Utiliser la version non-thread-safe peut sembler un peu inquiétant mais rassurez-vous, l’isolation des processus est assurée à un autre niveau : dans IIS.

Comment IIS exécute vos applications PHP

IIS a la possibilité d’exécuter PHP dans trois modes, et il est important de bien les comprendre :

PHP en processus CGI

Dans ce mode d’exécution, IIS lance un nouvel exécutable PHP pour chaque nouvelle requête. Ce type de fonctionnement est extrêmement lent, et est très rarement utilisé en production. Si votre serveur reçoit une très faible charge, c’est cependant un mode d’exécution offrant une très grande stabilité.

PHP en mode ISAPI

Cette approche a longtemps été la plus performante sous IIS (et Apache, par le biais de modphp). La raison de cette performance est aussi la cause de sa fragilité : toutes les requêtes PHP sont en effet envoyées dans le même binaire PHP, et ce binaire est directement chargé dans IIS. Si l’une de vos applications se comporte mal et fait planter le binaire PHP, l’exécutable dans lequel il vit va subir le même sort, et votre serveur web entier peut tomber. Cette approche impose d’utiliser la version thread safe de PHP, et peut dans certains cas apporter un peu plus de performance que la suivante, mais au détriment de la stabilité.

PHP en mode FastCGI

Le mode fastCGI est un raffinement de CGI : comme dans CGI, IIS passe le contrôle à un autre exécutable lorsqu’une requête PHP lui parvient. La différence est dans la gestion de l’autre exécutable : dans CGI, il est simplement détruit et un autre sera relancé à la requête suivante. Dans le cas de fastCGI, l’exécutable reste chargé en mémoire et servira plus tard à traiter une autre requête. Pour les curieux, la communication entre l’exécutable et IIS est assurée par des canaux nommés en mémoire (on peut aussi utiliser des canaux TCP mais la performance est moindre). Ce mode de fonctionnement permet de fournir des performances identiques à celles de la version ISAPI, en consommant un peu plus de mémoire mais avec une stabilité très supérieure. Vous pouvez dans ce mode utiliser les versions non thread safe de PHP.

En conclusion, les configurations que vous devez privilégier sont dans cet ordre :

Version 5.3 de PHP, pour VC9, en mode non thread safe, et avec IIS en mode FastCGI.

Version 5.2 de PHP, pour VC6, en mode non thread safe, IIS en mode FastCGI

Attention : lorsque vous fonctionnez en mode fastcgi, le processus php-cgi.exe reste en mémoire entre deux appels au serveur Web. Si vous êtes en développement et que vous modifiez le runtime PHP (ajout de nouvelles extensions par exemples), il est important de redémarrer IIS pour forcer l’arrêt et le redémarrage de tous les processus PHP qui pourraient vivre en mémoire. Pour relancer IIS, je vous suggère d’ouvrir un command prompt en mode administrateur et d’y exécuter la commande iisreset chaque fois que vous en avez besoin.

Comment procéder à l’installation de PHP sous IIS

Les pré-requis

Installer PHP sous IIS est relativement simple, et demande simplement de vérifier que quelque pré-requis sont bien respectés. Microsoft met à disposition un utilitaire d’installation que je vous recommande, le Web Platform Installer (téléchargeable sur http://www.microsoft.com/web). Cet outil permet d’automatiser l’installation de toutes les dépendances de PHP, ainsi que de PHP lui-même.

Cependant, la version de PHP actuellement disponible sur WebPI n’est pas la plus récente (il s’agit de la version 5.2), et le chemin d’installation par défaut n’est pas celui que vous voudrez forcément utiliser (les binaires sont installés dans Program Files, ce qui peut être gênant notamment si vous désirez apporter des modifications à PHP.INI). Il faut également noter que l’installation contenue dans WebPI déploie automatiquement un grand nombre d’extensions alors que vous voudrez probablement minimiser celles que vous mettez à disposition de vos applications PHP.

La solution que je vous recommande est de passer par WebPI pour les prérequis et de passer par le site http://windows.php.net pour l’installation de PHP en lui-même.

Pré-requis pour installer PHP sur une machine de production :

IIS+document par défaut+contenu statique+module de réécriture d’URL

CGI - FastCGI (et son hotfix pour IIS 7)

Pour installer ces pré-requis, vous pouvez utiliser ce lien :

http://www.microsoft.com/web/gallery/install.aspx?appid= IIS60;IIS51;StaticContent;defaultdocument;directorybrowse;httperrors;httplogging;loggingtools;requestmonitor;requestfiltering;statuscontentcompression;iismanagementconsole;cgi;FastCGIIIS6;fastcgibackport

 

Installation du runtime PHP

Pour installer PHP, je vous conseille de réfléchir un peu à votre environnement de production avant de vous lancer dans l’aventure. Les questions les plus importantes sont :

  • Quelles sont les permissions dont votre application a besoin sur le disque ?
  • Quelles sont les extensions dont vous avez besoin pour fonctionner ?
  • Quelle version de PHP comptez-vous utiliser ?
  • Le serveur est-il dédié à un site PHP ou partagé par plusieurs sites ?

Si votre serveur doit héberger plusieurs applications PHP, je vous suggère de toutes les faire tourner avec la même version de PHP : c’est un peu plus de travail en recette mais beaucoup moins de risques en maintenance.

Une fois les décisions prises, passons à l’installation de PHP. La méthode que je vous recommande est de passer par l’installeur disponible sur http://windows.php.net. Ne prenez pas le zip à moins de savoir exactement ce que vous faites, car il installe un grand nombre d’extensions et ne paramètre pas FastCGI pour IIS.

L’installeur va vous guider pas à pas dans le processus d’installation et gérer pour vous trois aspects importants :

  • 1/ Renseigner les variables d’environnement permettant à PHP de savoir où trouver PHP.INI
  • 2/ limiter le nombre d’extensions et les configurer dans PHP.INI
  • 3/ Configurer FastCGI pour IIS

La checklist est donc la suivante :

a/ Choisissez votre version de PHP (je recommande chaudement les versions Non Thread Safe)

b/ Choisissez le chemin d’installation

Si vous comptez utiliser plus d’une version de PHP, je vous suggère de créer l’arborescence suivante :

Vous installerez la version principale de PHP dans \PHP\Default, en vous réservant la possibilité d’installer des binaires spécifiques dans un répertoire correspondant au nom du site que vous souhaitez personnaliser.

c/ Choisissez les modules que vous voulez installer. Moins vous en aurez, mieux vous maitriserez la configuration de votre site. A noter que l’installeur proposé sur http://windows.php.net permet de modifier la liste des extensions installées par simple ré-exécution du MSI.

d/ Demandez l’installation de PHP pour FastCGI. Vous pourrez par la suite faire pointer d’autres sites vers d’autres versions de PHP, mais il est nécessaire de faire une première fois un certain nombre de tâches de configuration dans IIS, et c’est ce que permet cette option.

Paramétrage de PHP pour une bonne exécution sous Windows.

Ce paramétrage doit se faire à deux niveaux : d’une part dans IIS, pour que les requêtes soient correctement passées et que IIS puisse gérer quelques aspects spécifiques à PHP, et ensuite dans votre php.ini, qui doit lui aussi être adapté pour un bon fonctionnement sous IIS.

Le paramétrage d’IIS et FastCGI

Pour que PHP se comporte correctement, vous devez définir ou vérifier un certain nombre de paramètres définis dans IIS, et plus spécifiquement dans les paramètres fastCGI :

clip_image002

Vous voyez dans la copie d’écran ci-dessus quelques-uns des paramètres définis pour l’exécution de PHP via FastCGI. Les paramètres importants sont les suivants :

Nombre max d’instances : c’est le nombre de processus php-cgi.exe que FastCGI est autorisé à exécuter simultanément. Vous pouvez mettre 0 pour laisser FastCGI optimiser ce paramètre en fonction de votre configuration

Demandes d’instance max : ce paramètre définit le nombre de requêtes acceptés par votre processus avant recyclage. Attention, PHP dispose de son propre système de recyclage de processus, et vous devez vous assurer que celui-ci ne prendra pas la main au mauvais moment. Pour ce faire, il vous faut modifier une variable d’environnement définie au lancement du processus php-cgi.exe par FastCGI :

clip_image004

Vous voyez ici l’ensemble des paramètres vous permettant d’influer sur le comportement de php :

Analyser les modifications du fichier permet de définir le paramètre MonitorFileChanges, il sert à redémarrer les instances de php-cgi.exe en cas de modification du fichier php.ini (ce qui vous évitera de faire iisreset à chaque mise à jour).

Le nombre maximal de demandes d’instances doit être supérieur à PHP_FCGI_MAX_REQUESTS : ce dernier paramètre est celui que PHP utilise pour déterminer qu’il doit redémarrer, et vous ne voulez pas que PHP redémarre sans en avoir reçu l’ordre depuis IIS.

L’autre variable d’environnement est très importante : PHPRC est en effet l’une des techniques que le runtime PHP utilise pour déterminer le chemin d’accès au fichier PHP.INI qu’il doit prendre en compte. Si vous désirez déployer en production plusieurs versions de PHP, c’est ce paramètre qui vous permettra de faire pointer chaque runtime PHP vers son PHP.INI.

Le paramétrage de php.ini

Ce fichier comporte le paramétrage fin de PHP, ainsi que la liste des extensions chargées au démarrage de PHP. Voici la liste des points à vérifier sur votre installation :

fastcgi.impersonate = 1

Ce paramètre permet à PHP de fonctionner sous le compte utilisé par IIS. Pour les accès anonymes sous IIS7 et IIS7.5 il s’agit du compte IUSR, et c’est à lui que vous devrez donner les permissions adéquates (par exemple pour utiliser la sécurité intégrée dans sql server, ou accéder à des fichiers)

cgi.fix_pathinfo=1

Il s’agit d’une correction mineure des variables d’environnement.

cgi.force_redirect = 0

Pas ou peu de documentation sur ce paramètre, il est apparemment utilisé pour Apache pour mitiger un risque de sécurité

extension_dir = "…"

C’est l’emplacement où résident les extensions que vous désirez monter dans le runtime PHP.

Quel est le compte qui fait tourner votre runtime PHP ?

Attention, cette section est capitale pour comprendre la sécurité et les droits d’accès de votre application, et les bonnes pratiques sont bienvenues en ce domaine, particulièrement si vous hébergez plusieurs applications Web sur un environnement de production. Afin de simplifier un peu la discussion je vais me limiter aux versions récentes de Windows, les comptes de sécurité par défaut ayant pas mal évolué dans les dernières versions d’IIS.

L’identité de votre processus est déterminée par un ensemble d’étapes. Supposons qu’une bête requête arrive sur votre serveur, et voyons comment IIS va la traiter et déterminer qui l’exécute.

1/ Le serveur accepte les accès anonymes

Dans ce cas, IIS va utiliser l’identité associée à l’utilisateur anonyme pour déterminer s’il a le droit de poursuivre son chemin jusqu’à la page (ou image) demandée. Le premier compte à connaître est celui qu’IIS tente d’attribuer à PHP-CGI.exe. Dans IIS, les applications Web sont exécutées dans des pools d’applications. Chaque pool d’applications a un paramètre important pour PHP : son identité. Les valeurs courantes de cette identité sont :

LocalService, NetworkService, ou LocalSystem

Ce sont les comptes de service pré-définis habituels. Il existe cependant un autre type d’identité prédéfinie :

ApplicationPoolIdentity

Il s’agit d’un compte nommé IIS APPPOOL\NomDuPool qui est créé et maintenu dynamiquement par le système. Choisir ApplicationPoolIdentity (c’est la valeur par défaut sous IIS 7.5) permet d’avoir automatiquement un compte de service distinct par pool d’application, et donc une meilleure isolation entre les différents sites web associés à ces pools.

Tout compte de votre choix

Vous pouvez bien évidemment attribuer un compte de votre choix.

Est-ce que ce compte est celui qui fait tourner mon processus PHP ?

Oui et non : en mode anonyme oui, en mode authentifié c’est une question de paramétrage

2/ Le serveur refuse un accès anonyme.

Dans ce cas, IIS et le navigateur vont négocier pour déterminer votre identité. Si cette identité est un compte windows, PHP va prendre une décision en fonction du paramètre fastcgi.impersonate présent dans PHP.INI. Si cette valeur est à 1, l’identité qui exécute votre requête est celle de l’utilisateur. Si la valeur est nulle, c’est toujours le compte anonyme qui exécute php-cgi.exe.

Attention, il est également possible de changer cette valeur dans les paramètres du site, auquel cas le compte défini pour le site sera utilisé en lieu et place du compte défini par le pool d’applications.

Quelques erreurs fréquentes

Attention, les pièges sont nombreux sur les extensions, en voici quelques-uns :

Mauvaise version de PHP.INI : veillez toujours à contrôler que PHP utilise bien le PHP.INI de votre choix, si ce n’est pas le cas vérifiez la variable d’environnement PHPRC. Le symptôme : vous modifiez PHP.INI et vos modifications ne sont pas prises en compte.

Oubli du redémarrage d’IIS : si vous n’avez pas correctement configuré IIS pour qu’il redémarre automatiquement PHP lorsque vous modifiez le fichier php.ini (par défaut il n’est pas surveillé), les modifications de php.ini ne sont prises en compte qu’au lancement d’un nouveau php-cgi.exe. Symptôme : vous faites des modifications et vous testez, le comportement est variable (vous tombez une fois sur deux sur le php-cgi.exe qui a pris en compte vos modifications, et une fois sur deux sur le précédent).

Mauvaise version des extensions : si vous ne prenez pas la version de l’extension correspondant à votre binaire (version thread safe sur un binaire php non thread safe par exemple), son chargement ou son initialisation échouent. Symptômes : variés, depuis la page blanche jusqu’à un message d’erreur abscons.

open_basedir = "…"

Cette directive permet de restreindre les droits d’accès fichier du runtime PHP aux répertoires spécifiés (séparateur : point-virgule). Veillez à terminer le nom de chaque répertoire par un antislash.

Pour vérifier (et paramétrer) simplement les aspects PHP.ini, n’oubliez pas PHP Manager.



PHP Manager pour IIS

clock September 15, 2010 12:43 by author pierre couzy

Je viens d’installer la beta du module d’administration PHP pour IIS (http://phpmanager.codeplex.com/). C’est l’œuvre de Ruslan Yakushev, qui a aussi pondu Wincache (http://www.iis.net/download/wincacheforphp).

 

En deux mots, c’est un assistant de configuration de PHP sous IIS qui permet de

 

  • Mettre en place N versions de PHP sans douleur image
  • Accéder à PHP.ini de façon lisible (une grande première)
  • Choisir les extensions à charger parmi les extensions disponibles.
  • Accéder aux logs de PHP
  • etc..

 

 

Installer correctement PHP sous Windows est plus simple que par le passé, mais les docs disponibles sur internet sont souvent datées et proposent plein de petites astuces qui marchent pas ou mal, cet outil donne une configuration simple et sans surprises.



Drupal 7 sous Sql Server

clock September 8, 2010 17:56 by author Administrator

Sql Server et Drupal ? Nous avons travaillé ces derniers mois à garantir le bon fonctionnement de Drupal sous Sql Server, et la version beta publiée pour la DrupalCon de Copenhague est assez avancée pour être testable.

Le développement s’est effectué en collaboration entre Commerce Guys, une société spécialisée sur Drupal et l’e-commerce, et bien évidemment Microsoft.

Ce qu’a fait Microsoft

Les équipes Sql Server avaient déjà développé il y a quelque temps un driver PHP pour Sql Server, la dernière version ajoute le format PDO, de plus en plus utilisé dans les applications PHP (Drupal bien sur, mais aussi Propel et Doctrine, pour citer quelques frameworls). Ce driver PDO est installable soit par WebPI (http://www.microsot.com/web) pour PHP 5.2.13, soit directement sur Codeplex (http://sqlsrvphp.codeplex.com) si vous utilisez une autre version de PHP.

 

Ce qu’a fait Commerce Guys

Commerce Guys est une société spécialisée sur Drupal et l’e-commerce (ils emploient notamment Damien Tournoud qui a fait un gros travail dans Drupal sur les couches d’abstraction de bases de données, ainsi que Ryan Szrama, l’auteur de UberCart). Ils ont développé un fournisseur Sql Server pour Drupal 7, qui permet d’installer et d’utiliser Drupal avec Sql Server en quelques clics

Pour tester : http://www.microsoft.com/web/drupal

Drupal 7 and Microsoft SQL Server from Commerce Guys on Vimeo.