Copyright © 1997 - 2008 par le PHP Documentation Group. Ce document ne peut être redistribué qu'aux termes et aux conditions mentionnés dans la licence Open Publication License, version 1.0 ou plus récente. Une copie de la licence Creative Commons Attribution 3.0 est distribuée avec ce manuel ; la dernière version est disponible à » http://creativecommons.org/licenses/by/3.0/.
Dans le cas où vous seriez intéressés par la distribution partielle ou totale de ce document (modifié ou non) et que vous ayez des questions, merci de contacter les propriétaires du Copyright à » doc-license@lists.php.net. Notez que cette adresse courriel est directement redirigée vers une liste de diffusion publique et archivée.
PHP est un acronyme récursif, qui signifie "PHP: Hypertext Preprocessor" : c'est un langage de script HTML, exécuté côté serveur. Sa syntaxe est empruntée aux langages C, Java et Perl, et est facile à apprendre. Le but de ce langage est de permettre aux développeurs web d'écrire des pages dynamiques rapidement, mais vous pouvez faire beaucoup plus avec PHP.
Ce manuel est essentiellement une référence des fonctions, mais il contient aussi des informations de référence sur le langage, des explications sur les fonctionnalités principales de PHP et diverses informations supplémentaires.
Vous pouvez télécharger ce manuel sous divers formats, sur » http://www.php.net/download-docs.php, et sur le site de » http://www.nexen.net/. Plus d'informations sur ce manuel sont disponibles dans l'appendice À propos du manuel. Si vous voulez découvrir l'histoire de PHP.
Nous mettons en avant les personnes les plus actives dans la préface du manuel mais il y a bien plus de contributeurs qui nous aident actuellement dans notre travail ou qui ont fournis une aide précieuse au projet dans le passé. Il y a beaucoup d'inconnus qui nous ont aidés à travers leurs notes concernant les pages du manuel qui sont continuellement incluses dans le manuel, travail dont nous sommes très reconnaissants. La liste fournie ci-dessous est classée par ordre alphabétique.
Les contributeurs suivants ont eu un impact énorme en ajoutant du contenu dans le manuel : Bill Abt, Jouni Ahto, Alexander Aulbach, Daniel Beckham, Stig Bakken, Jesus M. Castagnetto, Ron Chmara, Sean Coates, John Coggeshall, Simone Cortesi, Markus Fischer, Wez Furlong, Sara Golemon, Rui Hirokawa, Brad House, Pierre-Alain Joye, Etienne Kneuss, Moriyoshi Koizumi, Rasmus Lerdorf, Andrew Lindeman, Stanislav Malyshev, Rafael Martinez, Rick McGuire, Yasuo Ohgaki, Derick Rethans, Rob Richards, Sander Roobol, Egon Schmid, Thomas Schoefbeck, Sascha Schumann, Dan Scott, Masahiro Takagi, Michael Wallner, Lars Torben Wilson, Jim Winstead, Jeroen van Wolffelaar et Andrei Zmievski.
Les contributeurs suivants ont énormément aidé dans l'édition du manuel : Stig Bakken, Gabor Hojtsy, Hartmut Holzgraefe et Egon Schmid.
Les mainteneurs actuellement les plus actifs sont : Friedhelm Betz, Etienne Kneuss, Nuno Lopes, Hannes Magnusson, Felipe Pena et Maciek Sokolewicz.
Ces personnes ont également déployé énormément d'efforts dans le maintien des notes utilisateurs : Mehdi Achour, Daniel Beckham, Friedhelm Betz, Victor Boivie, Jesus M. Castagnetto, Nicolas Chaillan, Ron Chmara, Sean Coates, James Cox, Vincent Gevers, Sara Golemon, Zak Greant, Szabolcs Heilig, Oliver Hinckel, Hartmut Holzgraefe, Rasmus Lerdorf, Matthew Li, Andrew Lindeman, Aidan Lister, Maxim Maletsky, Bobby Matthis, James Moore, Philip Olson, Sebastian Picklum, Derick Rethans, Sander Roobol, Damien Seguy, Jason Sheets, Tom Sommer, Jani Taskinen, Yasuo Ohgaki, Jakub Vrana, Lars Torben Wilson, Jim Winstead, Jared Wyles et Jeroen van Wolffelaar.
PHP (officiellement, ce sigle est un acronyme récursif pour PHP: Hypertext Preprocessor) est un langage de scripts généraliste et Open Source, spécialement conçu pour le développement d'applications web. Il peut être intégré facilement au HTML.
Bien... mais qu'est ce que cela veut dire ? Un exemple :
Exemple #1 Exemple d'introduction
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Exemple</title>
</head>
<body>
<?php
echo "Bonjour, je suis un script PHP !";
?>
</body>
</html>
Au lieu d'utiliser des tonnes de commande afin d'afficher du HTML (comme en C ou en Perl), les pages PHP contiennent des fragments HTML dont du code qui fait "quelque chose" (dans ce cas, il va afficher "Bonjour, je suis un script PHP !"). Le code PHP est inclus entre une balise de début et une balise de fin qui permettent au serveur web de passer en "mode PHP".
Ce qui distingue PHP des langages de script comme le Javascript, est que le code est exécuté sur le serveur, générant ainsi le HTML, qui sera ensuite envoyé au client. Le client ne reçoit que le résultat du script, sans aucun moyen d'avoir accès au code qui a produit ce résultat. Vous pouvez configurer votre serveur web afin qu'il analyse tous vos fichiers HTML comme des fichiers PHP. Ainsi, il n'y a aucun moyen de distinguer les pages qui sont produites dynamiquement des pages statiques.
Le grand avantage de PHP est qu'il est extrêmement simple pour les néophytes, mais offre des fonctionnalités avancées pour les experts. Ne craignez pas de lire la longue liste de fonctionnalités PHP. Vous pouvez vous plonger dans le code, et en quelques instants, écrire des scripts simples.
Bien que le développement de PHP soit orienté vers la programmation pour les sites web, vous pouvez en faire bien d'autres usages. Lisez donc la section Que peut faire PHP ? ou bien le tutoriel d'introduction si vous êtes uniquement intéressé dans la programmation web.
Tout. PHP est principalement conçu pour servir de langage de script coté serveur, ce qui fait qu'il est capable de réaliser tout ce qu'un script CGI quelconque peut faire, comme collecter des données de formulaire, générer du contenu dynamique, ou gérer des cookies. Mais PHP peut en faire bien plus.
Il y a trois domaines différents où PHP peut s'illustrer.
PHP est utilisable sur la majorité des systèmes d'exploitation, comme Linux, de nombreuses variantes Unix (incluant HP-UX, Solaris et OpenBSD), Microsoft Windows, Mac OS X, RISC OS et d'autres encore. PHP supporte aussi la plupart des serveurs web actuels : Apache, Microsoft Internet Information Server, Personal Web Server, Netscape et iPlanet servers, Oreilly Website Pro server, Caudium, Xitami, OmniHTTPd et beaucoup d'autres encore. Pour la majorité des serveurs web, PHP fonctionne comme module et, pour d'autres, il comme exécutable CGI.
Avec PHP vous avez le choix de votre système d'exploitation et de votre serveur web. De plus, vous avez aussi le choix d'utiliser la programmation procédurale ou objet, ou encore un mélange des deux. Bien que le support de la couche objet ne soit pas très standard en PHP 4, beaucoup de bibliothèques et d'applications d'envergures (incluant la bibliothèque PEAR) ont été écrites en utilisant uniquement du code orienté objet. PHP 5 a rectifié les faiblesses de la couche objet de PHP 4 et a introduit un modèle objet complet.
Avec PHP, vous n'êtes pas limité à la production de code HTML. Les capacités de PHP lui permettent de générer aussi bien des images, des fichiers PDF, des animations Flash (avec l'aide des bibliothèques libswf et Ming) générés à la volée. Vous pouvez aussi générer facilement du texte, du code XML ou XHTML. PHP génère tous ces fichiers et les sauve dans le système de fichier, ou bien les envoie directement au navigateur web.
Une des grandes forces de PHP est le support de nombreuses bases de données. Ecrire une page web exploitant une base de données est extrêmement simple. Les bases de données suivantes sont toutes supportées par PHP :
Il existe aussi une couche d'abstraction de base de données (nommée PDO) qui vous permettent de vous connecter de manière transparente à toute base de données supportée par cette extension. De plus, PHP supporte ODBC, ce qui vous permet de vous connecter à toute autre base de données qui supporte ce standard.
- Adabas D
- dBase
- Empress
- FilePro (lecture seule)
- Hyperwave
- IBM DB2
- Informix
- Ingres
- InterBase
- FrontBase
- mSQL
- Direct MS-SQL
- MySQL
- ODBC
- Oracle (OCI7 et OCI8)
- Ovrimos
- PostgreSQL
- SQLite
- Solid
- Sybase
- Velocis
- Unix dbm
PHP supporte de nombreux protocoles comme LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (sous Windows) et encore d'autres. Vous pouvez ouvrir des sockets réseau, et intéragir avec n'importe quel autre protocole. PHP supporte le format complexe WDDX, qui permet de communiquer entre tous les langages web. En terme d'interconnexion, PHP supporte aussi les instanciations d'objets Java, et les utilise de manière transparente comme objets intégrés. Vous pouvez aussi exploiter les objets distants avec CORBA.
PHP dispose de fonctionnalités extrêmement utiles pour le traitement de texte, allant des expressions rationnelles POSIX étendues ou Perl aux traitements des fichiers XML, avec les standards SAX et DOM (PHP 4). Vous pouvez utiliser les transformations XSLT. PHP 5 standardise toutes les extensions XML sur la base solide de libxml2 et en attendant les fonctionnalités en ajoutant le support de SimpleXML et XMLReader.
Enfin, PHP dispose d'extensions très pratiques comme le moteur de recherche mnoGoSearch, la passerelle avec IRC, des outils de compression (gzip, bz2, zip) et de conversion calendaire, de traduction...
Comme vous le voyez, cette page n'est pas assez grande pour lister toutes les puissantes fonctionnalités de PHP. Lisez la section sur l'installation de PHP et étudiez la liste de fonctions pour avoir plus de détails sur toutes ces technologies.
Dans cette section, nous voulons illustrer les principes de base de PHP dans une courte introduction. Ce chapitre traite uniquement de création de pages web dynamiques avec PHP, laissant de coté temporairement les autres possibilités de PHP. Voyez la section Ce que peut faire PHP pour plus d'informations.
Les pages web qui exploitent PHP sont traitées comme des pages HTML standards, et vous pouvez les créer, éditer et effacer tout comme vous le faites normalement avec des pages HTML classiques.
Dans ce tutoriel, nous présumons que vous avez un serveur web avec le support PHP activé, et que les fichiers terminés par l'extension .php sont traités par PHP. Sur la plupart des serveurs, c'est la configuration par défaut, mais n'hésitez pas à interroger votre administrateur système en cas de doute. Si votre serveur web supporte PHP, vous n'avez rien à faire. Simplement, créez un dossier, puis créez un fichier texte, avec l'extension .php : le serveur va automatiquement l'exécuter avec PHP. Il n'y a pas de compilation, ou d'installation compliquée. Gardez en tête que les fichiers sont comparables à des fichiers HTML, dans lesquels vous allez utiliser des balises magiques, qui feront beaucoup de choses pour vous. Beaucoup d'hébergeurs web proposent PHP mais si ce n'est pas le cas, lisez la section des » liens PHP pour trouver un hébergeur web le proposant.
Supposons que vous souhaitiez économiser du temps en ligne et travailler localement. Dans ce cas, vous devez installer un serveur web comme » Apache, et bien sur » PHP. Vous souhaiterez aussi installer une base de données comme » MySQL.
Vous pouvez soit installer ces logiciels individuellement ou bien d'une manière simplifiée. Notre manuel contient les instructions d'installation de PHP (en supposant que vous avez déjà un serveur web d'installé). Dans le cas où vous rencontriez des problèmes dans l'installation de PHP, nous vous suggérons de poser vos questions sur notre » liste de diffusions réservée à cet usage. Si vous choisissez une version simplifiée, vous pouvez utiliser des » des installeurs qui prennent en charge l'ensemble de l'installation en quelques clics. Il est facile de configurer un serveur web avec le support de PHP sur n'importe quel système d'exploitation, y compris MacOs, Linux et Windows. Sous Linux, vous pouvez aussi trouver des commandes comme » rpmfind et » PBone très pratiques pour rechercher les paquets pré-compilés. Vous pouvez aussi visiter » apt-get, pour des paquets Debian.
Créez un fichier appelé bonjour.php dans votre dossier web racine (DOCUMENT_ROOT) avec le contenu suivant :
Exemple #1 Notre premier script PHP : bonjour.php
<html>
<head>
<title>Test PHP</title>
</head>
<body>
<?php echo '<p>Bonjour le monde</p>'; ?>
</body>
</html>
Utilisez votre navigateur pour accéder au fichier via votre serveur web, en ajoutant le nom de fichier /bonjour.php. Si vous développez localement, votre URL ressemblera à http://localhost/bonjour.php ou encore http://127.0.0.1/bonjour.php mais cela dépend de la configuration de votre serveur web. Si ceci est configuré correctement, le fichier sera analysé par PHP et le résultat suivant affiché :
<html> <head> <title>Test PHP</title> </head> <body> <p>Bonjour le monde</p> </body> </html>
Ce programme est extrêmement simple et vous n'avez pas besoin de PHP pour créer une page web comme ceci. Elle ne fait qu'afficher Bonjour le monde, grâce à la fonction echo() de PHP. Notez que ce fichier n'a pas besoin d'être exécutable ou autres, dans aucun cas. Le serveur sait que ce fichier a besoin d'être interprété par PHP car vous utilisez l'extension ".php", et le serveur est configuré pour les passer à PHP. Voyez cela comme une page HTML normale qui contient une série de balises spéciales qui vont vous permettre de réaliser beaucoup de choses intéressantes.
Si vous avez essayé cet exemple et qu'il n'a rien affiché de spécial, ou même qu'une boîte de dialogue a surgi pour vous proposer de le télécharger, ou encore vous avez vu le code tel que nous l'avons écrit dans le fichier, alors votre serveur web ne supporte probablement pas PHP ou est mal configuré. Demandez à votre administrateur de l'activer pour vous, en utilisant le chapitre Installation. Si vous développer localement, lisez également le chapitre d'installation afin de vous assurer que tout est configuré correctement. Assurez-vous que vous tentez d'accéder au fichier via http et que le serveur web vous fournit la sortie. Si vous appelez votre fichier depuis votre gestionnaire de fichiers, il ne sera pas analysé par PHP. Si le problème persiste malgré cela, n'hésitez pas à utiliser une » des options de support de PHP.
Le point important de cet exemple était de montrer le format des balises spéciales PHP. Nous avons utilisé ici <?php pour indiquer le début de la balise PHP. Puis, nous avons introduit les commandes PHP et refermé les balises PHP avec ?>. Vous pouvez passer du mode PHP au mode HTML et vice-versa, de cette manière, et à votre guise. Pour plus d'informations, lisez la section du manuel sur la syntaxe basique de PHP.
Note: Une note sur les retours à la ligne
Les retours à la ligne ont une signification minime en HTML, cependant, c'est toujours une bonne idée de rendre votre HTML aussi joli et proche que possible en y ajoutant des retours à la ligne. Un retour à la ligne suivant immédiatement une balise de fermeture PHP (?>) sera supprimé par PHP. Ceci peut être vraiment très utile lorsque vous insérez plusieurs blocs PHP ou fichiers inclus contenant du PHP qui n'est pas supposé afficher quoi que ce soit. En même temps, ce peut être confus. Vous pouvez ajouter un espace après la balise fermante PHP (?>) pour forcer l'espace et un retour à la ligne à afficher, ou vous pouvez ajouter explicitement un retour à la ligne dans le dernier echo/print de votre bloc PHP.
Note: Une note sur les éditeurs de texte
Il existe de nombreux éditeurs de texte et environnements de développement (IDE) que vous pouvez utiliser pour créer, éditer et gérer vos applications PHP. Une liste partielle de ces outils est entretenue à l'adresse » PHP Editor's List. Si vous voulez recommander un éditeur particulier, rendez donc une visite à cette page, et demandez au webmestre d'ajouter votre éditeur. Avoir au minimum un éditeur de texte avec la coloration syntaxique est vivement recommandé.
Note: Une note sur les traitements de texte
Les traitements de texte tels que StarOffice Writer, Microsoft Word et Abiword sont de très mauvais choix pour éditer des scripts PHP. Si vous voulez utiliser l'un d'entre eux, malgré tout, pour tester vos scripts, vous devez vous assurer que vous sauvez les fichiers au format texte seul (plain text) : sinon, PHP ne sera pas capable de lire et d'exécuter ces scripts.
Note: Une note sur le Notepad de Windows
Si vous écrivez vos scripts PHP avec Windows Notepad, vous devez vous assurer que vos fichiers sont sauvés avec l'extension .php (Notepad ajoute automatiquement une extension .txt à vos fichiers, à moins que vous ne preniez l'une des mesures suivantes). Lorsque vous sauvez un fichier, et que vous êtes invité à lui donner un nom, placez le nom du fichier entre doubles guillemets (i.e. "hello.php"). Vous pouvez également cliquer dans le menu 'Documents texte' du dialogue de sauvegarde, et choisir l'option 'Tous les fichiers'. Vous pourrez alors saisir le nom de votre fichier sans les doubles guillemets.
Maintenant vous avez créé un script PHP qui fonctionne, c'est le moment de créer le meilleur script PHP ! Faites un appel à la fonction phpinfo() et vous verrez beaucoup d'informations intéressantes sur votre système et sa configuration comme les variables pré-définies disponibles, les modules PHP chargés ainsi que la configuration. Prenez du temps pour revoir ces informations importantes.
Exemple #2 Récupération des informations du système depuis PHP
<?php phpinfo(); ?>
Réalisons maintenant quelque chose de plus puissant. Nous allons vérifier le type de navigateur que le visiteur de notre site utilise. Pour cela, nous allons accéder aux informations que le navigateur du visiteur nous envoie, lors de sa requête HTTP. Cette information est stockée dans une variable. Les variables sont faciles à repérer, car elles commencent toutes par un signe dollar. La variable qui nous intéresse ici est $_SERVER['HTTP_USER_AGENT'].
Note: $_SERVER est une variable spéciale de PHP, qui contient toutes les informations relatives au serveur web. C'est une variable réservée de PHP, et une superglobale. Reportez-vous aux pages du manuel traitant des Auto-globales (aussi connues sous le nom de super-globales). Ces variables spéciales ont été introduites en » PHP 4.1.0. Auparavant, il fallait utiliser les variables $HTTP_*_VARS, comme $HTTP_SERVER_VARS. Bien qu'obsolètes, ces variables existent toujours. (Voir aussi la note sur l'ancien code.)
Pour afficher cette variable, nous pouvons simplement faire :
Exemple #1 Afficher le contenu d'une variable (élément de tableau)
<?php
echo $_SERVER['HTTP_USER_AGENT'];
?>
Un résultat possible du script pourra alors être :
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Il y a de nombreux types de variables disponibles en PHP. Dans l'exemple ci-dessus, nous avons affiché un élément de Tableau (Array). Les tableaux peuvent être très utiles.
$_SERVER est juste une variable qui est automatiquement disponible dans votre script. Une liste de toutes les variables qui sont rendues disponibles est fournie dans la section Variables réservées ou vous pouvez aussi en obtenir une liste complète en lisant l'affichage de la fonction phpinfo() utilisée dans l'exemple de la section précédente.
Vous pouvez ajouter plusieurs commandes PHP dans une balise PHP, et créer de petits blocs de code qui réalisent des opérations plus complexes qu'un simple affichage. Par exemple, si nous voulons vérifier que le navigateur est bien de la famille des Internet Explorer, nous pouvons faire cela :
Exemple #2 Exemple utilisant les structures de contrôle et les fonctions
<?php
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) {
echo 'Vous utilisez Internet Explorer<br />';
}
?>
Le résultat de ce script, si vous utilisez Internet Explorer, sera :
Vous utilisez Internet Explorer<br />
Ici, nous introduisons plusieurs nouveaux concepts. Nous avons une structure if. Si vous êtes familier avec les syntaxes de base du langage C, cela ne vous surprendra pas. Si vous ne connaissez pas assez le langage C ou un autre langage où la syntaxe est similaire à celle ci-dessus, il vaudrait mieux que vous lisiez une introduction à PHP, et assimiliez les premiers chapitres, ou bien lisez le chapitre consacré à la référence du langage.
Le second concept que nous avons introduit est la fonction strpos(). strpos() est une fonction intégrée à PHP, qui recherche la présence d'une chaîne dans une autre. Dans notre cas, nous avons recherché la chaîne "MSIE" dans la chaîne $_SERVER['HTTP_USER_AGENT']. Si cette chaîne est trouvée, la fonction retourne sa position dans la chaîne et, sinon, FALSE. Si elle ne retourne pas FALSE, la structure if reçoit TRUE et le code entre accolades {} est exécuté. Sinon, le code n'est pas exécuté. N'hésitez pas à expérimenter d'autres exemples, à l'aide de if, else, et d'autres fonctions comme strtoupper() et strlen(). Chaque page de la documentation contient aussi des exemples. Si vous n'êtes pas sûr de l'utilisation de ces fonctions, vous devez lire la page du manuel "comment lire une définition de fonction" ainsi que la section sur les fonctions PHP.
Nous pouvons maintenant progresser et vous montrer comment utiliser le mode PHP, au milieu du code HTML :
Exemple #3 Passer du mode PHP au mode HTML et vice-versa
<?php
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) {
?>
<h3>strpos() n'a pas retourné FALSE</h3>
<p>Vous utilisez Internet Explorer</p>
<?php
} else {
?>
<h3>strpos() a retourné FALSE</h3>
<p>Vous n'utilisez pas Internet Explorer</p>
<?php
}
?>
Un exemple de résultat obtenu dans ce script est :
<h3>strpos() n'a pas retourné FALSE</h3> <p>Vous utilisez Internet Explorer</p>
Au lieu d'utiliser une commande echo(), pour afficher du texte, vous pouvez utiliser du code HTML pur. Le point important a noter ici et que la logique de programmation est conservée. Seul un des deux blocs HTML sera affiché, suivant le résultat de la fonction strpos(). En d'autres termes, cela dépend si la chaîne MSIE a été trouvée ou non.
L'un des points forts de PHP est sa capacité à gérer les formulaires. Le concept de base qui est important à comprendre est que tous les champs d'un formulaire seront automatiquement disponibles dans le script PHP d'action. Lisez le chapitre du manuel concernant les variables depuis des sources externes à PHP pour plus d'informations et d'exemples sur la façon d'utiliser les formulaires. Voici un exemple de formulaire HTML :
Exemple #1 Un simple formulaire HTML
<form action="action.php" method="post"> <p>Votre nom : <input type="text" name="nom" /></p> <p>Votre âge : <input type="text" name="age" /></p> <p><input type="submit" value="OK"></p> </form>
Il n'y rien de particulier dans ce formulaire. Il est en HTML pur, sans aucune configuration particulière. Lorsque le visiteur remplit le formulaire, et clique sur le bouton OK, le fichier action.php est appelé. Dans ce fichier, vous pouvez écrire le script suivant :
Exemple #2 Afficher des données issues d'un formulaire
Bonjour, <?php echo htmlspecialchars($_POST['nom']); ?>.
Tu as <?php echo (int)$_POST['age']; ?> ans.
Voici le résultat que vous pourriez obtenir, selon les valeurs que vous avez saisies :
Bonjour Jean. Tu as 29 ans.
Mise à part les parties htmlspecialchars() et (int), ce script ne fait que des choses évidentes. htmlspecialchars() s'assure que tous les caractères spéciaux HTML sont proprement encodés afin d'éviter des injections de balises HTML et de Javascript dans vos pages. Pour l'âge, vu que nous savons que c'est un entier, vous pouvez le convertir en un entier. Vous pouvez également demander à PHP de le faire automatiquement à votre place en utilisant l'extension filter. Les variables $_POST['nom'] et $_POST['age'] sont automatiquement créés par PHP. Un peu plus tôt dans ce tutoriel, nous avons utilisé la variable $_SERVER, une superglobale. Maintenant, nous avons introduit une autre superglobale $_POST qui contient toutes les données envoyées par la méthode POST. Notez que dans notre formulaire, nous avons choisi la méthode POST. Si vous avions utilisé la méthode GET alors notre formulaire aurait placé ses informations dans la variable $_GET, une autre superglobale. Vous pouvez aussi utiliser la variable $_REQUEST, si vous ne souhaitez pas vous embarrasser de la méthode utilisée. Elle contient un mélange des données de GET, POST, COOKIE et FILE. Voyez aussi la fonction import_request_variables().
Vous pouvez également utiliser des champs XForms dans PHP, même si vous vous sentez bien avec l'utilisation des formulaires HTML. Bien que le travail avec XForms ne soit pas fait pour les débutants, vous pourriez être intéressé par cette technologie. Nous avons également une courte introduction sur le traitement des données reçues par XForms dans notre section sur les fonctionnalités.
Maintenant que PHP est devenu un langage de script populaire, il existe de nombreuses ressources qui vous proposent des portions de code que vous pouvez réutiliser dans vos codes. Pour la plupart, les développeurs de PHP ont tâché d'assurer la compatibilité ascendante, ce qui fait que de nombreux scripts écrits pour les anciennes versions sont aussi valables pour les nouvelles versions de PHP, idéalement sans modifications. En pratique, certaines modifications doivent être apportées.
Les deux modifications récentes les plus importantes qui affectent les anciens codes sont :
Avec ce que vous savez, vous êtes maintenant capable de comprendre l'essentiel de la documentation PHP, et les différents scripts d'exemples disponibles dans les archives. Vous pouvez aussi trouver d'autres exemples dans la section liens ("links", en anglais) du site » http://www.php.net/links.php.
Différentes présentations des capacités de PHP sont disponibles sur le site des conférences PHP : » http://talks.php.net/.
Avant d'installer PHP, vous devez savoir ce que vous voulez faire de PHP. Il y a trois cas d'utilisation que vous a décrit la section Que peut faire ? :
Pour la première tâche, qui est de loin la plus répandue, vous avez besoin de trois choses : PHP lui-même, un serveur web et un navigateur. Vous avez probablement un navigateur, et en fonction de votre système d'exploitation, vous pouvez aussi disposer d'un serveur Web (i.e. Apache sous Linux ou IIS sous Windows). Vous pouvez aussi louer un espace à une société. De cette façon, vous n'aurez pas à mettre en place PHP, mais uniquement à écrire vos scripts, les charger sur le serveur et voir le résultat sur votre navigateur.
Si vous installez PHP et le serveur par vous-même, vous avez deux choix. Soit sous la forme d'un module du serveur web (via une interface directe appelée SAPI). Les serveurs qui supportent cette solution comptent notamment Apache, Microsoft Internet Information Server, Netscape et iPlanet. D'autres serveurs ont aussi le support ISAPI, l'interface de module Microsoft (OmniHTTPd par exemple). Si PHP ne supporte pas l'interface de module de votre serveur web, vous pouvez toujours l'utiliser comme processeur CGI. Cela signifie que vous devez configurer votre serveur pour qu'il utilise l'exécutable PHP (php.exe sous Windows), pour qu'il traite les fichiers PHP sur le serveur.
Si vous souhaitez aussi utiliser PHP en ligne de commande (écrire des scripts de génération d'image hors ligne, par exemple, ou bien traiter des textes en fonctions d'informations que vous leur passeriez), vous aurez besoin d'un exécutable PHP. Pour plus de détails, lisez la section écrire des applications PHP en ligne de commande. Dans ce cas, vous n'aurez pas besoin de serveur web, ni de navigateur.
Avec PHP, vous pouvez aussi écrire des interfaces graphiques clientes, en utilisant l'extension PHP-GTK. C'est une approche complètement différente de l'écriture des pages web, car vous ne générerez pas de fichiers HTML, mais vous aurez à gérer des fenêtres et des objets. Pour plus de détails sur PHP-GTK, voyez le » site officiel. PHP-GTK n'est pas inclus dans la distribution officielle de PHP.
À partir de maintenant, cette section décrit l'installation de PHP avec un serveur web sous Unix et Windows, sous forme de module ou d'exécutables CGI.
Les codes source et les exécutables compilés de certains OS (y compris Windows), sont disponibles à » http://www.php.net/downloads.php. Nous recommandons l'utilisation du » miroir le plus proche pour accélérer les chargements.
Cette section va vous guider lors du processus d'installation et de configuration de PHP sous Unix. Commencez par étudier les sections spécifiques à votre plate-forme ou à votre serveur web avant de passer à l'installation.
Comme ce que nous avons écrit dans le manuel dans la section Considérations générales sur l'installation, nous traiterons de l'installation de PHP sur des serveurs web dans cette section, bien que nous couvrirons également la configuration de PHP pour l'utilisation en lignes de commande.
Il y a plusieurs manières d'installer PHP sur des plates-formes Unix : soit avec un processus de compilation/configuration, soit avec des paquets précompilés. Cette documentation est particulièrement focalisée sur le processus de compilation/configuration. Beaucoup de systèmes basés sur Unix ont plusieurs sortes de paquets d'installation pour leur système. Ils permettent de vous assister dans une configuration standard, mais si vous avez besoin d'avoir des fonctionnalités différentes (comme un serveur sécurisé ou un driver différent de bases de données), vous aurez besoin de construire PHP et/ou votre serveur web. Si vous n'êtes pas familiarisé avec la construction et la compilation de vos propres logiciels, il sera plus simple de vérifier si quelque part, personne n'a déjà construit une version de paquet de PHP avec les fonctionnalités dont vous avez besoin.
Pré-requis :
La configuration initiale de PHP et le processus de configuration sont contrôlés par l'utilisation du fichier configure et de ces options en lignes de commande. Vous pouvez récupérer une liste de toutes les options disponibles accompagnées d'une courte description en exécutant la commande ./configure --help. Notre manuel documente les différentes options séparément. Vous pouvez trouver les options internes en annexe, bien que les différentes options spécifiques à chaque extension sont décrites sur les pages de référence.
Lorsque PHP est configuré, vous êtes prêt à construire le module et/ou l'exécutable. La commande make devrait s'occuper de cela. Si elle échoue et que vous ne savez pas pourquoi, lisez la section Problèmes.
Cette section contient des notes spécifiques pour l'installation de PHP avec Apache sur les systèmes Unix. Des notes spécifiques pour Apache 2 sont aussi disponibles sur une page séparée.
Vous pouvez sélectionner des options à ajouter au fichier configure à la ligne 10 depuis la liste complète des options de configuration. Les numéros de versions ont été omis ici afin de s'assurer que les instructions ne soient pas incorrectes. Vous devrez donc remplacer les 'xxx' par les versions correctes de vos fichiers.
Exemple #1 Instructions d'installation de PHP (en module Apache)
1. gunzip apache_xxx.tar.gz 2. tar -xvf apache_xxx.tar 3. gunzip php-xxx.tar.gz 4. tar -xvf php-xxx.tar 5. cd apache_xxx 6. ./configure --prefix=/www --enable-module=so 7. make 8. make install 9. cd ../php-xxx 10. Maintenant, configurez votre PHP. C'est l'endroit où vous configurez PHP avec diverses options, comme les extensions qui seront activées. Lancez ./configure --help pour une liste des options disponibles. Dans notre exemple, nous ferons un ./configure assez simple avec uniquement le support Apache et MySQL. Votre chemin vers apxs peut être différent de notre exemple. ./configure --with-mysql --with-apxs=/www/bin/apxs 11. make 12. make install Si vous décidez de changer vos options de configuration après l'installation, vous aurez juste besoin de répéter les trois dernières étapes. Vous aurez aussi besoin de redémarrer apache pour que le nouveau module soit chargé. Une recompilation de Apache n'est pas nécessaire. Notez que, à moins de l'avoir explicitement désactivé, 'make install' installera aussi PEAR, et des outils PHP tels que phpize, installera le CLI PHP, etc. 13. Configurez votre fichier php.ini : cp php.ini-dist /usr/local/lib/php.ini Vous pouvez éditer votre fichier .ini pour régler certaines options PHP. Si vous souhaitez votre php.ini à un autre endroit, utilisez --with-config-file-path=/votre/chemin lors de l'étape 10. Si vous utiliez plutôt php.ini-recommended, assurez-vous de lire l'ensemble des changements qui y sont contenus, car ils modifient le fonctionnement de PHP. 14. Éditez votre httpd.conf afin de charger le module PHP. Le chemin dans la partie droite de la directive LoadModule doit pointer vers l'endroit où se trouve le module PHP sur votre système. Le make install lancé plus haut l'y aura certainement déjà déposé pour vous, mais assurez vous en. Pour PHP 4 : LoadModule php4_module libexec/libphp4.so Pour PHP 5 : LoadModule php5_module libexec/libphp5.so 15. Et dans la section AddModule de httpd.conf, quelque part en dessous de ClearModuleList, ajoutez ceci : Pour PHP 4 : AddModule mod_php4.c Pour PHP 5 : AddModule mod_php5.c 16. Dites à Apache de faire parser certaines extensions par PHP. Par exemple, faites parser l'extension .php par PHP. Vous pouvez ajouter n'importe quelle(s) extension(s) à parser juste en l'(les)ajoutant à la suite, séparée(s) par un espace. Nous ajouterons .phtml dans notre exemple. AddType application/x-httpd-php .php .phtml Il est assez fréquent de configurer l'extension .phps comme code source PHP colorisé, ce qui peut être fait ainsi : AddType application/x-httpd-php-source .phps 17. Utilisez votre méthode habituelle pour démarrer le serveur Apache. (vous devez l'éteindre et le redémarrer, pas seulement lui envoyer un signal HUP ou USR1.)
Alternativement, pour installer PHP en tant qu'objet statique :
Exemple #2 Instructions d'installation (installation en tant que module statique d'Apache) de PHP
1. gunzip -c apache_1.3.x.tar.gz | tar xf - 2. cd apache_1.3.x 3. ./configure 4. cd .. 5. gunzip -c php-5.x.y.tar.gz | tar xf - 6. cd php-5.x.y 7. ./configure --with-mysql --with-apache=../apache_1.3.x 8. make 9. make install 10. cd ../apache_1.3.x 11. ./configure --prefix=/www --activate-module=src/modules/php5/libphp5.a (La ligne ci-dessus est correcte ! Oui, nous savons que libphp5.a n'existe pas à ce moment. On ne le suppose pas non plus. Il sera créé.) 12. make (vous devriez avoir maintenant un binaire httpd que vous pouvez copier dans votre dossier de binaire Apache ; si c'est votre première installation, vous devez exécuter la commande "make install") 13. cd ../php-5.x.y 14. cp php.ini-dist /usr/local/lib/php.ini 15. Vous pouvez éditer le fichier /usr/local/lib/php.ini pour définir les options de PHP. Éditez votre fichier httpd.conf ou srm.conf et ajoutez : AddType application/x-httpd-php .php
Note: Remplacez php-5 par php-4 et php5 par php4 en PHP 4.
Suivant votre installation d'Apache et votre variante d'Unix, il existe de nombreuses façons d'arrêter et redémarrer Apache. Voici une liste des commandes typiques, pour différentes installations. Remplacez /path/to/ par le chemin d'accès à vos applications sur votre système.
Exemple #3 Exemples de commandes pour le redémarrage d'apache
1. Nombreuses variantes Linux SysV : /etc/rc.d/init.d/httpd restart 2. Avec les scripts apachectl : /path/to/apachectl stop /path/to/apachectl start 3. httpdctl et httpsdctl (utilisant OpenSSL), similaires à apachectl : /path/to/httpsdctl stop /path/to/httpsdctl start 4. En utilisant mod_ssl, ou un autre serveur SSL, vous pouvez vouloir l'arrêter et le démarrer manuellement : /path/to/apachectl stop /path/to/apachectl startssl
L'emplacement des exécutables apachectl et http(s)dctl peut varier. Si votre système est pourvu des commandes locate, whereis ou which, elles peuvent vous aider à retrouver vos programmes.
Différents exemples de compilation PHP pour Apache suivent :
./configure --with-apxs --with-pgsql
Cette commande va créer une bibliothèque partagée libphp5.so (ou libphp4.so en PHP 4) qui sera chargée par Apache avec une ligne LoadModule dans le fichier httpd.conf. Le support PostgreSQL est aussi inclus dans cette bibliothèque.
./configure --with-apxs --with-pgsql=shared
Cette commande va créer une bibliothèque partagée libphp4.so pour Apache, mais va aussi créer la bibliothèque partagée pgsql.so qui sera chargée dans PHP avec une directive du fichier php.ini ou en la chargeant explicitement dans le script avec la fonction dl().
./configure --with-apache=/path/to/apache_source --with-pgsql
Cette commande va créer une autre bibliothèque partagée libmodphp5.a, un fichier mod_php5.c et quelques fichiers associés dans le dossier src/modules/php4 du dossier source Apache. Puis, vous devez compiler Apache avec --activate-module=src/modules/php5/libphp5.a et le système de compilation d'Apache va créer un fichier libphp5.a et le lier statiquement avec httpd (remplacez php5 par php4 en PHP 4). Le support PostgreSQL est alors inclus directement dans l'exécutable httpd, ce qui fait que le résultat final est un fichier unique httpd, qui inclut Apache et PHP.
./configure --with-apache=/path/to/apache_source --with-pgsql=shared
Comme précédemment, mais au lieu d'inclure le support PostgreSQL directement dans l'exécutable httpd final, vous allez obtenir une bibliothèque partagée pgsql.so que vous pouvez charger dans PHP soit grâce au fichier de configuration php.ini ou dynamiquement avec dl().
Lorsque vous faites votre choix entre les différents modes de compilation de PHP, vous devez prendre en compte leurs avantages et inconvénients respectifs. Les objets partagés permettent de compiler PHP et Apache de manière séparée, et vous n'aurez pas à compiler l'ensemble pour faire évoluer PHP. La compilation statique permet de charger et d'exécuter plus rapidement PHP. Pour plus d'informations, voyez la page web sur le » support des DSO.
Note: Le httpd.conf par défaut de Apache est fourni avec une section qui ressemble à ceci :
À moins que vous ne changiez cette valeur par "Group nogroup" ou quelque chose comme ça ("Group daemon" est aussi classique), PHP ne sera pas capable d'ouvrir des fichiers.User nobody Group "#-1"
Note: Assurez-vous que vous spécifiez la version installée de apxs avec l'option --with-apxs=/path/to/apxs. Vous ne devez PAS utiliser la version d'apxs qui est dans les sources d'Apache, mais celle qui est réellement installée sur votre système.
Cette section contient les notes et conseils d'installation de PHP avec le serveur Apache 2.0 sur les systèmes Unix.
Nous ne recommandons pas l'utilisation de PHP dans un environnement threadé MPM, avec Apache 2. Utilisez le mode prefork MPM à la place, ou utilisez Apache 1. Pour savoir pourquoi, lisez l'entrée de la FAQ correspondante à l'utilisation d'Apache 2 dans un environnement threadé MPM.
Il est vivement recommandé de lire la » documentation Apache pour avoir une meilleure connaissance du serveur web Apache 2.0.
Note: Notes sur la compatibilité de PHP avec Apache 2.0
Les versions de PHP suivantes sont reconnues pour fonctionner avec la plus récente version d'Apache 2.0.x :Ces versions de PHP sont compatibles avec Apache 2.0.40 et plus récent.
- PHP 4.3.0 ou plus récent, disponible à » http://www.php.net/downloads.php.
- Les dernières versions stables de développement. Le code source est disponible à » http://snaps.php.net/php5-latest.tar.gz, ou les exécutables compilés pour Windows à » http://snaps.php.net/win32/php5-win32-latest.zip.
- Une version non stable, téléchargeable sur » http://qa.php.net/.
- Vous pouvez obtenir PHP sur le » serveur CVS anonyme.
Le support des SAPI d'Apache 2.0 a commencé avec PHP 4.2.0. PHP 4.2.3 est connu pour fonctionner avec Apache 2.0.39. N'essayez pas d'utiliser cette version de PHP avec une autre version d'Apache 2.0. Sinon, nous vous recommandons de configurer PHP 4.3.0 ou supérieures avec la plus récente des versions d'Apache 2.
Toutes les versions de PHP mentionnées ici fonctionnent avec Apache 1.3.x.
Téléchargez la version la plus récente de » Apache 2.0 et une version appropriée de PHP, tel que décrit ci-dessus. Ce guide rapide couvre les manipulations de base, nécessaires à l'installation de Apache 2.0 et PHP. Pour plus d'informations, lisez la » documentation Apache. Les numéros de version sont omis ici, pour s'assurer que les instructions ne soient pas incorrectes. Il faudra donc remplacer les séquences 'NN' avec les valeurs correctes que vous utilisez.
Exemple #1 Instruction d'installation (Module partagé Apache 2)
1. gzip -d httpd-2_0_NN.tar.gz 2. tar xvf httpd-2_0_NN.tar 3. gunzip php-NN.tar.gz 4. tar -xvf php-NN.tar 5. cd httpd-2_0_NN 6. ./configure --enable-so 7. make 8. make install Maintenant, vous avez un dossier Apache 2.0.NN installé dans /usr/local/apache2, configure avec le support des modules dynamiques, et le prefork standard MPM. Pour tester l'installation, utilisez votre procédure standard de démarrage d'Apache : /usr/local/apache2/bin/apachectl start et pour stopper le serveur, utilisez /usr/local/apache2/bin/apachectl stop. 9. cd ../php4-NN 10. Maintenant, configurez votre PHP. C'est l'endroit où vous configurez PHP avec diverses options, comme les extensions qui seront activées. Lancez ./configure --help pour une liste des options disponibles. Dans notre exemple, nous ferons une configuration assez simple avec uniquement le support de Apache 2 et MySQL. Votre chemin vers apxs peut être différent ; en fait, le binaire devrait toujours s'appeler apsx2 sur votre système. ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql 11. make 12. make install Si vous décidez de changer vos options de configuration après l'installation, vous aurez juste besoin de répéter les trois dernières étapes. Vous aurez aussi besoin de redémarrer Apache pour que le nouveau module soit chargé. Une recompilation de Apache n'est pas nécessaire. Notez que, à moins de l'avoir explicitement désactivé, 'make install' installera aussi PEAR, et des outils PHP tels que phpize, installera le CLI PHP, etc. 13. Configurez votre fichier php.ini : cp php.ini-dist /usr/local/lib/php.ini Vous pouvez éditer votre fichier .ini pour régler certaines options PHP. Si vous souhaitez votre php.ini à un autre endroit, utilisez --with-config-file-path=/votre/chemin lors de l'étape 10. Si vous utilisez plutôt php.ini-recommended, assurez-vous de lire l'ensemble des changements qui y sont contenus, car ils modifient le fonctionnement de PHP. 14. Éditez votre httpd.conf afin de charger le module PHP. Le chemin dans la partie droite de la directive LoadModule doit pointer vers l'endroit où se trouve le module PHP sur votre système. Le make install lancé plus haut l'y aura certainement déjà déposé pour vous, mais assurez-vous en. Pour PHP 4 : LoadModule php4_module modules/libphp4.so Pour PHP 5: LoadModule php5_module modules/libphp5.so 15. Dites à Apache de faire parser certaines extensions par PHP. Par exemple, faites parser l'extension .php par PHP. Vous pouvez ajouter n'importe quelle(s) extension(s) à parser juste en l'(les)ajoutant à la suite, séparée(s) par un espace. Nous ajouterons .phtml dans notre exemple. AddType application/x-httpd-php .php .phtml Il est assez fréquent de configurer l'extension .phps comme code source PHP colorisé, ce qui peut être fait ainsi : AddType application/x-httpd-php-source .phps 16. Utilisez votre méthode habituelle pour démarrer le serveur Apache, e.g.: /usr/local/apache2/bin/apachectl start
Suivez les étapes ci-dessus, et vous disposerez d'un serveur Apache 2.0 avec le support de PHP module comme module SAPI. Bien sur, il y a bien d'autres options de configuration disponibles pour les deux logiciels, Apache et PHP. Pour plus de détails, utilisez la commande ./configure --help dans le dossier de sources approprié. Si vous souhaitez compiler une version multithreadé de Apache 2.0 vous devrez remplacer le module standard MPM prefork avec worker ou perchild. Pour ce faire, ajoutez à la ligne de configuration de l'étape 6, l'option --with-mpm=worker ou --with-mpm=perchild. Soyez conscient des conséquences, et comprenez bien ce que vous faites. Pour plus de détails sur ce sujet, lisez la documentation Apache sur » le module MPM.
Note: Si vous voulez utiliser la négociation sur le contenu, lisez la section FAQ Apache MultiViews.
Note: Pour compiler une version multithreadée d'Apache, votre système doit supporter les threads. Cela implique aussi de compiler PHP avec le module expérimental de Zend Thread Safety (ZTS). Par conséquent, toutes les extensions ne seront pas disponibles. La configuration recommandée actuellement est celle avec le module standard MPM prefork.
Cette section contient des informations spécifiques sur l'installation de PHP avec Lighttpd 1.4 sur les systèmes Unix.
Reportez-vous à » Lighttpd pour une installation correcte de Lighttpd avant de continuer.
Fastcgi est le SAPI préféré pour connecter PHP et Lighttpd. Fastcgi active automatiquement php-cgi depuis PHP 5.3.0, mais pour les versions antérieures, vous devez configurer PHP avec l'option de compilation --enable-fastcgi. Pour vous assurez de l'activation de fastcgi, le résultat de la commande php -v doit contenir PHP 5.2.5 (cgi-fcgi). Avant PHP 5.2.3, fastcgi était activé dans le binaire PHP (php-cgi n'existait pas).
Pour configurer Lighttpd afin qu'il se connecte à PHP et appel le processus fastcgi, vous devez éditez le fichier lighttpd.conf. Une connexion par sockets est la solution préférée pour les systèmes locaux.
Exemple #1 Portion du fichier lighttpd.conf
server.modules += ( "mod_fastcgi" ) fastcgi.server = ( ".php" => (( "socket" => "/tmp/php.socket", "bin-path" => "/usr/local/bin/php-cgi", "bin-environment" => ( "PHP_FCGI_CHILDREN" => "16", "PHP_FCGI_MAX_REQUESTS" => "10000" ) "min-procs" => 1, "max-procs" => 1, "idle-timeout" => 20 )) )
La directive bin-path permet à lighttpd d'appeler le processus fastcgi dynamiquement. PHP appellera les fils suivant la variable d'environnement PHP_FCGI_CHILDREN. La directive "bin-environment" définit l'environnement pour les processus appelés. PHP terminera un processus fils lorsque le nombre de requêtes spécifié par PHP_FCGI_MAX_REQUESTS a été atteint. Les directives "min-procs" et "max-procs" peuvent généralement être ignorées avec PHP. PHP gère ces propres fils et caches opcode comme APC qui partage uniquement les fils gérés par PHP. Si "min-procs" est définit à quelque chose de supérieur à 1, le nombre total de réponses PHP sera multiplié par PHP_FCGI_CHILDREN (2 min-procs * 16 fils, donne 32 réponses).
Lighttpd fournit un programme appelé spawn-fcgi afin de rendre plus facile les appels des processus fastcgi.
Il est possible d'appeler des processus sans spawn-fcgi, avec un minimum de configuration. La variable d'environnement PHP_FCGI_CHILDREN contrôle le nombre de fils que PHP appèle pour gérer les demandes. La variable d'environnement PHP_FCGI_MAX_REQUESTS détermine la durée de vie, en nombre de requêtes, de chaque fils. Voici un script bash simple qui permet d'aider les appels aux répondeurs PHP.
Exemple #2 Appel des répondeurs FastCGI
#!/bin/sh # Localisation du binaire php-cgi PHP=/usr/local/bin/php-cgi # Localisation du fichier PID PHP_PID=/tmp/php.pid # Liage à une adresse #FCGI_BIND_ADDRESS=10.0.1.1:10000 # Liage à un socket du domaine FCGI_BIND_ADDRESS=/tmp/php.sock PHP_FCGI_CHILDREN=16 PHP_FCGI_MAX_REQUESTS=10000 env -i PHP_FCGI_CHILDREN=$PHP_FCGI_CHILDREN \ PHP_FCGI_MAX_REQUESTS=$PHP_FCGI_MAX_REQUESTS \ $PHP -b $FCGI_BIND_ADDRESS & echo $! > "$PHP_PID"
Les instances Fastcgi peuvent être appelées sur plusieurs machines distantes afin de répartir les applications.
Exemple #3 Connexion à des instances distantes de php-fastcgi
fastcgi.server = ( ".php" => (( "host" => "10.0.0.2", "port" => 1030 ), ( "host" => "10.0.0.3", "port" => 1030 )) )
PHP peut être compilé comme module Pike pour » le serveur web Caudium. Suivez simplement les instructions suivantes pour installer PHP sur un serveur Caudium.
Exemple #1 Instructions d'installation Caudium
1. Assurez-vous que vous avez un serveur Caudium installé avant de tenter l'installation PHP 4. Pour que PHP 4 fonctionne correctement, vous devez installer Pike 7.0.268 ou plus récent. Pour cet exemple, nous supposerons que vous avez installé Caudium dans le dossier /opt/caudium/server/. 2. Renommez le dossier en php-x.y.z (où x.y.z est le numéro de version). 3. ./configure --with-caudium=/opt/caudium/server 4. make 5. make install 6. Redémarrez Caudium s'il était en fonctionnement. 7. Connectez-vous à l'interface de configuration graphique et allez dans le serveur virtuel auquel vous voulez ajouter le support PHP 4. 8. Cliquez sur "Add Module" et recherchez puis ajoutez le module "PHP 4 Script Support". 9. Si la documentation dit que 'PHP 4 interpreter isn't available', assurez-vous que vous avez bien redémarré le serveur. Si vous l'avez fait, vérifiez le fichier /opt/caudium/logs/debug/default.1 : il contient peut-être des erreurs liées à PHP4.so. De même, assurez-vous que caudium/server/lib/[pike-version]/PHP4.so est présent. 10. Configurez le module "PHP Script Support" si nécessaire.
Vous pouvez bien sûr compiler votre module Caudium avec les diverses extensions disponibles. Voyez la page de référence pour la liste des options de configuration.
Note: Lorsque vous ajoutez le support MySQL à PHP 4, vous devez vous assurer que le client MySQL normal est utilisé. Sinon, il peut y avoir des conflits avec Pike, qui dispose déjà du support MySQL. Vous pouvez le faire en spécifiant le dossier d'installation de MySQL grâce à l'option --with-mysql.
Pour compiler PHP comme un module fhttpd, répondre "yes" à la question "Build as an fhttpd module ?" (cela correspond à l'option de configuration --with-fhttpd=DIR et spécifier la racine de la distribution fhttpd. Le répertoire par défaut est : /usr/local/src/fhttpd. Si vous utilisez fhttpd, compiler PHP en module vous permettra d'obtenir des performances supérieures, plus de contrôle et la possibilité d'exécution à distance.
Note: Le support de fhttpd n'est plus disponible depuis PHP 4.3.0.
Cette section contient les notes et détails spécifiques à l'installation de PHP sur les serveurs web Sun Java System Web Server, Sun ONE Web Server, iPlanet et Netscape server sur les systèmes Sun Solaris.
Depuis PHP 4.3.3, vous pouvez utiliser les scripts PHP avec le module NSAPI pour gérer des listes de dossiers et des pages d'erreurs personnalisées. Des fonctions supplémentaires sont disponibles pour assurer la compatibilité avec Apache. Pour du support sur les serverus courants, voyez la note sur les sous-requêtes.
Vous pouvez trouver plus d'informations sur la configuration de PHP avec Netscape Enterprise Server : » http://benoit.noss.free.fr/php/install-php4.html
Pour construire PHP avec les serveurs web Sun JSWS/Sun ONE WS/iPlanet/Netscape, entrez le répertoire valide d'installation pour l'option --with-nsapi=[DIR]. Le répertoire par défaut est habituellement /opt/netscape/suitespot/. Lisez également le fichier /php-xxx-version/sapi/nsapi/nsapi-readme.txt.
Installez les packages suivants depuis le serveur » http://www.sunfreeware.com/ ou un miroir ad hoc :
export PATH
.
gunzip php-x.x.x.tar.gz
(si vous avez une distribution .gz, ou bien allez en 4).
tar xvf php-x.x.x.tar
cd ../php-x.x.x
Pour les étapes suivantes, assurez-vous que /opt/netscape/suitespot/ correspond bien à votre installation du serveur netscape. Sinon, indiquez le chemin correct :
./configure --with-mysql=/usr/local/mysql \ --with-nsapi=/opt/netscape/suitespot/ \ --enable-libgcc
Après avoir fait l'installation de base et lu les fichiers readme.txt, vous pouvez avoir besoin de faire des configurations supplémentaires.
Tout d'abord, vous aurez besoin d'ajouter des chemins dans la variable LD_LIBRARY_PATH pour que Netscape trouve son bonheur. Il est préférable de le faire dans le script de démarrage du serveur Netscape. Les utilisateurs Windows peuvent ignorer cette étape. Le script de démarrage est souvent situé dans : /path/to/server/https-servername/start. Vous aurez peut être à éditer le fichier de configuration situé dans /path/to/server/https-servername/config/.
Ajoutez les lignes suivantes dans mime.types en tant qu'administrateur :
type=magnus-internal/x-httpd-php exts=php
Éditez le fichier magnus.conf (pour les serveurs >= 6) ou le fichier obj.conf (pour les serveurs < 6) et ajoutez les lignes suivantes dans obj.conf. shlib peut varier en fonction de votre OS. Pour Unix, c'est quelque chose comme /opt/netscape/suitespot/bin/libphp4.so. Il est conseillé de placer les lignes suivantes après les lignes de mime types init.
Init fn="load-modules" funcs="php4_init,php4_execute,php4_auth_trans" shlib="/opt/netscape/suitespot/bin/libphp4.so" Init fn="php4_init" LateInit="yes" errorString="Failed to initialize PHP!" [php_ini="/path/to/php.ini"]
Configurez l'objet par défaut dans le fichier obj.conf (pour les classes de serveur virtuel [version 6.0+] dans leur fichier vserver.obj.conf) :
<Object name="default"> . . . .#NOTE this next line should happen after all 'ObjectType' and before all 'AddLog' lines Service fn="php4_execute" type="magnus-internal/x-httpd-php" [inikey=value inikey=value ...] . . </Object>
Cela est nécessaire uniquement si vous voulez configurer un répertoire pour acceuillir des scripts PHP tout comme un répertoire cgi-bin :
<Object name="x-httpd-php"> ObjectType fn="force-type" type="magnus-internal/x-httpd-php" Service fn=php4_execute [inikey=value inikey=value ...] </Object>
Configuration de l'identification : les identifications PHP ne peuvent pas être utilisées avec aucune autre identification. TOUTES LES IDENTIFICATIONS SONT PASSEES À VOS SCRIPTS PHP. Pour configurer l'identification PHP pour tout le serveur web, ajoutez la ligne suivante à votre objet par défaut :
<Object name="default"> AuthTrans fn=php4_auth_trans . . . </Object>
Pour utiliser l'identification PHP dans un seul répertoire, ajoutez ce qui suit :
<Object ppath="d:\path\to\authenticated\dir\*"> AuthTrans fn=php4_auth_trans </Object>
Note: La taille de la pile que PHP utilise dépend de la configuration du serveur web. Si vous rencontrez des crashs avec les grands scripts PHP, il est recommandé d'augmenter la taille de la pile avec la console d'administration : dans la section "MAGNUS EDITOR".
Il est important de garder en tête que iPlanet/SunONE/Netscape est un serveur web multi-threadé. Comme toutes les requêtes se situent dans le même contexte (c'est le contexte sur serveur web), et que ce contexte est unique, si vous voulez accéder à des variables comme PATH_INFO, HTTP_HOST etc., il n'est pas recommandé d'y accéder à l'ancienne manière de PHP, avec la fonction getenv() ou une autre méthode (register globals, $_ENV). De cette manière, vous n'aurez que des valeurs d'environnement du serveur, et non pas des valeurs correctes pour le CGI.
Note: Pourquoi est-ce que les variables CGI sont invalides ?
C'est lié au fait que le processus du serveur web est lancé par l'administrateur du serveur, qui utilise le script de lancement au démarrage. En fait, il aurait fallu que vous lanciez vous-même le processus. C'est pour cela que l'environnement du serveur web contient des variables d'environnement CGI. Vous pouvez vérifier cela en lançant le serveur web depuis un autre endroit que l'administrateur du serveur : utilisez la ligne de commande Unix en tant que root : vous verrez alors qu'il n'y a pas de variables d'environnement.
Changez simplement vos scripts pour lire les variables CGI, en utilisant le tableau superglobal $_SERVER. Si vous avez d'autres scripts qui utilisent encore $HTTP_HOST et compagnie, il est recommandé d'activer l'option register_globals dans le php.ini et de changer l'ordre des variables. IMPORTANT : supprimez le "E" dans cette option, car vous n'en avez pas besoin pour cet environnement.
variables_order = "GPCS" register_globals = On
Vous pouvez utiliser PHP pour générer des pages d'erreurs de type "404 Not Found" ou apparentée. Ajoutez la ligne suivante dans le fichier obj.conf pour chaque page d'erreur que vous souhaitez remplacer :
Error fn="php4_execute" code=XXX script="/chemin/vers/script.php" [inikey=value inikey=value...]
Une autre possibilité est de générer une liste de dossiers personnalisée. Créez simplement un script PHP qui affiche le contenu du dossier, et remplacez la ligne Service par défaut par type="magnus-internal/directory" dans obj.conf avec ceci :
Service fn="php4_execute" type="magnus-internal/directory" script="/chemin/vers/script.php" [inikey=value inikey=value...]
Le module NSAPI supporte désormais la fonction nsapi_virtual() (alias : virtual()), pour réaliser des sous requêtes au serveur web, et inclure le résultat dans une page. Le problème est que cette fonction utilise une fonctionnalité non documentée de la bibliothèque NSAPI. Sous Unix, ce n'est pas un problème, car le module va automatiquement rechercher les fonctions nécessaires, et les utiliser si elles sont disponibles. Sinon, nsapi_virtual() sera désactivée.
Note: Soyez prévenu : le support de nsapi_virtual() est EXPERIMENTAL !
Par défaut, PHP est compilé en version CGI. Cela crée un interpréteur de commande qui peut être utilisé soit pour le traitement CGI, soit pour les scripts non relatifs au web. Si PHP peut être incorporé au serveur web que vous utilisez en tant que module, de manière générale c'est cette solution que vous devriez adopter pour des raisons de performances. Cependant, la version CGI permet aux utilisateurs sous Apache de lancer des scripts PHP sous leurs UID respectives.
En utilisant le mode CGI, votre serveur est ouvert à de possibles attaques sérieuses. Lisez attentivement notre section sur la sécurité en mode CGI pour apprendre comment vous défendre contre ces attaques.
Avec PHP 4.3.0, d'importants ajouts ont été faits à PHP. une nouvelle SAPI, appelée CLI, existe aussi et porte le même nom que la version CGI. Ce qui est installé en tant que {PREFIX}/bin/php dépend de votre ligne de configuration. Tout ceci est décrit en détails dans la partie du manuel intitulée Utiliser PHP en ligne de commande. Veuillez vous y référer pour de plus amples informations.
Si vous avez compilé PHP comme programme CGI, vous pouvez tester votre produit en tapant : make test. C'est toujours une bonne chose de tester le résultat d'une compilation. Cela vous permet de repérer des problèmes entre PHP et votre plate-forme, plutôt que d'attendre qu'ils surviennent.
Certaines variables d'environnement fournies par les serveurs web ne sont pas disponibles dans les » spécifications CGI/1.1 actuelles. Seules les variables suivantes sont définies, et les autres doivent être considérées comme spécifiques aux serveurs web : AUTH_TYPE, CONTENT_LENGTH, CONTENT_TYPE, GATEWAY_INTERFACE, PATH_INFO, PATH_TRANSLATED, QUERY_STRING, REMOTE_ADDR, REMOTE_HOST, REMOTE_IDENT, REMOTE_USER, REQUEST_METHOD, SCRIPT_NAME, SERVER_NAME, SERVER_PORT, SERVER_PROTOCOL et SERVER_SOFTWARE.
Cette section contient les notes et conseils d'installation de PHP sur les distributions HP-UX.
Il y a deux façon d'installation PHP sur les systèmes HP-UX. Soit en le compilant, soit en installant des binaires précompilés.
Les paquets pré-compilés officiels sont disponibles ici : » http://software.hp.com/
En attendant que cette section du manuel soit réécrite, la documentation concernant la compilation de PHP (ainsi que les extensions associées) sur les systèmes HP-UX a été effacée. Pour le moment, veuillez-vous référer à cette ressource externe : » Mise en place d'Apache et de PHP sous HP-UX 11.11
Cette section contient les notes spécifiques à l'installation de PHP sous » OpenBSD 3.6.
Cette méthode est la méthode recommandée pour installer PHP sur OpenBSD. C'est aussi la méthode la plus simple. Le paquet core a été séparé des modules et chacun d'entre eux peut être installé et supprimé indépendamment des autres. Les fichiers dont vous avez besoin sont sur le CD OpenBSD ou sur le site FTP.
Le paquet principal que vous devez installer est php4-core-4.3.8.tgz, qui contient le moteur de base, plus gettext et iconv). Puis, jetez un oeil aux paqets de module, comme php4-mysql-4.3.8.tgz ou php4-imap-4.3.8.tgz. Vous devez utiliser la commande phpxs pour activer et désactiver ces modules dans votre php.ini.
Exemple #1 Exemple d'installation de PHP sous OpenBSD avec Ports
# pkg_add php4-core-4.3.8.tgz # /usr/local/sbin/phpxs -s # cp /usr/local/share/doc/php4/php.ini-recommended /var/www/conf/php.ini (add in mysql) # pkg_add php4-mysql-4.3.8.tgz # /usr/local/sbin/phpxs -a mysql (add in imap) # pkg_add php4-imap-4.3.8.tgz # /usr/local/sbin/phpxs -a imap (remove mysql as a test) # pkg_delete php4-mysql-4.3.8 # /usr/local/sbin/phpxs -r mysql (install the PEAR libraries) # pkg_add php4-pear-4.3.8.tgz
Lisez la page de manuel Unix » packages(7) pour plus de détails sur les packages binaires d'OpenBSD.
Vous pouvez aussi compiler PHP en utilisant » l'arbre des ports. Cette méthode est recommandée aux utilisateurs expérimentés de OpenBSD. Le port PHP4 est scindé en deux sous-dossiers : core et extensions. Le dossier extensions génère les sous paquets de tous les modules PHP. Si vous souhaitez ne pas créer ces modules, vous pouvez utiliser la commande en ligne no_* FLAVOR. Par exemple, pour ne pas compiler le module imap, utilisez FLAVOR avec la valeur no_imap.
Les anciennes versions de OpenBSD utilisaient le système des FLAVORS pour compiler statiquement PHP. Comme il est trop difficile de générer des packages binaires avec cette méthode, elle est considérée comme obsolète. Vous pouvez toujours utiliser les anciennes versions stables, mais sachez qu'elles ne sont plus supportées par l'équipe d'OpenBSD. Si vous avez des commentaires sur le sujet, le responsable actuel est Anil Madhavapeddy (avsm_arobase_openbsd_point_org).
Cette section contient les notes et conseils d'installation de PHP sur les distributions Solaris.
L'installation Solaris oublie généralement les compilateurs C, et leurs utilitaires. Lisez cette FAQ pour savoir pourquoi est-ce que les versions GNU de certains de ces outils sont nécessaires. Voici la liste des outils nécessaires :
Vous pouvez simplifier l'installation Solaris en utilisant pkgadd pour installer la plupart des composants.
Cette section contient des notes et astuces spécifiques à l'installation de PHP sous » Debian GNU/Linux.
Au lieu de télécharger les sources de PHP et de les compiler vous-même, l'utilisation du système de paquets de Debian est la méthode la plus simple et la plus propre pour installer PHP. Si vous n'êtes pas familier avec la compilation de logiciels sous Linux, c'est la voie à suivre.
La première décision à prendre est de choisir entre Apache 1.3.x et Apache 2.x. Les paquets PHP correspondants sont nommés respectivement libapache-mod-php* et libapache2-mod-php*. La procédure ci-dessous considérera Apache 1.3.x. À noter que, lors de la rédaction de ce manuel, aucun paquet officiel de PHP 5 n'est encore disponible. Ainsi, la procédure s'occupera de l'installation de PHP 4.
PHP est aussi disponible en version CGI ou CLI, dont les paquets sont nommés respectivement php4-cgi et php4-cli. Si vous en avez besoin, vous aurez juste à reproduire la procédure avec les bons noms de paquet. php4-pear est un autre paquet spécial que vous pourriez être amené à installer. Il contient une installation minimale de PEAR ainsi que l'utilitaire pear en ligne de commande.
Si vous avez besoin de paquets plus récents que les paquets stables issus de Debian, ou si certains modules ne sont pas présents dans la distribution officielle, vous pouvez jeter un oeil sur » http://www.apt-get.org/. Un des résultats de la recherche sera » Dotdeb. Ce référentiel non officiel est entretenu par » Guillaume Plessis et contient des paquets Debian des versions les plus récentes de PHP 4 et PHP 5. Pour l'utiliser, ajoutez simplement les deux lignes suivantes dans votre fichier /etc/apt/sources.lists et lancez la commande apt-get update :
Exemple #1 Les deux lignes relatives à Dotdeb
deb http://packages.dotdeb.org stable all deb-src http://packages.dotdeb.org stable all
Enfin, vous devez vous assurer que votre liste de paquets est récente. Si vous ne l'avez pas mise à jour récemment, lancez la commande apt-get update. Ainsi, vous vous assurez d'utiliser les paquets les plus récents de Apache et PHP.
Maintenant que tout est en place, utilisez les commandes suivantes pour installer Apache et PHP :
Exemple #2 Exemple d'installation sous Debian avec Apache 1.3
# apt-get install libapache-mod-php4
APT installera automatiquement le module PHP 4 pour Apache 1.3 ainsi que toutes ses dépendances et les activera. S'il ne vous a pas été demandé de redémarrer Apache pendant l'installation, vous devrez le faire manuellement :
Exemple #3 Arrêter et démarrer Apache une fois que PHP 4 est installé
# /etc/init.d/apache stop # /etc/init.d/apache start
Dans la partie précédente, PHP a été installé juste avec les modules de base. Ce n'est pas forcément ce que vous voulez et vous pourriez découvrir rapidement que vous avez besoin de davantage de modules, comme MySQL, CURL, GD, etc.
Lorsque vous compilez PHP par vous-même, vous devez activer les modules via la commande configure Avec APT, vous avez juste besoin d'installer des paquets supplémentaires. Ils sont tous nommés 'php4-*' (ou 'php5-*' si vous avez installé PHP 5 d'un référentiel tiers).
Exemple #4 Obtenir la liste des paquets supplémentaires
# dpkg -l 'php4-*'
Comme vous pouvez vous en rendre compte avec le résultat de la commande précédente, les modules PHP que vous pouvez installer sont nombreux (mis à part les exceptions php4-cgi, php4-cli and php4-pear décrits précédemment). Choisissez-les avec soin selon vos besoins. Si vous choisissez un module et que les librairies dont il dépend ne sont pas présentes sur votre système, APT les installera pour vous.
Si vous voulez installer les modules MySQL, cURL et GD, la commande à lancer sera la suivante :
Exemple #5 Installation des modules PHP de MySQL, cURL et GD
# apt-get install php4-mysql php4-curl php4-gd
APT ajoutera automatiquement les lignes adéquates dans vos différents php.ini (/etc/php4/apache/php.ini, /etc/php4/cgi/php.ini, etc).
Exemple #6 Ces lignes ajoutent le support MySQL, cURL et GD au sein de PHP
extension=mysql.so extension=curl.so extension=gd.so
Vous aurez juste à stopper/redémarrer Apache de la même façon que précédemment.
Exemple #7 Cette ligne active le support de PHP au sein d'Apache
# Include /etc/apache/conf.d/