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
Prochaine révision Les deux révisions suivantes
php [Le 27/04/2018, 13:11]
krodelabestiole correction php_flag
php [Le 26/11/2018, 15:29]
krodelabestiole [Modules]
Ligne 1: Ligne 1:
-{{tag>​Xenial php serveur}}+{{tag>​Xenial ​Bionic ​php serveur}}
  
 ====== PHP ====== ====== PHP ======
Ligne 8: Ligne 8:
  
 ===== Installation ===== ===== 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>​ <note tip>Pour installer PHP avec Apache et MySQL ou MariaDB, reportez-vous de préférence à la [[:​LAMP|page LAMP]].</​note>​
Ligne 36: Ligne 34:
 Ce comportement a été corrigé sous [[:Bionic]] (18.04), qui rejoint celui de Debian.</​note>​ Ce comportement a été corrigé sous [[:Bionic]] (18.04), qui rejoint celui de Debian.</​note>​
  
-==== Installation ​des modules ​complémentaires ====+PHP est alors installé. 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.
  
-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.+===== Modules ===== 
 + 
 +Les modules de PHP lui permette d'​étendre ses fonctionnalitésDe très nombreux ​modules PHP sont disponibles sur les dépôts officiels d'​Ubuntu.
  
 Voici comment installer rapidement les modules les plus courants : 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>​+<code bash>​sudo apt install php-curl php-gd php-intl php-json php-mbstring php-xml php-zip</​code>​ 
 +<note important>​ 
 +Pour les versions récentes d'​Ubuntu,​ ne spécifiez pas le numéro de version de PHP dans les noms des paquets qui le concernent, le système installera la dernière version… 7.* :\\   
 +\\  
 + 
 +par exemple ''​php5-curl''​ sous [[:​trusty|Ubuntu 14.04 Trusty]] devient ''​php7.0-curl''​ sur [[:​xenial|Ubuntu 16.04 Xenial]], plus simplement accessible par ''​php-curl''​ que ce soit sur Xenial (pour PHP 7.0), ou sur [[:​bionic|Ubuntu 18.04 Bionic]] (pour PHP 7.2). 
 +</​note>​ 
 + 
 +==== Modules installés par défaut ==== 
 + 
 +[[https://​packages.ubuntu.com/​bionic/​amd64/​php7.2-common/​filelist|Certains modules]] sont installés par défaut avec PHP via le paquet **[[apt>​php-common]]**. 
 + 
 +  * [[http://​php.net/​manual/​fr/​book.calendar.php|Calendar]] 
 +  * [[http://​php.net/​manual/​fr/​book.ctype.php|ctype]] 
 +  * [[http://​php.net/​manual/​fr/​book.exif.php|Exif]] 
 +  * [[http://​php.net/​manual/​fr/​book.fileinfo.php|FileInfo]] 
 +  * [[http://​php.net/​manual/​fr/​book.ftp.php|FTP]] 
 +  * [[http://​php.net/​manual/​fr/​book.gettext.php|Gettext]] 
 +  * [[http://​php.net/​manual/​fr/​book.iconv.php|iconv]] 
 +  * [[http://​php.net/​manual/​fr/​book.pdo.php|PHP Data Objects]] 
 +  * [[http://​php.net/​manual/​fr/​book.phar.php|Phar]] 
 +  * [[http://​php.net/​manual/​fr/​book.shmop.php|Mémoire partagée]] 
 +  * [[http://​php.net/​manual/​fr/​book.sockets.php|Sockets]] 
 +  * [[http://​php.net/​manual/​fr/​book.tokenizer.php|Tokenizer]] 
 + 
 +D'​autres modules peuvent être installés individuellement via [[:APT]]. 
 + 
 +==== Modules courants ====
  
-Pour plus de détails, voir la page dédiée aux [[:modules_php|modules PHP]].+Voici une liste des modules les plus couramment utilisés ​:
  
 +^ Nom ^ Paquet ^ Description ^
 +| [[http://​php.net/​manual/​fr/​book.curl.php|cURL]] | [[apt>​php-curl]] | Support de [[wpfr>​cURL]],​ qui permet de se connecter et de communiquer avec d'​autres serveurs en HTTP, HTTPS, FTP, gopher, telnet, DICT, file ou LDAP. |
 +| [[http://​php.net/​manual/​fr/​book.image.php|GD]] | [[apt>​php-gd]] | Outil de traitement d'​images. |
 +| [[http://​php.net/​manual/​fr/​book.intl.php|intl]] | [[apt>​php-intl]] | Fonctions d'​internationalisation. |
 +| [[http://​php.net/​manual/​fr/​book.json.php|JSON]] | [[apt>​php-json]] | Implémente le format d'​échange de données [[wpfr>​JavaScript Object Notation]]. |
 +| [[http://​php.net/​manual/​fr/​book.mcrypt.php|Mcrypt]] | [[apt>​php-mcrypt]] | Implémente des algorithmes de chiffrement. Ce module **n'​existe plus depuis PHP 7.2** ([[:​Bionic]]). Il faut maintenant utiliser [[http://​php.net/​manual/​fr/​book.sodium.php|Sodium]] ou [[http://​php.net/​manual/​fr/​book.openssl.php|OpenSSL]]. |
 +| [[http://​php.net/​manual/​fr/​book.mbstring.php|mbstring]] | [[apt>​php-mbstring]] | Implémente des jeux de  caractères très grands pour certaines langues. |
 +| [[http://​php.net/​manual/​fr/​book.xml.php|XML]] | [[apt>​php-xml]] | Analyseur syntaxique XML (permet à PHP de "​comprendre"​ du XML ou du HTML). |
 +| [[http://​php.net/​manual/​fr/​book.zip.php|Zip]] | [[apt>​php-zip]] | Offre la possibilité de lire et d'​écrire des archives compressées ZIP, et d'​accéder aux fichiers et dossiers s'y trouvant. |
 +| [[http://​php.net/​manual/​fr/​book.imagick.php|ImageMagick]] | [[apt>​php-imagick]] | Outil de traitement d'​images. |
 +| [[http://​php.net/​manual/​fr/​book.imap.php|IMAP]] | [[apt>​php-imap]] | Implémentations des protocoles IMAP, NNTP, et POP3 pour les [[:​courriel|courriels]]. |
 +| [[http://​php.net/​manual/​fr/​book.apcu.php|APCu]] | [[apt>​php-apcu]] | Fournit des fonctionnalités supplémentaires au système de cache implémenté nativement dans PHP ([[#​OPcache]]). |
  
-=== Association avec un serveur de base de données ===+==== 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. 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>​+<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 ​(hormis SQLite), 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]]+^ Nom ^ Paquet ^ Description ^ 
-  * Le support de [[:​postgresql|PostgreSQL]] ​par PHP se fait via [[:tutoriel:​comment_installer_un_paquet|l'​installation du paquet]] [[apt://php-pgsql|php-pgsql]]+| [[http://​php.net/​manual/​fr/​ref.pdo-mysql.php|MySQL (PDO)]] et [[http://​php.net/​manual/​fr/​book.mysqli.php|MySQLi]] | [[apt>​php-mysql]] | support de [[:​mysql|MySQL]] ou [[:​mariadb|MariaDB]] ​
-  * Le support de [[:​sqlite|SQLite]] ​par PHP se fait via [[:tutoriel:​comment_installer_un_paquet|l'​installation du paquet]] [[apt://php-sqlite|php-sqlite]]+[[http://​php.net/​manual/​fr/​book.pgsql.php|PostgreSQL]] [[apt>php-pgsql]] support de [[:​postgresql|PostgreSQL]] ​
-  * 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]].+[[http://​php.net/​manual/​fr/​book.sqlite.php|SQLite]] [[apt>php-sqlite3]] support de [[:​sqlite|SQLite]] ​
 +[[http://​php.net/​manual/​fr/​set.mongodb.php|MongoDB]] [[apt>php-mongodb]] support de [[:MongoDB]] 
 + 
 +==== Lister les modules ==== 
 + 
 +Vous pouvez lister la plupart des modules PHP disponibles dans les dépôts officiels avec la commande 
 +<​code>​apt list php-\*</​code>​ 
 + 
 +Vous pouvez lister les modules installés sur votre système grâce à la commande 
 +<​code>​php -m</​code>​ 
 +Attention cependant au fait que les modules PHP activés en ligne de commande et via votre serveur HTTP ne sont pas nécessairement les mêmes. La fonction PHP //[[http://php.net/​manual/​fr/​function.phpinfo.php|phpinfo()]]// vous montrera les modules activés sur votre serveur web.
  
 ===== Configuration ===== ===== Configuration =====
Ligne 97: Ligne 146:
 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 : 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>​ <file - .htaccess>​php_flag display_errors off</​file>​
 +
 +==== OPcache ====
 +
 +[[http://​php.net/​manual/​fr/​book.opcache.php|OPcache]] était à la base un module permettant d'​implémenter des fonctionnalités de cache à PHP, ce qui permet d'​accélérer l'​execution des scripts et d'​alléger leur charge côté serveur.\\ ​
 +Il est désormais intégré nativement à PHP depuis la version 5.5.
 +
 +OPcache est activé par défaut sur Ubuntu.
  
 ===== Problèmes courants ===== ===== Problèmes courants =====
 +
 +<note tip>
 +Si vous utilisez Apache, consultez également les [[:​apache2#​problemes_courants|problèmes courants liés à ce serveur HTTP]] afin d'​obtenir des solutions pour les erreurs 403, 404, 500, 503, etc.
 +</​note>​
  
 ==== Page blanche ==== ==== Page blanche ====
  
-Une page blanche inattendue indique très certainement que l'​affichage des retours d'​erreur sur la page n'est pas activé.+Une page blanche inattendue ​affichée immédiatement ​indique très certainement que l'​affichage des retours d'​erreur sur la page n'est pas activé.
  
 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é. 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é.
 +
 +==== Code source visible dans le navigateur ====
 +
 +Ce problème survient lorsque PHP n'est pas interprété par le serveur web. Le serveur envoie dans ce cas au navigateur directement le code PHP comme s'il s'​agissait de texte, et le navigateur cherche généralement à l'​interpréter comme du HTML, puisque c'est ce qu'il attend par défaut.\\ ​
 +En plus de rendre l'​application ou le site non fonctionnel,​ cela peut poser des problèmes de sécurité (fuite d'​informations éventuellement sensibles).
 +
 +Il faut dans ce cas revoir votre installation de PHP et sa configuration avec votre serveur Web.
 +
 +Si vous utilisez [[:​apache2#​mod_php|PHP en tant que module d'​Apache]] :
 +  * vérifiez l'​installation du paquet [[apt>​libapache2-mod-php]]
 +  * s'il est bien installé, activez le module :
 +sur [[:​bionic|Bionic 18.04]] :
 +<​code>​sudo a2enmod php7.2</​code>​
 +sur [[:​xenial|Xenial 16.04]] :
 +<​code>​sudo a2enmod php7.0</​code>​
 +Puis relancez Apache :
 +<​code>​sudo systemctl restart apache2</​code>​
 +
 +==== Conflits potentiels entre plusieurs versions de PHP ====
 +
 +Il est possible que plusieurs versions de PHP soient installées simultanément,​ par ex. après une mise à jour majeure d'​ubuntu si vous avez spécifié le numéro de version de PHP lors de l'​installation des paquets, ou si vous avez ajouté un PPA exotique pour installer une version spécifique de PHP (mauvaise idée, il vaut mieux dans ce cas utiliser [[:​docker_lamp|docker]]).\\
 +Cela peut par ex. rendre des modules de PHP inaccessibles alors qu'ils semblent bien installés.
 +
 +Vous pouvez vérifier cela avec cette commande :
 +<​code>​apt list \*php\* | grep install</​code>​
 +Si vous voyez apparaître plusieurs versions de PHP, par ex. //php7.2// et //php7.0// ou //php5.6//, vous avez un problème. Dans ce cas supprimez les versions de PHP qui ne correspondent pas à la version proposée par les dépôts officiels d'​ubuntu (//php7.0// sur [[:​xenial|Xenial 16.04]], //php7.2// sur [[:​bionic|Bionic 18.04]]), [[:​ppa#​la_methode_propre_les_paquets_de_gestion_automatiqueppa-purge_launchpad-getkeys|désinstallez le PPA exotique]] si il existe, puis réinstallez les paquets absents si nécessaire sans spécifier de numéro de version ([[apt>​libapache2-mod-php]],​ etc).
  
 ===== Voir aussi ===== ===== Voir aussi =====
Ligne 111: Ligne 197:
   * [[http://​php.net/​manual/​fr/​|documentation officielle]]   * [[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]]   * [[https://​www.youtube.com/​watch?​v=US9JCsnAVTU|vidéo expliquant en quoi PHP est différent des autres langages de programmation]]
 +
 +//​Contributeurs : [[utilisateurs:​krodelabestiole]]//​
  • php.txt
  • Dernière modification: Le 01/04/2024, 12:06
  • par bcag2