Aller au contenu

« PHP » : différence entre les versions

Un article de Wikipédia, l'encyclopédie libre.
Contenu supprimé Contenu ajouté
Neustradamus (discuter | contributions)
Annulation des modifications 43027801 de 82.236.41.214 (d)
Pympym (discuter | contributions)
m le format Jpeg, png et gif ne sont pas des formats d'images bitmap
Ligne 136 : Ligne 136 :


== Présentation ==
== Présentation ==
Le langage PHP est utilisé principalement en tant que [[langage serveur|langage de script côté serveur]], ce qui veut dire que c'est le [[Serveur Web|serveur]] (la machine qui héberge la page Web en question) qui va interpréter le code PHP et générer du code (constitué généralement d'[[XHTML]] ou d'[[Hypertext Markup Language|HTML]], de [[Feuilles de style en cascade|CSS]], et parfois de [[JavaScript]]) qui pourra être interprété par un [[Navigateur Web|navigateur]]. PHP peut également générer d'autres formats en rapport avec le Web, comme le [[Wireless Markup Language|WML]], le [[Scalable Vector Graphics|SVG]], le [[Portable Document Format|format PDF]], ou encore des images bitmap telles que [[JPEG]], [[Graphics Interchange Format|GIF]] ou [[Portable Network Graphics|PNG]].
Le langage PHP est utilisé principalement en tant que [[langage serveur|langage de script côté serveur]], ce qui veut dire que c'est le [[Serveur Web|serveur]] (la machine qui héberge la page Web en question) qui va interpréter le code PHP et générer du code (constitué généralement d'[[XHTML]] ou d'[[Hypertext Markup Language|HTML]], de [[Feuilles de style en cascade|CSS]], et parfois de [[JavaScript]]) qui pourra être interprété par un [[Navigateur Web|navigateur]]. PHP peut également générer d'autres formats en rapport avec le Web, comme le [[Wireless Markup Language|WML]], le [[Scalable Vector Graphics|SVG]], le [[Portable Document Format|format PDF]], ou encore des formats images telles que le [[JPEG]], le [[Graphics Interchange Format|GIF]] ou le [[Portable Network Graphics|PNG]].


Il a été conçu pour permettre la création d'applications dynamiques, le plus souvent dédiées au [[Web]]. PHP est très majoritairement installé sur un serveur [[Apache_HTTP_Server|Apache]], mais peut être installé sur les autres principaux [[Serveur HTTP|serveurs HTTP]] du marché, par exemple [[Internet Information Services|IIS]].
Il a été conçu pour permettre la création d'applications dynamiques, le plus souvent dédiées au [[Web]]. PHP est très majoritairement installé sur un serveur [[Apache_HTTP_Server|Apache]], mais peut être installé sur les autres principaux [[Serveur HTTP|serveurs HTTP]] du marché, par exemple [[Internet Information Services|IIS]].

Version du 21 juillet 2009 à 16:10

PHP
Logo.
Image illustrative de l’article PHP

Date de première version Voir et modifier les données sur Wikidata
Paradigme Programmation impérative
orientée objet
fonctionnelle
Développeur The PHP Group
Dernière version 8.4.2 ()[1]Voir et modifier les données sur Wikidata
Version en développement 8.4.0 RC4 ()[2]Voir et modifier les données sur Wikidata
Typage Typage dynamique
faible
Influencé par Perl
C/C++
Java[3]
Écrit en CVoir et modifier les données sur Wikidata
Système d'exploitation Multiplate-forme
Licence Licence PHP[4]
Site web www.php.net
Extension de fichier php et pharVoir et modifier les données sur Wikidata

PHP (sigle de PHP: Hypertext Preprocessor[5]), est un langage de scripts libre[6] principalement utilisé pour produire des pages Web dynamiques via un serveur HTTP[5], mais pouvant également fonctionner comme n'importe quel langage interprété de façon locale, en exécutant les programmes en ligne de commande. PHP est un langage impératif disposant depuis la version 5 de fonctionnalités de modèle objet complètes[7]. En raison de la richesse de sa bibliothèque, on désigne parfois PHP comme une plate-forme plus qu'un simple langage.

