Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
utilisateurs:krodelabestiole:brouillon:php [Le 19/07/2018, 21:23]
krodelabestiole supprimée
— (Version actuelle)
Ligne 1: Ligne 1:
-{{tag>​Xenial php serveur}} 
  
-====== PHP ====== 
- 
-PHP (acronyme récursif pour "​**P**HP:​ **H**ypertext **P**reprocessor",​ PHP étant au départ l'​acronyme de **P**ersonal **H**ome **P**age) est un langage de programmation principalement utilisé pour produire des pages web de manière dynamique. Il est donc, dans la très grande majorité des cas, couplé à un serveur HTTP (comme [[:​apache2|Apache]]) pour la communication avec le client web. 
- 
-La production de [[:​cms|pages web dynamiques]] pouvant nécessiter une interaction avec une base de données, PHP est souvent utilisé en association avec un système de gestion de base de données (SGBD) comme [[:MySQL]]. 
- 
-===== Installation ===== 
- 
-==== Installation minimale ==== 
- 
-<note tip>Pour installer PHP avec Apache et MySQL ou MariaDB, reportez-vous de préférence à la [[:​LAMP|page LAMP]].</​note>​ 
- 
-Il existe 4 manières d'​installer et utiliser PHP sur Ubuntu : 
-  * en ligne de commande (ou donc dans un [[:​tutoriel:​script_shell|script shell]]) via [[:​tutoriel:​comment_installer_un_paquet|l'​installation du paquet]] **[[apt>​php-cli]]** (//cli// pour //​command-line interface//​) 
-  * avec un serveur HTTP en [[wpfr>​FastCGI|script FastCGI]] via [[:​tutoriel:​comment_installer_un_paquet|l'​installation du paquet]] **[[apt>​php-fpm]]** (//fpm// pour //FastCGI Process Manager//) 
-  * avec un serveur HTTP en script CGI via [[:​tutoriel:​comment_installer_un_paquet|l'​installation du paquet]] **[[apt>​php-cgi]]** (c'est une méthode historique qui n'a plus trop d'​intérêt) 
-  * en [[:​apache2#​mod_php|module d'​Apache]] via [[:​tutoriel:​comment_installer_un_paquet|l'​installation du paquet]] **[[apt>​libapache2-mod-php]]** 
- 
-Pour un [[:​web#​serveurs|serveur web]] on utilisera principalement PHP soit en //​FastCGI//,​ soit en //module d'​Apache//​. 
- 
-Si on utilise [[:​apache2|Apache]] et pour un site à trafic ordinaire, on utilisera de préférence le module d'​Apache parce qu'il est beaucoup plus simple à mettre en place et à administrer. 
- 
-Pour un trafic à plusieurs milliers de visites par heure, mieux vaut utiliser PHP en FastCGI (parce qu'il est capable de traiter plusieurs processus simultanément).\\ ​ 
-Avec un serveur HTTP autre que Apache, on utilise aussi PHP en FastCGI : il n'​existe pas de module PHP pour [[:Nginx]] ou [[:​Lighttpd]]. 
- 
-Chacun de ces paquets installera toutes les dépendances nécessaires au fonctionnement de PHP sur votre machine. 
- 
-<​note>​Sous Ubuntu, à moins qu'on ait déjà installé le module d'​Apache,​ le paquet **[[apt>​php]]** installe par dépendance **php-fpm** (//​FastCGI//​). 
- 
-Tandis que sous [[:​debian_ubuntu_comparaison|Debian]] le paquet **php** installe par défaut le module d'​Apache,​ et Apache. 
- 
-Attention donc à ne pas installer le paquet **php** sans le paquet **libapache2-mod-php** si vous ne souhaitez pas utiliser **php-fpm**.</​note>​ 
- 
-==== Installation des modules complémentaires ==== 
- 
-PHP est alors installée. Cependant la plupart des scripts PHP ([[:CMS]], forums, applications web en tout genre) utilisent des modules de PHP pour bénéficier de certaines fonctionnalités. 
- 
-Voici comment installer rapidement les modules les plus courants : 
-<code bash>​sudo apt install php-curl php-gd php-intl php-json php-mbstring php-mcrypt php-xml php-zip</​code>​ 
- 
-Pour plus de détails, voir la page dédiée aux [[:​modules_php|modules PHP]]. 
- 
- 
-=== Association avec un serveur de base de données === 
- 
-PHP permet de se connecter à différents types de serveurs de base de données. Pour cela il est également nécessaire d'​installer des modules complémentaires. 
-<note important>​Il est important de souligner que l'​installation d'un de ces modules PHP est indépendante de l'​installation du serveur de base de données correspondant,​ ces serveurs n'​étant pas nécessairement déployés localement.</​note>​ 
- 
-  * Le support de [[:​mysql|MySQL]] ou [[:​mariadb|MariaDB]] par PHP se fait via [[:​tutoriel:​comment_installer_un_paquet|l'​installation du paquet]] [[apt://​php-mysql|php-mysql]]. 
-  * Le support de [[:​postgresql|PostgreSQL]] par PHP se fait via [[:​tutoriel:​comment_installer_un_paquet|l'​installation du paquet]] [[apt://​php-pgsql|php-pgsql]]. 
-  * Le support de [[:​sqlite|SQLite]] par PHP se fait via [[:​tutoriel:​comment_installer_un_paquet|l'​installation du paquet]] [[apt://​php-sqlite|php-sqlite]]. 
-  * Le support de Sybase / MS SQL server par PHP se fait via [[:​tutoriel:​comment_installer_un_paquet|l'​installation du paquet]] [[apt://​php-sybase|php-sybase]]. 
- 
-===== Configuration ===== 
- 
-La configuration de PHP se fait via un fichier //​php.ini//​. 
- 
-Pour le [[:​apache2#​mod_php|module PHP d'​Apache]],​ le chemin d'​accès au fichier //php.ini// sera généralement : 
-  * sous Ubuntu 14.04 : **/​etc/​php5/​apache2/​php.ini**\\ 
-  * sous Ubuntu 16.04 : **/​etc/​php/​7.0/​apache2/​php.ini** 
- 
-Les fichiers de configuration ne sont pas les mêmes pour utiliser PHP en ligne de commande : **/​etc/​php/​7.0/​cli/​php.ini**\\ 
-ou en script [[http://​php.net/​manual/​fr/​install.fpm.php|FastCGI]] : **/​etc/​php/​7.0/​fpm/​php.ini**\\ 
- 
-Ceci explique parfois des différences de comportement entre PHP exécuté par Apache, et manuellement en ligne de commande. 
- 
-==== Activer le rapport d'​erreur ===== 
- 
-Si vous développez une application en local, il est souvent utile de visualiser les messages d'​erreurs directement sur votre page web. Ces erreurs sont cependant généralement aussi accessibles dans le journal d'​erreur du serveur HTTP (//​[[:​apache2#​problemes_courants|/​var/​log/​apache2/​error.log]]//​ pour [[:​apache2|Apache]]). 
- 
-Pour afficher les erreurs, avec Apache vous pouvez par exemple définir des règles dans un fichier //​[[:​apache2#​.htaccess]]//​ à la racine de votre [[:​apache2#​hotes_virtuels|hôte virtuel]] : 
- 
-<file - .htaccess>​php_flag display_errors=on 
-php_flag error_reporting=E_ALL</​file>​ 
- 
-//​[[http://​php.net/​manual/​fr/​function.error-reporting.php|error_reporting]]//​ définit le niveau d'​erreur que vous souhaitez afficher. 
- 
-Le niveau d'​erreur E_ALL affiche **toutes** les erreurs, y compris celles concernant des fonctionnalités dépréciées (qui seront désactivées dans des versions futures de PHP) ou des erreurs strictes, qu'on n'a pas forcément envie de corriger.\\ 
-On peut désactiver l'​affichage de ces messages pas toujours très importants en remplaçant cette ligne par celle-ci : 
-<​file>​php_flag error_reporting=E_ALL & ~E_NOTICE & ~E_STRICT</​file>​ 
- 
- 
-Les directives //​display_errors//​ et //​error_reporting//​ sont aussi accessibles pour définir l'​affichage des erreurs globalement,​ directement dans votre fichier //​php.ini//​.\\ 
-Pour PHP 7.0 : 
-<file - /​etc/​php/​7.0/​apache2/​php.ini>​... 
-display_errors=on 
-error_reporting=E_ALL & ~E_NOTICE & ~E_STRICT 
-...</​file>​ 
- 
-==== Désactiver le rapport d'​erreur ===== 
- 
-Pour un site en production, mieux vaut désactiver l'​affichage des erreurs et se référer uniquement au log d'​erreur du serveur HTTP : 
-<file - .htaccess>​php_flag display_errors=off</​file>​ 
-===== Voir aussi ===== 
- 
-  * **(en)** [[http://​www.php.net/​|site officiel]] 
-  * [[http://​php.net/​manual/​fr/​|documentation officielle]] 
-  * [[https://​www.youtube.com/​watch?​v=US9JCsnAVTU|vidéo expliquant en quoi PHP est différent des autres langages de programmation]]