Contenu | Rechercher | Menus

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
Prochaine révision
Révision précédente
php [Le 08/05/2013, 16:31]
109.28.132.11 [Installation]
php [Le 18/04/2018, 16:16] (Version actuelle)
krodelabestiole + problèmes courants (page blanche)
Ligne 1: Ligne 1:
-{{tag>​php serveur ​brouillon}}+{{tag>Xenial ​php serveur}}
  
 ====== PHP ====== ====== PHP ======
-PHP (acronyme récursif pour "​**P**HP:​ **H**ypertext **P**reprocessor"​) est un langage de script 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 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|MySQL]].+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 =====
-PHP étant principalement utilisé comme langage de script serveur, seule son installation dans ce cadre là est présentée ici. 
  
- béta installation php 5.4.4+==== Installation minimale ====
  
-installer ​les depots officiel multiverse ​et backport ainsi que leur sources+<note tip>​Pour ​installer ​PHP avec Apache ​et MySQL ou MariaDB, reportez-vous de préférence à la [[:​LAMP|page LAMP]].</​note>​
  
-ex ubuntu 12.04+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]]**
  
-<​code>​sudo su+Pour un [[:​web#​serveurs|serveur web]] on utilisera principalement PHP soit en //​FastCGI//,​ soit en //module d'​Apache//​.
  
-cat > /​etc/​apt/​sources.list <<​EOF +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.
-deb http://​fr.archive.ubuntu.com/​ubuntu/​ precise main restricted +
-deb http://​security.ubuntu.com/​ubuntu precise-security main restricted +
-deb http://​fr.archive.ubuntu.com/ubuntu/ precise-updates main restricted+
  
-# Dépôts ​de sources ​(uniquement utiles pour télécharger les sources avec apt-get source. Dans ce cas, enlever les #) +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).\\  
-deb-src http://fr.archive.ubuntu.com/​ubuntu/​ precise main restricted +Avec un serveur HTTP autre que Apache, on utilise aussi PHP en FastCGI ​il n'​existe pas de module PHP pour [[:Nginx]] ou [[:​Lighttpd]].
-deb-src http://​security.ubuntu.com/​ubuntu precise-security main restricted +
-deb-src http://​fr.archive.ubuntu.com/ubuntu/ precise-updates main restricted+
  
-deb http://fr.archive.ubuntu.com/​ubuntu/​ precise universe multiverse +Chacun de ces paquets installera toutes les dépendances nécessaires au fonctionnement de PHP sur votre machine.
-deb http://​security.ubuntu.com/​ubuntu precise-security universe multiverse +
-deb http://​fr.archive.ubuntu.com/​ubuntu/​ precise-updates universe multiverse+
  
-# Dépôts de sources ​(uniquement utiles pour télécharger les sources avec apt-get sourceDans ce casenlever les #) +<​note>​Sous [[:​Xenial]] ​(16.04)à moins qu'on ait déjà installé le module d'​Apache,​ le paquet **[[apt>​php]]** installe par dépendance **php-fpm** (//FastCGI//).
-deb-src http://fr.archive.ubuntu.com/ubuntuprecise universe multiverse +
-deb-src http://​security.ubuntu.com/​ubuntu precise-security universe multiverse +
-deb-src http://​fr.archive.ubuntu.com/​ubuntu/​ precise-updates universe multiverse +
-deb http://​fr.archive.ubuntu.com/​ubuntu/​ precise-backports main restricted universe multiverse+
  
-# Dépôts de sources (uniquement utiles pour télécharger les sources avec apt-get source. Dans ce casenlever les #) +Tandis que sous [[:​debian_ubuntu_comparaison|Debian]] le paquet **php** installe par défaut le module d'​Apacheet Apache.
-deb-src http://​fr.archive.ubuntu.com/ubuntu/ precise-backports main restricted universe multiverse +
-EOF +
-exit</​code>​ +
-<​code>​sudo apt-get update</​code>​ +
-<​code>​sudo apt-get -y upgrade</​code>​ +
-<​code>​sudo apt-get -y install git vim libmcrypt-dev</​code>​ +
-<​code>​sudo apt-get -y build-dep php5 php5-mcrypt</​code>​+
  
 +Attention donc à ne pas installer le paquet **php** sans le paquet **libapache2-mod-php** si vous ne souhaitez pas utiliser **php-fpm**.
  
-compiller manuellement+Ce comportement a été corrigé sous [[:Bionic]] (18.04), qui rejoint celui de Debian.</​note>​
  
-<​code>​cd /​usr/​local/​src/</​code>​ +==== Installation des modules complémentaires ====
-<​code>​git clone --branch PHP-5.4 https://​github.com/​php/​php-src.git php-5.4.4</​code>​ +
-<​code>​cd /​usr/​local/​src/​php-5.4.4/​ext/</​code>​ +
-<​code>​sudo wget http://​pecl.php.net/​get/​APC-3.1.13.tgz</​code>​ +
-<​code>​sudo tar -xvf APC-3.1.13.tgz</​code>​ +
-<​code>​sudo mv APC-3.1.13 apc</​code>​ +
-<​code>​cd /​usr/​local/​src/​php-5.4.4/</​code>​ +
-<​code>​sudo rm -rf configure</​code>​ +
-<​code>​sudo ./buildconf --force</​code>​ +
-<​code>​./​configure --enable-bcmath \ +
-  --enable-calendar \ +
-  --enable-dba \ +
-  --enable-exif \ +
-  --enable-ftp \ +
-  --enable-mbstring \ +
-  --enable-shmop \ +
-  --enable-sigchild \ +
-  --enable-soap \ +
-  --enable-sockets \ +
---enable-sysvmsg \ +
-  --enable-wddx \ +
-  --enable-zip \ +
-  --with-apxs2=/​usr/​local/​apache2/​bin/​apxs \ +
-  --with-bz2 \ +
-  --with-config-file-path=/​usr/​local/​apache2/​conf \ +
-  --with-curl \ +
-  --with-gd \ +
-  --with-gettext \ +
-  --with-mcrypt \ +
-  --with-mysql \ +
-  --with-mysqli \ +
-  --with-openssl \ +
-  --with-pdo-mysql \ +
-  --with-pdo-pgsql \ +
-  --with-pgsql \ +
-  --with-xmlrpc \ +
-  --with-zlib+
  
-</​code>​ +PHP est alors installéeCependant 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.
-<​code>​sudo make</​code>​ +
-<​code>​sudo apt-get -y install checkinstall</​code>​ +
-<​code>​sudo checkinstall --pkgname=php5-4 --pkgversion="​5.4.4" --backup=no --deldoc=yes --fstrans=no --default</​code>​+
  
 +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>​
  
-installer avec le pacquet deb ubuntu 12.04 amd64 (64 bit) seulement+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>​
  
-<​code>​wget http://www.petit-fichier.fr/2013/05/08/php5-4-5-4-4-1-amd64/php5-4-5-4-4-1-amd64.deb</​code>​ +  * 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]]. 
-<​code>​sudo dpkg -i php5-4-5-4-4-1-amd64.deb</​code>​+  * 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 =====
  
-configurer+La configuration de PHP se fait via un fichier //​php.ini//​.
  
-<​code>​sudo su +Pour le [[:​apache2#​mod_php|module PHP d'​Apache]],​ le chemin d'​accès au fichier ​//​php.ini// ​sera généralement : 
-cp /usr/local/src/​php-5.4.4/php.ini-development ​/usr/local/​apache2/​conf/​php.ini +  * sous [[:​Trusty]] ​(Ubuntu 14.04: **/etc/php5/​apache2/​php.ini**\\ 
-sed -i 's/^;\(date\.timezone\=\s*$/\1 = "​Europe\/Paris"/​g'​ /usr/local/apache2/conf/php.ini +  ​sous [[:Xenial]] (Ubuntu 16.04: **/etc/php/7.0/​apache2/​php.ini** 
-sed -i 's/^\(memory_limit\) = .*$/\1 = 256M/​g'​ /​usr/​local/​apache2/​conf/​php.ini +  * sous [[:​Bionic]] ​(Ubuntu 18.04: **/etc/php/7.2/​apache2/​php.ini**
-sed -i '​s/​^\(post_max_size\= .*$/\1 = 32M/g' /​usr/​local/​apache2/​conf/php.ini +
-sed -i 's/^\(upload_max_filesize\) = .*$/\1 = 32M/g' /usr/local/apache2/conf/php.ini +
-sed -i 's/^\(max_execution_time\= .*$/\1 = 3600/​g'​ /​usr/​local/​apache2/​conf/php.ini +
-sed -i 's/^\(max_input_time\) = .*$/\1 = 7200/​g'​ /usr/local/apache2/conf/php.ini +
-cat > /​usr/​local/​apache2/​conf/​extra/​httpd-php5.conf <<​EOF +
-+
-# This next section will call PHP for .php, .phtml, and .phps files +
-+
-AddType application/​x-httpd-php .php +
-AddType application/​x-httpd-php .phtml +
-AddType application/​x-httpd-php-source .phps+
  
-+Les fichiers de configuration ne sont pas les mêmes pour utiliser PHP en ligne de commande : **/​etc/​php/​7.0/​cli/​php.ini**\\ 
-# This is the directory containing ​php.ini +ou en script [[http://php.net/manual/fr/install.fpm.php|FastCGI]] : **/etc/php/7.0/fpm/php.ini**\\
-+
-PHPIniDir "/usr/local/apache2/conf"​ +
-EOF +
-echo Include conf/extra/httpd-php5.conf >> ​/usr/local/apache2/conf/httpd.conf+
  
-echo LoadModule php5_module modules/​libphp5.so >> /​usr/​local/​apache2/​conf/​httpd.conf +Ceci explique parfois des différences de comportement entre PHP exécuté par Apache, et manuellement en ligne de commande.
-sed -i '​s/​DirectoryIndex index.html/​DirectoryIndex index.html index.cgi index.pl index.php index.xhtml/​g'​ /​usr/​local/​apache2/​conf/​httpd.conf +
-rm -f /​var/​www/​index.html +
-cat > /​var/​www/​index.php <<​EOF +
-<?php phpinfo(); ?> +
-EOF +
-/​etc/​init.d/​apache2 restart +
-exit +
-</​code>​+
  
-attention la désinstallation de php 5.4 et imposible +==== Activer le rapport d'​erreur =====
-==== Installation minimale ​==== +
-Pour installer la version 5 de PHP (dernière version stable), il suffit d'​[[:​tutoriel:​comment_installer_un_paquet|installer le paquet]] suivant:​\\ +
-[[apt://​php5|php5]]\\ +
-Via les dépendances,​ l'​installation de ce paquet entraînera l'​installation du serveur HTTP [[:​apache2|Apache 2]].+
  
-<​note>​ +Si vous développez une application en local, il est souvent utile de visualiser les messages d'​erreurs directement sur votre page webCes 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]]).
-[[:​apache2|Apache 2]] est fournit par défaut avec PHP. +
-Vous pouvez également, si vous le souhaitez, utiliser un autre serveur HTTP (ex.  ​[[:nginx]][[:lighttpd]], etc... ​).\\ +
-PHP 5.4 incorpore son propre serveur HTTP utilisable dans un environnement de développement.  +
-</​note>​ +
-==== Association avec un serveur de base de données ==== +
-PHP permet de se connecter à différents types de serveurs de base de données. Il est cependant 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épendant de l'​installation du serveur de base de données correspondant.</​note>​+
  
 +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]] :
  
-=== Support de MySQL === +<file - .htaccess>​php_flag display_errors=on 
-Le support de [[:​mysql|MySQL]] par PHP 5 se fait via [[:​tutoriel:​comment_installer_un_paquet|l'​installation du paquet]]:​\\ +php_flag error_reporting=E_ALL</file>
-[[apt://​php5-mysql|php5-mysql]]+
  
-<note tip>Un serveur associant **L**inux, **A**pache, **M**ySQL et **P**HP est généralement appelé ​[[:lamp|serveur "​LAMP"​]].</note>+//[[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>​
  
-=== Support de PostgreSQL === 
-Le support de [[:​postgresql|PostgreSQL]] par PHP 5 se fait via [[:​tutoriel:​comment_installer_un_paquet|l'​installation du paquet]]:\\ 
-[[apt://​php5-pgsql|php5-pgsql]] 
  
-<note tip>Un serveur associant **L**inux, **A**pache, **P**ostgreSQL et **P**HP est généralement appelé serveur "​LAPP"​.</note>+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 =====
  
-=== Support de SQLite === +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 
-Le support de [[:​sqlite|SQLite]] par PHP 5 se fait via [[:​tutoriel:​comment_installer_un_paquet|l'installation ​du paquet]]:\\ +<file - .htaccess>​php_flag display_errors=off<​/file>
-[[apt://​php5-sqlite|php5-sqlite]]+
  
 +===== Problèmes courants =====
  
-=== Support de Sybase / MS SQL server ​=== +==== Page blanche ====
-Le support de Sybase / MS SQL server par PHP 5 se fait via [[:​tutoriel:​comment_installer_un_paquet|l'​installation du paquet]]:​\\ +
-[[apt://​php5-sybase|php5-sybase]]+
  
-==== Installation ​des modules complémentaires ==== +Une page blanche inattendue indique très certainement que l'​affichage ​des retours d'​erreur sur la page n'est pas activé. 
-Voir la page dédiée aux [[:​modules_php|modules PHP]]. FIXME+ 
 +Vous pouvez ​[[#​activer_le_rapport_d_erreur|activer le rapport d'​erreur]], ou consulter le log d'​erreur de votre serveur HTTP pour en savoir plus sur le problème rencontré.
  
 ===== Voir aussi ===== ===== Voir aussi =====
  
-  * **(en)** [[http://​www.php.net/​|Site officiel]] +  * **(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]]


Le contenu de ce wiki est sous licence : CC BY-SA v3.0