Historique

Le langage PHP fut créé en 1994 par Rasmus Lerdorf pour son site Web. C'était à l'origine une bibliothèque logicielle en Perl dont il se servait pour conserver une trace des visiteurs qui venaient consulter son CV. Au fur et à mesure qu'il ajoutait de nouvelles fonctionnalités, Rasmus a transformé la bibliothèque en une implémentation en langage C, capable de communiquer avec des bases de données et de créer des applications dynamiques et simples pour le Web. Rasmus décida alors en 1995 de publier son code, pour que tout le monde puisse l'utiliser et en profiter. PHP s'appelait alors PHP/FI (pour Personal Home Page Tools/Form Interpreter). En 1997, deux étudiants, Andi Gutmans et Zeev Suraski, redéveloppèrent le cœur de PHP/FI. Ce travail aboutit un an plus tard avec Zend Engine, le nouveau cœur de PHP/FI, devenu alors PHP: Hypertext Preprocessor en version 3.[8]

En 2002, PHP est utilisé par plus de 8 millions de sites Web à travers le monde[9], et en 2004 par plus de 15 millions[réf. souhaitée].

Un indicateur paradoxal de la popularité de PHP est le nombre de failles de sécurité concernant des applications PHP et listées avec un identifiant CVE sur la National Vulnerability Database, base de données américaine. Ces failles représentent 12% du total en 2003, 20% en 2004, 28% en 2005, 43% en 2006, 36% en 2007, 38% sur les deux premiers mois de 2008. Plus d'un quart des vulnérabilités répertoriées sur cette base concerne des applications PHP, plus d'un tiers ces dernières années, et la plupart peuvent être exploitées à distance[10]. Ces vulnérabilités s'expliquent par de mauvaises habitudes de programmation (souvent un défaut de validation des entrées) alliées à des caractéristiques douteuses du langage lui-même (par exemple register globals, maintenant déconseillé[11]).

La version actuelle est la version 5, sortie le 13 juillet 2004[12]. Elle utilise Zend Engine 2 et introduit un véritable modèle objet, une gestion des erreurs fondée sur le modèle des exceptions, ainsi que des fonctionnalités de gestion pour les entreprises. PHP 5 apporte beaucoup de nouveautés, telles que le support de SQLite, qui est un système léger de gestion de bases de données embarqué, au détriment de la bibliothèque cliente de MySQL, plus puissante mais qui n'est désormais plus activée par défaut, ainsi que des moyens de manipuler des fichiers et des structures XML basés sur libxml2 :

  • une API simple nommée SimpleXML ;
  • une API Document Object Model assez complète ;
  • une interface XPath utilisant les objets DOM et SimpleXML ;
  • intégration de libxslt pour les transformations XSLT via l'extension XSL ;
  • une bien meilleure gestion des objets par rapport à PHP 4, avec des possibilités équivalentes à celles de Java.

La dernière mise à jour est la Modèle:Dernière version stable/PHP: Hypertext Preprocessor datant du Modèle:Dernière version stable/PHP: Hypertext Preprocessor[13].

La version 4.4.x n'est plus maintenue depuis le 31 décembre 2007[12],[14]. Seuls les patchs de sécurité critiques ont encore développés jusqu'à la date du 8 août 2008[14].

La prochaine version : PHP 6 est en développement.

Historique des versions

