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 13/07/2018, 09:00]
krodelabestiole déplacement [Conflits potentiels entre plusieurs versions de PHP] depuis page LAMP
php [Le 12/01/2019, 18:09]
krodelabestiole + chapitre phpinfo
Ligne 43: Ligne 43:
 <code bash>​sudo apt install php-curl php-gd php-intl php-json php-mbstring 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>​ <note important>​
-Pour les versions récentes, ne spécifiez pas de version, le système installera la dernière version… 7.*\\ +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.* :\\   
-les modules préfixés par **php5** ont encore cours avec [[trusty]],+\\ 
  
-Par exemple ​//php5-curl// sous trusty devient ​//php7.0-curl//, plus simplement accessible par //php-curl//.+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>​ </​note>​
  
Ligne 77: Ligne 77:
 | [[http://​php.net/​manual/​fr/​book.intl.php|intl]] | [[apt>​php-intl]] | Fonctions d'​internationalisation. | | [[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.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-mbstring]] | 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.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.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.xml.php|XML]] | [[apt>​php-xml]] | Analyseur syntaxique XML (permet à PHP de "​comprendre"​ du XML ou du HTML). |
Ligne 93: Ligne 93:
 | [[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]] | | [[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]] |
 | [[http://​php.net/​manual/​fr/​book.pgsql.php|PostgreSQL]] | [[apt>​php-pgsql]] | support de [[:​postgresql|PostgreSQL]] | | [[http://​php.net/​manual/​fr/​book.pgsql.php|PostgreSQL]] | [[apt>​php-pgsql]] | support de [[:​postgresql|PostgreSQL]] |
-| [[http://​php.net/​manual/​fr/​book.sqlite.php|SQLite]] | [[apt>​php-sqlite]] | support de [[:​sqlite|SQLite]] |+| [[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]] | | [[http://​php.net/​manual/​fr/​set.mongodb.php|MongoDB]] | [[apt>​php-mongodb]] | support de [[:​MongoDB]] |
  
Ligne 103: Ligne 103:
 Vous pouvez lister les modules installés sur votre système grâce à la commande Vous pouvez lister les modules installés sur votre système grâce à la commande
 <​code>​php -m</​code>​ <​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.+ 
 +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 //[[#phpinfo|phpinfo()]]//​ vous montrera les modules activés sur votre serveur web.
  
 ===== Configuration ===== ===== Configuration =====
Ligne 146: Ligne 147:
 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>​
 +
 +==== phpinfo() ====
 +
 +La fonction //​[[http://​php.net/​manual/​fr/​function.phpinfo.php|phpinfo()]]//​ permet d'​obtenir des informations sur sa configuration de PHP en situation. C'est utile en particulier parce que les configurations de PHP peuvent être différentes entre son utilisation en ligne de commande, en module d'​apache ou en fastCGI.
 +
 +La méthode est de créer un fichier ''​phpinfo.php''​ à la racine de l'​hôte virtuel, donc par ex. ''/​var/​www/​example/​phpinfo.php''​ contenant ceci :
 +
 +<file phpinfo.php>​
 +<?php phpinfo(); ?>
 +</​file>​
 +
 +On appelle ensuite ce script depuis un navigateur web : [[http://​example/​phpinfo.php]]
  
 ==== OPcache ==== ==== OPcache ====
Ligne 155: Ligne 168:
  
 ===== 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 ====
Ligne 171: Ligne 188:
 Si vous utilisez [[:​apache2#​mod_php|PHP en tant que module d'​Apache]] : Si vous utilisez [[:​apache2#​mod_php|PHP en tant que module d'​Apache]] :
   * vérifiez l'​installation du paquet [[apt>​libapache2-mod-php]]   * vérifiez l'​installation du paquet [[apt>​libapache2-mod-php]]
-  * si il est bien installé, activez le module :+  * s'il est bien installé, activez le module :
 sur [[:​bionic|Bionic 18.04]] : sur [[:​bionic|Bionic 18.04]] :
 <​code>​sudo a2enmod php7.2</​code>​ <​code>​sudo a2enmod php7.2</​code>​
Ligne 178: Ligne 195:
 Puis relancez Apache : Puis relancez Apache :
 <​code>​sudo systemctl restart apache2</​code>​ <​code>​sudo systemctl restart apache2</​code>​
- 
-==== Erreur 403, 404, 500 ==== 
- 
-Les erreurs de ce type ne sont a priori pas liées directement à PHP, mais au serveur HTTP. Si vous utilisez Apache consultez [[:​apache2#​problemes_courants|la documentation à ce sujet]]. 
- 
-==== Attente puis erreur 503 "​service indisponible"​ ==== 
- 
-Cette erreur indique que le serveur HTTP est dans les choux. Le service existe mais prend  apparemment un temps interminable à répondre.\\ 
-  * En premier lieu redémarrez le serveur HTTP (et PHP si vous l'​utilisez en FastCGI). 
-  * Si le problème se pose toujours, cela peut par exemple être dû au fait qu'un script entre dans une boucle infinie. En plus de surcharger le processeur, ce problème ne générera pas de message d'​erreur ce qui en fait malheureusement un problème particulièrement compliqué à débugger. Si votre CMS ou application web utilise un système de cache, vous pouvez essayer de le vider et de le désactiver. Puis essayer de désinstaller les plugins installés récemment, défaire les modifications récentes ou restaurer une sauvegarde de votre application PHP. 
  
 ==== Conflits potentiels entre plusieurs versions de PHP ==== ==== Conflits potentiels entre plusieurs versions de PHP ====
Ligne 195: Ligne 202:
  
 Vous pouvez vérifier cela avec cette commande : Vous pouvez vérifier cela avec cette commande :
-<​code>​apt list php\* | grep install</​code>​ +<​code>​apt list \*php\* | grep install</​code>​ 
-Si vous voyez apparaître plusieurs versions de PHP, par ex. //php7.0////php7.2// 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]]) puis réinstallez les paquets absents si nécessaire ([[apt>​libapache2-mod-php]],​ etc).+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 =====
  • php.txt
  • Dernière modification: Le 05/01/2024, 21:53
  • par krodelabestiole