Code des couleurs
Rouge Ancienne version; non supportée
Jaune Ancienne version; toujours supportée
Vert Version actuelle
Bleu Version à venir
Version majeure Version mineure Date de sortie Notes
1.0 1.0.0 Appelé officielment "Personal Home Page Tools (PHP Tools)", outils pour page personnelle. C'est la première apparition du nom "PHP".[15]
2.0 2.0.0 Considéré par son créateur comme le plus simple outil de création de pages web dynamiques.[15]
3.0 3.0.0 Passage d'une personne à une équipe de développeurs. Zeev Suraski et Andi Gutmans réécrivent la base de cette version.[15]
4.0 4.0.0 Ajoute système de parseur plus avancé appelé le zend engine. Ce moteur procède en deux étapes de parsing puis d'exécution.[16]
4.1.0 Introduit les superglobals ($_GET, $_POST, $_SESSION, etc.)[16]
4.2.0 Désactive register_globals par default. Le données arrivée du réseau ne sont plus insérées directement dans l'espace de nom global résolvant de possibles failles de sécurité[16]
4.3.0 Introduit le CLI, en addition au CGI.[16]
4.4.0 Added man pages for phpize and php-config scripts.[16]
4.4.8 Correction de bugs et de failles de sécurité. Devait être la dernière correction de PHP 4.4. Mises à jour de sécurité uniquement jusqu'au 8 Août 2008 si nécéssaire.[17]
4.4.9 Plus de sécurité et résolution de bugs. Dernière version de PHP 4.4.[18][19]
5.0 5.0.0 Zend Engine II avec un nouveau modèle objet.[20]
5.1.0 -- Amélioration de performances par l'introduction de compiler variables dans un moteur PHP repensé.[20]
5.2.0 Enabled the filter extension by default.[20]
5.2.8 [21] Correction urgente d'un bug[21]
5.2.9
5.2.10
5.3.0 [22] support des espaces de noms; Late static bindings, Jump label (goto limité), Closure, Native PHP archives (phar), Ramasse-miettes de références cycliques, connexion persistante avec mysqli, sqlite3, Ajoute fileinfo en tant que remplacement de mime_magic pour un meilleur support de MIME, Ternary Shortcut, fonctions anonymes, nombreuses corrections de bug, ...[23]
6.0 6.0.0 Pas de date fixée Support de unicode; suppression de l'extension ereg, de register_globals, magic_quotes et safe_mode; Alternative PHP Cache

Présentation

Le langage PHP est utilisé principalement en tant que langage de script côté serveur, ce qui veut dire que c'est le serveur (la machine qui héberge la page Web en question) qui va interpréter le code PHP et générer du code (constitué généralement d'XHTML ou d'HTML, de CSS, et parfois de JavaScript) qui pourra être interprété par un navigateur. PHP peut également générer d'autres formats en rapport avec le Web, comme le WML, le SVG, le format PDF, ou encore des formats images telles que le JPEG, le GIF ou le PNG.

Il a été conçu pour permettre la création d'applications dynamiques, le plus souvent dédiées au Web. PHP est très majoritairement installé sur un serveur Apache, mais peut être installé sur les autres principaux serveurs HTTP du marché, par exemple IIS. Ce couplage permet de récupérer des informations issues d'une base de données, d'un système de fichiers (contenu de fichiers et de l'arborescence) ou plus simplement des données envoyées par le navigateur afin d'être interprétées ou stockées pour une utilisation ultérieure.

C'est un langage peu typé et souple et donc facile à apprendre par un débutant mais, de ce fait, des failles de sécurité peuvent rapidement apparaître dans les applications. Pragmatique, PHP ne s'encombre pas de théorie et a tendance à choisir le chemin le plus direct. Néanmoins, le nom des fonctions (ainsi que le passage des arguments) ne respecte pas toujours une logique uniforme, ce qui peut être préjudiciable à l'apprentissage.

Son utilisation commence avec le traitement des formulaires puis par l'accès aux bases de données. L'accès aux bases de données est aisé une fois l'installation des modules correspondant effectuée sur le serveur. La force la plus évidente de ce langage est qu'il est devenu au fil du temps un incontournable des offres d'hébergement.

Libre, gratuit, simple d'utilisation et d'installation, ce langage nécessite comme tout langage de réseau une bonne compréhension des mécanismes sous-jacents ainsi qu'une connaissance des problèmes de sécurité.

La version 5.3 permettra d'utiliser les espaces de noms, un élément fondamental de l'élaboration d'extensions, de bibliothèques et de frameworks structurés.

La version 6 introduira en interne la bibliothèque ICU donnant au langage la faculté de traiter Unicode de manière native.

Fonctionnement

Sa syntaxe et sa construction ressemblent à celles des langages Java et Perl, à la différence que le PHP peut être intégré dans du code HTML. PHP appartient par ailleurs à la grande famille des descendants du C, dont la syntaxe est très proche.

Dans une utilisation Web, l'exécution du code PHP se déroule ainsi : lorsqu'un visiteur demande à consulter une page Web, son navigateur envoie une requête au serveur HTTP correspondant. Si la page est identifiée comme un script PHP (généralement grâce à l'extension .php), le serveur appelle l'interprète PHP qui va traiter et générer le code final de la page (constitué généralement d'HTML ou de XHTML, mais aussi souvent de CSS et de JS). Ce contenu est renvoyé au serveur HTTP, qui l'envoie finalement au client.

Ce schéma explique ce fonctionnement :

Schéma du fonctionnement de PHP
Schéma du fonctionnement de PHP

Une étape supplémentaire est souvent ajoutée : celle du dialogue entre PHP et la base de données. Classiquement, PHP ouvre une connexion au serveur de SGBD voulu, lui transmet des requêtes et en récupère le résultat, avant de fermer la connexion.

Capture d'écran de vi en fond, affichant un script PHP, et à droite le résultat du script interprété par PHP

L'utilisation de PHP en tant que générateur de pages Web dynamiques est la plus répandue, mais il peut aussi être utilisé comme langage de programmation en ligne de commande sans utiliser de serveur HTTP ni de navigateur.

Pour réaliser un script PHP exécutable en ligne de commande, il suffit comme en Perl ou en Bash d'insérer dans le code en première ligne le shebang : #!/usr/bin/php (/usr/bin/ est le répertoire standard des fichiers binaires exécutables sur la plupart des distributions).

Il existe aussi une extension appelée PHP-GTK permettant de créer des applications clientes graphiques sur un ordinateur disposant de la bibliothèque graphique GTK+, ou encore son alternative WinBinder.

PHP possède un grand nombre de fonctions permettant des opérations sur le système de fichiers, la gestion des bases de données, des fonctions de tri et hachage, le traitement de chaînes de caractères, la génération et la modification d'images, des algorithmes de compression...

Le moteur de Wikipédia est écrit en PHP avec une base MySQL. Il s'intègre donc dans une plateforme LAMP.

Syntaxe

Un exemple du traditionnel Hello world :

<?php
   echo 'Hello, World';
?>

Résultat affiché :

 Hello, World

Ce code revient à écrire ceci,

<?php echo'Hello, World'; ?>

Le fait de sauter des lignes ne présente aucun changement (si ce n'est une présentation plus agréable), d'où l'utilisatation du ";" a la fin de chaque instruction. Notez que l'on peut bien tout mettre en une seule ligne, sans sauter de lignes, comme ceci:

<?php echo 'Hello, World'; echo 'Alors, comment ca va ?'; echo 'Ca va bien ?'; ?>

Mais comme dit plus haut, le code devient moins lisible.

Aussi, le code PHP doit être inséré entre les balises "<?php" (ou "<?PHP" ) et "?>. On fait appel, ici à la fonction "echo" (l'équivalent de "printf" en langage C), qui affiche simplement un texte à l'écran. On peut très bien insérer du html dans la fonction echo comme ceci par exemple :

<?php echo'salut tout le monde !<br/><div align="center"> Comment ca va ? </div>'; ?>

A propos des balises <?php et ?>, il existe une notation très déconseillée : <? et ?>, car elles dépendent de certains paramètres de PHP, on réduit ainsi la portée du code. De plus, PHP 6 devrait être moins tolérant concernant ces utilisations déconseillées, ce qui pourrait compromettre la compatibilité des scripts utilisant ces balises avec les futures versions de PHP[24].

Mascotte

Fichier:Elephpant.gif
L'ÉléPHPant, mascotte officielle de PHP

PHP est souvent accompagné de l'éléPHPant, dessiné par El Roubio[25]. Il s'est inspiré de la ressemblance des lettres PHP avec un éléphant, d'où le nom. Toutes ses œuvres sont distribuées sous licence GNU GPL. Il existe aussi des origamis et des peluches ÉléPHPant.

Quelques exemples d'application

Différentes plates-formes

Un serveur Web en architecture trois tiers est composé d'un système d'exploitation, un serveur HTTP, un langage serveur et enfin un système de gestion de base de données (SGBD), ceci constituant une plate-forme.

Dans le cas de PHP comme langage serveur, les combinaisons les plus courantes sont celles d'une plateforme LAMP (pour Linux Apache MySQL PHP) et WAMP (Windows Apache MySQL PHP). Une plate-forme WAMP s'installe généralement par le biais d'un seul logiciel qui intègre Apache, MySQL et PHP, comme par exemple EasyPHP, VertrigoServ ou WampServer. Il existe le même type de logiciels pour les plate-formes MAMP (Mac OS Apache MySQL PHP), à l'exemple du logiciel MAMP.

Il existe d'autres variantes, par exemple les plate-formes LAPP (le M de MySQL est remplacé par le P de PostgreSQL) ou encore le logiciel XAMPP (Apache MySQL Perl PHP ; le X indique que le logiciel est multiplate-forme), un kit de développement multiplate-forme.

On peut décliner une grande variété d'acronymes sous cette forme. Des confusions peuvent parfois exister entre la plate-forme en elle-même et le logiciel permettant de l'installer, si elles ont le même nom. Il faut également remarquer que la grande majorité des logiciels « tout en un » sont destinés au développement d'applications Web en local, et non à être installés sur des serveurs Web. Une exception à cette règle est peut-être la gamme des produits distribués par Zend Technologies, notamment Zend Core et Zend Server qui sont prévus pour fonctionner aussi bien en environnement de développement que de production.

Bibliographie

Notes et références

  1. a et b « Version 8.4.2 », (consulté le )
  2. « PHP 8.4.0 RC4 available for testing », (consulté le )
  3. http://be.php.net/manual/fr/preface.php
  4. source
  5. a et b « Manuel PHP : Préface », sur PHP.net (consulté le )
  6. (en) « La license de PHP est reconnue libre par la Free Software Foundation » (consulté le )
  7. « Nouveau modèle objet de PHP 5 », sur PHP.net (consulté le )
  8. « Histoire de PHP », sur PHP.net (consulté le )
  9. (en) « Netcraft web Server Survey - février 2002 » (consulté le )
  10. « Vulnérabilités liées à PHP sur la National Vulnerability Database »
  11. « Register Globals »
  12. a et b (en) « Historique des sorties de PHP », sur PHP.net (consulté le )
  13. (en) « Dernière sortie de PHP en date », sur PHP.net (consulté le )
  14. a et b (en) « PHP 4 end of life announcement », sur PHP.net (consulté le )
  15. a b et c (en) « History of PHP and related projects », The PHP Group (consulté le )
  16. a b c d et e (en) « PHP: PHP 4 ChangeLog », The PHP Group, (consulté le )
  17. (en)PHP: PHP 4.4.8 Release Announcement
  18. (en)PHP: Downloads
  19. (en)PHP: PHP 4.4.9 Release Announcement
  20. a b et c (en)« PHP: PHP 5 ChangeLog », The PHP Group, (consulté le )
  21. a et b (en)PHP: News Archive - 2008
  22. (en)PHP 5.3.0 Released!
  23. (en)PHP 5.0.3 Changelog
  24. « PHP 6 et les différences avec PHP 4 et 5 » (consulté le )
  25. Présentation des éléPHPants par El Roubio

Voir aussi

Sur les autres projets Wikimedia :

Articles connexes

Liens externes

Tutoriels

Modèle:Lien BA