From e8c38a2a27d879b1aa70f241468e71649d7c141b Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Wed, 18 Feb 2026 22:00:42 +0100
Subject: [PATCH 01/96] Fix chapters/: grammar, missing text, and HTML form
sync with EN
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- intro.xml: fix "qu'est ce que" → "qu'est-ce que" (missing hyphens)
- tutorial.xml: fix missing "a" in "Il n'y a rien"
- tutorial.xml: fix str_contains explanation (missing "returns true" logic)
- tutorial.xml: fix button label "OK" → "Valider" to match example
- tutorial.xml: add for= attributes on labels, remove XHTML self-closing tags
---
chapters/intro.xml | 434 +++++++++----------
chapters/tutorial.xml | 954 +++++++++++++++++++++---------------------
2 files changed, 694 insertions(+), 694 deletions(-)
diff --git a/chapters/intro.xml b/chapters/intro.xml
index 57fe87d37e..eea980a603 100644
--- a/chapters/intro.xml
+++ b/chapters/intro.xml
@@ -1,217 +1,217 @@
-
-
-
-
-
-
- Introduction
- Qu'est-ce que PHP et que peut-il faire?
-
-
- Qu'est-ce que PHP ?
-
- PHP (officiellement, ce sigle est un acronyme récursif pour
- PHP Hypertext Preprocessor) est un langage de scripts généraliste
- et Open Source, spécialement conçu pour le développement d'applications
- web. Il peut être intégré facilement au HTML.
-
-
- Bien... mais qu'est ce que cela veut dire ? Un exemple :
-
-
-
- Exemple d'introduction
-
-
-
-
-Exemple
-
-
-
-
-
-
-
-]]>
-
-
-
-
- Au lieu d'utiliser des tonnes de commandes afin d'afficher du HTML (comme en
- C ou en Perl), les pages PHP contiennent des fragments HTML dont du code
- qui fait "quelque chose" (dans ce cas, il va afficher
- "Bonjour, je suis un script PHP !").
- Le code PHP est inclus entre
- une balise de début
- <?php et une balise de fin ?>
- qui permettent au serveur web de passer en mode PHP.
-
-
- Ce qui distingue PHP des langages de script comme le Javascript,
- est que le code est exécuté sur le serveur, générant ainsi le HTML, qui
- sera ensuite envoyé au client. Le client ne reçoit que le
- résultat du script, sans aucun moyen d'avoir accès au code
- qui a produit ce résultat. Vous pouvez configurer votre serveur
- web afin qu'il analyse tous vos fichiers HTML comme des fichiers PHP.
- Ainsi, il n'y a aucun moyen de distinguer les pages qui sont produites
- dynamiquement des pages statiques. Un serveur web peut même être configuré
- pour traiter tous les fichiers HTML avec PHP, et il n'y a
- aucun moyen pour les utilisateurs de savoir que PHP est utilisé.
-
-
- Le grand avantage de PHP est qu'il est extrêmement simple pour les
- néophytes, mais offre des fonctionnalités avancées pour les
- experts. Ne craignez pas de lire la longue liste de fonctionnalités
- PHP. Avec PHP, presque tout le monde peut commencer rapidement
- et écrire des scripts simples en un rien de temps.
-
-
- Bien que le développement de PHP soit orienté vers la programmation
- pour les sites web, on peut faire bien plus avec PHP.
- Lisez donc la section Que peut faire PHP ?
- ou bien le tutoriel d'introduction pour passer directement
- à l'apprentissage de la programmation web.
-
-
-
-
- Que peut faire PHP ?
-
- Tout. PHP est principalement conçu pour servir de
- langage de script côté serveur, il peut donc faire tout ce qu'un autre programme CGI peut faire, comme
- collecter des données de formulaire, générer du contenu dynamique,
- ou gérer des cookies. Mais PHP peut en faire bien plus.
-
-
- Il y a deux domaines différents où PHP peut s'illustrer.
-
-
-
- Langage de script côté serveur. C'est l'utilisation la plus
- traditionnelle, et aussi le principal objet de PHP.
- Trois composants sont nécessaires pour l'exploiter :
- un analyseur PHP (CGI ou module serveur), un serveur
- web et un navigateur web. Vous devez exécuter le serveur
- web en corrélation avec PHP. Vous pouvez accéder
- au programme PHP avec l'aide du navigateur web. Tout ceci
- peut fonctionner sur une machine locale juste pour expérimenter
- la programmation PHP. Voyez la
- section d'installation
- pour plus d'informations.
-
-
-
-
- Langage de programmation en ligne de commande. Un script PHP peut être
- exécuté en ligne de commande,
- sans l'aide du serveur web et d'un navigateur. Il suffit
- de disposer de l'exécutable PHP. Cette utilisation est idéale
- pour les scripts qui sont exécutés régulièrement
- avec un cron (sous Unix ou macOS) ou
- un gestionnaire de tâches (sous Windows). Ces scripts
- peuvent aussi être utilisés pour réaliser des opérations sur des
- fichiers texte. Voyez la section sur l'utilisation de PHP en
- ligne de commande
- pour plus d'informations.
-
-
-
-
-
- PHP est utilisable sur la majorité des systèmes
- d'exploitation, comme Linux, de nombreuses variantes Unix (incluant HP-UX,
- Solaris et OpenBSD), Microsoft Windows, macOS, RISC OS et d'autres encore.
- PHP supporte aussi la plupart des serveurs web actuels dont
- Apache, IIS et bien d'autres. Et ceci inclut tous les serveurs web
- qui peuvent utiliser le binaire PHP FastCGI, comme lighttpd
- et nginx. PHP fonctionne sous forme de module, ou comme processeur CGI.
-
-
- Avec PHP, les développeurs ont le choix du système d'exploitation et
- du serveur web. De plus, ils ont aussi le choix d'utiliser
- la programmation procédurale ou objet (OOP), ou encore un mélange des
- deux.
-
-
- Avec PHP, ce n'est pas limité à la production de code HTML. Les capacités de PHP incluent
- la création de types de fichiers riches, tels que des images ou des fichiers PDF, le chiffrement de données
- et l'envoi d'e-mails. Il peut également facilement générer n'importe quel texte, tel que JSON
- ou XML. PHP peut générer automatiquement ces fichiers et les enregistrer dans
- le système de fichiers au lieu de les imprimer, formant ainsi un cache côté serveur pour
- contenu dynamique.
-
-
- Une des forces les plus significatives de PHP est qu'il supporte
- énormément de bases de données.
- Écrire une page web faisant appel à une base de données devient
- terriblement simple, en utilisant une des extensions spécifiques
- aux bases de données (c.-à-d. pour mysql),
- ou utilisant une classe d'abstraction comme PDO,
- ou une connexion à n'importe quelle base de données supportant la connexion
- standard ouvert via l'extension ODBC.
- Les autres bases de données peuvent utiliser l'extension
- cURL ou sockets
- comme CouchDB.
-
-
- PHP supporte de nombreux protocoles comme
- LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (sous Windows) et
- encore d'autres. Il peut aussi ouvrir des sockets réseau,
- et interagir avec n'importe quel autre protocole. PHP supporte
- le format complexe WDDX, qui permet de communiquer entre tous
- les langages web. En termes d'interconnexion, PHP supporte aussi
- les objets Java, et les utilise de manière transparente
- comme objets intégrés.
-
-
- PHP possède des fonctionnalités utiles dans le
- traitement de texte,
- incluant les expressions régulières compatibles Perl (PCRE),
- ainsi que bon nombre d'extensions et d'utilitaires pour
- analyser et accéder aux documents XML.
- PHP standardise toutes les extensions XML sur la solide base de libxml2,
- et étend le jeu de fonctionnalités en ajoutant le support de
- SimpleXML, XMLReader
- et XMLWriter.
-
-
- Beaucoup d'autres extensions existent, catégorisées
- alphabétiquement et par catégorie.
- Et enfin, il existe des extensions PECL qui peuvent (ou pas) être documentées
- dans le manuel PHP, comme XDebug.
-
-
- Cette page n'est pas assez grande pour lister
- toutes les puissantes fonctionnalités de PHP. Lisez la section
- sur l'installation de PHP
- et étudiez la liste de fonctions
- pour avoir plus de détails sur toutes ces technologies.
-
-
-
-
-
-
+
+
+
+
+
+
+ Introduction
+ Qu'est-ce que PHP et que peut-il faire?
+
+
+ Qu'est-ce que PHP ?
+
+ PHP (officiellement, ce sigle est un acronyme récursif pour
+ PHP Hypertext Preprocessor) est un langage de scripts généraliste
+ et Open Source, spécialement conçu pour le développement d'applications
+ web. Il peut être intégré facilement au HTML.
+
+
+ Bien... mais qu'est-ce que cela veut dire ? Un exemple :
+
+
+
+ Exemple d'introduction
+
+
+
+
+Exemple
+
+
+
+
+
+
+
+]]>
+
+
+
+
+ Au lieu d'utiliser des tonnes de commandes afin d'afficher du HTML (comme en
+ C ou en Perl), les pages PHP contiennent des fragments HTML dont du code
+ qui fait "quelque chose" (dans ce cas, il va afficher
+ "Bonjour, je suis un script PHP !").
+ Le code PHP est inclus entre
+ une balise de début
+ <?php et une balise de fin ?>
+ qui permettent au serveur web de passer en mode PHP.
+
+
+ Ce qui distingue PHP des langages de script comme le Javascript,
+ est que le code est exécuté sur le serveur, générant ainsi le HTML, qui
+ sera ensuite envoyé au client. Le client ne reçoit que le
+ résultat du script, sans aucun moyen d'avoir accès au code
+ qui a produit ce résultat. Vous pouvez configurer votre serveur
+ web afin qu'il analyse tous vos fichiers HTML comme des fichiers PHP.
+ Ainsi, il n'y a aucun moyen de distinguer les pages qui sont produites
+ dynamiquement des pages statiques. Un serveur web peut même être configuré
+ pour traiter tous les fichiers HTML avec PHP, et il n'y a
+ aucun moyen pour les utilisateurs de savoir que PHP est utilisé.
+
+
+ Le grand avantage de PHP est qu'il est extrêmement simple pour les
+ néophytes, mais offre des fonctionnalités avancées pour les
+ experts. Ne craignez pas de lire la longue liste de fonctionnalités
+ PHP. Avec PHP, presque tout le monde peut commencer rapidement
+ et écrire des scripts simples en un rien de temps.
+
+
+ Bien que le développement de PHP soit orienté vers la programmation
+ pour les sites web, on peut faire bien plus avec PHP.
+ Lisez donc la section Que peut faire PHP ?
+ ou bien le tutoriel d'introduction pour passer directement
+ à l'apprentissage de la programmation web.
+
+
+
+
+ Que peut faire PHP ?
+
+ Tout. PHP est principalement conçu pour servir de
+ langage de script côté serveur, il peut donc faire tout ce qu'un autre programme CGI peut faire, comme
+ collecter des données de formulaire, générer du contenu dynamique,
+ ou gérer des cookies. Mais PHP peut en faire bien plus.
+
+
+ Il y a deux domaines différents où PHP peut s'illustrer.
+
+
+
+ Langage de script côté serveur. C'est l'utilisation la plus
+ traditionnelle, et aussi le principal objet de PHP.
+ Trois composants sont nécessaires pour l'exploiter :
+ un analyseur PHP (CGI ou module serveur), un serveur
+ web et un navigateur web. Vous devez exécuter le serveur
+ web en corrélation avec PHP. Vous pouvez accéder
+ au programme PHP avec l'aide du navigateur web. Tout ceci
+ peut fonctionner sur une machine locale juste pour expérimenter
+ la programmation PHP. Voyez la
+ section d'installation
+ pour plus d'informations.
+
+
+
+
+ Langage de programmation en ligne de commande. Un script PHP peut être
+ exécuté en ligne de commande,
+ sans l'aide du serveur web et d'un navigateur. Il suffit
+ de disposer de l'exécutable PHP. Cette utilisation est idéale
+ pour les scripts qui sont exécutés régulièrement
+ avec un cron (sous Unix ou macOS) ou
+ un gestionnaire de tâches (sous Windows). Ces scripts
+ peuvent aussi être utilisés pour réaliser des opérations sur des
+ fichiers texte. Voyez la section sur l'utilisation de PHP en
+ ligne de commande
+ pour plus d'informations.
+
+
+
+
+
+ PHP est utilisable sur la majorité des systèmes
+ d'exploitation, comme Linux, de nombreuses variantes Unix (incluant HP-UX,
+ Solaris et OpenBSD), Microsoft Windows, macOS, RISC OS et d'autres encore.
+ PHP supporte aussi la plupart des serveurs web actuels dont
+ Apache, IIS et bien d'autres. Et ceci inclut tous les serveurs web
+ qui peuvent utiliser le binaire PHP FastCGI, comme lighttpd
+ et nginx. PHP fonctionne sous forme de module, ou comme processeur CGI.
+
+
+ Avec PHP, les développeurs ont le choix du système d'exploitation et
+ du serveur web. De plus, ils ont aussi le choix d'utiliser
+ la programmation procédurale ou objet (OOP), ou encore un mélange des
+ deux.
+
+
+ Avec PHP, ce n'est pas limité à la production de code HTML. Les capacités de PHP incluent
+ la création de types de fichiers riches, tels que des images ou des fichiers PDF, le chiffrement de données
+ et l'envoi d'e-mails. Il peut également facilement générer n'importe quel texte, tel que JSON
+ ou XML. PHP peut générer automatiquement ces fichiers et les enregistrer dans
+ le système de fichiers au lieu de les imprimer, formant ainsi un cache côté serveur pour
+ contenu dynamique.
+
+
+ Une des forces les plus significatives de PHP est qu'il supporte
+ énormément de bases de données.
+ Écrire une page web faisant appel à une base de données devient
+ terriblement simple, en utilisant une des extensions spécifiques
+ aux bases de données (c.-à-d. pour mysql),
+ ou utilisant une classe d'abstraction comme PDO,
+ ou une connexion à n'importe quelle base de données supportant la connexion
+ standard ouvert via l'extension ODBC.
+ Les autres bases de données peuvent utiliser l'extension
+ cURL ou sockets
+ comme CouchDB.
+
+
+ PHP supporte de nombreux protocoles comme
+ LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (sous Windows) et
+ encore d'autres. Il peut aussi ouvrir des sockets réseau,
+ et interagir avec n'importe quel autre protocole. PHP supporte
+ le format complexe WDDX, qui permet de communiquer entre tous
+ les langages web. En termes d'interconnexion, PHP supporte aussi
+ les objets Java, et les utilise de manière transparente
+ comme objets intégrés.
+
+
+ PHP possède des fonctionnalités utiles dans le
+ traitement de texte,
+ incluant les expressions régulières compatibles Perl (PCRE),
+ ainsi que bon nombre d'extensions et d'utilitaires pour
+ analyser et accéder aux documents XML.
+ PHP standardise toutes les extensions XML sur la solide base de libxml2,
+ et étend le jeu de fonctionnalités en ajoutant le support de
+ SimpleXML, XMLReader
+ et XMLWriter.
+
+
+ Beaucoup d'autres extensions existent, catégorisées
+ alphabétiquement et par catégorie.
+ Et enfin, il existe des extensions PECL qui peuvent (ou pas) être documentées
+ dans le manuel PHP, comme XDebug.
+
+
+ Cette page n'est pas assez grande pour lister
+ toutes les puissantes fonctionnalités de PHP. Lisez la section
+ sur l'installation de PHP
+ et étudiez la liste de fonctions
+ pour avoir plus de détails sur toutes ces technologies.
+
+
+
+
+
+
diff --git a/chapters/tutorial.xml b/chapters/tutorial.xml
index 538ca7c06a..971e2c2ad3 100755
--- a/chapters/tutorial.xml
+++ b/chapters/tutorial.xml
@@ -1,477 +1,477 @@
-
-
-
-
-
- Une introduction à PHP
-
-
- Dans cette section, nous voulons illustrer les principes de base
- de PHP dans une courte introduction. Ce chapitre traite uniquement
- de création de pages web dynamiques avec PHP, laissant de côté
- temporairement les autres possibilités de PHP. Voir la section
- Ce que peut faire PHP pour
- plus d'informations.
-
-
- Les pages web qui exploitent PHP sont traitées comme des pages
- HTML standards, et vous pouvez les créer, éditer et effacer
- tout comme vous le faites normalement avec des pages HTML
- classiques.
-
-
-
- Votre première page PHP
-
- Ce tutoriel suppose que PHP est déjà installé.
- Les instructions d'installation sont disponibles sur la
- page de téléchargement.
-
-
- Créez un fichier appelé hello.php
- avec le contenu suivant :
-
-
-
- Notre premier script PHP : hello.php
-
-
-]]>
-
-
- Avec votre terminal, naviguez jusqu'au répertoire contenant ce fichier et
- démarrez un serveur de développement avec la commande suivante :
-
-
-
-
-
- Utilisez votre navigateur pour accéder au fichier en utilisant l'URL de votre serveur web, se terminant
- avec la référence au fichier hello.php.
- Par rapport à la précédente commande exécutée, l'URL sera
- http://localhost:8000/hello.php.
- Si tout est configuré correctement, ce fichier sera analysé par PHP
- et vous verrez la sortie "Hello World!" affichée dans votre navigateur.
-
-
- PHP peut être intégré dans une page web HTML normale. Cela signifie que, dans votre document HTML,
- vous pouvez écrire des instructions PHP, comme démontré dans l'exemple suivant :
-
-
-
-
-
- Test PHP
-
-
- Bonjour le monde
-
-
-]]>
-
-
-
-
- Ce programme est extrêmement simple et vous n'avez pas besoin de PHP
- pour créer une page web comme ceci. Elle ne fait qu'afficher
- Bonjour le monde, grâce à la fonction
- echo
- de PHP. Notez que ce fichier n'a pas besoin d'être exécutable
- ou autre, dans aucun cas. Le serveur sait que ce fichier a besoin d'être interprété
- par PHP, car vous utilisez l'extension ".php", et le serveur est configuré pour
- les passer à PHP. Regardez cela comme une page HTML normale qui contient une série
- de balises spéciales qui vont vous permettre de réaliser beaucoup de choses intéressantes.
-
-
-
- Le point important de cet exemple était de montrer le format des
- balises spéciales PHP. Nous avons utilisé ici
- <?php pour indiquer le début de la balise PHP.
- Puis, nous avons introduit les commandes PHP et refermé les balises
- PHP avec ?>. Vous pouvez passer du mode PHP
- au mode HTML et vice-versa, de cette manière, et à votre guise. Pour plus
- d'informations, lisez la section du manuel sur la
- syntaxe basique de PHP.
-
-
-
- Une note sur les retours à la ligne
-
- Les retours à la ligne ont une signification minime en HTML, cependant,
- c'est toujours une bonne idée de rendre votre HTML aussi joli et proche
- que possible en y ajoutant des retours à la ligne. Un retour à la ligne
- suivant immédiatement une balise de fermeture PHP (?>)
- sera supprimé par PHP. Ceci peut être vraiment très utile lorsque vous
- insérez plusieurs blocs PHP ou fichiers inclus contenant du PHP qui
- n'est pas supposé afficher quoi que ce soit. En même temps, ce peut
- être confus. Vous pouvez ajouter un espace après la balise fermante
- PHP (?>) pour forcer l'espace et un retour à
- la ligne à afficher, ou vous pouvez ajouter explicitement un retour à la ligne
- dans le dernier echo/print de votre bloc PHP.
-
-
-
-
- Une note sur les éditeurs de texte
-
- Il existe de nombreux éditeurs de texte et environnements de
- développement (IDE) que vous pouvez utiliser pour créer, éditer
- et gérer vos applications PHP. Une liste partielle de ces outils
- est entretenue à l'adresse
- PHP Editor's List.
- Si vous voulez recommander un éditeur particulier, rendez donc une visite
- à cette page et demandez au webmestre d'ajouter votre éditeur. Avoir au minimum
- un éditeur de texte avec la coloration syntaxique est vivement recommandé.
-
-
-
-
- Une note sur les traitements de texte
-
- Les traitements de texte tels que StarOffice Writer, Microsoft Word et
- Abiword sont de très mauvais choix pour éditer des scripts PHP.
- Si vous voulez utiliser l'un d'entre eux, malgré tout, pour tester vos
- scripts, vous devez vous assurer que vous sauvez les fichiers au format
- texte seul (plain text) : sinon, PHP ne sera pas capable de lire
- et d'exécuter ces scripts.
-
-
-
-
- Maintenant vous avez créé un script PHP qui fonctionne, c'est le moment
- de créer le meilleur script PHP ! Faites un appel à la fonction
- phpinfo et vous verrez beaucoup d'informations
- intéressantes sur votre système et sa configuration comme les
- variables pré-définies disponibles,
- les modules PHP chargés ainsi que la configuration.
- Prenez du temps pour revoir ces informations importantes.
-
-
-
- Récupération des informations du système depuis PHP
-
-
-]]>
-
-
-
-
-
-
- Trucs pratiques
-
- Réalisons maintenant quelque chose de plus puissant. Nous allons
- vérifier le type de navigateur que le visiteur de notre site utilise.
- Pour cela, nous allons accéder aux informations que le navigateur
- du visiteur nous envoie, lors de sa requête HTTP. Cette information
- est stockée dans une variable.
- Les variables sont faciles à repérer, car elles commencent toutes par
- un signe dollar. La variable qui nous intéresse ici est
- $_SERVER['HTTP_USER_AGENT'].
-
-
-
- $_SERVER est une
- variable spéciale de PHP, qui contient toutes les informations
- relatives au serveur web. C'est une variable réservée de PHP,
- et une superglobale. Reportez-vous aux pages du manuel traitant des
- Auto-globales
- (aussi connues sous le nom de super-globales).
-
-
-
- Pour afficher cette variable, nous pouvons simplement faire :
-
-
-
- Afficher le contenu d'une variable (élément de tableau)
-
-
-]]>
-
-
- Un résultat possible du script pourra alors être :
-
-
-
-
-
-
-
- Il y a de nombreux types de
- variables disponibles en PHP. Dans l'exemple ci-dessus, nous avons affiché
- un élément d'une variable Tableau (Array).
- Les tableaux peuvent être très utiles.
-
-
- $_SERVER est juste une variable qui est automatiquement
- disponible dans votre script. Une liste de toutes les variables qui sont
- rendues disponibles est fournie dans la section
- Variables réservées ou vous
- pouvez aussi en obtenir une liste complète en lisant l'affichage de la fonction
- phpinfo utilisée dans l'exemple de la section précédente.
-
-
- Vous pouvez ajouter plusieurs commandes PHP dans une balise PHP, et créer
- de petits blocs de code qui réalisent des opérations plus complexes
- qu'un simple affichage. Par exemple, si nous voulons vérifier que le
- navigateur est bien de la famille Firefox, nous pouvons
- faire cela :
-
-
-
- Exemple utilisant les
- structures de contrôle et
- les fonctions
-
-
-]]>
-
-
- Le résultat de ce script, si vous utilisez Firefox, sera :
-
-
-
-
-
-
-
- Ici, nous introduisons plusieurs nouveaux concepts. Nous avons une
- structure if.
- Si vous êtes familier avec les syntaxes de base du langage C, cela
- ne vous surprendra pas. Si vous ne connaissez pas assez le langage C ou
- un autre langage dont la syntaxe est similaire à celle ci-dessus, il
- vaudrait mieux que vous lisiez une introduction à PHP, et assimiliez
- les premiers chapitres, ou bien lisez le chapitre consacré à
- la référence du langage.
-
-
- Le second concept que nous avons introduit est la fonction str_contains.
- str_contains est une fonction intégrée à PHP, qui détermine
- la présence d'une chaîne donnée dans une autre. Dans notre cas, nous
- avons recherché la chaîne "Firefox" dans la chaîne
- $_SERVER['HTTP_USER_AGENT'].
- Sinon elle retourne &false;.
- Si elle retourne &true; la structure if
- reçoit &true; et le code entre accolades {} est exécuté. Sinon, le code n'est pas
- exécuté. N'hésitez pas à
- expérimenter d'autres exemples, à l'aide de
- if,
- else, et d'autres
- fonctions comme strtoupper et
- strlen. Chaque page de la documentation contient aussi
- des exemples. Si vous n'êtes pas sûr de l'utilisation de ces fonctions, vous devez lire
- la page du manuel
- "comment lire une définition de fonction"
- ainsi que la section sur les fonctions PHP.
-
-
- Nous pouvons maintenant progresser et vous montrer comment utiliser le mode PHP,
- au milieu du code HTML :
-
-
-
- Passer du mode PHP au mode HTML et vice-versa
-
-
-
str_contains() a retourné true
-
Vous utilisez Firefox
-
-
str_contains() a retourné false
-
Vous n'utilisez pas Firefox
-
-]]>
-
-
- Un exemple de résultat obtenu dans ce script est :
-
-
-str_contains() a retourné true
-
Vous utilisez Firefox
-]]>
-
-
-
-
- Au lieu d'utiliser une commande echo, pour afficher
- du texte, vous pouvez utiliser du code HTML pur. Le point important à noter
- ici est que la logique de programmation est conservée. Seul un des deux
- blocs HTML sera affiché, suivant le résultat de la fonction str_contains.
- En d'autres termes, cela dépend si la chaîne Firefox
- a été trouvée ou non.
-
-
-
-
- Utiliser un formulaire
-
- L'un des points forts de PHP est sa capacité à gérer les formulaires.
- Le concept de base qui est important à comprendre est que tous les
- champs d'un formulaire seront automatiquement disponibles dans le
- script PHP d'action. Lisez le chapitre du manuel concernant les
- variables depuis des sources externes à PHP
- pour plus d'informations et d'exemples sur la façon d'utiliser les
- formulaires. Voici un exemple de formulaire HTML :
-
-
-
- Un simple formulaire HTML
-
-
-
-
-
-
-
-
-
-
-]]>
-
-
-
-
- Il n'y rien de particulier dans ce formulaire. Il est en HTML
- pur, sans aucune configuration particulière. Lorsque le visiteur
- remplit le formulaire, et clique sur le bouton OK, le
- fichier action.php est appelé. Dans ce
- fichier, vous pouvez écrire le script suivant :
-
-
-
- Afficher des données issues d'un formulaire
-
-.
-Tu as ans.
-]]>
-
-
- Voici le résultat que vous pourriez obtenir, selon
- les valeurs que vous avez saisies :
-
-
-
-
-
-
-
- Mis à part les parties htmlspecialchars et
- (int), ce script ne fait que des choses évidentes.
- htmlspecialchars s'assure que tous les caractères
- spéciaux HTML sont proprement encodés afin d'éviter des injections
- de balises HTML et de Javascript dans vos pages. Pour l'âge, vu que
- nous savons que c'est un entier, vous pouvez le
- convertir en un
- &integer;. Vous pouvez également demander à PHP de le faire
- automatiquement à votre place en utilisant l'extension
- filter.
- Les variables $_POST['nom'] et
- $_POST['age'] sont automatiquement créées par PHP.
- Un peu plus tôt dans ce tutoriel, nous avons utilisé la variable
- $_SERVER, une superglobale. Maintenant, nous avons
- introduit une autre superglobale $_POST
- qui contient toutes les données envoyées par la méthode POST. Notez que
- dans notre formulaire, nous avons choisi la méthode POST.
- Si nous avions utilisé la méthode GET alors notre formulaire
- aurait placé ces informations dans la variable $_GET,
- une autre superglobale. Vous pouvez aussi utiliser la variable
- $_REQUEST, si vous
- ne souhaitez pas vous embarrasser de la méthode utilisée. Elle contient
- un mélange des données de GET, POST, COOKIE et FILE.
-
-
-
-
- Et après ?
-
- Avec ce que vous savez, vous êtes maintenant capable de comprendre
- l'essentiel de la documentation PHP, et les différents scripts d'exemples
- disponibles dans les archives.
-
-
- Différentes présentations des capacités de PHP sont disponibles sur le
- site des conférences PHP :
- &url.php.talks;.
-
-
-
-
-
+
+
+
+
+
+ Une introduction à PHP
+
+
+ Dans cette section, nous voulons illustrer les principes de base
+ de PHP dans une courte introduction. Ce chapitre traite uniquement
+ de création de pages web dynamiques avec PHP, laissant de côté
+ temporairement les autres possibilités de PHP. Voir la section
+ Ce que peut faire PHP pour
+ plus d'informations.
+
+
+ Les pages web qui exploitent PHP sont traitées comme des pages
+ HTML standards, et vous pouvez les créer, éditer et effacer
+ tout comme vous le faites normalement avec des pages HTML
+ classiques.
+
+
+
+ Votre première page PHP
+
+ Ce tutoriel suppose que PHP est déjà installé.
+ Les instructions d'installation sont disponibles sur la
+ page de téléchargement.
+
+
+ Créez un fichier appelé hello.php
+ avec le contenu suivant :
+
+
+
+ Notre premier script PHP : hello.php
+
+
+]]>
+
+
+ Avec votre terminal, naviguez jusqu'au répertoire contenant ce fichier et
+ démarrez un serveur de développement avec la commande suivante :
+
+
+
+
+
+ Utilisez votre navigateur pour accéder au fichier en utilisant l'URL de votre serveur web, se terminant
+ avec la référence au fichier hello.php.
+ Par rapport à la précédente commande exécutée, l'URL sera
+ http://localhost:8000/hello.php.
+ Si tout est configuré correctement, ce fichier sera analysé par PHP
+ et vous verrez la sortie "Hello World!" affichée dans votre navigateur.
+
+
+ PHP peut être intégré dans une page web HTML normale. Cela signifie que, dans votre document HTML,
+ vous pouvez écrire des instructions PHP, comme démontré dans l'exemple suivant :
+
+
+
+
+
+ Test PHP
+
+
+ Bonjour le monde'; ?>
+
+
+]]>
+
+
+ Cela produira le résultat suivant :
+
+
+
+
+
+ Test PHP
+
+
+
Bonjour le monde
+
+
+]]>
+
+
+
+
+ Ce programme est extrêmement simple et vous n'avez pas besoin de PHP
+ pour créer une page web comme ceci. Elle ne fait qu'afficher
+ Bonjour le monde, grâce à la fonction
+ echo
+ de PHP. Notez que ce fichier n'a pas besoin d'être exécutable
+ ou autre, dans aucun cas. Le serveur sait que ce fichier a besoin d'être interprété
+ par PHP, car vous utilisez l'extension ".php", et le serveur est configuré pour
+ les passer à PHP. Regardez cela comme une page HTML normale qui contient une série
+ de balises spéciales qui vont vous permettre de réaliser beaucoup de choses intéressantes.
+
+
+
+ Le point important de cet exemple était de montrer le format des
+ balises spéciales PHP. Nous avons utilisé ici
+ <?php pour indiquer le début de la balise PHP.
+ Puis, nous avons introduit les commandes PHP et refermé les balises
+ PHP avec ?>. Vous pouvez passer du mode PHP
+ au mode HTML et vice-versa, de cette manière, et à votre guise. Pour plus
+ d'informations, lisez la section du manuel sur la
+ syntaxe basique de PHP.
+
+
+
+ Une note sur les retours à la ligne
+
+ Les retours à la ligne ont une signification minime en HTML, cependant,
+ c'est toujours une bonne idée de rendre votre HTML aussi joli et proche
+ que possible en y ajoutant des retours à la ligne. Un retour à la ligne
+ suivant immédiatement une balise de fermeture PHP (?>)
+ sera supprimé par PHP. Ceci peut être vraiment très utile lorsque vous
+ insérez plusieurs blocs PHP ou fichiers inclus contenant du PHP qui
+ n'est pas supposé afficher quoi que ce soit. En même temps, ce peut
+ être confus. Vous pouvez ajouter un espace après la balise fermante
+ PHP (?>) pour forcer l'espace et un retour à
+ la ligne à afficher, ou vous pouvez ajouter explicitement un retour à la ligne
+ dans le dernier echo/print de votre bloc PHP.
+
+
+
+
+ Une note sur les éditeurs de texte
+
+ Il existe de nombreux éditeurs de texte et environnements de
+ développement (IDE) que vous pouvez utiliser pour créer, éditer
+ et gérer vos applications PHP. Une liste partielle de ces outils
+ est entretenue à l'adresse
+ PHP Editor's List.
+ Si vous voulez recommander un éditeur particulier, rendez donc une visite
+ à cette page et demandez au webmestre d'ajouter votre éditeur. Avoir au minimum
+ un éditeur de texte avec la coloration syntaxique est vivement recommandé.
+
+
+
+
+ Une note sur les traitements de texte
+
+ Les traitements de texte tels que StarOffice Writer, Microsoft Word et
+ Abiword sont de très mauvais choix pour éditer des scripts PHP.
+ Si vous voulez utiliser l'un d'entre eux, malgré tout, pour tester vos
+ scripts, vous devez vous assurer que vous sauvez les fichiers au format
+ texte seul (plain text) : sinon, PHP ne sera pas capable de lire
+ et d'exécuter ces scripts.
+
+
+
+
+ Maintenant vous avez créé un script PHP qui fonctionne, c'est le moment
+ de créer le meilleur script PHP ! Faites un appel à la fonction
+ phpinfo et vous verrez beaucoup d'informations
+ intéressantes sur votre système et sa configuration comme les
+ variables pré-définies disponibles,
+ les modules PHP chargés ainsi que la configuration.
+ Prenez du temps pour revoir ces informations importantes.
+
+
+
+ Récupération des informations du système depuis PHP
+
+
+]]>
+
+
+
+
+
+
+ Trucs pratiques
+
+ Réalisons maintenant quelque chose de plus puissant. Nous allons
+ vérifier le type de navigateur que le visiteur de notre site utilise.
+ Pour cela, nous allons accéder aux informations que le navigateur
+ du visiteur nous envoie, lors de sa requête HTTP. Cette information
+ est stockée dans une variable.
+ Les variables sont faciles à repérer, car elles commencent toutes par
+ un signe dollar. La variable qui nous intéresse ici est
+ $_SERVER['HTTP_USER_AGENT'].
+
+
+
+ $_SERVER est une
+ variable spéciale de PHP, qui contient toutes les informations
+ relatives au serveur web. C'est une variable réservée de PHP,
+ et une superglobale. Reportez-vous aux pages du manuel traitant des
+ Auto-globales
+ (aussi connues sous le nom de super-globales).
+
+
+
+ Pour afficher cette variable, nous pouvons simplement faire :
+
+
+
+ Afficher le contenu d'une variable (élément de tableau)
+
+
+]]>
+
+
+ Un résultat possible du script pourra alors être :
+
+
+
+
+
+
+
+ Il y a de nombreux types de
+ variables disponibles en PHP. Dans l'exemple ci-dessus, nous avons affiché
+ un élément d'une variable Tableau (Array).
+ Les tableaux peuvent être très utiles.
+
+
+ $_SERVER est juste une variable qui est automatiquement
+ disponible dans votre script. Une liste de toutes les variables qui sont
+ rendues disponibles est fournie dans la section
+ Variables réservées ou vous
+ pouvez aussi en obtenir une liste complète en lisant l'affichage de la fonction
+ phpinfo utilisée dans l'exemple de la section précédente.
+
+
+ Vous pouvez ajouter plusieurs commandes PHP dans une balise PHP, et créer
+ de petits blocs de code qui réalisent des opérations plus complexes
+ qu'un simple affichage. Par exemple, si nous voulons vérifier que le
+ navigateur est bien de la famille Firefox, nous pouvons
+ faire cela :
+
+
+
+ Exemple utilisant les
+ structures de contrôle et
+ les fonctions
+
+
+]]>
+
+
+ Le résultat de ce script, si vous utilisez Firefox, sera :
+
+
+
+
+
+
+
+ Ici, nous introduisons plusieurs nouveaux concepts. Nous avons une
+ structure if.
+ Si vous êtes familier avec les syntaxes de base du langage C, cela
+ ne vous surprendra pas. Si vous ne connaissez pas assez le langage C ou
+ un autre langage dont la syntaxe est similaire à celle ci-dessus, il
+ vaudrait mieux que vous lisiez une introduction à PHP, et assimiliez
+ les premiers chapitres, ou bien lisez le chapitre consacré à
+ la référence du langage.
+
+
+ Le second concept que nous avons introduit est la fonction str_contains.
+ str_contains est une fonction intégrée à PHP, qui détermine
+ la présence d'une chaîne donnée dans une autre. Dans notre cas, nous
+ avons recherché la chaîne "Firefox" dans la chaîne
+ $_SERVER['HTTP_USER_AGENT']. Si la chaîne recherchée
+ est trouvée, la fonction retourne &true;. Sinon, elle retourne &false;.
+ Si elle retourne &true;, la structure if
+ reçoit &true; et le code entre accolades {} est exécuté. Sinon, le code n'est pas
+ exécuté. N'hésitez pas à
+ expérimenter d'autres exemples, à l'aide de
+ if,
+ else, et d'autres
+ fonctions comme strtoupper et
+ strlen. Chaque page de la documentation contient aussi
+ des exemples. Si vous n'êtes pas sûr de l'utilisation de ces fonctions, vous devez lire
+ la page du manuel
+ "comment lire une définition de fonction"
+ ainsi que la section sur les fonctions PHP.
+
+
+ Nous pouvons maintenant progresser et vous montrer comment utiliser le mode PHP,
+ au milieu du code HTML :
+
+
+
+ Passer du mode PHP au mode HTML et vice-versa
+
+
+
str_contains() a retourné true
+
Vous utilisez Firefox
+
+
str_contains() a retourné false
+
Vous n'utilisez pas Firefox
+
+]]>
+
+
+ Un exemple de résultat obtenu dans ce script est :
+
+
+str_contains() a retourné true
+
Vous utilisez Firefox
+]]>
+
+
+
+
+ Au lieu d'utiliser une commande echo, pour afficher
+ du texte, vous pouvez utiliser du code HTML pur. Le point important à noter
+ ici est que la logique de programmation est conservée. Seul un des deux
+ blocs HTML sera affiché, suivant le résultat de la fonction str_contains.
+ En d'autres termes, cela dépend si la chaîne Firefox
+ a été trouvée ou non.
+
+
+
+
+ Utiliser un formulaire
+
+ L'un des points forts de PHP est sa capacité à gérer les formulaires.
+ Le concept de base qui est important à comprendre est que tous les
+ champs d'un formulaire seront automatiquement disponibles dans le
+ script PHP d'action. Lisez le chapitre du manuel concernant les
+ variables depuis des sources externes à PHP
+ pour plus d'informations et d'exemples sur la façon d'utiliser les
+ formulaires. Voici un exemple de formulaire HTML :
+
+
+
+ Un simple formulaire HTML
+
+
+
+
+
+
+
+
+
+
+]]>
+
+
+
+
+ Il n'y a rien de particulier dans ce formulaire. Il est en HTML
+ pur, sans aucune configuration particulière. Lorsque le visiteur
+ remplit le formulaire et clique sur le bouton Valider, le
+ fichier action.php est appelé. Dans ce
+ fichier, vous pouvez écrire le script suivant :
+
+
+
+ Afficher des données issues d'un formulaire
+
+.
+Tu as ans.
+]]>
+
+
+ Voici le résultat que vous pourriez obtenir, selon
+ les valeurs que vous avez saisies :
+
+
+
+
+
+
+
+ Mis à part les parties htmlspecialchars et
+ (int), ce script ne fait que des choses évidentes.
+ htmlspecialchars s'assure que tous les caractères
+ spéciaux HTML sont proprement encodés afin d'éviter des injections
+ de balises HTML et de Javascript dans vos pages. Pour l'âge, vu que
+ nous savons que c'est un entier, vous pouvez le
+ convertir en un
+ &integer;. Vous pouvez également demander à PHP de le faire
+ automatiquement à votre place en utilisant l'extension
+ filter.
+ Les variables $_POST['nom'] et
+ $_POST['age'] sont automatiquement créées par PHP.
+ Un peu plus tôt dans ce tutoriel, nous avons utilisé la variable
+ $_SERVER, une superglobale. Maintenant, nous avons
+ introduit une autre superglobale $_POST
+ qui contient toutes les données envoyées par la méthode POST. Notez que
+ dans notre formulaire, nous avons choisi la méthode POST.
+ Si nous avions utilisé la méthode GET alors notre formulaire
+ aurait placé ces informations dans la variable $_GET,
+ une autre superglobale. Vous pouvez aussi utiliser la variable
+ $_REQUEST, si vous
+ ne souhaitez pas vous embarrasser de la méthode utilisée. Elle contient
+ un mélange des données de GET, POST, COOKIE et FILE.
+
+
+
+
+ Et après ?
+
+ Avec ce que vous savez, vous êtes maintenant capable de comprendre
+ l'essentiel de la documentation PHP, et les différents scripts d'exemples
+ disponibles dans les archives.
+
+
+ Différentes présentations des capacités de PHP sont disponibles sur le
+ site des conférences PHP :
+ &url.php.talks;.
+
+
+
+
+
From 423fa8aed0deef1769a432458f42df8d08c90c92 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Wed, 18 Feb 2026 22:02:55 +0100
Subject: [PATCH 02/96] Fix security/: mistranslation, grammar, spelling, and
formatting
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- database.xml: fix title mistranslation (attack targets OS, not DB server)
- errors.xml: fix missing "qu'" in "indique qu'un système"
- errors.xml: fix typo "vérifée" → "vérifiée"
- filesystem.xml: fix /etc/password → /etc/passwd
- filesystem.xml: translate English "Issue" → "Problèmes" in title
- variables.xml: fix tu→vous form (Améliore→Améliorez, Active→Activez, Utilise→Utilisez)
- variables.xml: fix "supprimées à partir de" → "supprimées depuis"
---
security/database.xml | 2 +-
security/errors.xml | 4 ++--
security/filesystem.xml | 4 ++--
security/variables.xml | 8 ++++----
4 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/security/database.xml b/security/database.xml
index 3c3a6cdec0..387d606495 100644
--- a/security/database.xml
+++ b/security/database.xml
@@ -299,7 +299,7 @@ $query = "UPDATE usertable SET pwd='hehehe', trusted=100, admin='yes' WHERE
- Attaque d'un serveur de bases de données (MSSQL Server)
+ Attaque du système d'exploitation de l'hôte de base de données (MSSQL Server)
Un exemple effrayant de la manière dont des commandes de niveau systèmes d'exploitation
peuvent être accessibles sur certains hôtes de base de données.
diff --git a/security/errors.xml b/security/errors.xml
index 67b6ff2f1e..f4e9a6fc90 100644
--- a/security/errors.xml
+++ b/security/errors.xml
@@ -64,7 +64,7 @@
plus d'informations sur votre système.
- Par exemple, le style même d'une erreur PHP standard indique d'un système fait
+ Par exemple, le style même d'une erreur PHP standard indique qu'un système fait
tourner PHP.
Si un attaquant affiche une page .html, et essaye de la tester (pour rechercher des
faiblesses connues du système), en lui envoyant des données invalides, il peut déterminer
@@ -116,7 +116,7 @@
Puisque PHP a été fait pour permettre aux utilisateurs
d'accéder aux fichiers, il est possible de créer un
- script PHP qui vous permet de lire des fichiers tels que /etc/password,
+ script PHP qui vous permet de lire des fichiers tels que /etc/passwd,
de modifier les connexions ethernet, lancer des impressions de documents,
etc. Cela implique notamment que vous devez vous assurer que les fichiers
manipulés par les scripts sont bien ceux qu'il faut.
@@ -159,7 +159,7 @@ if (!ctype_alnum($username) || !preg_match('/^(?:[a-z0-9_-]|\.(?!\.))+$/iD', $us
politique qui interdit TOUT sauf ce que vous autorisez.
- Issue lors de l'utilisation des octets nuls
+ Problèmes liés aux octets nuls
Comme PHP utilise des fonctions C pour les opérations sous-jacentes,
notamment au niveau du système de fichiers, il peut gérer les octets nuls
diff --git a/security/variables.xml b/security/variables.xml
index d4ee626b34..89c3b78f5e 100644
--- a/security/variables.xml
+++ b/security/variables.xml
@@ -73,7 +73,7 @@ exec($evil_var);
système, mais vous contribuerez à l'améliorer.
- Améliore la sécurité en désactivant les paramètres de commodité qui masquent
+ Améliorez la sécurité en désactivant les paramètres de commodité qui masquent
l'origine, la validité ou l'intégrité des données en entrée. La création
implicite de variables et l'absence de vérification des entrées peuvent
entraîner des vulnérabilités telles que des attaques par injection et des
@@ -81,16 +81,16 @@ exec($evil_var);
Des fonctionnalités comme register_globals et
- magic_quotes (toutes deux supprimées à partir de PHP 5.4.0)
+ magic_quotes (toutes deux supprimées depuis PHP 5.4.0)
contribuaient autrefois à ces risques en créant automatiquement des variables
à partir des entrées utilisateur et en échappant les données de manière incohérente.
Bien qu'elles ne soient plus présentes dans PHP, des risques similaires
persistent si la gestion des entrées est mal maîtrisée.
- Active error_reporting(E_ALL)
+ Activez error_reporting(E_ALL)
pour aider à détecter les variables non initialisées et à valider les entrées.
- Utilise les types stricts
+ Utilisez les types stricts
(declare(strict_types=1),
introduit à partir de PHP 7) pour imposer la sécurité des types, éviter
les conversions involontaires et améliorer la sécurité globale.
From efddca4730facae8e5ae41bdc7749fd35445147c Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Wed, 18 Feb 2026 22:03:42 +0100
Subject: [PATCH 03/96] Fix features/: tag issues, plural, and missing type tag
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- commandline.xml: remove extra space in --disable-cgi option
- commandline.xml: fix singular "Différence" → "Différences"
- commandline.xml: fix ENTER → ENTER
- gc.xml: add missing scalar tag, fix "A" → "À"
---
features/commandline.xml | 4060 +++++++++++++++++++-------------------
features/gc.xml | 1340 ++++++-------
2 files changed, 2700 insertions(+), 2700 deletions(-)
diff --git a/features/commandline.xml b/features/commandline.xml
index eac7ae2edb..4f4d8ef2cf 100755
--- a/features/commandline.xml
+++ b/features/commandline.xml
@@ -1,2030 +1,2030 @@
-
-
-
-
-
- Utiliser PHP en ligne de commande
- Utilisation des lignes de commande
-
-
-
- Introduction
-
-
- Le but premier de &cli.sapi; est le développement
- d'applications shell avec PHP. Les différences entre le &cli.sapi;
- et les autres SAPI sont
- expliqués dans ce chapitre. Il est important de mentionner que &cli;
- et CGI sont des SAPI différents malgré
- le fait qu'ils puissent partager la majeure partie de leurs comportements.
-
-
-
- Le &cli.sapi; est activé par défaut en utilisant l'option
- , mais vous pouvez le désactiver
- en utilisant l'option
- lors de l'exécution de la commande ./configure.
-
-
-
- Le nom, l'emplacement et l'existence des binaires &cli;/CGI
- vont dépendre de la façon dont PHP est installé sur votre système. Par
- défaut, en exécutant make, les deux binaires CGI
- et &cli; sont compilés et nommés respectivement sapi/cgi/php-cgi et
- sapi/cli/php dans votre répertoire source PHP. Vous
- remarquerez que les deux se nomment php. Ce qui se passe
- ensuite pendant le make install dépend de votre ligne
- de configuration. Si un module SAPI, apxs par exemple, a été choisi pendant la
- configuration, ou que l'option a été
- activée, le &cli; est copié dans {PREFIX}/bin/php pendant
- le make install sinon, le CGI sera placé ici.
- Si, par exemple, figure dans votre
- ligne de configuration, le &cli; est copié dans {PREFIX}/bin/php
- pendant le make install. Si vous voulez forcer l'installation du
- binaire CGI, lancez make install-cli
- après le make install. Sinon, vous pouvez aussi spécifier
- dans votre ligne de configuration.
-
-
-
-
- Du fait que les deux options et
- sont activées par défaut, avoir simplement
- dans votre ligne de configuration
- n'implique pas nécessairement que le CLI soit renommé en
- {PREFIX}/bin/php pendant le make install.
-
-
-
-
- Le binaire &cli; est distribué dans le dossier principal
- sous le nom de php.exe sous Windows. La version
- CGI est distribuée sous le nom de php-cgi.exe.
- De plus, un fichier php-win.exe est distribué si PHP
- est configuré en utilisant l'option de configuration
- . Ce fichier fait la
- même chose que la version &cli;, sauf qu'il n'affiche rien et qu'il ne fournit
- pas de console.
-
-
-
- Quel SAPI est installé ?
-
- À partir d'un terminal, lancer php -v vous dira si
- php est en version CGI ou
- &cli;. Vous pouvez aussi consulter la fonction
- php_sapi_name et la constante
- PHP_SAPI.
-
-
-
-
- Une page man de manuel Unix est disponible
- en tapant man php dans l'interpréteur de commande.
-
-
-
-
-
-
-
- Différence avec les autres SAPIs
-
-
- Les différences les plus notables entre le &cli; SAPI et les
- SAPI sont :
-
-
-
- Contrairement au CGI SAPI, aucun
- en-tête HTTP n'est écrit dans le résultat.
-
-
- Bien que le CGI SAPI fournisse un
- moyen de supprimer les en-têtes HTTP, il n'est pas possible d'activer les
- en-têtes HTTP dans le &cli.sapi;.
-
-
- &cli; est lancé en mode silencieux par défaut, bien que les options
- et soient gardées
- pour rester compatible avec les anciennes versions CGI.
-
-
- Il ne change pas le répertoire courant en celui du script.
- (les options et sont
- gardées par souci de compatibilité)
-
-
- Messages d'erreurs en texte brut (pas de formatage HTML).
-
-
-
-
- Il y a plusieurs directives du &php.ini; qui sont ignorées par le
- &cli.sapi;, car elles n'ont pas de sens en environnement shell :
-
-
-
- Directives &php.ini; ignorées
-
-
-
- Directive
- Valeur par défaut pour &cli; SAPI
- Commentaire
-
-
-
-
- html_errors
- &false;
-
- Par défaut à &false;, vu qu'il peut être bien difficile de lire des messages
- d'erreur sur un terminal lorsqu'ils sont noyés dans des balises HTML
- non-interprétées.
-
-
-
- implicit_flush
- &true;
-
- Dans un terminal, il est généralement souhaitable que tout affichage en provenance de
- print,
- echo
- et autres, soit immédiatement affiché, et non pas placé dans un
- buffer quelconque. Néanmoins, il est toujours possible d'utiliser
- la bufferisation de sortie
- si vous voulez retarder un affichage, ou bien en manipuler le contenu
- une dernière fois.
-
-
-
- max_execution_time
- 0 (sans limite)
-
- PHP dans un terminal est susceptible d'être utilisé pour des tâches
- bien plus diverses que dans des scripts web, et vu que cela
- prend généralement beaucoup de temps, ce paramètre sera défini par défaut
- à 0 permettant ainsi d'être illimité.
-
-
-
- register_argc_argv
- &true;
-
-
- La définition à &true; de cette directive signifie que les scripts
- exécutés via le SAPI &cli; auront toujours
- accès à argc (représentant le nombre
- d'arguments passés à l'application) et
- argv (le tableau contenant les arguments passés).
-
-
- Les variables PHP $argc
- et $argv sont automatiquement définies et remplies
- avec les valeurs appropriées, lors de l'utilisation du
- SAPI &cli;. Ces valeurs peuvent également
- être trouvées dans la variable $_SERVER, par exemple :
- $_SERVER['argv'].
-
-
-
- La présence de $argv ou $_SERVER['argv']
- n'est pas une indication fiable qu'un script est exécuté depuis la
- ligne de commande, car ces variables peuvent être définies dans d'autres contextes
- lorsque register_argc_argv est activé.
- La valeur retournée par php_sapi_name devrait être vérifiée
- à la place.
-
-
-
-
-
-
-
-
-
-
- output_buffering
- &false;
-
-
- Même si cette configuration INI est codée en dur à &false;,
- les fonctions relatives à
- l'affichage du buffer
- sont disponibles.
-
-
-
-
- max_input_time
- &false;
-
-
- Le PHP &cli; ne supporte pas GET, POST et le téléchargement de fichiers.
-
-
-
-
-
-
-
-
-
- Ces directives ne peuvent pas être initialisées avec d'autres valeurs
- dans le fichier &php.ini; ou par une autre méthode. C'est une limitation,
- car ces valeurs par défaut s'appliquent une fois que tous les autres
- fichiers de configuration ont été analysés. Cependant, ces
- valeurs peuvent être modifiées durant l'exécution (ce qui n'est pas
- logique pour certaines directives, comme
- register_argc_argv).
-
-
-
-
- Il est recommandé de définir
- ignore_user_abort pour
- les scripts en ligne de commande. Voir la fonction
- ignore_user_abort pour plus d'informations.
-
-
-
-
-
-
- Pour faciliter le travail en environnement shell, plusieurs constantes
- sont définies pour les flux
- I/O.
-
-
-
-
-
- Le &cli.sapi; ne transforme pas
- le dossier courant en dossier d'exécution du script.
-
-
-
- Exemple montrant la différence avec le SAPI
- CGI :
-
-
-
-]]>
-
-
- Lorsque vous utilisez la version CGI, l'affichage sera :
-
-
-
-
-
- Cela montre clairement que PHP modifie le dossier
- courant, et utilise le dossier du script exécuté.
-
-
- En utilisant le &cli.sapi;, on obtient :
-
-
-
-
-
- Cela donne beaucoup plus de souplesse lorsque vous rédigez des
- scripts shell avec PHP.
-
-
-
-
- Le CGI SAPI se comporte de la même façon que le
- &cli.sapi;, en lui passant l'option
- , lorsque vous l'invoquez en ligne de commande.
-
-
-
-
-
-
-
-
-
-
- Options de ligne de commande
- Options
-
-
- La liste des options de ligne de commande fournies par PHP
- est disponible à n'importe quel moment en exécutant PHP avec l'option
- :
-
- [--] [args...]
- php [options] -r [--] [args...]
- php [options] [-B ] -R [-E ] [--] [args...]
- php [options] [-B ] -F [-E ] [--] [args...]
- php [options] -- [args...]
- php [options] -a
-
- -a Run interactively
- -c | Look for php.ini file in this directory
- -n No php.ini file will be used
- -d foo[=bar] Define INI entry foo with value 'bar'
- -e Generate extended information for debugger/profiler
- -f Parse and execute .
- -h This help
- -i PHP information
- -l Syntax check only (lint)
- -m Show compiled in modules
- -r Run PHP without using script tags ..?>
- -B Run PHP before processing input lines
- -R Run PHP for every input line
- -F Parse and execute for every input line
- -E Run PHP after processing all input lines
- -H Hide any passed arguments from external tools.
- -S : Run with built-in web server.
- -t Specify document root for built-in web server.
- -s Output HTML syntax highlighted source.
- -v Version number
- -w Output source with stripped comments and whitespace.
- -z Load Zend extension .
-
- args... Arguments passed to script. Use -- args when first argument
- starts with - or script is read from stdin
-
- --ini Show configuration file names
-
- --rf Show information about function .
- --rc Show information about class .
- --re Show information about extension .
- --rz Show information about Zend extension .
- --ri Show configuration for extension .
-]]>
-
-
-
-
-
- Options de ligne de commande
-
-
-
- Option
- Option longue
- Description
-
-
-
-
- -a
- --interactive
-
-
- Lance PHP de façon interactive. Pour plus d'informations, reportez-vous
- à la documentation concernant le shell interactif.
-
-
-
-
- -b
- --bindpath
-
-
- Lie le chemin pour les externes, en mode serveur FASTCGI
- (CGI uniquement).
-
-
-
-
- -C
- --no-chdir
-
-
- Ne pas aller dans le dossier du script (CGI uniquement).
-
-
-
-
- -q
- --no-header
-
-
- Mode silencieux. Supprime la sortie des en-têtes HTTP
- (CGI uniquement).
-
-
-
-
- -T
- --timing
-
-
- Mesure le temps d'exécution du script, répété count
- fois (CGI uniquement).
-
-
-
-
- -c
- --php-ini
-
-
- Spécifie le nom du dossier dans lequel se trouve le fichier &php.ini;,
- ou encore spécifie un fichier de configuration (INI)
- directement (qui ne s'appelle pas obligatoirement &php.ini;) :
-
-
-
-
-
-
-
-
-
- Si cette option n'est pas spécifiée, &php.ini; est recherché dans
- les endroits par défaut.
-
-
-
-
- -n
- --no-php-ini
-
-
- Ignore totalement &php.ini;.
-
-
-
-
- -d
- --define
-
-
- Définit une valeur personnalisée pour n'importe quelle directive
- de configuration du fichier &php.ini;. La syntaxe est :
-
-
-
-
-
-
- Exemple d'utilisation de -d pour définir une directive INI
-
-
-
-
-
-
-
-
- -e
- --profile-info
-
-
- Génère des informations étendues pour le profilage et le débogage.
-
-
-
-
- -f
- --file
-
-
- Analyse et exécute le fichier spécifié. L'option
- est facultative, et peut être omise. Le seul nom du fichier
- est suffisant.
-
-
-
-
- -h et -?
- --help et --usage
-
- Affiche des informations sur la liste courante des options de la
- ligne de commande, ainsi que leur description.
-
-
-
- -i
- --info
-
- Appelle la fonction phpinfo, et
- affiche le résultat. Si PHP ne fonctionne pas
- correctement, il est recommandé d'utiliser la commande php -i
- et de voir s'il n'y a pas d'erreurs affichées avant ou après la
- table d'information. N'oubliez pas que le résultat de cette
- option, si vous utilisez le mode CGI, est au format
- HTML, et donc de taille conséquente.
-
-
-
- -l
- --syntax-check
-
-
- Vérifie la syntaxe mais n'exécute pas le code PHP donné.
- L'entrée provenant de l'entrée standard sera traitée si aucun nom de fichier n'est spécifié,
- sinon chaque fichier spécifié sera vérifié.
- En cas de réussite, le message
- No syntax errors detected in <filename>
- (Littéralement, aucune erreur de syntaxe n'a été détectée dans le fichier)
- est affiché sur la sortie standard.
- En cas d'erreur, le message Errors parsing <filename>
- (Littéralement, erreur d'analyse dans le fichier filename)
- est affiché, en plus des messages d'erreurs détectés par l'analyseur
- lui-même.
- Si des erreurs sont trouvées dans les fichiers spécifiés (ou l'entrée standard),
- le code de retour du shell est défini à -1, sinon le
- code de retour du shell est défini à 0.
-
-
- Cette option ne détecte pas les erreurs fatales (par exemple les
- fonctions non définies) qui nécessitent l'exécution du code.
-
-
-
- Avant PHP 8.3.0, il n'était possible de spécifier qu'un seul nom de fichier
- à vérifier.
-
-
-
-
- Cette option ne fonctionne pas avec l'option .
-
-
-
-
-
- -m
- --modules
-
-
-
- Affichage des modules internes (et chargés) de PHP et Zend
-
-
-
-
-
-
-
-
- -r
- --run
-
-
- Permet l'exécution de PHP directement dans la ligne de commande.
- Les balises de PHP (<?php et ?>)
- ne sont pas nécessaires, et causeront
- une erreur d'analyse si elles sont présentes.
-
-
-
- Une attention toute particulière doit être portée lors de l'utilisation de cette option
- de PHP, pour qu'il n'y ait pas de collision avec
- les substitutions de variables en ligne de commande, réalisées par le
- shell.
-
-
- Erreur de syntaxe lors de l'utilisation de doubles guillemets
-
-
-
-
-
- Le problème ici est que le shell (sh/bash) effectue une substitution
- de variables, même avec les guillemets doubles ".
- Puisque la variable $foo n'est probablement pas
- définie dans le shell, elle est remplacée par rien, ce qui fait
- que le code passé à PHP pour l'exécution est :
-
-
-
-
-
-
-
- La solution de ce problème est d'utiliser les guillemets simples
- '. Les variables de ces chaînes ne seront pas
- substituées par leurs valeurs par le shell.
-
-
- Utilisation de guillemets simples pour éviter une substitution
- par le shell
-
-
- int(1)
- ["E_WARNING"]=>
- int(2)
- ["E_PARSE"]=>
- int(4)
- ["E_NOTICE"]=>
- int(8)
- ["E_CORE_ERROR"]=>
- [...]
-]]>
-
-
-
- Si un shell différent de sh/bash est utilisé, d'autres problèmes pourront
- être rencontrés - si approprié, un rapport de bogues pourra être ouvert via
- à &url.php.bugs;.
- Il est toujours très facile d'avoir des problèmes lorsque vous essayez
- d'inclure des variables shell dans le code, ou d'utiliser les antislashs
- pour la protection. Vous aurez été prévenu !
-
-
-
-
- est disponible avec le &cli.sapi;
- mais pas avec le SAPI CGI.
-
-
-
-
- Cette option est seulement utilisée pour des choses simples. Ainsi,
- quelques directives de configuration (par exemple auto_prepend_file et auto_append_file) sont ignorées
- dans ce mode.
-
-
-
-
-
- -B
- --process-begin
-
-
- Code PHP à exécuter avant le traitement de stdin.
-
-
-
-
- -R
- --process-code
-
-
- Code PHP à exécuter pour chaque ligne en entrée.
-
-
- Il y a deux variables spéciales de disponibles dans ce mode :
- $argn et $argi.
- $argn doit contenir la ligne PHP
- traitée à ce moment donné, tandis que
- $argi doit contenir le numéro de la ligne.
-
-
-
-
- -F
- --process-file
-
-
- Fichier PHP à exécuter pour chaque ligne en entrée.
-
-
-
-
- -E
- --process-end
-
-
- Code PHP à exécuter après avoir effectué l'entrée.
-
-
-
- Exemple d'utilisation des options ,
- et pour compter le nombre de lignes d'un projet.
-
-
-
-
-
-
-
-
-
- -S
- --server
-
-
- Démarre le serveur
- web interne.
-
-
-
-
- -t
- --docroot
-
- Spécifie la racine des documents pour le serveur web interne.
-
-
-
- -s
- --syntax-highlight et --syntax-highlighting
-
-
- Affiche le code avec la colorisation syntaxique.
-
-
- Cette option utilise le mécanisme interne pour analyser le fichier,
- et écrire au format HTML une version colorisée du code source.
- Notez que cette option ne fait que générer un bloc HTML, avec les balises HTML
- <code> [...] </code>, sans en-têtes HTML.
-
-
-
- Cette option ne fonctionne pas avec l'option .
-
-
-
-
-
- -v
- --version
-
-
- Utilisation de l'option pour récupérer le nom du SAPI
- ainsi que la version de PHP et de Zend
-
-
-
-
-
-
-
-
- -w
- --strip
-
-
- Affiche la source sans les commentaires ni les espaces.
-
-
-
- Cette option ne fonctionne pas avec l'option .
-
-
-
-
-
- -z
- --zend-extension
-
-
- Charge une extension Zend. Si et seulement si un fichier est fourni, PHP
- essaie de charger cette extension dans le dossier courant par défaut
- des bibliothèques sur votre système (généralement spécifié avec
- /etc/ld.so.conf sous Linux par exemple). Passer un nom de
- fichier avec le chemin complet fera que PHP utilisera ce fichier,
- sans recherche dans les dossiers classiques. Un chemin de dossier
- relatif, incluant les informations sur le dossier, indiquera à PHP qu'il doit
- chercher les extensions uniquement dans ce dossier.
-
-
-
-
-
- --ini
-
-
- Affiche les noms des fichiers de configuration et des dossiers analysés.
-
- Exemple avec --ini
-
-
-
-
-
-
-
-
- --rf
- --rfunction
-
-
- Affiche des informations sur la fonction donnée ou la méthode
- d'une classe (c.-à-d. nombre et nom des paramètres).
-
-
- Cette option n'est disponible que si PHP a été compilé avec le support
- Reflection.
-
-
-
- Exemple avec --rf
-
- public function var_dump ] {
-
- - Parameters [2] {
- Parameter #0 [ $var ]
- Parameter #1 [ $... ]
- }
-}
-]]>
-
-
-
-
-
-
- --rc
- --rclass
-
-
- Affiche des informations sur la classe donnée (liste des constantes,
- propriétés et méthodes).
-
-
- Cette option n'est disponible que si PHP a été compilé avec le support
- Reflection.
-
-
-
- Exemple avec --rc
-
- class Directory ] {
-
- - Constants [0] {
- }
-
- - Static properties [0] {
- }
-
- - Static methods [0] {
- }
-
- - Properties [0] {
- }
-
- - Methods [3] {
- Method [ public method close ] {
- }
-
- Method [ public method rewind ] {
- }
-
- Method [ public method read ] {
- }
- }
-}
-]]>
-
-
-
-
-
-
- --re
- --rextension
-
-
- Affiche les informations sur l'extension donnée (liste les options du
- &php.ini;, les fonctions définies, les constantes et les classes).
-
-
- Cette option n'est disponible que si PHP a été compilé avec le support
- Reflection.
-
-
-
- Exemple avec --re
-
- extension #19 json version 1.2.1 ] {
-
- - Functions {
- Function [ function json_encode ] {
- }
- Function [ function json_decode ] {
- }
- }
-}
-]]>
-
-
-
-
-
-
- --rz
- --rzendextension
-
-
- Affiche les informations de configuration pour l'extension Zend fournie
- (les mêmes informations que celles retournées par la fonction
- phpinfo).
-
-
-
-
- --ri
- --rextinfo
-
-
- Affiche les informations de configuration pour l'extension donnée (les
- mêmes informations retournées par la fonction phpinfo).
- Les informations de configurations internes
- sont disponibles en utilisant le nom d'extension "main".
-
-
-
- Exemple avec --ri
-
- enabled
-"Olson" Timezone Database Version => 2009.20
-Timezone Database => internal
-Default timezone => Europe/Oslo
-
-Directive => Local Value => Master Value
-date.timezone => Europe/Oslo => Europe/Oslo
-date.default_latitude => 59.930972 => 59.930972
-date.default_longitude => 10.776699 => 10.776699
-date.sunset_zenith => 90.583333 => 90.583333
-date.sunrise_zenith => 90.583333 => 90.583333
-]]>
-
-
-
-
-
-
-
-
-
-
-
-
- Les options -rBRFEH, --ini et
- --r[fcezi] ne sont disponibles qu'en mode &cli;.
-
-
-
-
-
-
-
- Exécution de fichiers PHP
- Utilisation
-
- Il y a 3 façons différentes d'appeler le &cli.sapi; avec du code PHP
- à exécuter :
-
-
-
- Indiquer à PHP d'exécuter un fichier donné :
-
-
-
-
-
-
-
- Les deux méthodes (en utilisant ou pas) exécutent le
- script contenu dans le fichier mon_script.php.
- Notez qu'il n'existe pas de restriction sur les fichiers pouvant
- être exécutés ; en particulier, il n'est pas nécessaire que l'extension
- du fichier soit .php.
-
-
-
-
- Donner du code PHP à exécuter directement en ligne de commande.
-
-
-
-
-
-
-
- Une attention particulière doit alors être apportée aux variables d'environnement,
- qui seront remplacées, et aux guillemets, qui ont des significations spéciales en
- ligne de commande.
-
-
-
- Lisez l'exemple attentivement, il n'y a ni balise d'ouverture, ni balise de fermeture !
- L'option rend caduque l'utilisation de celles-ci, et les ajouter conduirait
- alors à une erreur d'analyse syntaxique.
-
-
-
-
-
- Alimenter l'entrée standard en code PHP
- (stdin).
-
-
- Cela donne la possibilité de créer dynamiquement du code
- PHP, puis de le fournir à PHP, et enfin,
- de le traiter à nouveau en shell. Voici un exemple fictif :
-
-
-
- final_output.txt
-]]>
-
-
-
-
- Il n'est pas possible de combiner ces trois modes d'exécution.
-
-
-
- Comme toute application shell, l'exécutable PHP accepte
- des arguments ; cependant, le script PHP peut aussi en recevoir.
- Le nombre d'arguments pouvant être passés à votre script n'est pas limité par PHP
- (le shell a une limite en termes de nombre de caractères qui peuvent être passés.
- Généralement, vous n'atteindrez pas cette limite). Les arguments passés au script seront
- transmis via la variable tableau $argv. Le premier
- index (zéro) contient toujours le nom du script appelé depuis la ligne
- de commande. Notez que, si le code est exécuté en ligne en utilisant
- l'option de ligne commande , la valeur de $argv[0]
- sera "Standard input code"; antérieur à PHP 7.2.0,
- c'était un tiret ("-") à la place. Cela est aussi vrai si
- le code est exécuté via un pipe depuis STDIN.
-
-
-
- Une seconde variable globale, $argc, contient le nombre
- d'éléments du tableau $argv
- (et non pas le nombre d'arguments passés
- à votre script).
-
-
-
- Tant que les arguments passés au script ne commencent pas par
- le caractère -, il n'y a rien de spécial à surveiller.
- Le fait de passer des arguments au script qui commencent par
- - pose des problèmes car PHP
- va penser qu'il doit les interpréter. Pour éviter cela, utilisez le séparateur
- --. Après cet argument, tous les arguments suivants seront
- passés au script sans être modifiés ou analysés par PHP.
-
-
-
- [args...]
-[...]
-
-# Cela va passer l'argument '-h' au script, et éviter que PHP ne le traite
-$ php -r 'var_dump($argv);' -- -h
-array(2) {
- [0]=>
- string(1) "-"
- [1]=>
- string(2) "-h"
-}
-]]>
-
-
-
- Cependant, il y a une autre méthode pour utiliser PHP en script shell ;
- la première ligne du script devra être #!/usr/bin/php
- (à remplacer par le chemin vers le binaire PHP &cli; sur le système sous-jacent).
- Le reste du fichier doit contenir le code PHP normal, compris entre les
- balises ouvrantes/fermantes. Après avoir mis les droits d'exécution sur le
- script (chmod +x test), il peut être exécuté comme un script
- shell ou perl habituel :
-
-
-
- Exécute un script PHP en tant que script shell
-
-
-]]>
-
-
- En supposant que ce fichier s'appelle test, dans le
- dossier courant, il est alors possible de faire ceci :
-
-
-
- string(6) "./test"
- [1]=>
- string(2) "-h"
- [2]=>
- string(2) "--"
- [3]=>
- string(3) "foo"
-}
-]]>
-
-
-
-
- Comme vous pouvez le voir, dans ce cas, vous n'avez pas besoin
- de faire attention lors du passage de paramètres qui commencent par
- - à votre script.
-
-
-
- L'exécutable PHP peut être utilisé pour exécuter des scripts indépendants du
- serveur web. Si vous êtes sur un système Unix, il est recommandé d'ajouter
- la ligne spéciale en début de script, de le rendre exécutable de
- manière que le système sache quel programme doit exécuter le script.
- Sous Windows, vous pouvez associer l'exécutable php.exe
- avec le double-clic sur les fichiers d'extension .php,
- ou bien vous pouvez faire un fichier batch pour exécuter le script grâce
- à PHP. La première ligne utilisée dans le monde Unix ne perturbera pas
- l'exécution sous Windows, ce qui rend les scripts facilement portables. Un exemple
- complet est disponible ci-dessous :
-
-
-
- Script prévu pour être exécuté en ligne de commande (script.php)
-
-
-
-C'est une ligne de commande à une option.
-
- Utilisation :
-
-
-
-
-
- Le script ci-dessus inclut la première ligne spéciale indiquant que ce fichier
- doit être exécuté par PHP. Nous travaillons ici avec la version &cli;, aussi,
- aucun en-tête HTTP ne sera affiché.
-
-
-
- Le programme commence par vérifier que l'argument requis est spécifié
- (en plus du nom du script, qui est aussi compté). S'il n'est pas présent,
- ou si l'argument est , ,
- ou , un message d'aide sera affiché,
- en utilisant $argv[0] pour afficher dynamiquement le nom
- du script tel qu'entré dans la ligne de commande. Sinon, l'argument est affiché
- tel qu'il a été entré dans le terminal.
-
-
-
- Pour exécuter le script ci-dessus sous Unix, vous devez le rendre
- exécutable, puis l'appeler avec une commande comme :
- script.php echothis ou
- script.php -h. Sous Windows, vous pouvez faire un
- fichier batch pour cela :
-
-
-
-
- Fichier batch pour exécuter un script PHP en ligne de commande (script.bat)
-
-
-
-
-
-
-
- En supposant que le programme ci-dessus est nommé
- script.php, et que l'exécutable &cli;
- php.exe se trouve dans
- C:\php\php.exe, ce fichier batch l'exécutera
- avec les options que vous lui passez :
- script.bat echothis ou
- script.bat -h.
-
-
-
- Voir aussi l'extension Readline,
- qui dispose de nombreuses fonctions pour améliorer la convivialité
- des applications PHP en ligne de commande.
-
-
-
- Sous Windows, PHP peut être configuré pour fonctionner sans avoir
- besoin de fournir les extensions C:\php\php.exe
- ou .php, tel que décrit dans
- la ligne de commande PHP sous
- Microsoft Windows.
-
-
-
-
- Sous Windows, il est recommandé d'exécuter PHP sous un compte utilisateur.
- Lorsque PHP est exécuté sous un service réseau, certaines opérations peuvent
- échouer, car "Aucun lien entre les noms de compte et les identifiants de
- sécurité n'est réalisé".
-
-
-
-
-
-
-
-
- Flux d'entrée/sortie
- Flux I/O
-
-
- Le &cli.sapi; définit quelques constantes pour les flux I/O pour
- rendre la programmation en ligne de commande plus facile.
-
-
-
-
- Constantes spécifiques CLI
-
-
-
- Constante
- Description
-
-
-
-
- STDIN
-
-
- Un flux déjà ouvert vers stdin. Ceci évite de
- l'ouvrir explicitement avec
-
-
-]]>
-
- Si vous voulez lire une seule ligne depuis stdin,
- vous pouvez utiliser
-
-
-]]>
-
-
-
-
-
- STDOUT
-
-
- Un flux déjà ouvert vers stdout. Ceci évite de
- l'ouvrir explicitement avec
-
-
-]]>
-
-
-
-
-
- STDERR
-
-
- Un flux déjà ouvert vers stderr.
- Ceci évite de l'ouvrir explicitement avec
-
-
-]]>
-
-
-
-
-
-
-
-
-
-
- Ainsi, vous n'avez pas besoin d'ouvrir un flux spécifique pour, par exemple,
- stderr mais vous pouvez simplement utiliser la constante
- correspondante à ce flux :
-
-
-
- Vous n'avez pas à clore explicitement ces flux, sachant qu'ils le seront
- automatiquement par PHP à la fin de votre script.
-
-
-
-
- Ces constantes ne sont pas disponibles lors d'une lecture d'un
- script PHP depuis stdin.
-
-
-
-
-
-
-
- Shell Interactif
-
-
- Le &cli.sapi; fournit un shell interactif lors de l'utilisation
- de l'option si PHP a été compilé avec l'option .
- Depuis PHP 7.1.0 le shell interactif est également disponible sur Windows,
- si l'extension readline est activée.
-
-
-
- En utilisant le shell interactif, vous avez la possibilité de taper du code PHP
- et qu'il soit exécuté directement.
-
-
-
- Exécution de code en utilisant le shell interactif
-
- echo 5+8;
-13
-php > function addTwo($n)
-php > {
-php { return $n + 2;
-php { }
-php > var_dump(addtwo(2));
-int(4)
-php >
-]]>
-
-
-
-
- Le shell interactif fournit également une autocomplétion des fonctions,
- des constantes, des noms de classes, des variables, des appels aux méthodes
- statiques et des constantes de classes en utilisant la touche de tabulation.
- Depuis PHP 8.4.0, le chemin vers le fichier d'historique peut être défini en utilisant la
- variable d'environnement PHP_HISTFILE.
-
-
-
- Auto-complétion en utilisant la touche de tabulation
-
- Le fait de presser deux fois la touche de tabulation lorsqu'il y a plusieurs
- complétions possibles affichera une liste de ces complétions :
-
-
- strp[TAB][TAB]
-strpbrk strpos strptime
-php > strp
-]]>
-
-
- Lorsqu'il n'y a qu'une seule complétion possible, presser la touche de tabulation
- une seule fois complétera le reste sur la même ligne :
-
-
- strpt[TAB]ime(
-]]>
-
-
- La complétion fonctionnera aussi pour les noms qui ont été définis lors
- de la session courante du shell interactif :
-
-
- $fooThisIsAReallyLongVariableName = 42;
-php > $foo[TAB]ThisIsAReallyLongVariableName
-]]>
-
-
-
-
- Le shell interactif stocke votre historique et peut y accéder en utilisant les touches
- haut et bas. L'historique est sauvegardé dans le fichier ~/.php_history.
-
-
-
- Le &cli.sapi; fournit 2 directives du &php.ini; :
- cli.pager et cli.prompt.
- La directive cli.pager permet la définition d'un programme
- externe (comme less) à utiliser comme pager pour la sortie
- au lieu d'afficher directement sur l'écran. La directive
- cli.prompt autorise la modification du prompte
- php >.
-
-
-
- Il est également possible de définir des directives du &php.ini;
- dans un shell interactif en utilisant des notations raccourcies.
-
-
-
- Définition de directives du &php.ini; dans un shell interactif
-
- La définition de la directive cli.prompt :
-
-
- #cli.prompt=hello world :>
-hello world :>
-]]>
-
-
- En utilisant des backticks, il est possible d'exécuter du code PHP
- dans le prompte :
-
-
- #cli.prompt=`echo date('H:i:s');` php >
-15:49:35 php > echo 'hi';
-hi
-15:49:43 php > sleep(2);
-15:49:45 php >
-]]>
-
-
- Définition du pager à less :
-
-
- #cli.pager=less
-php > phpinfo();
-(sortie affichée avec less)
-php >
-]]>
-
-
-
-
- La directive cli.prompt supporte quelques séquences d'échappements :
-
- Séquences d'échappements de cli.prompt
-
-
-
- Séquence :
- Description :
-
-
-
-
- \e
-
- utilisé pour ajouter des couleurs au prompte. Exemple :
- \e[032m\v \e[031m\b \e[34m\> \e[0m
-
-
-
- \v
- La version de PHP.
-
-
- \b
-
- Indique dans quel bloc de PHP nous nous trouvons.
- Par exemple, /* permet d'indiquer que nous
- sommes dans un commentaire multilignes. Le scope externe est représenté
- par php.
-
-
-
- \>
-
- Indique le caractère utilisé pour le prompte. Par défaut, ce sera
- >, mais peut être modifié lorsque le shell se
- trouve dans un bloc indéterminé ou dans une chaîne de caractères.
- Les caractères possibles sont : ' " {
- ( >
-
-
-
-
-
-
-
-
-
- Les fichiers inclus via auto_prepend_file et auto_append_file sont analysés
- dans ce mode, mais avec quelques restrictions - c.-à-d. les fonctions
- doivent avoir été définies avant l'appel.
-
-
-
-
- Mode interactif
-
- Si l'extension readline n'est pas disponible, antérieur à PHP 8.1.0,
- invoquer le &cli.sapi; avec l'option fournit le mode interactif.
- Dans ce mode, un script PHP complet est supposé être donné via STDIN,
- et après l'interruption
- avec
-
- CTRL
- D
-
- (POSIX) ou
-
- CTRL
- Z
-
- suivi de ENTER (Windows), ce script sera évalué.
- Ceci est basiquement identique à invoquer le &cli.sapi; sans l'option .
-
-
- À partir de PHP 8.1.0, invoquer le &cli.sapi; avec l'option
- échoue, si l'extension readline n'est pas disponible.
-
-
-
-
-
-
-
- Serveur web interne
-
-
-
- Ce serveur web est prévu pour aider dans le développement des applications.
- Il peut également être utile pour les tests, et pour les démonstrations
- d'applications qui sont exécutées dans des environnements contrôlés.
- Mais par contre, il n'a pas été conçu pour être un serveur web complet.
- Aussi, il ne devrait pas être utilisé dans un réseau public.
-
-
-
-
- Le &cli.sapi; fournit un serveur web interne.
-
-
-
- Le serveur web s'exécute sur un seul processus single-threaded,
- les applications PHP seront retardées/suspendues si une requête est bloquée.
-
-
-
- Les requêtes URI sont servies depuis le dossier de travail courant
- où PHP a été démarré, à moins que l'option -t ne soit utilisée pour spécifier
- explicitement un document racine. Si une requête URI ne spécifie
- pas un fichier, alors le fichier index.php ou le fichier
- index.html du dossier courant sera retourné. Si aucun de ces fichiers n'existe,
- la recherche d'un fichier index.php et index.html se poursuivra dans le dossier
- parent et ainsi de suite jusqu'à ce qu'un de ces fichier ne soit trouvé ou
- que le dossier racine ne soit atteint. Si un fichier index.php ou index.html
- est trouvé, il sera retourné et $_SERVER['PATH_INFO'] sera défini comme la
- dernière partie de l'URI. Sinon, un code réponse 404 sera retourné.
-
-
-
- Si un fichier PHP est fourni dans la ligne de commande lorsque le serveur web
- est démarré, il sera traité comme un script "routeur".
- Le script sera exécuté au début de chaque requête HTTP. Si ce script retourne
- &false;, alors la ressource demandée est retournée telle quelle.
- Sinon, la sortie du script est retournée au navigateur.
-
-
-
- Les types MIME standards sont retournés pour les fichiers avec les extensions :
-
- .3gp
- .apk
- .avi
- .bmp
- .css
- .csv
- .doc
- .docx
- .flac
- .gif
- .gz
- .gzip
- .htm
- .html
- .ics
- .jpe
- .jpeg
- .jpg
- .js
- .kml
- .kmz
- .m4a
- .mov
- .mp3
- .mp4
- .mpeg
- .mpg
- .odp
- .ods
- .odt
- .oga
- .ogg
- .ogv
- .pdf
- .png
- .pps
- .pptx
- .qt
- .svg
- .swf
- .tar
- .text
- .tif
- .txt
- .wav
- .webm
- .wmv
- .xls
- .xlsx
- .xml
- .xsl
- .xsd
- .zip
-
- .
-
-
-
- À partir de PHP 7.4.0, le serveur web intégré peut être configuré pour bifurquer plusieurs
- travailleurs afin de tester du code nécessitant plusieurs requêtes concurrentes
- au serveur web intégré.
- Définissez la variable d'environnement PHP_CLI_SERVER_WORKERS sur le
- nombre de travailleurs souhaité avant de démarrer le serveur.
-
-
-
- Cette fonctionnalité n'est pas prise en charge sur Windows.
-
-
-
-
- Cette fonctionnalité expérimentale n'est pas
- destinée à une utilisation en production. En général, le Serveur Web intégré
- n'est pas destiné à une utilisation en production.
-
-
-
-
- Démarrage du serveur web
-
-
-
-
- Le terminal affichera :
-
-
-
-
-
- Après des requêtes URI sur http://localhost:8000/ et
- http://localhost:8000/myscript.html, le terminal affichera quelques choses
- comme :
-
-
-
-
-
- Noter qu'avant PHP 7.4.0, les ressources statiques en lien symbolique
- ne sont pas accessibles sous Windows, tant que le script routeur
- ne le gère pas.
-
-
-
-
- Démarrage avec un dossier racine spécifique
-
-
-
-
- Le terminal affichera :
-
-
-
-
-
-
-
- Utilisation d'un script routeur
-
- Dans cet exemple, le fait de demander des images les affichera,
- mais les requêtes pour les fichiers HTML afficheront
- "Bienvenue chez PHP !".
-
-
-Bienvenue chez PHP !";
-}
-?>]]>
-
-
-
-
-
-
-
- Vérification de l'utilisation CLI du serveur Web
-
- Pour ré-utiliser un script router du framework lors du
- développement avec le CLI du serveur web et ensuite, continuez
- de l'utiliser avec un serveur web de production :
-
-
-]]>
-
-
-
-
-
-
-
- Gestion des types de fichiers non supportés
-
- Si vous devez servir une ressource statique pour laquelle le type
- MIME n'est pas géré par le CLI du serveur web, utilisez ceci :
-
-
-]]>
-
-
-
-
-
-
-
- Accès au CLI du serveur web depuis une machine distante
-
- Vous pouvez rendre le serveur web accessible sur le port 8000
- pour toutes les interfaces avec :
-
-
-
-
-
-
- Le serveur web intégré ne doit pas être utilisé sur un réseau public.
-
-
-
-
-
-
-
-
- Configurations INI
-
-
-
-
- &ini.descriptions.title;
-
-
-
-
-
- cli_server.color
- bool
-
-
-
- Active le serveur web de développement interne à utiliser
- la coloration ANSI du code dans la sortie du terminal.
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+ Utiliser PHP en ligne de commande
+ Utilisation des lignes de commande
+
+
+
+ Introduction
+
+
+ Le but premier de &cli.sapi; est le développement
+ d'applications shell avec PHP. Les différences entre le &cli.sapi;
+ et les autres SAPI sont
+ expliqués dans ce chapitre. Il est important de mentionner que &cli;
+ et CGI sont des SAPI différents malgré
+ le fait qu'ils puissent partager la majeure partie de leurs comportements.
+
+
+
+ Le &cli.sapi; est activé par défaut en utilisant l'option
+ , mais vous pouvez le désactiver
+ en utilisant l'option
+ lors de l'exécution de la commande ./configure.
+
+
+
+ Le nom, l'emplacement et l'existence des binaires &cli;/CGI
+ vont dépendre de la façon dont PHP est installé sur votre système. Par
+ défaut, en exécutant make, les deux binaires CGI
+ et &cli; sont compilés et nommés respectivement sapi/cgi/php-cgi et
+ sapi/cli/php dans votre répertoire source PHP. Vous
+ remarquerez que les deux se nomment php. Ce qui se passe
+ ensuite pendant le make install dépend de votre ligne
+ de configuration. Si un module SAPI, apxs par exemple, a été choisi pendant la
+ configuration, ou que l'option a été
+ activée, le &cli; est copié dans {PREFIX}/bin/php pendant
+ le make install sinon, le CGI sera placé ici.
+ Si, par exemple, figure dans votre
+ ligne de configuration, le &cli; est copié dans {PREFIX}/bin/php
+ pendant le make install. Si vous voulez forcer l'installation du
+ binaire CGI, lancez make install-cli
+ après le make install. Sinon, vous pouvez aussi spécifier
+ dans votre ligne de configuration.
+
+
+
+
+ Du fait que les deux options et
+ sont activées par défaut, avoir simplement
+ dans votre ligne de configuration
+ n'implique pas nécessairement que le CLI soit renommé en
+ {PREFIX}/bin/php pendant le make install.
+
+
+
+
+ Le binaire &cli; est distribué dans le dossier principal
+ sous le nom de php.exe sous Windows. La version
+ CGI est distribuée sous le nom de php-cgi.exe.
+ De plus, un fichier php-win.exe est distribué si PHP
+ est configuré en utilisant l'option de configuration
+ . Ce fichier fait la
+ même chose que la version &cli;, sauf qu'il n'affiche rien et qu'il ne fournit
+ pas de console.
+
+
+
+ Quel SAPI est installé ?
+
+ À partir d'un terminal, lancer php -v vous dira si
+ php est en version CGI ou
+ &cli;. Vous pouvez aussi consulter la fonction
+ php_sapi_name et la constante
+ PHP_SAPI.
+
+
+
+
+ Une page man de manuel Unix est disponible
+ en tapant man php dans l'interpréteur de commande.
+
+
+
+
+
+
+
+ Différences avec les autres SAPIs
+
+
+ Les différences les plus notables entre le &cli; SAPI et les
+ SAPI sont :
+
+
+
+ Contrairement au CGI SAPI, aucun
+ en-tête HTTP n'est écrit dans le résultat.
+
+
+ Bien que le CGI SAPI fournisse un
+ moyen de supprimer les en-têtes HTTP, il n'est pas possible d'activer les
+ en-têtes HTTP dans le &cli.sapi;.
+
+
+ &cli; est lancé en mode silencieux par défaut, bien que les options
+ et soient gardées
+ pour rester compatible avec les anciennes versions CGI.
+
+
+ Il ne change pas le répertoire courant en celui du script.
+ (les options et sont
+ gardées par souci de compatibilité)
+
+
+ Messages d'erreurs en texte brut (pas de formatage HTML).
+
+
+
+
+ Il y a plusieurs directives du &php.ini; qui sont ignorées par le
+ &cli.sapi;, car elles n'ont pas de sens en environnement shell :
+
+
+
+ Directives &php.ini; ignorées
+
+
+
+ Directive
+ Valeur par défaut pour &cli; SAPI
+ Commentaire
+
+
+
+
+ html_errors
+ &false;
+
+ Par défaut à &false;, vu qu'il peut être bien difficile de lire des messages
+ d'erreur sur un terminal lorsqu'ils sont noyés dans des balises HTML
+ non-interprétées.
+
+
+
+ implicit_flush
+ &true;
+
+ Dans un terminal, il est généralement souhaitable que tout affichage en provenance de
+ print,
+ echo
+ et autres, soit immédiatement affiché, et non pas placé dans un
+ buffer quelconque. Néanmoins, il est toujours possible d'utiliser
+ la bufferisation de sortie
+ si vous voulez retarder un affichage, ou bien en manipuler le contenu
+ une dernière fois.
+
+
+
+ max_execution_time
+ 0 (sans limite)
+
+ PHP dans un terminal est susceptible d'être utilisé pour des tâches
+ bien plus diverses que dans des scripts web, et vu que cela
+ prend généralement beaucoup de temps, ce paramètre sera défini par défaut
+ à 0 permettant ainsi d'être illimité.
+
+
+
+ register_argc_argv
+ &true;
+
+
+ La définition à &true; de cette directive signifie que les scripts
+ exécutés via le SAPI &cli; auront toujours
+ accès à argc (représentant le nombre
+ d'arguments passés à l'application) et
+ argv (le tableau contenant les arguments passés).
+
+
+ Les variables PHP $argc
+ et $argv sont automatiquement définies et remplies
+ avec les valeurs appropriées, lors de l'utilisation du
+ SAPI &cli;. Ces valeurs peuvent également
+ être trouvées dans la variable $_SERVER, par exemple :
+ $_SERVER['argv'].
+
+
+
+ La présence de $argv ou $_SERVER['argv']
+ n'est pas une indication fiable qu'un script est exécuté depuis la
+ ligne de commande, car ces variables peuvent être définies dans d'autres contextes
+ lorsque register_argc_argv est activé.
+ La valeur retournée par php_sapi_name devrait être vérifiée
+ à la place.
+
+
+
+
+
+
+
+
+
+
+ output_buffering
+ &false;
+
+
+ Même si cette configuration INI est codée en dur à &false;,
+ les fonctions relatives à
+ l'affichage du buffer
+ sont disponibles.
+
+
+
+
+ max_input_time
+ &false;
+
+
+ Le PHP &cli; ne supporte pas GET, POST et le téléchargement de fichiers.
+
+
+
+
+
+
+
+
+
+ Ces directives ne peuvent pas être initialisées avec d'autres valeurs
+ dans le fichier &php.ini; ou par une autre méthode. C'est une limitation,
+ car ces valeurs par défaut s'appliquent une fois que tous les autres
+ fichiers de configuration ont été analysés. Cependant, ces
+ valeurs peuvent être modifiées durant l'exécution (ce qui n'est pas
+ logique pour certaines directives, comme
+ register_argc_argv).
+
+
+
+
+ Il est recommandé de définir
+ ignore_user_abort pour
+ les scripts en ligne de commande. Voir la fonction
+ ignore_user_abort pour plus d'informations.
+
+
+
+
+
+
+ Pour faciliter le travail en environnement shell, plusieurs constantes
+ sont définies pour les flux
+ I/O.
+
+
+
+
+
+ Le &cli.sapi; ne transforme pas
+ le dossier courant en dossier d'exécution du script.
+
+
+
+ Exemple montrant la différence avec le SAPI
+ CGI :
+
+
+
+]]>
+
+
+ Lorsque vous utilisez la version CGI, l'affichage sera :
+
+
+
+
+
+ Cela montre clairement que PHP modifie le dossier
+ courant, et utilise le dossier du script exécuté.
+
+
+ En utilisant le &cli.sapi;, on obtient :
+
+
+
+
+
+ Cela donne beaucoup plus de souplesse lorsque vous rédigez des
+ scripts shell avec PHP.
+
+
+
+
+ Le CGI SAPI se comporte de la même façon que le
+ &cli.sapi;, en lui passant l'option
+ , lorsque vous l'invoquez en ligne de commande.
+
+
+
+
+
+
+
+
+
+
+ Options de ligne de commande
+ Options
+
+
+ La liste des options de ligne de commande fournies par PHP
+ est disponible à n'importe quel moment en exécutant PHP avec l'option
+ :
+
+ [--] [args...]
+ php [options] -r [--] [args...]
+ php [options] [-B ] -R [-E ] [--] [args...]
+ php [options] [-B ] -F [-E ] [--] [args...]
+ php [options] -- [args...]
+ php [options] -a
+
+ -a Run interactively
+ -c | Look for php.ini file in this directory
+ -n No php.ini file will be used
+ -d foo[=bar] Define INI entry foo with value 'bar'
+ -e Generate extended information for debugger/profiler
+ -f Parse and execute .
+ -h This help
+ -i PHP information
+ -l Syntax check only (lint)
+ -m Show compiled in modules
+ -r Run PHP without using script tags ..?>
+ -B Run PHP before processing input lines
+ -R Run PHP for every input line
+ -F Parse and execute for every input line
+ -E Run PHP after processing all input lines
+ -H Hide any passed arguments from external tools.
+ -S : Run with built-in web server.
+ -t Specify document root for built-in web server.
+ -s Output HTML syntax highlighted source.
+ -v Version number
+ -w Output source with stripped comments and whitespace.
+ -z Load Zend extension .
+
+ args... Arguments passed to script. Use -- args when first argument
+ starts with - or script is read from stdin
+
+ --ini Show configuration file names
+
+ --rf Show information about function .
+ --rc Show information about class .
+ --re Show information about extension .
+ --rz Show information about Zend extension .
+ --ri Show configuration for extension .
+]]>
+
+
+
+
+
+ Options de ligne de commande
+
+
+
+ Option
+ Option longue
+ Description
+
+
+
+
+ -a
+ --interactive
+
+
+ Lance PHP de façon interactive. Pour plus d'informations, reportez-vous
+ à la documentation concernant le shell interactif.
+
+
+
+
+ -b
+ --bindpath
+
+
+ Lie le chemin pour les externes, en mode serveur FASTCGI
+ (CGI uniquement).
+
+
+
+
+ -C
+ --no-chdir
+
+
+ Ne pas aller dans le dossier du script (CGI uniquement).
+
+
+
+
+ -q
+ --no-header
+
+
+ Mode silencieux. Supprime la sortie des en-têtes HTTP
+ (CGI uniquement).
+
+
+
+
+ -T
+ --timing
+
+
+ Mesure le temps d'exécution du script, répété count
+ fois (CGI uniquement).
+
+
+
+
+ -c
+ --php-ini
+
+
+ Spécifie le nom du dossier dans lequel se trouve le fichier &php.ini;,
+ ou encore spécifie un fichier de configuration (INI)
+ directement (qui ne s'appelle pas obligatoirement &php.ini;) :
+
+
+
+
+
+
+
+
+
+ Si cette option n'est pas spécifiée, &php.ini; est recherché dans
+ les endroits par défaut.
+
+
+
+
+ -n
+ --no-php-ini
+
+
+ Ignore totalement &php.ini;.
+
+
+
+
+ -d
+ --define
+
+
+ Définit une valeur personnalisée pour n'importe quelle directive
+ de configuration du fichier &php.ini;. La syntaxe est :
+
+
+
+
+
+
+ Exemple d'utilisation de -d pour définir une directive INI
+
+
+
+
+
+
+
+
+ -e
+ --profile-info
+
+
+ Génère des informations étendues pour le profilage et le débogage.
+
+
+
+
+ -f
+ --file
+
+
+ Analyse et exécute le fichier spécifié. L'option
+ est facultative, et peut être omise. Le seul nom du fichier
+ est suffisant.
+
+
+
+
+ -h et -?
+ --help et --usage
+
+ Affiche des informations sur la liste courante des options de la
+ ligne de commande, ainsi que leur description.
+
+
+
+ -i
+ --info
+
+ Appelle la fonction phpinfo, et
+ affiche le résultat. Si PHP ne fonctionne pas
+ correctement, il est recommandé d'utiliser la commande php -i
+ et de voir s'il n'y a pas d'erreurs affichées avant ou après la
+ table d'information. N'oubliez pas que le résultat de cette
+ option, si vous utilisez le mode CGI, est au format
+ HTML, et donc de taille conséquente.
+
+
+
+ -l
+ --syntax-check
+
+
+ Vérifie la syntaxe mais n'exécute pas le code PHP donné.
+ L'entrée provenant de l'entrée standard sera traitée si aucun nom de fichier n'est spécifié,
+ sinon chaque fichier spécifié sera vérifié.
+ En cas de réussite, le message
+ No syntax errors detected in <filename>
+ (Littéralement, aucune erreur de syntaxe n'a été détectée dans le fichier)
+ est affiché sur la sortie standard.
+ En cas d'erreur, le message Errors parsing <filename>
+ (Littéralement, erreur d'analyse dans le fichier filename)
+ est affiché, en plus des messages d'erreurs détectés par l'analyseur
+ lui-même.
+ Si des erreurs sont trouvées dans les fichiers spécifiés (ou l'entrée standard),
+ le code de retour du shell est défini à -1, sinon le
+ code de retour du shell est défini à 0.
+
+
+ Cette option ne détecte pas les erreurs fatales (par exemple les
+ fonctions non définies) qui nécessitent l'exécution du code.
+
+
+
+ Avant PHP 8.3.0, il n'était possible de spécifier qu'un seul nom de fichier
+ à vérifier.
+
+
+
+
+ Cette option ne fonctionne pas avec l'option .
+
+
+
+
+
+ -m
+ --modules
+
+
+
+ Affichage des modules internes (et chargés) de PHP et Zend
+
+
+
+
+
+
+
+
+ -r
+ --run
+
+
+ Permet l'exécution de PHP directement dans la ligne de commande.
+ Les balises de PHP (<?php et ?>)
+ ne sont pas nécessaires, et causeront
+ une erreur d'analyse si elles sont présentes.
+
+
+
+ Une attention toute particulière doit être portée lors de l'utilisation de cette option
+ de PHP, pour qu'il n'y ait pas de collision avec
+ les substitutions de variables en ligne de commande, réalisées par le
+ shell.
+
+
+ Erreur de syntaxe lors de l'utilisation de doubles guillemets
+
+
+
+
+
+ Le problème ici est que le shell (sh/bash) effectue une substitution
+ de variables, même avec les guillemets doubles ".
+ Puisque la variable $foo n'est probablement pas
+ définie dans le shell, elle est remplacée par rien, ce qui fait
+ que le code passé à PHP pour l'exécution est :
+
+
+
+
+
+
+
+ La solution de ce problème est d'utiliser les guillemets simples
+ '. Les variables de ces chaînes ne seront pas
+ substituées par leurs valeurs par le shell.
+
+
+ Utilisation de guillemets simples pour éviter une substitution
+ par le shell
+
+
+ int(1)
+ ["E_WARNING"]=>
+ int(2)
+ ["E_PARSE"]=>
+ int(4)
+ ["E_NOTICE"]=>
+ int(8)
+ ["E_CORE_ERROR"]=>
+ [...]
+]]>
+
+
+
+ Si un shell différent de sh/bash est utilisé, d'autres problèmes pourront
+ être rencontrés - si approprié, un rapport de bogues pourra être ouvert via
+ à &url.php.bugs;.
+ Il est toujours très facile d'avoir des problèmes lorsque vous essayez
+ d'inclure des variables shell dans le code, ou d'utiliser les antislashs
+ pour la protection. Vous aurez été prévenu !
+
+
+
+
+ est disponible avec le &cli.sapi;
+ mais pas avec le SAPI CGI.
+
+
+
+
+ Cette option est seulement utilisée pour des choses simples. Ainsi,
+ quelques directives de configuration (par exemple auto_prepend_file et auto_append_file) sont ignorées
+ dans ce mode.
+
+
+
+
+
+ -B
+ --process-begin
+
+
+ Code PHP à exécuter avant le traitement de stdin.
+
+
+
+
+ -R
+ --process-code
+
+
+ Code PHP à exécuter pour chaque ligne en entrée.
+
+
+ Il y a deux variables spéciales de disponibles dans ce mode :
+ $argn et $argi.
+ $argn doit contenir la ligne PHP
+ traitée à ce moment donné, tandis que
+ $argi doit contenir le numéro de la ligne.
+
+
+
+
+ -F
+ --process-file
+
+
+ Fichier PHP à exécuter pour chaque ligne en entrée.
+
+
+
+
+ -E
+ --process-end
+
+
+ Code PHP à exécuter après avoir effectué l'entrée.
+
+
+
+ Exemple d'utilisation des options ,
+ et pour compter le nombre de lignes d'un projet.
+
+
+
+
+
+
+
+
+
+ -S
+ --server
+
+
+ Démarre le serveur
+ web interne.
+
+
+
+
+ -t
+ --docroot
+
+ Spécifie la racine des documents pour le serveur web interne.
+
+
+
+ -s
+ --syntax-highlight et --syntax-highlighting
+
+
+ Affiche le code avec la colorisation syntaxique.
+
+
+ Cette option utilise le mécanisme interne pour analyser le fichier,
+ et écrire au format HTML une version colorisée du code source.
+ Notez que cette option ne fait que générer un bloc HTML, avec les balises HTML
+ <code> [...] </code>, sans en-têtes HTML.
+
+
+
+ Cette option ne fonctionne pas avec l'option .
+
+
+
+
+
+ -v
+ --version
+
+
+ Utilisation de l'option pour récupérer le nom du SAPI
+ ainsi que la version de PHP et de Zend
+
+
+
+
+
+
+
+
+ -w
+ --strip
+
+
+ Affiche la source sans les commentaires ni les espaces.
+
+
+
+ Cette option ne fonctionne pas avec l'option .
+
+
+
+
+
+ -z
+ --zend-extension
+
+
+ Charge une extension Zend. Si et seulement si un fichier est fourni, PHP
+ essaie de charger cette extension dans le dossier courant par défaut
+ des bibliothèques sur votre système (généralement spécifié avec
+ /etc/ld.so.conf sous Linux par exemple). Passer un nom de
+ fichier avec le chemin complet fera que PHP utilisera ce fichier,
+ sans recherche dans les dossiers classiques. Un chemin de dossier
+ relatif, incluant les informations sur le dossier, indiquera à PHP qu'il doit
+ chercher les extensions uniquement dans ce dossier.
+
+
+
+
+
+ --ini
+
+
+ Affiche les noms des fichiers de configuration et des dossiers analysés.
+
+ Exemple avec --ini
+
+
+
+
+
+
+
+
+ --rf
+ --rfunction
+
+
+ Affiche des informations sur la fonction donnée ou la méthode
+ d'une classe (c.-à-d. nombre et nom des paramètres).
+
+
+ Cette option n'est disponible que si PHP a été compilé avec le support
+ Reflection.
+
+
+
+ Exemple avec --rf
+
+ public function var_dump ] {
+
+ - Parameters [2] {
+ Parameter #0 [ $var ]
+ Parameter #1 [ $... ]
+ }
+}
+]]>
+
+
+
+
+
+
+ --rc
+ --rclass
+
+
+ Affiche des informations sur la classe donnée (liste des constantes,
+ propriétés et méthodes).
+
+
+ Cette option n'est disponible que si PHP a été compilé avec le support
+ Reflection.
+
+
+
+ Exemple avec --rc
+
+ class Directory ] {
+
+ - Constants [0] {
+ }
+
+ - Static properties [0] {
+ }
+
+ - Static methods [0] {
+ }
+
+ - Properties [0] {
+ }
+
+ - Methods [3] {
+ Method [ public method close ] {
+ }
+
+ Method [ public method rewind ] {
+ }
+
+ Method [ public method read ] {
+ }
+ }
+}
+]]>
+
+
+
+
+
+
+ --re
+ --rextension
+
+
+ Affiche les informations sur l'extension donnée (liste les options du
+ &php.ini;, les fonctions définies, les constantes et les classes).
+
+
+ Cette option n'est disponible que si PHP a été compilé avec le support
+ Reflection.
+
+
+
+ Exemple avec --re
+
+ extension #19 json version 1.2.1 ] {
+
+ - Functions {
+ Function [ function json_encode ] {
+ }
+ Function [ function json_decode ] {
+ }
+ }
+}
+]]>
+
+
+
+
+
+
+ --rz
+ --rzendextension
+
+
+ Affiche les informations de configuration pour l'extension Zend fournie
+ (les mêmes informations que celles retournées par la fonction
+ phpinfo).
+
+
+
+
+ --ri
+ --rextinfo
+
+
+ Affiche les informations de configuration pour l'extension donnée (les
+ mêmes informations retournées par la fonction phpinfo).
+ Les informations de configurations internes
+ sont disponibles en utilisant le nom d'extension "main".
+
+
+
+ Exemple avec --ri
+
+ enabled
+"Olson" Timezone Database Version => 2009.20
+Timezone Database => internal
+Default timezone => Europe/Oslo
+
+Directive => Local Value => Master Value
+date.timezone => Europe/Oslo => Europe/Oslo
+date.default_latitude => 59.930972 => 59.930972
+date.default_longitude => 10.776699 => 10.776699
+date.sunset_zenith => 90.583333 => 90.583333
+date.sunrise_zenith => 90.583333 => 90.583333
+]]>
+
+
+
+
+
+
+
+
+
+
+
+
+ Les options -rBRFEH, --ini et
+ --r[fcezi] ne sont disponibles qu'en mode &cli;.
+
+
+
+
+
+
+
+ Exécution de fichiers PHP
+ Utilisation
+
+ Il y a 3 façons différentes d'appeler le &cli.sapi; avec du code PHP
+ à exécuter :
+
+
+
+ Indiquer à PHP d'exécuter un fichier donné :
+
+
+
+
+
+
+
+ Les deux méthodes (en utilisant ou pas) exécutent le
+ script contenu dans le fichier mon_script.php.
+ Notez qu'il n'existe pas de restriction sur les fichiers pouvant
+ être exécutés ; en particulier, il n'est pas nécessaire que l'extension
+ du fichier soit .php.
+
+
+
+
+ Donner du code PHP à exécuter directement en ligne de commande.
+
+
+
+
+
+
+
+ Une attention particulière doit alors être apportée aux variables d'environnement,
+ qui seront remplacées, et aux guillemets, qui ont des significations spéciales en
+ ligne de commande.
+
+
+
+ Lisez l'exemple attentivement, il n'y a ni balise d'ouverture, ni balise de fermeture !
+ L'option rend caduque l'utilisation de celles-ci, et les ajouter conduirait
+ alors à une erreur d'analyse syntaxique.
+
+
+
+
+
+ Alimenter l'entrée standard en code PHP
+ (stdin).
+
+
+ Cela donne la possibilité de créer dynamiquement du code
+ PHP, puis de le fournir à PHP, et enfin,
+ de le traiter à nouveau en shell. Voici un exemple fictif :
+
+
+
+ final_output.txt
+]]>
+
+
+
+
+ Il n'est pas possible de combiner ces trois modes d'exécution.
+
+
+
+ Comme toute application shell, l'exécutable PHP accepte
+ des arguments ; cependant, le script PHP peut aussi en recevoir.
+ Le nombre d'arguments pouvant être passés à votre script n'est pas limité par PHP
+ (le shell a une limite en termes de nombre de caractères qui peuvent être passés.
+ Généralement, vous n'atteindrez pas cette limite). Les arguments passés au script seront
+ transmis via la variable tableau $argv. Le premier
+ index (zéro) contient toujours le nom du script appelé depuis la ligne
+ de commande. Notez que, si le code est exécuté en ligne en utilisant
+ l'option de ligne commande , la valeur de $argv[0]
+ sera "Standard input code"; antérieur à PHP 7.2.0,
+ c'était un tiret ("-") à la place. Cela est aussi vrai si
+ le code est exécuté via un pipe depuis STDIN.
+
+
+
+ Une seconde variable globale, $argc, contient le nombre
+ d'éléments du tableau $argv
+ (et non pas le nombre d'arguments passés
+ à votre script).
+
+
+
+ Tant que les arguments passés au script ne commencent pas par
+ le caractère -, il n'y a rien de spécial à surveiller.
+ Le fait de passer des arguments au script qui commencent par
+ - pose des problèmes car PHP
+ va penser qu'il doit les interpréter. Pour éviter cela, utilisez le séparateur
+ --. Après cet argument, tous les arguments suivants seront
+ passés au script sans être modifiés ou analysés par PHP.
+
+
+
+ [args...]
+[...]
+
+# Cela va passer l'argument '-h' au script, et éviter que PHP ne le traite
+$ php -r 'var_dump($argv);' -- -h
+array(2) {
+ [0]=>
+ string(1) "-"
+ [1]=>
+ string(2) "-h"
+}
+]]>
+
+
+
+ Cependant, il y a une autre méthode pour utiliser PHP en script shell ;
+ la première ligne du script devra être #!/usr/bin/php
+ (à remplacer par le chemin vers le binaire PHP &cli; sur le système sous-jacent).
+ Le reste du fichier doit contenir le code PHP normal, compris entre les
+ balises ouvrantes/fermantes. Après avoir mis les droits d'exécution sur le
+ script (chmod +x test), il peut être exécuté comme un script
+ shell ou perl habituel :
+
+
+
+ Exécute un script PHP en tant que script shell
+
+
+]]>
+
+
+ En supposant que ce fichier s'appelle test, dans le
+ dossier courant, il est alors possible de faire ceci :
+
+
+
+ string(6) "./test"
+ [1]=>
+ string(2) "-h"
+ [2]=>
+ string(2) "--"
+ [3]=>
+ string(3) "foo"
+}
+]]>
+
+
+
+
+ Comme vous pouvez le voir, dans ce cas, vous n'avez pas besoin
+ de faire attention lors du passage de paramètres qui commencent par
+ - à votre script.
+
+
+
+ L'exécutable PHP peut être utilisé pour exécuter des scripts indépendants du
+ serveur web. Si vous êtes sur un système Unix, il est recommandé d'ajouter
+ la ligne spéciale en début de script, de le rendre exécutable de
+ manière que le système sache quel programme doit exécuter le script.
+ Sous Windows, vous pouvez associer l'exécutable php.exe
+ avec le double-clic sur les fichiers d'extension .php,
+ ou bien vous pouvez faire un fichier batch pour exécuter le script grâce
+ à PHP. La première ligne utilisée dans le monde Unix ne perturbera pas
+ l'exécution sous Windows, ce qui rend les scripts facilement portables. Un exemple
+ complet est disponible ci-dessous :
+
+
+
+ Script prévu pour être exécuté en ligne de commande (script.php)
+
+
+
+C'est une ligne de commande à une option.
+
+ Utilisation :
+
+
+
+
+
+ Le script ci-dessus inclut la première ligne spéciale indiquant que ce fichier
+ doit être exécuté par PHP. Nous travaillons ici avec la version &cli;, aussi,
+ aucun en-tête HTTP ne sera affiché.
+
+
+
+ Le programme commence par vérifier que l'argument requis est spécifié
+ (en plus du nom du script, qui est aussi compté). S'il n'est pas présent,
+ ou si l'argument est , ,
+ ou , un message d'aide sera affiché,
+ en utilisant $argv[0] pour afficher dynamiquement le nom
+ du script tel qu'entré dans la ligne de commande. Sinon, l'argument est affiché
+ tel qu'il a été entré dans le terminal.
+
+
+
+ Pour exécuter le script ci-dessus sous Unix, vous devez le rendre
+ exécutable, puis l'appeler avec une commande comme :
+ script.php echothis ou
+ script.php -h. Sous Windows, vous pouvez faire un
+ fichier batch pour cela :
+
+
+
+
+ Fichier batch pour exécuter un script PHP en ligne de commande (script.bat)
+
+
+
+
+
+
+
+ En supposant que le programme ci-dessus est nommé
+ script.php, et que l'exécutable &cli;
+ php.exe se trouve dans
+ C:\php\php.exe, ce fichier batch l'exécutera
+ avec les options que vous lui passez :
+ script.bat echothis ou
+ script.bat -h.
+
+
+
+ Voir aussi l'extension Readline,
+ qui dispose de nombreuses fonctions pour améliorer la convivialité
+ des applications PHP en ligne de commande.
+
+
+
+ Sous Windows, PHP peut être configuré pour fonctionner sans avoir
+ besoin de fournir les extensions C:\php\php.exe
+ ou .php, tel que décrit dans
+ la ligne de commande PHP sous
+ Microsoft Windows.
+
+
+
+
+ Sous Windows, il est recommandé d'exécuter PHP sous un compte utilisateur.
+ Lorsque PHP est exécuté sous un service réseau, certaines opérations peuvent
+ échouer, car "Aucun lien entre les noms de compte et les identifiants de
+ sécurité n'est réalisé".
+
+
+
+
+
+
+
+
+ Flux d'entrée/sortie
+ Flux I/O
+
+
+ Le &cli.sapi; définit quelques constantes pour les flux I/O pour
+ rendre la programmation en ligne de commande plus facile.
+
+
+
+
+ Constantes spécifiques CLI
+
+
+
+ Constante
+ Description
+
+
+
+
+ STDIN
+
+
+ Un flux déjà ouvert vers stdin. Ceci évite de
+ l'ouvrir explicitement avec
+
+
+]]>
+
+ Si vous voulez lire une seule ligne depuis stdin,
+ vous pouvez utiliser
+
+
+]]>
+
+
+
+
+
+ STDOUT
+
+
+ Un flux déjà ouvert vers stdout. Ceci évite de
+ l'ouvrir explicitement avec
+
+
+]]>
+
+
+
+
+
+ STDERR
+
+
+ Un flux déjà ouvert vers stderr.
+ Ceci évite de l'ouvrir explicitement avec
+
+
+]]>
+
+
+
+
+
+
+
+
+
+
+ Ainsi, vous n'avez pas besoin d'ouvrir un flux spécifique pour, par exemple,
+ stderr mais vous pouvez simplement utiliser la constante
+ correspondante à ce flux :
+
+
+
+ Vous n'avez pas à clore explicitement ces flux, sachant qu'ils le seront
+ automatiquement par PHP à la fin de votre script.
+
+
+
+
+ Ces constantes ne sont pas disponibles lors d'une lecture d'un
+ script PHP depuis stdin.
+
+
+
+
+
+
+
+ Shell Interactif
+
+
+ Le &cli.sapi; fournit un shell interactif lors de l'utilisation
+ de l'option si PHP a été compilé avec l'option .
+ Depuis PHP 7.1.0 le shell interactif est également disponible sur Windows,
+ si l'extension readline est activée.
+
+
+
+ En utilisant le shell interactif, vous avez la possibilité de taper du code PHP
+ et qu'il soit exécuté directement.
+
+
+
+ Exécution de code en utilisant le shell interactif
+
+ echo 5+8;
+13
+php > function addTwo($n)
+php > {
+php { return $n + 2;
+php { }
+php > var_dump(addtwo(2));
+int(4)
+php >
+]]>
+
+
+
+
+ Le shell interactif fournit également une autocomplétion des fonctions,
+ des constantes, des noms de classes, des variables, des appels aux méthodes
+ statiques et des constantes de classes en utilisant la touche de tabulation.
+ Depuis PHP 8.4.0, le chemin vers le fichier d'historique peut être défini en utilisant la
+ variable d'environnement PHP_HISTFILE.
+
+
+
+ Auto-complétion en utilisant la touche de tabulation
+
+ Le fait de presser deux fois la touche de tabulation lorsqu'il y a plusieurs
+ complétions possibles affichera une liste de ces complétions :
+
+
+ strp[TAB][TAB]
+strpbrk strpos strptime
+php > strp
+]]>
+
+
+ Lorsqu'il n'y a qu'une seule complétion possible, presser la touche de tabulation
+ une seule fois complétera le reste sur la même ligne :
+
+
+ strpt[TAB]ime(
+]]>
+
+
+ La complétion fonctionnera aussi pour les noms qui ont été définis lors
+ de la session courante du shell interactif :
+
+
+ $fooThisIsAReallyLongVariableName = 42;
+php > $foo[TAB]ThisIsAReallyLongVariableName
+]]>
+
+
+
+
+ Le shell interactif stocke votre historique et peut y accéder en utilisant les touches
+ haut et bas. L'historique est sauvegardé dans le fichier ~/.php_history.
+
+
+
+ Le &cli.sapi; fournit 2 directives du &php.ini; :
+ cli.pager et cli.prompt.
+ La directive cli.pager permet la définition d'un programme
+ externe (comme less) à utiliser comme pager pour la sortie
+ au lieu d'afficher directement sur l'écran. La directive
+ cli.prompt autorise la modification du prompte
+ php >.
+
+
+
+ Il est également possible de définir des directives du &php.ini;
+ dans un shell interactif en utilisant des notations raccourcies.
+
+
+
+ Définition de directives du &php.ini; dans un shell interactif
+
+ La définition de la directive cli.prompt :
+
+
+ #cli.prompt=hello world :>
+hello world :>
+]]>
+
+
+ En utilisant des backticks, il est possible d'exécuter du code PHP
+ dans le prompte :
+
+
+ #cli.prompt=`echo date('H:i:s');` php >
+15:49:35 php > echo 'hi';
+hi
+15:49:43 php > sleep(2);
+15:49:45 php >
+]]>
+
+
+ Définition du pager à less :
+
+
+ #cli.pager=less
+php > phpinfo();
+(sortie affichée avec less)
+php >
+]]>
+
+
+
+
+ La directive cli.prompt supporte quelques séquences d'échappements :
+
+ Séquences d'échappements de cli.prompt
+
+
+
+ Séquence :
+ Description :
+
+
+
+
+ \e
+
+ utilisé pour ajouter des couleurs au prompte. Exemple :
+ \e[032m\v \e[031m\b \e[34m\> \e[0m
+
+
+
+ \v
+ La version de PHP.
+
+
+ \b
+
+ Indique dans quel bloc de PHP nous nous trouvons.
+ Par exemple, /* permet d'indiquer que nous
+ sommes dans un commentaire multilignes. Le scope externe est représenté
+ par php.
+
+
+
+ \>
+
+ Indique le caractère utilisé pour le prompte. Par défaut, ce sera
+ >, mais peut être modifié lorsque le shell se
+ trouve dans un bloc indéterminé ou dans une chaîne de caractères.
+ Les caractères possibles sont : ' " {
+ ( >
+
+
+
+
+
+
+
+
+
+ Les fichiers inclus via auto_prepend_file et auto_append_file sont analysés
+ dans ce mode, mais avec quelques restrictions - c.-à-d. les fonctions
+ doivent avoir été définies avant l'appel.
+
+
+
+
+ Mode interactif
+
+ Si l'extension readline n'est pas disponible, antérieur à PHP 8.1.0,
+ invoquer le &cli.sapi; avec l'option fournit le mode interactif.
+ Dans ce mode, un script PHP complet est supposé être donné via STDIN,
+ et après l'interruption
+ avec
+
+ CTRL
+ D
+
+ (POSIX) ou
+
+ CTRL
+ Z
+
+ suivi de ENTER (Windows), ce script sera évalué.
+ Ceci est basiquement identique à invoquer le &cli.sapi; sans l'option .
+
+
+ À partir de PHP 8.1.0, invoquer le &cli.sapi; avec l'option
+ échoue, si l'extension readline n'est pas disponible.
+
+
+
+
+
+
+
+ Serveur web interne
+
+
+
+ Ce serveur web est prévu pour aider dans le développement des applications.
+ Il peut également être utile pour les tests, et pour les démonstrations
+ d'applications qui sont exécutées dans des environnements contrôlés.
+ Mais par contre, il n'a pas été conçu pour être un serveur web complet.
+ Aussi, il ne devrait pas être utilisé dans un réseau public.
+
+
+
+
+ Le &cli.sapi; fournit un serveur web interne.
+
+
+
+ Le serveur web s'exécute sur un seul processus single-threaded,
+ les applications PHP seront retardées/suspendues si une requête est bloquée.
+
+
+
+ Les requêtes URI sont servies depuis le dossier de travail courant
+ où PHP a été démarré, à moins que l'option -t ne soit utilisée pour spécifier
+ explicitement un document racine. Si une requête URI ne spécifie
+ pas un fichier, alors le fichier index.php ou le fichier
+ index.html du dossier courant sera retourné. Si aucun de ces fichiers n'existe,
+ la recherche d'un fichier index.php et index.html se poursuivra dans le dossier
+ parent et ainsi de suite jusqu'à ce qu'un de ces fichier ne soit trouvé ou
+ que le dossier racine ne soit atteint. Si un fichier index.php ou index.html
+ est trouvé, il sera retourné et $_SERVER['PATH_INFO'] sera défini comme la
+ dernière partie de l'URI. Sinon, un code réponse 404 sera retourné.
+
+
+
+ Si un fichier PHP est fourni dans la ligne de commande lorsque le serveur web
+ est démarré, il sera traité comme un script "routeur".
+ Le script sera exécuté au début de chaque requête HTTP. Si ce script retourne
+ &false;, alors la ressource demandée est retournée telle quelle.
+ Sinon, la sortie du script est retournée au navigateur.
+
+
+
+ Les types MIME standards sont retournés pour les fichiers avec les extensions :
+
+ .3gp
+ .apk
+ .avi
+ .bmp
+ .css
+ .csv
+ .doc
+ .docx
+ .flac
+ .gif
+ .gz
+ .gzip
+ .htm
+ .html
+ .ics
+ .jpe
+ .jpeg
+ .jpg
+ .js
+ .kml
+ .kmz
+ .m4a
+ .mov
+ .mp3
+ .mp4
+ .mpeg
+ .mpg
+ .odp
+ .ods
+ .odt
+ .oga
+ .ogg
+ .ogv
+ .pdf
+ .png
+ .pps
+ .pptx
+ .qt
+ .svg
+ .swf
+ .tar
+ .text
+ .tif
+ .txt
+ .wav
+ .webm
+ .wmv
+ .xls
+ .xlsx
+ .xml
+ .xsl
+ .xsd
+ .zip
+
+ .
+
+
+
+ À partir de PHP 7.4.0, le serveur web intégré peut être configuré pour bifurquer plusieurs
+ travailleurs afin de tester du code nécessitant plusieurs requêtes concurrentes
+ au serveur web intégré.
+ Définissez la variable d'environnement PHP_CLI_SERVER_WORKERS sur le
+ nombre de travailleurs souhaité avant de démarrer le serveur.
+
+
+
+ Cette fonctionnalité n'est pas prise en charge sur Windows.
+
+
+
+
+ Cette fonctionnalité expérimentale n'est pas
+ destinée à une utilisation en production. En général, le Serveur Web intégré
+ n'est pas destiné à une utilisation en production.
+
+
+
+
+ Démarrage du serveur web
+
+
+
+
+ Le terminal affichera :
+
+
+
+
+
+ Après des requêtes URI sur http://localhost:8000/ et
+ http://localhost:8000/myscript.html, le terminal affichera quelques choses
+ comme :
+
+
+
+
+
+ Noter qu'avant PHP 7.4.0, les ressources statiques en lien symbolique
+ ne sont pas accessibles sous Windows, tant que le script routeur
+ ne le gère pas.
+
+
+
+
+ Démarrage avec un dossier racine spécifique
+
+
+
+
+ Le terminal affichera :
+
+
+
+
+
+
+
+ Utilisation d'un script routeur
+
+ Dans cet exemple, le fait de demander des images les affichera,
+ mais les requêtes pour les fichiers HTML afficheront
+ "Bienvenue chez PHP !".
+
+
+Bienvenue chez PHP !";
+}
+?>]]>
+
+
+
+
+
+
+
+ Vérification de l'utilisation CLI du serveur Web
+
+ Pour ré-utiliser un script router du framework lors du
+ développement avec le CLI du serveur web et ensuite, continuez
+ de l'utiliser avec un serveur web de production :
+
+
+]]>
+
+
+
+
+
+
+
+ Gestion des types de fichiers non supportés
+
+ Si vous devez servir une ressource statique pour laquelle le type
+ MIME n'est pas géré par le CLI du serveur web, utilisez ceci :
+
+
+]]>
+
+
+
+
+
+
+
+ Accès au CLI du serveur web depuis une machine distante
+
+ Vous pouvez rendre le serveur web accessible sur le port 8000
+ pour toutes les interfaces avec :
+
+
+
+
+
+
+ Le serveur web intégré ne doit pas être utilisé sur un réseau public.
+
+
+
+
+
+
+
+
+ Configurations INI
+
+
+
+
+ &ini.descriptions.title;
+
+
+
+
+
+ cli_server.color
+ bool
+
+
+
+ Active le serveur web de développement interne à utiliser
+ la coloration ANSI du code dans la sortie du terminal.
+
+
+
+
+
+
+
+
+
+
diff --git a/features/gc.xml b/features/gc.xml
index abef8b0bd8..1e8005917e 100644
--- a/features/gc.xml
+++ b/features/gc.xml
@@ -1,670 +1,670 @@
-
-
-
-
-
- Ramasse-miettes (Garbage Collection)
-
-
- Cette section explique les mérites du nouveau mécanisme ramasse-miettes (aussi appelé
- GC, du terme anglais Garbage Collection) fourni à partir de PHP 5.3.
-
-
-
- Bases sur le comptage des références
-
- Une variable PHP est stockée en interne dans un conteneur appelé "zval". Un conteneur
- zval contient, outre le type de la variable et sa valeur, deux informations supplémentaires.
- La première se nomme "is_ref" et est une valeur booléenne qui indique si
- une variable fait partie d'une référence ou non. Grâce à cette information, le moteur de
- PHP sait différencier les variables normales des références. Comme PHP autorise
- le programmeur à utiliser des références, au moyen de l'opérateur &, un conteneur
- zval possède aussi un mécanisme de comptage des références afin d'optimiser l'utilisation
- de la mémoire. Cette seconde information, appelée "refcount", contient le nombre de
- variables (aussi appelées symboles) qui pointent vers ce conteneur zval. Tous les symboles
- sont stockés dans une table de symboles, et il y a une table par espace de visibilité
- (scope). Il y a un espace global pour le script principal (celui appelé par exemple via
- le navigateur) et un espace par fonction ou méthode.
-
-
- Un conteneur zval est créé lorsqu'une nouvelle variable est créée avec une valeur
- constante, comme par exemple :
-
- Création d'un nouveau conteneur zval
-
-
-]]>
-
-
-
-
- Dans ce cas, le nouveau symbole a est créé dans le scope global,
- et un nouveau conteneur est créé avec comme type string et comme valeur
- new string. Le bit "is_ref" est mis par défaut à &false; car aucune
- référence n'a été créée par le programmeur. Le compteur de références "refcount" est mis à
- 1 car il n'y a qu'un seul symbole qui utilise ce conteneur.
- Il est à noter que les références (c.à.d. "is_ref" est &true;) avec "refcount"
- 1, sont traitées comme si elles n'étaient pas des
- références (c.à.d. comme si "is_ref" était &false;). Si vous avez
- installé Xdebug, vous pouvez afficher cette
- information en appelant xdebug_debug_zval.
-
-
-
- Affichage des informations zval
-
-
-]]>
-
- &example.outputs;
-
-
-
-
-
-
- Assigner cette variable à un autre symbole va incrémenter le refcount.
-
-
-
- Incrémentation du refcount d'une zval
-
-
-]]>
-
- &example.outputs;
-
-
-
-
-
-
- Le refcount vaut 2 ici, car le même conteneur est lié à
- la fois à a et à b. PHP est suffisamment
- intelligent pour ne pas dupliquer le conteneur lorsque ce n'est pas nécessaire.
- Les conteneurs sont détruits lorsque leur "refcount" atteint zéro. Le
- "refcount" est décrémenté de un lorsque n'importe quel symbole lié à
- un conteneur sort du scope (ex. : lorsque la fonction se termine) ou
- lorsqu'un symbole est déalloué (ex. : par l'appel de unset).
- L'exemple qui suit le démontre :
-
-
-
- Décrémentation du refcount d'une zval
-
-
-]]>
-
- &example.outputs;
-
-
-
-
-
-
- Si, maintenant, nous appelons unset($a);, le conteneur zval, incluant
- le type et la valeur, va être supprimé de la mémoire.
-
-
-
- Types composés
-
-
- Les choses se compliquent dans le cas de types composés comme array et
- object. A la différence des valeurs scalaires, les
- array et object stockent leurs propriétés dans une table de
- symboles qui leur est propre. Ceci signifie que l'exemple qui suit crée trois conteneurs
- zval :
-
-
-
- Création d'une zval array
-
- 'life', 'number' => 42 );
-xdebug_debug_zval( 'a' );
-?>
-]]>
-
- &example.outputs.similar;
-
- (refcount=1, is_ref=0)='life',
- 'number' => (refcount=1, is_ref=0)=42
-)
-]]>
-
- Ou graphiquement
-
- Zvals d'un tableau simple
-
-
-
-
-
-
-
- Les trois conteneurs zval sont : a, meaning, et
- number. Les mêmes règles s'appliquent pour l'incrémentation et la
- décrémentation des "refcounts". Ci-après, nous ajoutons un autre élément au tableau, et nous
- renseignons sa valeur avec le contenu d'un élément déjà existant du tableau :
-
-
-
- Ajout d'un élément déjà existant au tableau
-
- 'life', 'number' => 42 );
-$a['life'] = $a['meaning'];
-xdebug_debug_zval( 'a' );
-?>
-]]>
-
- &example.outputs.similar;
-
- (refcount=2, is_ref=0)='life',
- 'number' => (refcount=1, is_ref=0)=42,
- 'life' => (refcount=2, is_ref=0)='life'
-)
-]]>
-
- Ou graphiquement
-
- Zvals pour un tableau simple avec une référence
-
-
-
-
-
-
-
- La sortie Xdebug que nous voyons indique que l'ancien et le nouvel élément du tableau
- pointent maintenant tous deux vers un conteneur zval dont le "refcount" vaut 2.
- Même si la sortie XDebug montre deux conteneurs zval avec comme valeur 'life', ils sont les
- mêmes. La fonction xdebug_debug_zval ne montre pas cela, mais vous
- pourriez le voir en affichant aussi le pointeur de mémoire.
-
-
- Supprimer un élément du tableau est assimilable à la suppression d'un symbole depuis un
- espace. Ce faisant, le "refcount" du conteneur vers lequel l'élément du tableau pointe est
- décrémenté. Une fois encore, s'il atteint zéro, le conteneur zval est supprimé de la mémoire.
- Voici un exemple qui le démontre :
-
-
-
- Suppression d'un élément de tableau
-
- 'life', 'number' => 42 );
-$a['life'] = $a['meaning'];
-unset( $a['meaning'], $a['number'] );
-xdebug_debug_zval( 'a' );
-?>
-]]>
-
- &example.outputs.similar;
-
- (refcount=1, is_ref=0)='life'
-)
-]]>
-
-
-
-
- Maintenant, les choses deviennent intéressantes si nous ajoutons le tableau
- comme élément de lui-même. Nous faisons cela dans l'exemple qui suit, en utilisant un
- opérateur de référence pour éviter que PHP ne crée une copie :
-
-
-
- Ajout du tableau comme référence à lui-même en tant qu'élément
-
-
-]]>
-
- &example.outputs.similar;
-
- (refcount=1, is_ref=0)='one',
- 1 => (refcount=2, is_ref=1)=...
-)
-]]>
-
- Ou graphiquement
-
- Zvals dans un tableau avec référence circulaire
-
-
-
-
-
-
-
- Vous pouvez voir que la variable tableau (a) tout comme le second élément
- (1) pointent désormais vers un conteneur dont le "refcount" vaut
- 2. Les "..." sur l'affichage indiquent une récursion, qui, dans ce cas,
- signifie que le "..." pointe sur le tableau lui-même.
-
-
- Comme précédemment, supprimer une variable supprime son symbole, et le refcount du conteneur
- sur lequel il pointait est décrémenté. Donc, si nous supprimons la variable
- $a après avoir exécuté le code ci-dessus, le compteur de références du
- conteneur sur lequel pointent $a et l'élément "1" sera décrémenté de un,
- passant de "2" à "1". Ceci peut être représenté par :
-
-
-
- Suppression de $a
-
- (refcount=1, is_ref=0)='one',
- 1 => (refcount=1, is_ref=1)=...
-)
-]]>
-
- Ou graphiquement
-
- Zvals après suppression du tableau contenant une référence circulaire, fuite mémoire
-
-
-
-
-
-
-
-
-
- Problèmes de nettoyage
-
- Bien qu'il n'y ait plus aucun symbole dans l'espace de variables courant qui pointe
- vers cette structure, elle ne peut être nettoyée, car l'élément "1" du tableau
- pointe toujours vers ce même tableau. Comme il n'y a plus aucun symbole externe
- pointant vers cette structure, l'utilisateur ne peut pas la nettoyer manuellement ;
- il y a donc une fuite de mémoire. Heureusement, PHP va détruire cette structure à la fin de
- la requête, mais avant cette étape, la mémoire n'est pas libérée. Cette situation se
- produit souvent si vous implémentez un algorithme d'analyse ou d'autres idées où vous avez
- un enfant qui pointe vers son parent. La même chose peut bien entendu se produire avec les objets,
- et c'est même plus probable, puisqu'ils sont toujours implicitement utilisés par
- "référence".
-
-
- Ceci peut ne pas être gênant si cela n'arrive qu'une ou deux fois, mais s'il y a des
- milliers, ou même des millions, de ces fuites mémoires, alors cela risque évidemment
- de devenir un problème important. C'est particulièrement problématique pour les scripts
- qui durent longtemps, comme les démons pour lesquels la requête ne termine pour ainsi dire
- jamais, ou encore dans de grosses suites de tests unitaires.
- Ce dernier cas a été rencontré en lançant les tests unitaires du composant Template de la
- bibliothèque eZ Components. Dans certains cas, la suite de tests nécessitait plus de 2Go de
- mémoire, que le serveur de test n'avait pas vraiment à disposition.
-
-
-
-
-
- Nettoyage de Cycles
-
- Traditionnellement, les mécanismes de comptage de références, comme utilisés auparavant
- dans PHP, ne savent pas gérer les fuites mémoires dues à des références circulaires ;
- cependant depuis PHP 5.3.0, un algorithme synchrone issu de l'analyse
- Concurrent Cycle Collection in Reference Counted Systems
- est utilisé pour répondre à ce problème particulier.
-
-
- Une explication complète du fonctionnement de l'algorithme irait un peu au-delà du cadre de cette section,
- mais nous allons ici présenter les principes de base. Avant tout, nous allons établir quelques règles de base.
- Si un refcount est incrémenté, le conteneur est toujours utilisé, donc pas nettoyé. Si le refcount
- est décrémenté et atteint zéro, le conteneur zval peut être supprimé et la mémoire libérée. Premièrement, ceci signifie
- que les cycles perturbateurs ne peuvent être créés que lorsque le refcount est décrémenté vers une valeur
- différente de zéro. Ensuite, dans un cycle problématique, il est possible de détecter les déchets en
- vérifiant s'il est possible ou non de décrémenter leur refcount de un, en vérifiant ensuite quelles zvals
- ont un refcount à zéro.
-
-
-
- Algorithme de collecte des déchets
-
-
-
-
-
-
- Pour éviter d'avoir à appeler la routine de nettoyage à chaque décrémentation de refcount possible,
- l'algorithme place toutes les zval racines dans un "tampon de racines" (en les marquant en "violet").
- Il s'assure aussi que chaque racine n'apparaisse qu'une seule fois dans le tampon. Le
- mécanisme de nettoyage n'intervient alors que lorsque le tampon est plein. Voyez l'étape A
- sur la figure ci-dessus.
-
-
- A l'étape B, l'algorithme lance une recherche sur toutes les racines possibles, afin de
- décrémenter de une unité les refcounts de toutes les zvals qu'il trouve, en faisant bien
- attention de ne pas décrémenter deux fois le refcount de la même zval (en les marquant
- comme "grises"). A l'étape C, l'algorithme relance une recherche sur toutes les racines
- possibles et scrute la valeur de refcount de chaque zval. S'il trouve un refcount à zéro,
- la zval est marquée comme "blanche" (bleu sur la figure). S'il trouve une valeur supérieure à zéro,
- il annule la décrémentation du refcount en refaisant une recherche à partir de ce nœud, et les
- marque comme "noires" à nouveau. Dans la dernière étape, D, l'algorithme parcourt tout le
- tampon des racines et les supprime, tout en scrutant chaque zval ; toute zval marquée
- comme "blanche" à l'étape précédente sera alors supprimée de la mémoire.
-
-
- Maintenant que vous savez globalement comment l'algorithme fonctionne, nous allons
- voir comment il a été intégré dans PHP. Par défaut, le ramasse-miettes de PHP est
- activé. Il existe cependant une option de &php.ini; pour changer cela :
- zend.enable_gc.
-
-
- Lorsque le ramasse-miettes est activé, l'algorithme de recherche des cycles
- décrit ci-dessus est exécuté à chaque fois que le tampon est plein. Le tampon de
- racines a une taille fixée à 10.000 racines (ce paramètre est changeable grâce à
- GC_THRESHOLD_DEFAULT dans Zend/zend_gc.c
- dans le code source de PHP, une recompilation est donc nécessaire). Si le ramasse-
- miettes est désactivé, la recherche des cycles l'est aussi. Cependant, les racines
- possibles seront toujours enregistrées dans le tampon, ceci ne dépend pas de l'activation
- du ramasse-miettes.
-
-
- Si le tampon est plein alors que le mécanisme de nettoyage est désactivé, les racines
- ne seront plus enregistrées. Ces racines ne seront donc jamais analysées par l'algorithme,
- et si elles faisaient partie de références circulaires, elles ne seront jamais nettoyées,
- et elles causeront des fuites de mémoire.
-
-
- La raison pour laquelle les racines possibles sont enregistrées dans le tampon
- même si le mécanisme est désactivé est qu'il aurait été trop coûteux de vérifier l'activation
- éventuelle du mécanisme à chaque tentative d'ajout d'une racine dans le tampon. Le mécanisme
- de ramasse-miettes et d'analyse peut, lui, être très coûteux en temps.
-
-
- En plus de pouvoir changer la valeur du paramètre de configuration
- zend.enable_gc, vous pouvez aussi activer ou désactiver le mécanisme de
- ramasse-miettes en appelant les fonctions gc_enable ou
- gc_disable respectivement. Utiliser ces fonctions aura le même effet que de
- modifier le paramètre de configuration. Vous avez aussi la possibilité de forcer l'exécution du
- ramasse-miettes à un moment donné dans votre script, même si le tampon n'est pas encore
- complètement plein. Utilisez pour cela la fonction gc_collect_cycles,
- qui retournera le nombre de cycles alors collectés.
-
-
- Vous pouvez prendre le contrôle en désactivant le ramasse-miettes ou en le
- forçant à passer à un moment donné car certaines parties de votre application
- pourraient être fortement dépendantes du temps de traitement, auquel cas vous pourriez
- souhaiter que le ramasse-miettes ne se lance pas. Bien entendu, en désactivant le
- ramasse-miettes pour certaines parties de votre application, vous prenez le risque de créer
- des fuites de mémoire, puisque certaines racines probables pourraient ne pas être
- enregistrées dans le tampon mémoire de taille limitée.
- En conséquence, il est généralement recommandé de déclencher manuellement le processus grâce à
- gc_collect_cycles juste avant l'appel à
- gc_disable, pour libérer de la mémoire. Ceci laissera un tampon
- vidé, et il y aura plus d'espace pour des racines probables lorsque
- le mécanisme sera désactivé.
-
-
-
-
- Considérations sur les performances
-
- Nous avons déjà vu dans les sections précédentes que la collecte des racines probables
- avait un impact très léger sur les performances, mais c'est lorsque l'on compare PHP 5.2 à
- PHP 5.3. Même si l'enregistrement des racines probables est plus lent que de ne pas les
- enregistrer du tout, comme dans PHP 5.2, d'autres améliorations apportées par PHP 5.3
- font que cette opération ne se ressent pas au niveau des performances.
-
-
- Il y a principalement deux niveaux pour lesquels les performances sont affectées.
- Le premier est l'empreinte mémoire réduite, et le second est le délai à l'exécution,
- lorsque le mécanisme de nettoyage effectue son opération de libération de mémoire.
- Nous allons étudier ces deux axes.
-
-
-
- Empreinte mémoire réduite
-
- Avant tout, la raison principale de l'implémentation du mécanisme de collecte des déchets
- est la réduction de la mémoire consommée, en nettoyant les références circulaires lorsque
- les conditions requises sont remplies.
- Avec PHP, ceci arrive dès que le tampon de racines est plein, ou lorsque la
- fonction gc_collect_cycles est appelée. Sur le graphe ci-après, nous
- affichons l'utilisation mémoire du script suivant, avec PHP 5.2 et avec PHP 5.3, en excluant
- la mémoire obligatoire que PHP consomme pour lui-même au démarrage.
-
-
-
- Exemple d'utilisation mémoire
-
-self = $a;
- if ( $i % 500 === 0 )
- {
- echo sprintf( '%8d: ', $i ), memory_get_usage() - $baseMemory, "\n";
- }
-}
-?>
-]]>
-
-
- Comparaison de la consommation mémoire entre PHP 5.2 et PHP 5.3
-
-
-
-
-
-
-
- Dans cet exemple quelque peu académique, nous créons un objet possédant un attribut le référençant
- lui-même. Lorsque la variable $a dans le script est réassignée à
- l'itération suivante, une fuite mémoire apparaitra. Dans ce cas, les deux conteneurs zval
- fuient (la zval de l'objet et celle de l'attribut), mais une seule racine possible
- est trouvée : la variable qui a été supprimée. Lorsque le tampon de racines est plein après
- 10.000 itérations (avec un total de 10.000 racines possibles), le mécanisme de collecte des
- déchets entre en jeu et libère la mémoire associée à ces racines probables. Cela se voit
- très clairement sur les graphes d'utilisation mémoire de PHP 5.3. Après chaque 10.000
- itérations, le mécanisme se déclenche et libère la mémoire associée aux variables circulairement
- référencées. Le mécanisme en question n'a pas énormément de travail dans cet exemple, parce que
- la structure qui a fuit est extrêmement simple.
- Le diagramme montre que l'utilisation maximale de mémoire de PHP 5.3 est d'environ
- 9Mo, là où elle n'arrête pas d'augmenter avec PHP 5.2.
-
-
-
-
- Ralentissements durant l'exécution
-
- Le second point où le mécanisme de collecte des déchets (GC) affecte les performances
- est lorsqu'il est exécuté pour libérer la mémoire "gaspillée". Pour quantifier cet
- impact, nous modifions légèrement le script précédent afin d'avoir un nombre d'itérations
- plus élevé et de supprimer la collecte de l'usage mémoire intermédiaire.
- Le second script est reproduit ci-dessous :
-
-
-
- Impact de GC sur les performances
-
-self = $a;
-}
-
-echo memory_get_peak_usage(), "\n";
-?>
-]]>
-
-
-
-
- Nous allons lancer ce script 2 fois, une fois avec
- zend.enable_gc à on, et une fois à off:
-
-
-
- Lancement du script ci-dessus
-
-
-
-
-
-
- Sur ma machine, la première commande semble durer tout le temps 10,7 secondes,
- alors que la seconde commande prend environ 11,4 secondes. Cela correspond à un ralentissement
- de 7% approximativement. Cependant, la quantité totale de mémoire utilisée par le script est réduite
- de 98%, passant de 931Mo à 10Mo. Ce benchmark n'est pas très scientifique ou même
- représentatif d'applications réelles, mais il démontre concrètement en quoi le mécanisme
- de collecte des déchets peut être utile au niveau de la consommation mémoire. Le bon point
- est que le ralentissement est toujours de 7%, dans le cas particulier de ce script, alors
- que la mémoire préservée sera de plus en plus importante au fur et à mesure que
- des références circulaires apparaitront durant l'exécution.
-
-
-
-
- Statistiques internes du GC de PHP
-
- Il est possible d'obtenir quelques informations supplémentaires concernant le mécanisme de collecte
- des déchets interne à PHP. Mais pour cela, il vous faut recompiler PHP avec le support
- du benchmarking et de la collecte de données. Vous devrez renseigner la variable
- d'environnement CFLAGS avec -DGC_BENCH=1 avant
- de lancer ./configure avec les options qui vous intéressent.
- L'exemple suivant démontre cela :
-
-
-
- Recompiler PHP pour activer le support du benchmark du GC
-
-
-
-
-
-
- Lorsque vous ré-exécutez le code du script ci-dessus avec le binaire PHP fraichement
- reconstruit, vous devriez voir le résultat suivant après l'exécution :
-
-
-
- Statistiques GC
-
-
-
-
-
-
- Les statistiques les plus intéressantes sont affichées dans le premier bloc. Vous voyez ici
- que le mécanisme de collecte des déchets a été déclenché 110 fois, et qu'au total ce sont
- plus de 2 millions d'allocations mémoire qui ont été libérées durant ces 110 passages.
- Dès lors que le mécanisme est intervenu au moins une fois, le pic du buffer racine est toujours
- de 10000.
-
-
-
-
- Conclusion
-
- De manière générale, la collecte des déchets de PHP ne causera un ralentissement
- que lorsque l'algorithme de collecte de cycles tournera, ce qui signifie que dans les scripts
- normaux (plus courts), il ne devrait pas du tout y avoir d'impact sur les performances.
-
-
- Cependant, lorsque le mécanisme de collecte de cycles sera déclenché dans des scripts
- normaux, la réduction de l'empreinte mémoire permettra l'exécution parallèle d'un nombre plus
- important de ces scripts, puisque moins de mémoire sera utilisée au total.
-
-
- Les avantages se sentent plus nettement dans le cas de scripts démons ou devant tourner longtemps.
- Ainsi, pour les applications PHP-GTK qui tournent souvent
- plus longtemps que des scripts pour le Web, le nouveau mécanisme devrait réduire
- significativement les fuites mémoire sur le long terme.
-
-
-
-
-
-
+
+
+
+
+
+ Ramasse-miettes (Garbage Collection)
+
+
+ Cette section explique les mérites du nouveau mécanisme ramasse-miettes (aussi appelé
+ GC, du terme anglais Garbage Collection) fourni à partir de PHP 5.3.
+
+
+
+ Bases sur le comptage des références
+
+ Une variable PHP est stockée en interne dans un conteneur appelé "zval". Un conteneur
+ zval contient, outre le type de la variable et sa valeur, deux informations supplémentaires.
+ La première se nomme "is_ref" et est une valeur booléenne qui indique si
+ une variable fait partie d'une référence ou non. Grâce à cette information, le moteur de
+ PHP sait différencier les variables normales des références. Comme PHP autorise
+ le programmeur à utiliser des références, au moyen de l'opérateur &, un conteneur
+ zval possède aussi un mécanisme de comptage des références afin d'optimiser l'utilisation
+ de la mémoire. Cette seconde information, appelée "refcount", contient le nombre de
+ variables (aussi appelées symboles) qui pointent vers ce conteneur zval. Tous les symboles
+ sont stockés dans une table de symboles, et il y a une table par espace de visibilité
+ (scope). Il y a un espace global pour le script principal (celui appelé par exemple via
+ le navigateur) et un espace par fonction ou méthode.
+
+
+ Un conteneur zval est créé lorsqu'une nouvelle variable est créée avec une valeur
+ constante, comme par exemple :
+
+ Création d'un nouveau conteneur zval
+
+
+]]>
+
+
+
+
+ Dans ce cas, le nouveau symbole a est créé dans le scope global,
+ et un nouveau conteneur est créé avec comme type string et comme valeur
+ new string. Le bit "is_ref" est mis par défaut à &false; car aucune
+ référence n'a été créée par le programmeur. Le compteur de références "refcount" est mis à
+ 1 car il n'y a qu'un seul symbole qui utilise ce conteneur.
+ Il est à noter que les références (c.à.d. "is_ref" est &true;) avec "refcount"
+ 1, sont traitées comme si elles n'étaient pas des
+ références (c.à.d. comme si "is_ref" était &false;). Si vous avez
+ installé Xdebug, vous pouvez afficher cette
+ information en appelant xdebug_debug_zval.
+
+
+
+ Affichage des informations zval
+
+
+]]>
+
+ &example.outputs;
+
+
+
+
+
+
+ Assigner cette variable à un autre symbole va incrémenter le refcount.
+
+
+
+ Incrémentation du refcount d'une zval
+
+
+]]>
+
+ &example.outputs;
+
+
+
+
+
+
+ Le refcount vaut 2 ici, car le même conteneur est lié à
+ la fois à a et à b. PHP est suffisamment
+ intelligent pour ne pas dupliquer le conteneur lorsque ce n'est pas nécessaire.
+ Les conteneurs sont détruits lorsque leur "refcount" atteint zéro. Le
+ "refcount" est décrémenté de un lorsque n'importe quel symbole lié à
+ un conteneur sort du scope (ex. : lorsque la fonction se termine) ou
+ lorsqu'un symbole est déalloué (ex. : par l'appel de unset).
+ L'exemple qui suit le démontre :
+
+
+
+ Décrémentation du refcount d'une zval
+
+
+]]>
+
+ &example.outputs;
+
+
+
+
+
+
+ Si, maintenant, nous appelons unset($a);, le conteneur zval, incluant
+ le type et la valeur, va être supprimé de la mémoire.
+
+
+
+ Types composés
+
+
+ Les choses se compliquent dans le cas de types composés comme array et
+ object. À la différence des valeurs scalar, les
+ array et object stockent leurs propriétés dans une table de
+ symboles qui leur est propre. Ceci signifie que l'exemple qui suit crée trois conteneurs
+ zval :
+
+
+
+ Création d'une zval array
+
+ 'life', 'number' => 42 );
+xdebug_debug_zval( 'a' );
+?>
+]]>
+
+ &example.outputs.similar;
+
+ (refcount=1, is_ref=0)='life',
+ 'number' => (refcount=1, is_ref=0)=42
+)
+]]>
+
+ Ou graphiquement
+
+ Zvals d'un tableau simple
+
+
+
+
+
+
+
+ Les trois conteneurs zval sont : a, meaning, et
+ number. Les mêmes règles s'appliquent pour l'incrémentation et la
+ décrémentation des "refcounts". Ci-après, nous ajoutons un autre élément au tableau, et nous
+ renseignons sa valeur avec le contenu d'un élément déjà existant du tableau :
+
+
+
+ Ajout d'un élément déjà existant au tableau
+
+ 'life', 'number' => 42 );
+$a['life'] = $a['meaning'];
+xdebug_debug_zval( 'a' );
+?>
+]]>
+
+ &example.outputs.similar;
+
+ (refcount=2, is_ref=0)='life',
+ 'number' => (refcount=1, is_ref=0)=42,
+ 'life' => (refcount=2, is_ref=0)='life'
+)
+]]>
+
+ Ou graphiquement
+
+ Zvals pour un tableau simple avec une référence
+
+
+
+
+
+
+
+ La sortie Xdebug que nous voyons indique que l'ancien et le nouvel élément du tableau
+ pointent maintenant tous deux vers un conteneur zval dont le "refcount" vaut 2.
+ Même si la sortie XDebug montre deux conteneurs zval avec comme valeur 'life', ils sont les
+ mêmes. La fonction xdebug_debug_zval ne montre pas cela, mais vous
+ pourriez le voir en affichant aussi le pointeur de mémoire.
+
+
+ Supprimer un élément du tableau est assimilable à la suppression d'un symbole depuis un
+ espace. Ce faisant, le "refcount" du conteneur vers lequel l'élément du tableau pointe est
+ décrémenté. Une fois encore, s'il atteint zéro, le conteneur zval est supprimé de la mémoire.
+ Voici un exemple qui le démontre :
+
+
+
+ Suppression d'un élément de tableau
+
+ 'life', 'number' => 42 );
+$a['life'] = $a['meaning'];
+unset( $a['meaning'], $a['number'] );
+xdebug_debug_zval( 'a' );
+?>
+]]>
+
+ &example.outputs.similar;
+
+ (refcount=1, is_ref=0)='life'
+)
+]]>
+
+
+
+
+ Maintenant, les choses deviennent intéressantes si nous ajoutons le tableau
+ comme élément de lui-même. Nous faisons cela dans l'exemple qui suit, en utilisant un
+ opérateur de référence pour éviter que PHP ne crée une copie :
+
+
+
+ Ajout du tableau comme référence à lui-même en tant qu'élément
+
+
+]]>
+
+ &example.outputs.similar;
+
+ (refcount=1, is_ref=0)='one',
+ 1 => (refcount=2, is_ref=1)=...
+)
+]]>
+
+ Ou graphiquement
+
+ Zvals dans un tableau avec référence circulaire
+
+
+
+
+
+
+
+ Vous pouvez voir que la variable tableau (a) tout comme le second élément
+ (1) pointent désormais vers un conteneur dont le "refcount" vaut
+ 2. Les "..." sur l'affichage indiquent une récursion, qui, dans ce cas,
+ signifie que le "..." pointe sur le tableau lui-même.
+
+
+ Comme précédemment, supprimer une variable supprime son symbole, et le refcount du conteneur
+ sur lequel il pointait est décrémenté. Donc, si nous supprimons la variable
+ $a après avoir exécuté le code ci-dessus, le compteur de références du
+ conteneur sur lequel pointent $a et l'élément "1" sera décrémenté de un,
+ passant de "2" à "1". Ceci peut être représenté par :
+
+
+
+ Suppression de $a
+
+ (refcount=1, is_ref=0)='one',
+ 1 => (refcount=1, is_ref=1)=...
+)
+]]>
+
+ Ou graphiquement
+
+ Zvals après suppression du tableau contenant une référence circulaire, fuite mémoire
+
+
+
+
+
+
+
+
+
+ Problèmes de nettoyage
+
+ Bien qu'il n'y ait plus aucun symbole dans l'espace de variables courant qui pointe
+ vers cette structure, elle ne peut être nettoyée, car l'élément "1" du tableau
+ pointe toujours vers ce même tableau. Comme il n'y a plus aucun symbole externe
+ pointant vers cette structure, l'utilisateur ne peut pas la nettoyer manuellement ;
+ il y a donc une fuite de mémoire. Heureusement, PHP va détruire cette structure à la fin de
+ la requête, mais avant cette étape, la mémoire n'est pas libérée. Cette situation se
+ produit souvent si vous implémentez un algorithme d'analyse ou d'autres idées où vous avez
+ un enfant qui pointe vers son parent. La même chose peut bien entendu se produire avec les objets,
+ et c'est même plus probable, puisqu'ils sont toujours implicitement utilisés par
+ "référence".
+
+
+ Ceci peut ne pas être gênant si cela n'arrive qu'une ou deux fois, mais s'il y a des
+ milliers, ou même des millions, de ces fuites mémoires, alors cela risque évidemment
+ de devenir un problème important. C'est particulièrement problématique pour les scripts
+ qui durent longtemps, comme les démons pour lesquels la requête ne termine pour ainsi dire
+ jamais, ou encore dans de grosses suites de tests unitaires.
+ Ce dernier cas a été rencontré en lançant les tests unitaires du composant Template de la
+ bibliothèque eZ Components. Dans certains cas, la suite de tests nécessitait plus de 2Go de
+ mémoire, que le serveur de test n'avait pas vraiment à disposition.
+
+
+
+
+
+ Nettoyage de Cycles
+
+ Traditionnellement, les mécanismes de comptage de références, comme utilisés auparavant
+ dans PHP, ne savent pas gérer les fuites mémoires dues à des références circulaires ;
+ cependant depuis PHP 5.3.0, un algorithme synchrone issu de l'analyse
+ Concurrent Cycle Collection in Reference Counted Systems
+ est utilisé pour répondre à ce problème particulier.
+
+
+ Une explication complète du fonctionnement de l'algorithme irait un peu au-delà du cadre de cette section,
+ mais nous allons ici présenter les principes de base. Avant tout, nous allons établir quelques règles de base.
+ Si un refcount est incrémenté, le conteneur est toujours utilisé, donc pas nettoyé. Si le refcount
+ est décrémenté et atteint zéro, le conteneur zval peut être supprimé et la mémoire libérée. Premièrement, ceci signifie
+ que les cycles perturbateurs ne peuvent être créés que lorsque le refcount est décrémenté vers une valeur
+ différente de zéro. Ensuite, dans un cycle problématique, il est possible de détecter les déchets en
+ vérifiant s'il est possible ou non de décrémenter leur refcount de un, en vérifiant ensuite quelles zvals
+ ont un refcount à zéro.
+
+
+
+ Algorithme de collecte des déchets
+
+
+
+
+
+
+ Pour éviter d'avoir à appeler la routine de nettoyage à chaque décrémentation de refcount possible,
+ l'algorithme place toutes les zval racines dans un "tampon de racines" (en les marquant en "violet").
+ Il s'assure aussi que chaque racine n'apparaisse qu'une seule fois dans le tampon. Le
+ mécanisme de nettoyage n'intervient alors que lorsque le tampon est plein. Voyez l'étape A
+ sur la figure ci-dessus.
+
+
+ A l'étape B, l'algorithme lance une recherche sur toutes les racines possibles, afin de
+ décrémenter de une unité les refcounts de toutes les zvals qu'il trouve, en faisant bien
+ attention de ne pas décrémenter deux fois le refcount de la même zval (en les marquant
+ comme "grises"). A l'étape C, l'algorithme relance une recherche sur toutes les racines
+ possibles et scrute la valeur de refcount de chaque zval. S'il trouve un refcount à zéro,
+ la zval est marquée comme "blanche" (bleu sur la figure). S'il trouve une valeur supérieure à zéro,
+ il annule la décrémentation du refcount en refaisant une recherche à partir de ce nœud, et les
+ marque comme "noires" à nouveau. Dans la dernière étape, D, l'algorithme parcourt tout le
+ tampon des racines et les supprime, tout en scrutant chaque zval ; toute zval marquée
+ comme "blanche" à l'étape précédente sera alors supprimée de la mémoire.
+
+
+ Maintenant que vous savez globalement comment l'algorithme fonctionne, nous allons
+ voir comment il a été intégré dans PHP. Par défaut, le ramasse-miettes de PHP est
+ activé. Il existe cependant une option de &php.ini; pour changer cela :
+ zend.enable_gc.
+
+
+ Lorsque le ramasse-miettes est activé, l'algorithme de recherche des cycles
+ décrit ci-dessus est exécuté à chaque fois que le tampon est plein. Le tampon de
+ racines a une taille fixée à 10.000 racines (ce paramètre est changeable grâce à
+ GC_THRESHOLD_DEFAULT dans Zend/zend_gc.c
+ dans le code source de PHP, une recompilation est donc nécessaire). Si le ramasse-
+ miettes est désactivé, la recherche des cycles l'est aussi. Cependant, les racines
+ possibles seront toujours enregistrées dans le tampon, ceci ne dépend pas de l'activation
+ du ramasse-miettes.
+
+
+ Si le tampon est plein alors que le mécanisme de nettoyage est désactivé, les racines
+ ne seront plus enregistrées. Ces racines ne seront donc jamais analysées par l'algorithme,
+ et si elles faisaient partie de références circulaires, elles ne seront jamais nettoyées,
+ et elles causeront des fuites de mémoire.
+
+
+ La raison pour laquelle les racines possibles sont enregistrées dans le tampon
+ même si le mécanisme est désactivé est qu'il aurait été trop coûteux de vérifier l'activation
+ éventuelle du mécanisme à chaque tentative d'ajout d'une racine dans le tampon. Le mécanisme
+ de ramasse-miettes et d'analyse peut, lui, être très coûteux en temps.
+
+
+ En plus de pouvoir changer la valeur du paramètre de configuration
+ zend.enable_gc, vous pouvez aussi activer ou désactiver le mécanisme de
+ ramasse-miettes en appelant les fonctions gc_enable ou
+ gc_disable respectivement. Utiliser ces fonctions aura le même effet que de
+ modifier le paramètre de configuration. Vous avez aussi la possibilité de forcer l'exécution du
+ ramasse-miettes à un moment donné dans votre script, même si le tampon n'est pas encore
+ complètement plein. Utilisez pour cela la fonction gc_collect_cycles,
+ qui retournera le nombre de cycles alors collectés.
+
+
+ Vous pouvez prendre le contrôle en désactivant le ramasse-miettes ou en le
+ forçant à passer à un moment donné car certaines parties de votre application
+ pourraient être fortement dépendantes du temps de traitement, auquel cas vous pourriez
+ souhaiter que le ramasse-miettes ne se lance pas. Bien entendu, en désactivant le
+ ramasse-miettes pour certaines parties de votre application, vous prenez le risque de créer
+ des fuites de mémoire, puisque certaines racines probables pourraient ne pas être
+ enregistrées dans le tampon mémoire de taille limitée.
+ En conséquence, il est généralement recommandé de déclencher manuellement le processus grâce à
+ gc_collect_cycles juste avant l'appel à
+ gc_disable, pour libérer de la mémoire. Ceci laissera un tampon
+ vidé, et il y aura plus d'espace pour des racines probables lorsque
+ le mécanisme sera désactivé.
+
+
+
+
+ Considérations sur les performances
+
+ Nous avons déjà vu dans les sections précédentes que la collecte des racines probables
+ avait un impact très léger sur les performances, mais c'est lorsque l'on compare PHP 5.2 à
+ PHP 5.3. Même si l'enregistrement des racines probables est plus lent que de ne pas les
+ enregistrer du tout, comme dans PHP 5.2, d'autres améliorations apportées par PHP 5.3
+ font que cette opération ne se ressent pas au niveau des performances.
+
+
+ Il y a principalement deux niveaux pour lesquels les performances sont affectées.
+ Le premier est l'empreinte mémoire réduite, et le second est le délai à l'exécution,
+ lorsque le mécanisme de nettoyage effectue son opération de libération de mémoire.
+ Nous allons étudier ces deux axes.
+
+
+
+ Empreinte mémoire réduite
+
+ Avant tout, la raison principale de l'implémentation du mécanisme de collecte des déchets
+ est la réduction de la mémoire consommée, en nettoyant les références circulaires lorsque
+ les conditions requises sont remplies.
+ Avec PHP, ceci arrive dès que le tampon de racines est plein, ou lorsque la
+ fonction gc_collect_cycles est appelée. Sur le graphe ci-après, nous
+ affichons l'utilisation mémoire du script suivant, avec PHP 5.2 et avec PHP 5.3, en excluant
+ la mémoire obligatoire que PHP consomme pour lui-même au démarrage.
+
+
+
+ Exemple d'utilisation mémoire
+
+self = $a;
+ if ( $i % 500 === 0 )
+ {
+ echo sprintf( '%8d: ', $i ), memory_get_usage() - $baseMemory, "\n";
+ }
+}
+?>
+]]>
+
+
+ Comparaison de la consommation mémoire entre PHP 5.2 et PHP 5.3
+
+
+
+
+
+
+
+ Dans cet exemple quelque peu académique, nous créons un objet possédant un attribut le référençant
+ lui-même. Lorsque la variable $a dans le script est réassignée à
+ l'itération suivante, une fuite mémoire apparaitra. Dans ce cas, les deux conteneurs zval
+ fuient (la zval de l'objet et celle de l'attribut), mais une seule racine possible
+ est trouvée : la variable qui a été supprimée. Lorsque le tampon de racines est plein après
+ 10.000 itérations (avec un total de 10.000 racines possibles), le mécanisme de collecte des
+ déchets entre en jeu et libère la mémoire associée à ces racines probables. Cela se voit
+ très clairement sur les graphes d'utilisation mémoire de PHP 5.3. Après chaque 10.000
+ itérations, le mécanisme se déclenche et libère la mémoire associée aux variables circulairement
+ référencées. Le mécanisme en question n'a pas énormément de travail dans cet exemple, parce que
+ la structure qui a fuit est extrêmement simple.
+ Le diagramme montre que l'utilisation maximale de mémoire de PHP 5.3 est d'environ
+ 9Mo, là où elle n'arrête pas d'augmenter avec PHP 5.2.
+
+
+
+
+ Ralentissements durant l'exécution
+
+ Le second point où le mécanisme de collecte des déchets (GC) affecte les performances
+ est lorsqu'il est exécuté pour libérer la mémoire "gaspillée". Pour quantifier cet
+ impact, nous modifions légèrement le script précédent afin d'avoir un nombre d'itérations
+ plus élevé et de supprimer la collecte de l'usage mémoire intermédiaire.
+ Le second script est reproduit ci-dessous :
+
+
+
+ Impact de GC sur les performances
+
+self = $a;
+}
+
+echo memory_get_peak_usage(), "\n";
+?>
+]]>
+
+
+
+
+ Nous allons lancer ce script 2 fois, une fois avec
+ zend.enable_gc à on, et une fois à off:
+
+
+
+ Lancement du script ci-dessus
+
+
+
+
+
+
+ Sur ma machine, la première commande semble durer tout le temps 10,7 secondes,
+ alors que la seconde commande prend environ 11,4 secondes. Cela correspond à un ralentissement
+ de 7% approximativement. Cependant, la quantité totale de mémoire utilisée par le script est réduite
+ de 98%, passant de 931Mo à 10Mo. Ce benchmark n'est pas très scientifique ou même
+ représentatif d'applications réelles, mais il démontre concrètement en quoi le mécanisme
+ de collecte des déchets peut être utile au niveau de la consommation mémoire. Le bon point
+ est que le ralentissement est toujours de 7%, dans le cas particulier de ce script, alors
+ que la mémoire préservée sera de plus en plus importante au fur et à mesure que
+ des références circulaires apparaitront durant l'exécution.
+
+
+
+
+ Statistiques internes du GC de PHP
+
+ Il est possible d'obtenir quelques informations supplémentaires concernant le mécanisme de collecte
+ des déchets interne à PHP. Mais pour cela, il vous faut recompiler PHP avec le support
+ du benchmarking et de la collecte de données. Vous devrez renseigner la variable
+ d'environnement CFLAGS avec -DGC_BENCH=1 avant
+ de lancer ./configure avec les options qui vous intéressent.
+ L'exemple suivant démontre cela :
+
+
+
+ Recompiler PHP pour activer le support du benchmark du GC
+
+
+
+
+
+
+ Lorsque vous ré-exécutez le code du script ci-dessus avec le binaire PHP fraichement
+ reconstruit, vous devriez voir le résultat suivant après l'exécution :
+
+
+
+ Statistiques GC
+
+
+
+
+
+
+ Les statistiques les plus intéressantes sont affichées dans le premier bloc. Vous voyez ici
+ que le mécanisme de collecte des déchets a été déclenché 110 fois, et qu'au total ce sont
+ plus de 2 millions d'allocations mémoire qui ont été libérées durant ces 110 passages.
+ Dès lors que le mécanisme est intervenu au moins une fois, le pic du buffer racine est toujours
+ de 10000.
+
+
+
+
+ Conclusion
+
+ De manière générale, la collecte des déchets de PHP ne causera un ralentissement
+ que lorsque l'algorithme de collecte de cycles tournera, ce qui signifie que dans les scripts
+ normaux (plus courts), il ne devrait pas du tout y avoir d'impact sur les performances.
+
+
+ Cependant, lorsque le mécanisme de collecte de cycles sera déclenché dans des scripts
+ normaux, la réduction de l'empreinte mémoire permettra l'exécution parallèle d'un nombre plus
+ important de ces scripts, puisque moins de mémoire sera utilisée au total.
+
+
+ Les avantages se sentent plus nettement dans le cas de scripts démons ou devant tourner longtemps.
+ Ainsi, pour les applications PHP-GTK qui tournent souvent
+ plus longtemps que des scripts pour le Web, le nouveau mécanisme devrait réduire
+ significativement les fuites mémoire sur le long terme.
+
+
+
+
+
+
From 8e6d950d6cdc0629b221e929ae658e61ce11c061 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Wed, 18 Feb 2026 22:05:29 +0100
Subject: [PATCH 04/96] Fix faq/: plural agreement and missing type tag
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- mailinglist.xml: fix "diffusions" → "diffusion" (singular in compound noun)
- html.xml: restore string tag instead of plain text
---
faq/html.xml | 714 ++++++++++++++++++++++----------------------
faq/mailinglist.xml | 428 +++++++++++++-------------
2 files changed, 571 insertions(+), 571 deletions(-)
diff --git a/faq/html.xml b/faq/html.xml
index a454416a68..d9608934c0 100644
--- a/faq/html.xml
+++ b/faq/html.xml
@@ -1,357 +1,357 @@
-
-
-
-
-
-
- PHP et HTML
- PHP et HTML
-
-
- PHP et HTML sont très interactifs : PHP peut générer du HTML et HTML
- peut passer des informations à PHP. Avant de lire cette faq (foire aux
- questions), il est important que vous appreniez comment récupérer des variables externes à PHP.
- La page du manuel correspondante contient beaucoup d'exemples.
-
-
-
-
-
-
- Quel encodage/décodage ai-je besoin lors du passage d'une valeur via
- un formulaire/une URL ?
-
-
-
-
- Il y a plusieurs étapes pour lesquelles le codage est important. En supposant que vous avez
- une chaîne de caractères $data, qui contient la chaîne
- que vous voulez passer de manière non-encodée, voici les étapes appropriées :
-
-
-
- Interprétation HTML. Afin d'indiquer une chaîne aléatoire, vous
- devez l'inclure entre doubles guillemets et
- utiliser la fonction htmlspecialchars pour encoder
- la chaîne.
-
-
-
-
- URL : une URL est constituée de plusieurs parties. Si vous voulez que vos données
- soient interprétées comme un seul élément, vous devez
- les encoder avec la fonction urlencode.
-
-
-
-
-
-
- Un élément de formulaire HTML caché
-
-'."\n";
-?>
-]]>
-
-
-
-
- Il n'est pas correct d'utiliser la fonction urlencode
- pour vos données $data, car il en est de la responsabilité du
- navigateur de les encoder. Tous les navigateurs populaires le font correctement.
- Notez que cela s'effectue sans considération de la méthode utilisée
- (c'est-à-dire
- GET ou POST).
- Vous devez uniquement noter ce cas pour les requêtes GET,
- car les requêtes POST sont généralement cachées.
-
-
-
- Données éditables par l'utilisateur
-
-\n";
-echo htmlspecialchars($data)."\n";
-echo '';
-?>
-]]>
-
-
-
-
- Les données sont montrées dans le navigateur comme prévues, car celui-ci interprétera
- les symboles HTML échappés.
-
-
- Au moment de la validation, via la méthode GET ou
- POST, les données devraient être
- url-encodées par le navigateur avant le transfert et directement url-décodées par PHP.
- Donc, finalement, vous n'avez pas à effectuer d'url-encodage/url-decodage vous-même,
- tout est effectué automatiquement.
-
-
-
- Dans une URL
-
-'."\n";
-?>
-]]>
-
-
-
-
- En fait, vous simulez une requête GET HTML, il est nécessaire
- d'utiliser manuellement la fonction urlencode sur vos données.
-
-
-
-
- Vous devez utiliser htmlspecialchars sur l'URL complète,
- car l'URL se comporte comme la valeur d'un attribut HTML. Dans ce cas, le navigateur
- fera un htmlspecialchars sur la valeur et passera le résultat à
- l'URL. PHP devrait comprendre l'URL correctement, car vous avez url-encodé les données.
-
-
- Vous devez noter que & dans l'URL est remplacé par
- &. Bien que la plupart des navigateurs devraient
- corriger cela si vous l'oubliez, ce n'est pas toujours le cas. Donc, même si votre URL
- n'est pas dynamique, vous devez utiliser
- la fonction htmlspecialchars sur l'URL.
-
-
-
-
-
-
-
-
-
-
- J'essaye d'utiliser <input type="image"> mais
- les variables $foo.x et $foo.y
- ne sont pas disponibles. $_GET['foo.x'] n'existe pas non plus.
- Où sont-elles ?
-
-
-
-
- Lorsque vous validez un formulaire, il est possible d'utiliser une image au lieu du bouton
- standard de type "submit" avec une balise du type :
-
-
-]]>
-
- Lorsque l'utilisateur clique sur l'image, le formulaire est transmis au serveur avec deux
- variables supplémentaires : foo.x et
- foo.y qui représentent les coordonnées du point cliqué.
-
-
- Comme foo.x et foo.y sont
- des noms de variables invalides en PHP, elles sont automatiquement converties
- en foo_x et foo_y. Les points sont
- remplacés par des soulignés. Donc, vous devez accéder à ces variables
- comme n'importe quelle autre variable tel que décrit dans la section
- "Variables provenant d'autres sources".
- Par exemple, en utilisant $_GET['foo_x'].
-
-
- Les espaces dans les noms de variables sont également converties en un souligné bas.
-
-
-
-
-
-
-
-
- Comment créer un tableau dans une balise <form> HTML ?
-
-
-
- Pour envoyer le résultat du <form> comme un tableau
- de variables à votre script PHP, vous devez nommer, via l'attribut name, les balises
- <input>, <select> ou <textarea> comme cela :
-
-
-
-
-
-]]>
-
- Noter les crochets après le nom de la variable, c'est ce qui fait que celle-ci sera un tableau.
- Vous pouvez grouper les éléments dans différents tableaux de variables en assignant le
- même nom à différents éléments :
-
-
-
-
-
-]]>
-
- Cela produira deux tableaux de variables, MonTableau et MonAutreTableau, qui seront
- envoyés au script PHP. Il est également possible d'assigner des clés spécifiques à votre
- tableau :
-
-
-
-
-
-]]>
-
- Le tableau UnAutreTableau contiendra les clés 0, 1, email et telephone.
-
-
-
-
- Le fait de spécifier une clé à un tableau est optionnel en HTML. Si vous ne le faites pas,
- les clés du tableau suiveront l'ordre d'apparition des éléments dans le formulaire.
- Dans notre premier exemple, le tableau contient les clés 0, 1, 2 et 3.
-
-
-
-
- Voir aussi les
- fonctions sur les tableaux de variables et la section
- sur les
- variables provenant d'autres sources.
-
-
-
-
-
-
-
- Comment puis-je récupérer le résultat d'un champ HTML SELECT
- multiple ?
-
-
-
-
- Le champ SELECT multiple en HTML permet à l'utilisateur de
- sélectionner plusieurs éléments d'une liste.
- Ces éléments seront transmis à la page pointée par l'attribut
- action de la balise form.
- Le problème est que ces éléments sont tous passés avec le même nom de variable.
-
-
-]]>
-
- Chaque option sélectionnée arrivera au mécanisme de traitement sous la forme :
-
-var=option1
-var=option2
-var=option3
-
- Chaque option effacera donc le contenu de la précédente variable
- $var. La solution consiste à utiliser un tableau de variables
- dans cet élément de formulaire HTML, par exemple :
-
-
-]]>
-
- Cela fera que PHP traitera $var comme un tableau de
- variables et que chaque assignement de valeur à var[] ajoutera un index au tableau.
- La première option choisie sera mise dans $var[0],
- la suivante sera mise dans $var[1], etc. La fonction
- count peut être utilisée pour déterminer combien
- d'options ont été sélectionnées, et la fonction sort
- peut être utilisée pour trier le tableau, si nécessaire.
-
-
- Notez que si vous utilisez Javascript, [] dans le nom de l'élément peut
- vous poser problème lorsque vous tenterez d'accéder à celui-ci par son nom.
- Utilisez plutôt l'indice numérique de l'élément dans ce cas, ou bien utilisez les simples
- guillemets pour entourer cet élément, comme :
-
-variable = document.forms[0].elements['var[]'];
-
-
-
-
-
-
-
-
- Comment puis-je passer une variable de Javascript vers PHP ?
-
-
-
-
- Javascript est (habituellement) une technologie côté client et PHP
- est (habituellement) une technologie côté serveur et sachant que HTTP est un
- protocole statique, les deux langages ne peuvent pas directement partager des
- variables.
-
-
- Cependant, il est possible de faire passer des variables entre les deux.
- Une des solutions pour cela est de générer un code Javascript à l'aide de PHP
- et de faire rafraîchir le navigateur tout seul, passant ainsi des variables spécifiques
- au script PHP. L'exemple suivant montre précisément comme réaliser cela --
- il permet à PHP de récupérer les dimensions de l'écran du client, ce qui est normalement
- possible qu'en technologie côté client.
-
-
-
- Génération de Javascript avec PHP
-
-\n";
- echo 'La hauteur de l\'écran est : ' . $_GET['hauteur'] . " \n";
-} else {
- // passage des variables de dimensions
- // (préservation de la requête d'origine
- // -- les variables par méthode POST doivent être traitées différemment)
-
- echo "\n";
- exit();
-}
-?>
-]]>
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+ PHP et HTML
+ PHP et HTML
+
+
+ PHP et HTML sont très interactifs : PHP peut générer du HTML et HTML
+ peut passer des informations à PHP. Avant de lire cette faq (foire aux
+ questions), il est important que vous appreniez comment récupérer des variables externes à PHP.
+ La page du manuel correspondante contient beaucoup d'exemples.
+
+
+
+
+
+
+ Quel encodage/décodage ai-je besoin lors du passage d'une valeur via
+ un formulaire/une URL ?
+
+
+
+
+ Il y a plusieurs étapes pour lesquelles le codage est important. En supposant que vous avez
+ une string$data, qui contient la chaîne
+ que vous voulez passer de manière non-encodée, voici les étapes appropriées :
+
+
+
+ Interprétation HTML. Afin d'indiquer une chaîne aléatoire, vous
+ devez l'inclure entre doubles guillemets et
+ utiliser la fonction htmlspecialchars pour encoder
+ la chaîne.
+
+
+
+
+ URL : une URL est constituée de plusieurs parties. Si vous voulez que vos données
+ soient interprétées comme un seul élément, vous devez
+ les encoder avec la fonction urlencode.
+
+
+
+
+
+
+ Un élément de formulaire HTML caché
+
+'."\n";
+?>
+]]>
+
+
+
+
+ Il n'est pas correct d'utiliser la fonction urlencode
+ pour vos données $data, car il en est de la responsabilité du
+ navigateur de les encoder. Tous les navigateurs populaires le font correctement.
+ Notez que cela s'effectue sans considération de la méthode utilisée
+ (c'est-à-dire
+ GET ou POST).
+ Vous devez uniquement noter ce cas pour les requêtes GET,
+ car les requêtes POST sont généralement cachées.
+
+
+
+ Données éditables par l'utilisateur
+
+\n";
+echo htmlspecialchars($data)."\n";
+echo '';
+?>
+]]>
+
+
+
+
+ Les données sont montrées dans le navigateur comme prévues, car celui-ci interprétera
+ les symboles HTML échappés.
+
+
+ Au moment de la validation, via la méthode GET ou
+ POST, les données devraient être
+ url-encodées par le navigateur avant le transfert et directement url-décodées par PHP.
+ Donc, finalement, vous n'avez pas à effectuer d'url-encodage/url-decodage vous-même,
+ tout est effectué automatiquement.
+
+
+
+ Dans une URL
+
+'."\n";
+?>
+]]>
+
+
+
+
+ En fait, vous simulez une requête GET HTML, il est nécessaire
+ d'utiliser manuellement la fonction urlencode sur vos données.
+
+
+
+
+ Vous devez utiliser htmlspecialchars sur l'URL complète,
+ car l'URL se comporte comme la valeur d'un attribut HTML. Dans ce cas, le navigateur
+ fera un htmlspecialchars sur la valeur et passera le résultat à
+ l'URL. PHP devrait comprendre l'URL correctement, car vous avez url-encodé les données.
+
+
+ Vous devez noter que & dans l'URL est remplacé par
+ &. Bien que la plupart des navigateurs devraient
+ corriger cela si vous l'oubliez, ce n'est pas toujours le cas. Donc, même si votre URL
+ n'est pas dynamique, vous devez utiliser
+ la fonction htmlspecialchars sur l'URL.
+
+
+
+
+
+
+
+
+
+
+ J'essaye d'utiliser <input type="image"> mais
+ les variables $foo.x et $foo.y
+ ne sont pas disponibles. $_GET['foo.x'] n'existe pas non plus.
+ Où sont-elles ?
+
+
+
+
+ Lorsque vous validez un formulaire, il est possible d'utiliser une image au lieu du bouton
+ standard de type "submit" avec une balise du type :
+
+
+]]>
+
+ Lorsque l'utilisateur clique sur l'image, le formulaire est transmis au serveur avec deux
+ variables supplémentaires : foo.x et
+ foo.y qui représentent les coordonnées du point cliqué.
+
+
+ Comme foo.x et foo.y sont
+ des noms de variables invalides en PHP, elles sont automatiquement converties
+ en foo_x et foo_y. Les points sont
+ remplacés par des soulignés. Donc, vous devez accéder à ces variables
+ comme n'importe quelle autre variable tel que décrit dans la section
+ "Variables provenant d'autres sources".
+ Par exemple, en utilisant $_GET['foo_x'].
+
+
+ Les espaces dans les noms de variables sont également converties en un souligné bas.
+
+
+
+
+
+
+
+
+ Comment créer un tableau dans une balise <form> HTML ?
+
+
+
+ Pour envoyer le résultat du <form> comme un tableau
+ de variables à votre script PHP, vous devez nommer, via l'attribut name, les balises
+ <input>, <select> ou <textarea> comme cela :
+
+
+
+
+
+]]>
+
+ Noter les crochets après le nom de la variable, c'est ce qui fait que celle-ci sera un tableau.
+ Vous pouvez grouper les éléments dans différents tableaux de variables en assignant le
+ même nom à différents éléments :
+
+
+
+
+
+]]>
+
+ Cela produira deux tableaux de variables, MonTableau et MonAutreTableau, qui seront
+ envoyés au script PHP. Il est également possible d'assigner des clés spécifiques à votre
+ tableau :
+
+
+
+
+
+]]>
+
+ Le tableau UnAutreTableau contiendra les clés 0, 1, email et telephone.
+
+
+
+
+ Le fait de spécifier une clé à un tableau est optionnel en HTML. Si vous ne le faites pas,
+ les clés du tableau suiveront l'ordre d'apparition des éléments dans le formulaire.
+ Dans notre premier exemple, le tableau contient les clés 0, 1, 2 et 3.
+
+
+
+
+ Voir aussi les
+ fonctions sur les tableaux de variables et la section
+ sur les
+ variables provenant d'autres sources.
+
+
+
+
+
+
+
+ Comment puis-je récupérer le résultat d'un champ HTML SELECT
+ multiple ?
+
+
+
+
+ Le champ SELECT multiple en HTML permet à l'utilisateur de
+ sélectionner plusieurs éléments d'une liste.
+ Ces éléments seront transmis à la page pointée par l'attribut
+ action de la balise form.
+ Le problème est que ces éléments sont tous passés avec le même nom de variable.
+
+
+]]>
+
+ Chaque option sélectionnée arrivera au mécanisme de traitement sous la forme :
+
+var=option1
+var=option2
+var=option3
+
+ Chaque option effacera donc le contenu de la précédente variable
+ $var. La solution consiste à utiliser un tableau de variables
+ dans cet élément de formulaire HTML, par exemple :
+
+
+]]>
+
+ Cela fera que PHP traitera $var comme un tableau de
+ variables et que chaque assignement de valeur à var[] ajoutera un index au tableau.
+ La première option choisie sera mise dans $var[0],
+ la suivante sera mise dans $var[1], etc. La fonction
+ count peut être utilisée pour déterminer combien
+ d'options ont été sélectionnées, et la fonction sort
+ peut être utilisée pour trier le tableau, si nécessaire.
+
+
+ Notez que si vous utilisez Javascript, [] dans le nom de l'élément peut
+ vous poser problème lorsque vous tenterez d'accéder à celui-ci par son nom.
+ Utilisez plutôt l'indice numérique de l'élément dans ce cas, ou bien utilisez les simples
+ guillemets pour entourer cet élément, comme :
+
+variable = document.forms[0].elements['var[]'];
+
+
+
+
+
+
+
+
+ Comment puis-je passer une variable de Javascript vers PHP ?
+
+
+
+
+ Javascript est (habituellement) une technologie côté client et PHP
+ est (habituellement) une technologie côté serveur et sachant que HTTP est un
+ protocole statique, les deux langages ne peuvent pas directement partager des
+ variables.
+
+
+ Cependant, il est possible de faire passer des variables entre les deux.
+ Une des solutions pour cela est de générer un code Javascript à l'aide de PHP
+ et de faire rafraîchir le navigateur tout seul, passant ainsi des variables spécifiques
+ au script PHP. L'exemple suivant montre précisément comme réaliser cela --
+ il permet à PHP de récupérer les dimensions de l'écran du client, ce qui est normalement
+ possible qu'en technologie côté client.
+
+
+
+ Génération de Javascript avec PHP
+
+\n";
+ echo 'La hauteur de l\'écran est : ' . $_GET['hauteur'] . " \n";
+} else {
+ // passage des variables de dimensions
+ // (préservation de la requête d'origine
+ // -- les variables par méthode POST doivent être traitées différemment)
+
+ echo "\n";
+ exit();
+}
+?>
+]]>
+
+
+
+
+
+
+
+
+
+
diff --git a/faq/mailinglist.xml b/faq/mailinglist.xml
index c1083f5e66..5ab70bd35f 100644
--- a/faq/mailinglist.xml
+++ b/faq/mailinglist.xml
@@ -1,214 +1,214 @@
-
-
-
-
-
-
- Listes de diffusions
- Listes de diffusion
-
-
- Cette section traite des questions à propos de la communication avec la communauté PHP.
- Le meilleur moyen est l'utilisation des listes de diffusion.
-
-
-
-
-
- Existe-t-il des listes de diffusion PHP ?
-
-
-
- Bien sûr ! Il y a beaucoup de listes de diffusion traitant de beaucoup de sujets.
- Une liste des listes de diffusion les plus communes peut être trouvée sur cette
- page.
-
-
- La liste de diffusion la plus générale est la liste php-general.
- Pour s'y inscrire, envoyez un courriel vide à
- &url.ml.general.subscribe;.
- Pour se déinscrire, envoyez un courriel vide à
- &url.ml.general.unsubscribe;.
-
-
- Vous pouvez également vous inscrire et vous désinscrire en utilisant
- l'interface web sur cette page;
- les instructions pour se désinscrire sont également présentes en bas
- de chaque courriel de la liste.
-
-
-
-
-
-
- Y a-t-il d'autres communautés ?
-
-
-
- Il y a énormément de communautés PHP à travers le monde, et nous avons une liste
- de la plupart des ressources (ainsi que des informations pour en connaître
- d'autres) sur notre page de support.
-
-
-
-
-
-
- Puis-je mettre en place ma propre liste de diffusion PHP ?
-
-
-
- Absolument ! En fait, nous ne faisons pas que l'autoriser, mais nous l'encourageons !
- Le fait d'aider les autres en partageant ses compétences et son expérience de PHP
- aide dans le développement de la communauté PHP mais aussi dans le langage
- en tant que tel.
-
-
-
-
-
-
-
- Aidez-moi ! Je ne peux visiblement pas m'inscrire à une / me désinscrire d'une
- des listes de diffusion !
-
-
-
-
- La raison la plus courante pour laquelle les gens ont du mal à se désabonner de nos
- listes de diffusion c'est à cause des courriels redirigés. Par exemple, si
- votre adresse e-mail est elephpant@example.com, mais que vous vous
- êtes abonné à la liste de diffusion en utilisant la redirection php-lists@example.com et que vous redirigez cela vers
- elephpant@example.com, tenter de vous désabonner de elephpant@example.com ne fonctionnera pas,
- car cette adresse n'est même pas connue de nos systèmes. Au lieu de cela, vous devrez vous désabonner
- de l'adresse vers laquelle le courrier est envoyé, en envoyant un e-mail depuis
- cette adresse — dans cet exemple, php-lists@example.com.
-
-
-
-
-
-
- Y a-t-il une archive des listes de diffusion quelque part ?
-
-
-
- Oui, vous pouvez trouver la liste des sites proposant des archives
- sur la page des
- listes de diffusion.
- Vous pouvez également trouver plusieurs sites qui archivent ou publient
- le contenu de nos listes de diffusion en utilisant votre moteur de
- recherche Internet préféré, en cherchant, par exemple, la chaîne
- "php mailing list archives".
-
-
- Tous les messages de nos listes de diffusion sont également archivés
- dans des newsgroup. Vous pouvez accéder à ces serveurs sur &url.php.news; avec un client adapté.
- Il y a également une interface web expérimentale pour ces serveurs à l'adresse
- &url.php.newsweb;
-
-
-
-
-
-
- Que puis-je demander sur les listes de diffusion ?
-
-
-
- PHP devient de plus en plus populaire chaque jour, augmentant ainsi
- le trafic sur la liste de diffusion php-general qui accueille
- de 75 à 200 messages chaque jour. Aussi, c'est dans l'intérêt de tous que d'utiliser
- la liste de diffusion en dernier ressort, lorsque vous avez déjà épuisé toutes les
- autres voies.
-
-
- Avant de poster sur cette liste, merci de lire la FAQ (Foire Aux Questions) afin
- de voir si vous n'y trouvez pas de l'aide. S'il n'y a rien concernant votre problème,
- essayez dans les archives de la liste de diffusion (voir précédemment).
- Si vous avez des problèmes pour l'installation ou la configuration de PHP,
- lisez toute la documentation s'y rapportant, ainsi que les fichiers README.
- Si vous ne trouvez toujours pas de réponse à votre problème, vous
- êtes le bienvenu sur la liste de diffusion.
-
-
- Afin d'avoir la meilleure réponse à votre question (et pour éviter d'agacer
- les développeurs), assurez-vous de poser votre question sur la liste de diffusion
- appropriée. Par exemple, si vous avez des difficultés à installer PHP, vous
- devez poser votre question sur la liste de diffusion php-install.
- Attention : certaines listes ont des noms similaires, mais des usages totalement
- différents ; une question vis à vis des scripts PHP sous Windows doit être
- dirigée vers la liste des utilisateurs PHP sous Windows, et non
- vers la liste interne Windows.
-
-
- Avant de poser une question, vous devriez lire l'article intitulé
- "Comment poser une
- question de la meilleure façon" ; c'est une bonne idée, pour tout le monde.
-
-
-
-
-
-
- Quelle information devrais-je inclure lors de l'écriture de mon message à la
- liste de diffusion ?
-
-
-
- Les messages comme "Je n'arrive pas à faire fonctionner PHP !! Aidez-moi !!
- Qu'est-ce qu'il ne va pas ??" sont totalement inutiles, pour tous.
- Si vous avez des problèmes pour faire fonctionner PHP, vous devez inclure
- le système sur lequel le problème survient, quelle version de PHP vous tentez
- de faire fonctionner, sous quelle forme vous l'avez installée (précompilé,
- Git, RPMs, etc.), qu'est-ce que vous avez fait pour le moment, l'endroit où vous
- êtes coincé et quel est le message d'erreur.
-
-
- Cela est valable pour n'importe quel type de problème. Vous devez inclure les informations
- sur ce que vous avez fait, où vous êtes coincé, ce que vous cherché à faire et, si possible,
- le message d'erreur obtenu. Si vous avez un problème avec votre code source, vous
- devez également inclure la portion de code qui ne fonctionne pas. N'incluez que le code
- nécessaire à la compréhension du problème ! Si vous incluez tout le code, votre message
- sera difficile à lire et, à cause de cela, beaucoup de personnes passeront sans même le lire.
- Si vous n'êtes pas sûr sur la quantité d'informations à inclure à votre message,
- il est préférable d'en mettre trop que pas assez et préparez-vous à fournir d'autres
- informations.
-
-
- Un autre point important à ne pas oublier est de résumer votre problème
- dans l'objet du message. Un objet qui ressemble à "Aidez-moi !!!!" ou "Quel est le souci ici ?" sera
- ignoré par la majorité des lecteurs.
-
-
- Et pour finir, vous êtes encouragé à lire l'article sur
- "Comment poser une question de la meilleure
- façon", ce qui sera une aide énorme pour tous, et tout spécialement pour vous.
-
-
-
-
-
-
-
+
+
+
+
+
+
+ Listes de diffusion
+ Listes de diffusion
+
+
+ Cette section traite des questions à propos de la communication avec la communauté PHP.
+ Le meilleur moyen est l'utilisation des listes de diffusion.
+
+
+
+
+
+ Existe-t-il des listes de diffusion PHP ?
+
+
+
+ Bien sûr ! Il y a beaucoup de listes de diffusion traitant de beaucoup de sujets.
+ Une liste des listes de diffusion les plus communes peut être trouvée sur cette
+ page.
+
+
+ La liste de diffusion la plus générale est la liste php-general.
+ Pour s'y inscrire, envoyez un courriel vide à
+ &url.ml.general.subscribe;.
+ Pour se déinscrire, envoyez un courriel vide à
+ &url.ml.general.unsubscribe;.
+
+
+ Vous pouvez également vous inscrire et vous désinscrire en utilisant
+ l'interface web sur cette page;
+ les instructions pour se désinscrire sont également présentes en bas
+ de chaque courriel de la liste.
+
+
+
+
+
+
+ Y a-t-il d'autres communautés ?
+
+
+
+ Il y a énormément de communautés PHP à travers le monde, et nous avons une liste
+ de la plupart des ressources (ainsi que des informations pour en connaître
+ d'autres) sur notre page de support.
+
+
+
+
+
+
+ Puis-je mettre en place ma propre liste de diffusion PHP ?
+
+
+
+ Absolument ! En fait, nous ne faisons pas que l'autoriser, mais nous l'encourageons !
+ Le fait d'aider les autres en partageant ses compétences et son expérience de PHP
+ aide dans le développement de la communauté PHP mais aussi dans le langage
+ en tant que tel.
+
+
+
+
+
+
+
+ Aidez-moi ! Je ne peux visiblement pas m'inscrire à une / me désinscrire d'une
+ des listes de diffusion !
+
+
+
+
+ La raison la plus courante pour laquelle les gens ont du mal à se désabonner de nos
+ listes de diffusion c'est à cause des courriels redirigés. Par exemple, si
+ votre adresse e-mail est elephpant@example.com, mais que vous vous
+ êtes abonné à la liste de diffusion en utilisant la redirection php-lists@example.com et que vous redirigez cela vers
+ elephpant@example.com, tenter de vous désabonner de elephpant@example.com ne fonctionnera pas,
+ car cette adresse n'est même pas connue de nos systèmes. Au lieu de cela, vous devrez vous désabonner
+ de l'adresse vers laquelle le courrier est envoyé, en envoyant un e-mail depuis
+ cette adresse — dans cet exemple, php-lists@example.com.
+
+
+
+
+
+
+ Y a-t-il une archive des listes de diffusion quelque part ?
+
+
+
+ Oui, vous pouvez trouver la liste des sites proposant des archives
+ sur la page des
+ listes de diffusion.
+ Vous pouvez également trouver plusieurs sites qui archivent ou publient
+ le contenu de nos listes de diffusion en utilisant votre moteur de
+ recherche Internet préféré, en cherchant, par exemple, la chaîne
+ "php mailing list archives".
+
+
+ Tous les messages de nos listes de diffusion sont également archivés
+ dans des newsgroup. Vous pouvez accéder à ces serveurs sur &url.php.news; avec un client adapté.
+ Il y a également une interface web expérimentale pour ces serveurs à l'adresse
+ &url.php.newsweb;
+
+
+
+
+
+
+ Que puis-je demander sur les listes de diffusion ?
+
+
+
+ PHP devient de plus en plus populaire chaque jour, augmentant ainsi
+ le trafic sur la liste de diffusion php-general qui accueille
+ de 75 à 200 messages chaque jour. Aussi, c'est dans l'intérêt de tous que d'utiliser
+ la liste de diffusion en dernier ressort, lorsque vous avez déjà épuisé toutes les
+ autres voies.
+
+
+ Avant de poster sur cette liste, merci de lire la FAQ (Foire Aux Questions) afin
+ de voir si vous n'y trouvez pas de l'aide. S'il n'y a rien concernant votre problème,
+ essayez dans les archives de la liste de diffusion (voir précédemment).
+ Si vous avez des problèmes pour l'installation ou la configuration de PHP,
+ lisez toute la documentation s'y rapportant, ainsi que les fichiers README.
+ Si vous ne trouvez toujours pas de réponse à votre problème, vous
+ êtes le bienvenu sur la liste de diffusion.
+
+
+ Afin d'avoir la meilleure réponse à votre question (et pour éviter d'agacer
+ les développeurs), assurez-vous de poser votre question sur la liste de diffusion
+ appropriée. Par exemple, si vous avez des difficultés à installer PHP, vous
+ devez poser votre question sur la liste de diffusion php-install.
+ Attention : certaines listes ont des noms similaires, mais des usages totalement
+ différents ; une question vis à vis des scripts PHP sous Windows doit être
+ dirigée vers la liste des utilisateurs PHP sous Windows, et non
+ vers la liste interne Windows.
+
+
+ Avant de poser une question, vous devriez lire l'article intitulé
+ "Comment poser une
+ question de la meilleure façon" ; c'est une bonne idée, pour tout le monde.
+
+
+
+
+
+
+ Quelle information devrais-je inclure lors de l'écriture de mon message à la
+ liste de diffusion ?
+
+
+
+ Les messages comme "Je n'arrive pas à faire fonctionner PHP !! Aidez-moi !!
+ Qu'est-ce qu'il ne va pas ??" sont totalement inutiles, pour tous.
+ Si vous avez des problèmes pour faire fonctionner PHP, vous devez inclure
+ le système sur lequel le problème survient, quelle version de PHP vous tentez
+ de faire fonctionner, sous quelle forme vous l'avez installée (précompilé,
+ Git, RPMs, etc.), qu'est-ce que vous avez fait pour le moment, l'endroit où vous
+ êtes coincé et quel est le message d'erreur.
+
+
+ Cela est valable pour n'importe quel type de problème. Vous devez inclure les informations
+ sur ce que vous avez fait, où vous êtes coincé, ce que vous cherché à faire et, si possible,
+ le message d'erreur obtenu. Si vous avez un problème avec votre code source, vous
+ devez également inclure la portion de code qui ne fonctionne pas. N'incluez que le code
+ nécessaire à la compréhension du problème ! Si vous incluez tout le code, votre message
+ sera difficile à lire et, à cause de cela, beaucoup de personnes passeront sans même le lire.
+ Si vous n'êtes pas sûr sur la quantité d'informations à inclure à votre message,
+ il est préférable d'en mettre trop que pas assez et préparez-vous à fournir d'autres
+ informations.
+
+
+ Un autre point important à ne pas oublier est de résumer votre problème
+ dans l'objet du message. Un objet qui ressemble à "Aidez-moi !!!!" ou "Quel est le souci ici ?" sera
+ ignoré par la majorité des lecteurs.
+
+
+ Et pour finir, vous êtes encouragé à lire l'article sur
+ "Comment poser une question de la meilleure
+ façon", ce qui sera une aide énorme pour tous, et tout spécialement pour vous.
+
+
+
+
+
+
+
From f62c2f9fd5550df6608eb9652ba59fbefe2867fe Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Wed, 18 Feb 2026 22:05:36 +0100
Subject: [PATCH 05/96] Fix install/: grammar, typos, untranslated entries
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- fpm/configuration.xml: fix accords "enregistrés"→"enregistrées", "plus long"→"plus longs"
- fpm/configuration.xml: translate d(ays)→j(ours), Pool name, Query string
- fpm/configuration.xml: fix typo "environnent"→"environnement"
- fpm/configuration.xml: fix accord "spécifié"→"spécifiées"
- fpm/configuration.xml: fix conjugation "utiliserait"→"utiliseraient"
- windows/tools.xml: translate "and"→"et"
---
install/fpm/configuration.xml | 2196 ++++++++++++++++-----------------
install/windows/tools.xml | 66 +-
2 files changed, 1131 insertions(+), 1131 deletions(-)
diff --git a/install/fpm/configuration.xml b/install/fpm/configuration.xml
index 64fd3c225d..010cd93ad1 100644
--- a/install/fpm/configuration.xml
+++ b/install/fpm/configuration.xml
@@ -1,1098 +1,1098 @@
-
-
-
-
- Configuration
-
- FPM utilise la syntaxe &php.ini; pour son fichier de configuration
- - php-fpm.conf ainsi que les fichiers de configuration
- de la file d'attente.
-
-
- Liste des directives globales de php-fpm.conf
-
-
-
- pid
- &string;
-
-
-
- Chemin vers le fichier PID. Par défaut : none.
-
-
-
-
-
- error_log
- &string;
-
-
-
- Chemin vers le fichier de journal. Par défaut:
- #INSTALL_PREFIX#/log/php-fpm.log.
- Si défini à "syslog", le journal est envoyé vers syslogd au lieu d'être
- écrit dans un fichier local.
-
-
-
-
-
- log_level
- &string;
-
-
-
- Niveau de journalisation d'erreur. Valeurs possibles : alert, error, warning, notice,
- debug. Par défaut : notice.
-
-
-
-
-
- log_limit
- &integer;
-
-
-
- Limite d'historique pour les lignes enregistrés qui permet des messages d'événements plus long que 1024 caractères sans s'emballer.
- Valeur par défaut : 1024
- Disponible à partir de PHP 7.3.0.
-
-
-
-
-
- log_buffering
- &boolean;
-
-
-
- Historique expérimental sans tampon.
- Valeur par défaut : yes.
- Disponible à partir de PHP 7.3.0.
-
-
-
-
-
- syslog.facility
- &string;
-
-
-
- Utilisé pour spécifier quel type de programme écrit le message.
- Valeur par défaut : daemon.
-
-
-
-
-
- syslog.ident
- &string;
-
-
-
- Ajoute au début de chaque message.
- Si vous avez de multiples instances FPM s'exécutant sur le même serveur,
- vous pouvez changer la valeur par défaut afin qu'elle convienne à vos besoins.
- Valeur par défaut : php-fpm.
-
-
-
-
-
- emergency_restart_threshold
- &integer;
-
-
-
- Si ce nombre de processus fils terminent avec un SIGSEGV ou SIGBUS dans l'intervalle
- de temps précisé dans emergency_restart_interval, alors FPM redémarrera.
- Une valeur de 0 signifie 'Off'. Valeur par défaut : 0 (Off).
-
-
-
-
-
- emergency_restart_interval
- &mixed;
-
-
-
- Intervalle de temps utilisé par emergency_restart_interval pour determiner lorsqu'un
- redémarrage doux doit être lancé. Ceci peut être utile pour contourner des corruptions
- accidentelles dans la mémoire partagée d'un accélérateur. Unités disponibles :
- s(econdes), m(inutes), h(eures), ou d(ays).
- Unité par défaut : secondes. Valeur par défaut : 0 (Off).
-
-
-
-
-
- process_control_timeout
- &mixed;
-
-
-
- Temps limite qu'attendront les processus fils pour réagir aux signaux du père.
- Unités disponibles : s(econdes), m(inutes), h(eures), ou d(ays)
- Unité par défaut : secondes. Valeur par défaut : 0.
-
-
-
-
-
- process.max
- &integer;
-
-
-
- Le nombre maximum de processus que FPM va forker. Ceci a été conçu pour
- contrôler le nombre global de processus lors de l'utilisation d'un
- gestionnaire de processus dynamique avec beaucoup de pools. À utiliser avec attention.
- Valeur par défaut : 0.
-
-
-
-
-
- process.priority
- &integer;
-
-
-
- Défini la priorité nice(2) à appliquer au processus principal (uniquement si défini)
- La valeur peut varier de -19 (priorité haute) à 20 (priorité basse).
- Valeur par défaut : non défini.
-
-
-
-
-
- daemonize
- &boolean;
-
-
-
- Envoie FPM en arrière-plan. Mettez 'no' pour garder FPM au premier plan lors du
- débogage. Valeur par défaut : yes.
-
-
-
-
-
- rlimit_files
- &integer;
-
-
-
- Défini la rlimit pour les descripteurs de fichiers ouverts pour le
- processus principal.
- Valeur par défaut : valeur définie par le système.
-
-
-
-
-
- rlimit_core
- &integer;
-
-
-
- Défini la taille maximale de rlimit pour le processus principal.
- Valeur par défaut : 0.
-
-
-
-
-
- events.mechanism
- &string;
-
-
-
- Spécifie le gestionnaire d’événement que FPM va utiliser.
- Les options suivantes sont disponibles: epoll, kqueue (*BSD), port (Solaris), poll, select.
- Valeur par défaut: non définie (détection automatique privilégiant epoll et kqueue).
-
-
-
-
-
- systemd_interval
- &integer;
-
-
-
- Quand FPM est construit avec le support de systemd, spécifie l'intervalle en
- seconde, entre les notifications de rapport de santé envoyé à systemd.
- Définir à 0 pour désactiver.
- Valeur par défaut : 10.
-
-
-
-
-
-
-
- Liste des directives de pool
-
- Avec FPM vous pouvez exécuter plusieurs pools de processus avec des paramètres différents.
- Voici les paramètres qui peuvent être ajustés par pool.
-
-
-
-
- listen
- &string;
-
-
-
- L'adresse pour accepter des requêtes FastCGI. Syntaxes valides :
- 'ip.add.re.ss:port', 'port', '/path/to/unix/socket'.
- Cette option est obligatoire pour chaque pool.
-
-
-
-
-
- listen.backlog
- &integer;
-
-
-
- Affecte listen(2) backlog.
- Une valeur de -1 signifie le maximum sur les systèmes BSD.
- Valeur par défaut : -1 (FreeBSD ou OpenBSD)
- ou 511 (Linux et autres plateformes).
-
-
-
-
-
- listen.allowed_clients
- &string;
-
-
-
- Liste des adresses IPv4 ou IPv6 des clients FastCGI autorisés à se connecter.
- C'est équivalent à la variable d'environnement FCGI_WEB_SERVER_ADDRS dans le
- système FastCGI original de PHP (5.2.2+). N'a de sens qu'avec un socket tcp en
- écoute. Chaque adresse doit être séparée par une virgule. Si cette valeur n'est
- pas précisée, les connexions seront acceptées depuis toute adresse ip.
- Valeur par défaut: non définie (toute adresse IP acceptée).
-
-
-
-
-
- listen.owner
- &string;
-
-
-
- Affecte les permissions pour le socket Unix si utilisé. Sous Linux, les permissions read/write
- doivent être affectées pour autoriser des connexions depuis un serveur web. Beaucoup de systèmes
- dérivés BSD autorisent les connexions quelles que soient les permissions.
- Valeurs par défaut : user et group sont ceux de l'utilisateur courant, le mode est 0660.
-
-
-
-
-
- listen.group
- &string;
-
-
-
- Voyez listen.owner.
-
-
-
-
-
- listen.mode
- &string;
-
-
-
- Voyez listen.owner.
-
-
-
-
-
- listen.acl_users
- &string;
-
-
-
- Quand les listes de contrôle d'accès POSIX sont supportées, vous pouvez les définir en utilisant cette option.
- Quand défini, listen.owner et listen.group
- sont ignorés.
- La valeur est une liste de noms d'utilisateurs séparés par des virgules.
-
-
-
-
-
- listen.acl_groups
- &string;
-
-
-
- Voir listen.acl_users.
- La valeur est une liste de noms de groupes séparés par des virgules.
-
-
-
-
-
- listen.setfib
- int
-
-
-
- Définit la table de routage associée (FIB). FreeBSD uniquement.
- Valeur par défaut : -1. Depuis PHP 8.2.0.
-
-
-
-
-
- user
- &string;
-
-
-
- Utilisateur Unix des processus FPM. Cette option est obligatoire.
-
-
-
-
-
- group
- &string;
-
-
-
- Groupe Unix des processus FPM. Si non précisé, le groupe de l'utilisateur est
- utilisé.
-
-
-
-
-
- pm
- &string;
-
-
-
- Choisi comment le gestionnaire de processus va contrôler le nombre de processus fils.
- Valeurs possibles : static, ondemand,
- dynamic. Option obligatoire.
-
-
- static - nombre de processus fils fixés (pm.max_children).
-
-
- ondemand - le processus se réactive à la demande
- (lorsque demandé, c'est l'opposé de dynamique où pm.start_servers
- sont démarrés lorsque le service démarre).
-
-
- dynamic - nombre de processus fils dynamiques basé sur les directives suivantes:
- pm.max_children, pm.start_servers,
- pm.min_spare_servers, pm.max_spare_servers.
-
-
-
-
-
- pm.max_children
- &integer;
-
-
-
- Nombre de processus fils à créer lorsque pm est réglé sur
- static. Nombre maximum de processus fils à créer lorsque
- pm est réglé sur dynamic. Option obligatoire.
-
-
- Cette option affecte la limite du nombre de requêtes simultanées qui seront servies. Equivalent à
- ApacheMaxClients avec mpm_prefork et à PHP_FCGI_CHILDREN dans l'implémentation originale
- de FastCGI de PHP.
-
-
-
-
-
- pm.start_servers
- &integer;
-
-
-
- Nombre de processus fils à créer au démarrage. Utilisé seulement si
- pm est réglé sur dynamic.
- Valeur par défaut : (min_spare_servers + max_spare_servers) / 2.
-
-
-
-
-
- pm.min_spare_servers
- &integer;
-
-
-
- Nombre minimum de processus au repos (idle) voulus. Utilisé seulement si
- pm est réglé sur dynamic. Obligatoire dans
- ce cas.
-
-
-
-
-
- pm.max_spare_servers
- &integer;
-
-
-
- Nombre maximum de processus au repos (idle) voulus. Utilisé seulement si
- pm est réglé sur dynamic. Obligatoire dans
- ce cas.
-
-
-
-
-
- pm.max_spawn_rate
- int
-
-
-
- Nombre maximum de taux de génération de processus enfants simultanés. Utilisé seulement si
- pm est défini à dynamic.
-
-
-
-
-
- pm.process_idle_timeout
- &mixed;
-
-
-
- Nombre de secondes après lesquelles un processus inactif sera tué.
- Utilisé uniquement quand pm est défini à
- ondemand.
- Unités disponibles : s (secondes)(par défaut), m (minutes), h (heure), ou d (jour).
- Valeur par défaut : 10s.
-
-
-
-
-
- pm.max_requests
- &integer;
-
-
-
- Nombre de requêtes que chaque processus fils devrait exécuter avant de renaitre.
- Ceci peut être utile pour contourner des fuites mémoires dans des librairies tierces.
- Pour un traitement sans fin des requêtes, précisez '0'. Equivalent à
- PHP_FCGI_MAX_REQUESTS. Par défaut : 0.
-
-
-
-
-
- pm.status_listen
- string
-
-
-
- L'adresse sur laquelle accepter la demande de statut FastCGI. Cela crée un nouveau pool invisible
- qui peut traiter les requêtes indépendamment. Ceci est utile si le pool principal est occupé par des
- requêtes de longue durée car il est toujours possible d'obtenir le statut
- FPM status page tant qu'elles ne sont pas terminées.
- La syntaxe est la même que pour la directive listen.
- Valeur par défaut : none.
-
-
-
-
-
- pm.status_path
- &string;
-
-
-
- L'URI vers la page de statut de FPM.
- Cette valeur doit commencer par une barre oblique (/). Si cette valeur n'est pas définie,
- aucun URI ne sera reconnu en tant qu'une page d'état. Valeur par défaut : none.
-
-
-
-
-
- ping.path
- &string;
-
-
-
- L'URI de ping pour appeler la page de monitoring de FPM. Si aucune valeur n'est précisée,
- aucune page de ping ne sera disponible. Ceci pourrait être utilisé pour tester depuis l'extérieur
- si FPM est toujours disponible et prêt à répondre. Notez que la valeur doit commencer par un
- slash (/).
-
-
-
-
-
- ping.response
- &string;
-
-
-
- Cette directive est utile pour personnaliser la réponse à une requête de ping.
- La réponse est formatée comme text/plain avec un code de réponse de 200.
- Valeur par défaut : pong.
-
-
-
-
-
- process.priority
- &integer;
-
-
-
- Spécifiez la priorité nice(2) à appliquer au processus de travail
- (uniquement s'il est défini). La valeur peut varier de -19 (priorité
- la plus élevée) à 20 (priorité la plus basse). Valeur par
- défaut: non définie.
-
-
-
-
-
- process.dumpable
- &boolean;
-
-
-
- Défini l'indicateur de processus dumpable (PR_SET_DUMPABLE prctl) même
- si l'utilisateur ou le groupe de processus est différent de
- l'utilisateur du processus maître. Il permet de créer un core dump du
- processus et ptrace le processus pour l'utilisateur de pool. Valeur par
- défaut : no. Depuis PHP 7.0.29, 7.1.17 et 7.2.5.
-
-
-
-
-
- prefix
- &string;
-
-
-
- Spécifier le préfixe pour l'évaluation du chemin
-
-
-
-
-
- request_terminate_timeout_track_finished
- bool
-
-
-
- Le timeout défini par
- request_terminate_timeout n'est pas engagé
- après un fastcgi_finish_request ou
- lorsque l'application s'est terminée et que les fonctions internes d'arrêt sont appelées. Cette directive
- permet d'appliquer la limite de temps sans condition.
- Valeur par défaut : no. À partir de PHP 7.3.0.
-
-
-
-
-
- request_terminate_timeout
- &mixed;
-
-
-
- Le timeout pour servir une requête après lequel le processus concerné sera
- tué. Cette option devrait être utilisée lorsque l'option 'max_execution_time'
- n'arrête pas l'exécution du script pour une raison quelconque.
- Une valeur de '0' signifie
- 'Off'. Unités disponibles : s(econdes)(défaut), m(inutes), h(eures), ou d(ays).
- Par défaut : 0.
-
-
-
-
-
- request_slowlog_timeout
- &mixed;
-
-
-
- Le timeout pour servir une requête dans laquelle la backtrace PHP sera vidée
- dans le fichier 'slowlog'. Une valeur de '0' signifie 'Off'.
- Unités disponibles : s(econdes)(défaut), m(inutes), h(eures), ou d(ays).
- Par défaut : 0.
-
-
-
-
-
- request_slowlog_trace_depth
- int
-
-
-
- Le niveau de profondeur de la trace de la pile de log slowlog.
- Valeur par défaut : 20. À partir de PHP 7.2.0.
-
-
-
-
-
- slowlog
- &string;
-
-
-
- Le journal pour les requêtes lentes, par défaut:
- #INSTALL_PREFIX#/log/php-fpm.log.slow.
-
-
-
-
-
- rlimit_files
- &integer;
-
-
-
- Affecte la rlimit pour les descripteurs de fichiers ouverts des processus
- enfants de ce pool. Valeur par défaut : valeur du système.
-
-
-
-
-
- rlimit_core
- &integer;
-
-
-
- Affecte la taille maximale de rlimit des processus enfants de ce pool.
- Valeurs possibles : 'unlimited' ou un entier plus grand ou égal à 0.
- Valeur par défaut : valeur définie par le système.
-
-
-
-
-
- chroot
- &string;
-
-
-
- Chroot vers ce dossier au démarrage. Cette valeur doit être un chemin absolu.
- Si cette valeur n'est pas définie, chroot n'est pas utilisé.
-
-
-
-
-
- chdir
- &string;
-
-
-
- Chdir vers ce dossier au démarrage. Cette valeur doit être un chemin absolu.
- Valeur par défaut : dossier courant ou / si chroot.
-
-
-
-
-
- catch_workers_output
- &boolean;
-
-
-
- Redirige stdout et stderr vers le journal d'erreur principal. Si non précisé,
- stdout et stderr seront redirigés vers /dev/null selon les specifications FastCGI.
- Valeur par défaut: no.
-
-
-
-
-
- decorate_workers_output
- &boolean;
-
-
-
- Active la décoration de sortie pour les travailleurs de sortie quand
- catch_workers_output est activé.
- Valeur par défaut : yes.
- Disponible à partir de PHP 7.3.0.
-
-
-
-
-
- clear_env
- &boolean;
-
-
-
- Nettoie l’environnent des agents FPM.
- Prévient que des variables d’environnement arbitraire puissent
- atteindre les processus FPM par le nettoyage de l'environnement
- de ces agents avant que les variables d’environnement spécifié
- dans la configuration du pool ne soient ajoutées.
-
-
-
-
-
- security.limit_extensions
- &string;
-
-
-
- Limite les extensions que le script principal FPM va être autorisé à analyser.
- Ceci peut prévenir les erreurs de configuration côté serveur.
- Vous pouvez limiter FPM à exécuter seulement les extensions .php pour prévenir que des utilisateurs malicieux utilisent d'autres extensions pour exécuter du code.
- Valeur par défaut : .php .phar
-
-
-
-
-
- apparmor_hat
- string
-
-
-
- Si AppArmor est activé, permet de changer un hat (chapeau).
- Valeur par défaut : non défini
-
-
-
-
-
- access.log
- &string;
-
-
-
- Le fichier journal d'accès. Valeur par défaut : non définie
-
-
-
-
-
- access.format
- &string;
-
-
-
- Le format du journal d'accès.
- Valeur par défaut : "%R - %u %t \"%m %r\" %s":
-
- Options valide
-
-
-
- Placeholder
- &Description;
-
-
-
-
-
- %%
-
- Le caractère %
-
-
-
- %C
-
-
- %CPU utilisé par la requête. Les formats suivants sont acceptés :
- %{user}C pour la CPU utilisateur uniquement,
- %{system}C pour la CPU système uniquement,
- %{total}C pour la CPU utilisateur + système (par défaut)
-
-
-
-
- %d
-
-
- Temps pris pour traiter la requête.
- Les formats suivants sont acceptés pour la précision :
- %{seconds}d (par défaut), %{milliseconds}d,
- %{microseconds}d
-
-
-
-
- %{name}e
-
-
- Une variable d'environnement (identique à $_ENV ou $_SERVER).
- Un nom de variable doit être spécifié entre accolades pour indiquer le nom de la variable d'environnement.
- Par exemple, des informations spécifiques au serveur comme %{REQUEST_METHOD}e ou
- %{SERVER_PROTOCOL}e, des en-têtes HTTP tels que
- %{HTTP_HOST}e ou %{HTTP_USER_AGENT}e
-
-
-
-
- %f
-
- Nom du fichier script
-
-
-
- %l
-
-
- Content-Length de la requête (pour les requêtes HTTP POST uniquement)
-
-
-
-
- %m
-
- Méthode HTTP de la requête
-
-
-
- %M
-
-
- Pic de mémoire allouée par PHP.
- Accepte les formats suivants :
- %{bytes}M (défaut), %{kilobytes}M
- %{kilo}M, %{megabytes}M,
- %{mega}M
-
-
-
-
- %n
-
- Pool name
-
-
-
- %{name}o
-
-
- En-tête de sortie. Le nom de l'en-tête doit être spécifié entre accolades.
- Par exemple : %{Content-Type}o,
- %{X-Powered-By}o, %{Transfer-Encoding}o
-
-
-
-
- %p
-
- PID de l'enfant qui a traité la demande
-
-
-
- %P
-
- PID du parent de l'enfant qui a traité la demande
-
-
-
- %q
-
- Query string
-
-
-
- %Q
-
-
- Le caractère '?', ou le lien entre %q et %r,
- si la chaîne de requête existe
-
-
-
-
- %r
-
-
- URI de la requête sans la chaîne de requête,
- voir %q et %Q
-
-
-
-
- %R
-
- Adresse IP remote
-
-
-
- %s
-
- Statut (code de réponse)
-
-
-
- %t
-
-
- Heure du serveur à laquelle la requête a été reçue. Elle peut
- accepter un format strftime(3) :
- %d/%b/%Y:%H:%M:%S %z (par défaut).
- Le format strftime(3) doit être encapsulé dans
- une balise %{<strftime_format>}t, par exemple, pour une chaîne de temps au format ISO8601, utilisez :
- %{%Y-%m-%dT%H:%M:%S%z}t
-
-
-
-
- %T
-
-
- Heure à laquelle le log a été écrit (lorsque la requête s'est terminée). Elle peut accepter un
- format strftime(3) :
- %d/%b/%Y:%H:%M:%S %z (par défaut).
- Le format strftime(3) doit être encapsulé dans une
- balise %{<strftime_format>}T, par exemple, pour une chaîne de temps au format ISO8601, utilisez :
- %{%Y-%m-%dT%H:%M:%S%z}T
-
-
-
-
- %u
-
- Utilisateur d'authentification basique, si spécifié dans l'en-tête Authorization
-
-
-
-
-
-
-
-
-
- access.suppress_path
- array
-
-
-
- Une liste de valeurs request_uri qui devraient être filtrées du journal d'accès.
- Valeur par défaut : non définie. Depuis PHP 8.2.0.
-
-
-
-
-
- Il est possible de passer des variables d'environnement additionnelles et mettre à jour les paramètres
- de PHP d'un pool. Pour ce faire, vous devez ajouter les options suivantes au
- fichier de configuration de la file d'attente.
-
- Passer des variables d'environnement et des paramètres PHP à un pool
-
-
-
-
- Les paramètres PHP passés avec php_value ou
- php_flag écraseront leur valeur précédente.
- Notez que définir
- disable_functions ou
- disable_classes n'écrasera pas
- les valeurs concernées précédemment définies dans php.ini,
- mais rajouteront les valeurs à la suite des anciennes.
-
-
- Les paramètres définis avec php_admin_value et php_admin_flag
- ne peuvent être surchargés via ini_set.
-
-
- Les paramètres de PHP peuvent être définis dans le serveur web.
-
- Définit les paramètres PHP dans le fichier nginx.conf
-
-
-
-
-
-
- En raison du fait que ces configurations sont passées à php-fpm
- comme en-têtes fastcgi, php-fpm ne doit pas être relié directement
- au web et ainsi y être directement accessible. Sinon, tout le monde
- pourra altérer les options de configuration de PHP.
- Voir aussi l'option
- listen.allowed_clients.
-
-
-
-
- Les pools ne sont pas un mécanisme de sécurité, car elles ne
- fournissent pas une séparation totale ; par exemple toutes les pools
- utiliserait une seule instance OPcache.
-
-
-
-
-
-
-
-
+
+
+
+
+ Configuration
+
+ FPM utilise la syntaxe &php.ini; pour son fichier de configuration
+ - php-fpm.conf ainsi que les fichiers de configuration
+ de la file d'attente.
+
+
+ Liste des directives globales de php-fpm.conf
+
+
+
+ pid
+ &string;
+
+
+
+ Chemin vers le fichier PID. Par défaut : none.
+
+
+
+
+
+ error_log
+ &string;
+
+
+
+ Chemin vers le fichier de journal. Par défaut:
+ #INSTALL_PREFIX#/log/php-fpm.log.
+ Si défini à "syslog", le journal est envoyé vers syslogd au lieu d'être
+ écrit dans un fichier local.
+
+
+
+
+
+ log_level
+ &string;
+
+
+
+ Niveau de journalisation d'erreur. Valeurs possibles : alert, error, warning, notice,
+ debug. Par défaut : notice.
+
+
+
+
+
+ log_limit
+ &integer;
+
+
+
+ Limite d'historique pour les lignes enregistrées qui permet des messages d'événements plus longs que 1024 caractères sans s'emballer.
+ Valeur par défaut : 1024
+ Disponible à partir de PHP 7.3.0.
+
+
+
+
+
+ log_buffering
+ &boolean;
+
+
+
+ Historique expérimental sans tampon.
+ Valeur par défaut : yes.
+ Disponible à partir de PHP 7.3.0.
+
+
+
+
+
+ syslog.facility
+ &string;
+
+
+
+ Utilisé pour spécifier quel type de programme écrit le message.
+ Valeur par défaut : daemon.
+
+
+
+
+
+ syslog.ident
+ &string;
+
+
+
+ Ajoute au début de chaque message.
+ Si vous avez de multiples instances FPM s'exécutant sur le même serveur,
+ vous pouvez changer la valeur par défaut afin qu'elle convienne à vos besoins.
+ Valeur par défaut : php-fpm.
+
+
+
+
+
+ emergency_restart_threshold
+ &integer;
+
+
+
+ Si ce nombre de processus fils terminent avec un SIGSEGV ou SIGBUS dans l'intervalle
+ de temps précisé dans emergency_restart_interval, alors FPM redémarrera.
+ Une valeur de 0 signifie 'Off'. Valeur par défaut : 0 (Off).
+
+
+
+
+
+ emergency_restart_interval
+ &mixed;
+
+
+
+ Intervalle de temps utilisé par emergency_restart_interval pour determiner lorsqu'un
+ redémarrage doux doit être lancé. Ceci peut être utile pour contourner des corruptions
+ accidentelles dans la mémoire partagée d'un accélérateur. Unités disponibles :
+ s(econdes), m(inutes), h(eures), ou j(ours).
+ Unité par défaut : secondes. Valeur par défaut : 0 (Off).
+
+
+
+
+
+ process_control_timeout
+ &mixed;
+
+
+
+ Temps limite qu'attendront les processus fils pour réagir aux signaux du père.
+ Unités disponibles : s(econdes), m(inutes), h(eures), ou j(ours)
+ Unité par défaut : secondes. Valeur par défaut : 0.
+
+
+
+
+
+ process.max
+ &integer;
+
+
+
+ Le nombre maximum de processus que FPM va forker. Ceci a été conçu pour
+ contrôler le nombre global de processus lors de l'utilisation d'un
+ gestionnaire de processus dynamique avec beaucoup de pools. À utiliser avec attention.
+ Valeur par défaut : 0.
+
+
+
+
+
+ process.priority
+ &integer;
+
+
+
+ Défini la priorité nice(2) à appliquer au processus principal (uniquement si défini)
+ La valeur peut varier de -19 (priorité haute) à 20 (priorité basse).
+ Valeur par défaut : non défini.
+
+
+
+
+
+ daemonize
+ &boolean;
+
+
+
+ Envoie FPM en arrière-plan. Mettez 'no' pour garder FPM au premier plan lors du
+ débogage. Valeur par défaut : yes.
+
+
+
+
+
+ rlimit_files
+ &integer;
+
+
+
+ Défini la rlimit pour les descripteurs de fichiers ouverts pour le
+ processus principal.
+ Valeur par défaut : valeur définie par le système.
+
+
+
+
+
+ rlimit_core
+ &integer;
+
+
+
+ Défini la taille maximale de rlimit pour le processus principal.
+ Valeur par défaut : 0.
+
+
+
+
+
+ events.mechanism
+ &string;
+
+
+
+ Spécifie le gestionnaire d’événement que FPM va utiliser.
+ Les options suivantes sont disponibles: epoll, kqueue (*BSD), port (Solaris), poll, select.
+ Valeur par défaut: non définie (détection automatique privilégiant epoll et kqueue).
+
+
+
+
+
+ systemd_interval
+ &integer;
+
+
+
+ Quand FPM est construit avec le support de systemd, spécifie l'intervalle en
+ seconde, entre les notifications de rapport de santé envoyé à systemd.
+ Définir à 0 pour désactiver.
+ Valeur par défaut : 10.
+
+
+
+
+
+
+
+ Liste des directives de pool
+
+ Avec FPM vous pouvez exécuter plusieurs pools de processus avec des paramètres différents.
+ Voici les paramètres qui peuvent être ajustés par pool.
+
+
+
+
+ listen
+ &string;
+
+
+
+ L'adresse pour accepter des requêtes FastCGI. Syntaxes valides :
+ 'ip.add.re.ss:port', 'port', '/path/to/unix/socket'.
+ Cette option est obligatoire pour chaque pool.
+
+
+
+
+
+ listen.backlog
+ &integer;
+
+
+
+ Affecte listen(2) backlog.
+ Une valeur de -1 signifie le maximum sur les systèmes BSD.
+ Valeur par défaut : -1 (FreeBSD ou OpenBSD)
+ ou 511 (Linux et autres plateformes).
+
+
+
+
+
+ listen.allowed_clients
+ &string;
+
+
+
+ Liste des adresses IPv4 ou IPv6 des clients FastCGI autorisés à se connecter.
+ C'est équivalent à la variable d'environnement FCGI_WEB_SERVER_ADDRS dans le
+ système FastCGI original de PHP (5.2.2+). N'a de sens qu'avec un socket tcp en
+ écoute. Chaque adresse doit être séparée par une virgule. Si cette valeur n'est
+ pas précisée, les connexions seront acceptées depuis toute adresse ip.
+ Valeur par défaut: non définie (toute adresse IP acceptée).
+
+
+
+
+
+ listen.owner
+ &string;
+
+
+
+ Affecte les permissions pour le socket Unix si utilisé. Sous Linux, les permissions read/write
+ doivent être affectées pour autoriser des connexions depuis un serveur web. Beaucoup de systèmes
+ dérivés BSD autorisent les connexions quelles que soient les permissions.
+ Valeurs par défaut : user et group sont ceux de l'utilisateur courant, le mode est 0660.
+
+
+
+
+
+ listen.group
+ &string;
+
+
+
+ Voyez listen.owner.
+
+
+
+
+
+ listen.mode
+ &string;
+
+
+
+ Voyez listen.owner.
+
+
+
+
+
+ listen.acl_users
+ &string;
+
+
+
+ Quand les listes de contrôle d'accès POSIX sont supportées, vous pouvez les définir en utilisant cette option.
+ Quand défini, listen.owner et listen.group
+ sont ignorés.
+ La valeur est une liste de noms d'utilisateurs séparés par des virgules.
+
+
+
+
+
+ listen.acl_groups
+ &string;
+
+
+
+ Voir listen.acl_users.
+ La valeur est une liste de noms de groupes séparés par des virgules.
+
+
+
+
+
+ listen.setfib
+ int
+
+
+
+ Définit la table de routage associée (FIB). FreeBSD uniquement.
+ Valeur par défaut : -1. Depuis PHP 8.2.0.
+
+
+
+
+
+ user
+ &string;
+
+
+
+ Utilisateur Unix des processus FPM. Cette option est obligatoire.
+
+
+
+
+
+ group
+ &string;
+
+
+
+ Groupe Unix des processus FPM. Si non précisé, le groupe de l'utilisateur est
+ utilisé.
+
+
+
+
+
+ pm
+ &string;
+
+
+
+ Choisi comment le gestionnaire de processus va contrôler le nombre de processus fils.
+ Valeurs possibles : static, ondemand,
+ dynamic. Option obligatoire.
+
+
+ static - nombre de processus fils fixés (pm.max_children).
+
+
+ ondemand - le processus se réactive à la demande
+ (lorsque demandé, c'est l'opposé de dynamique où pm.start_servers
+ sont démarrés lorsque le service démarre).
+
+
+ dynamic - nombre de processus fils dynamiques basé sur les directives suivantes:
+ pm.max_children, pm.start_servers,
+ pm.min_spare_servers, pm.max_spare_servers.
+
+
+
+
+
+ pm.max_children
+ &integer;
+
+
+
+ Nombre de processus fils à créer lorsque pm est réglé sur
+ static. Nombre maximum de processus fils à créer lorsque
+ pm est réglé sur dynamic. Option obligatoire.
+
+
+ Cette option affecte la limite du nombre de requêtes simultanées qui seront servies. Equivalent à
+ ApacheMaxClients avec mpm_prefork et à PHP_FCGI_CHILDREN dans l'implémentation originale
+ de FastCGI de PHP.
+
+
+
+
+
+ pm.start_servers
+ &integer;
+
+
+
+ Nombre de processus fils à créer au démarrage. Utilisé seulement si
+ pm est réglé sur dynamic.
+ Valeur par défaut : (min_spare_servers + max_spare_servers) / 2.
+
+
+
+
+
+ pm.min_spare_servers
+ &integer;
+
+
+
+ Nombre minimum de processus au repos (idle) voulus. Utilisé seulement si
+ pm est réglé sur dynamic. Obligatoire dans
+ ce cas.
+
+
+
+
+
+ pm.max_spare_servers
+ &integer;
+
+
+
+ Nombre maximum de processus au repos (idle) voulus. Utilisé seulement si
+ pm est réglé sur dynamic. Obligatoire dans
+ ce cas.
+
+
+
+
+
+ pm.max_spawn_rate
+ int
+
+
+
+ Nombre maximum de taux de génération de processus enfants simultanés. Utilisé seulement si
+ pm est défini à dynamic.
+
+
+
+
+
+ pm.process_idle_timeout
+ &mixed;
+
+
+
+ Nombre de secondes après lesquelles un processus inactif sera tué.
+ Utilisé uniquement quand pm est défini à
+ ondemand.
+ Unités disponibles : s (secondes)(par défaut), m (minutes), h (heure), ou d (jour).
+ Valeur par défaut : 10s.
+
+
+
+
+
+ pm.max_requests
+ &integer;
+
+
+
+ Nombre de requêtes que chaque processus fils devrait exécuter avant de renaitre.
+ Ceci peut être utile pour contourner des fuites mémoires dans des librairies tierces.
+ Pour un traitement sans fin des requêtes, précisez '0'. Equivalent à
+ PHP_FCGI_MAX_REQUESTS. Par défaut : 0.
+
+
+
+
+
+ pm.status_listen
+ string
+
+
+
+ L'adresse sur laquelle accepter la demande de statut FastCGI. Cela crée un nouveau pool invisible
+ qui peut traiter les requêtes indépendamment. Ceci est utile si le pool principal est occupé par des
+ requêtes de longue durée car il est toujours possible d'obtenir le statut
+ FPM status page tant qu'elles ne sont pas terminées.
+ La syntaxe est la même que pour la directive listen.
+ Valeur par défaut : none.
+
+
+
+
+
+ pm.status_path
+ &string;
+
+
+
+ L'URI vers la page de statut de FPM.
+ Cette valeur doit commencer par une barre oblique (/). Si cette valeur n'est pas définie,
+ aucun URI ne sera reconnu en tant qu'une page d'état. Valeur par défaut : none.
+
+
+
+
+
+ ping.path
+ &string;
+
+
+
+ L'URI de ping pour appeler la page de monitoring de FPM. Si aucune valeur n'est précisée,
+ aucune page de ping ne sera disponible. Ceci pourrait être utilisé pour tester depuis l'extérieur
+ si FPM est toujours disponible et prêt à répondre. Notez que la valeur doit commencer par un
+ slash (/).
+
+
+
+
+
+ ping.response
+ &string;
+
+
+
+ Cette directive est utile pour personnaliser la réponse à une requête de ping.
+ La réponse est formatée comme text/plain avec un code de réponse de 200.
+ Valeur par défaut : pong.
+
+
+
+
+
+ process.priority
+ &integer;
+
+
+
+ Spécifiez la priorité nice(2) à appliquer au processus de travail
+ (uniquement s'il est défini). La valeur peut varier de -19 (priorité
+ la plus élevée) à 20 (priorité la plus basse). Valeur par
+ défaut: non définie.
+
+
+
+
+
+ process.dumpable
+ &boolean;
+
+
+
+ Défini l'indicateur de processus dumpable (PR_SET_DUMPABLE prctl) même
+ si l'utilisateur ou le groupe de processus est différent de
+ l'utilisateur du processus maître. Il permet de créer un core dump du
+ processus et ptrace le processus pour l'utilisateur de pool. Valeur par
+ défaut : no. Depuis PHP 7.0.29, 7.1.17 et 7.2.5.
+
+
+
+
+
+ prefix
+ &string;
+
+
+
+ Spécifier le préfixe pour l'évaluation du chemin
+
+
+
+
+
+ request_terminate_timeout_track_finished
+ bool
+
+
+
+ Le timeout défini par
+ request_terminate_timeout n'est pas engagé
+ après un fastcgi_finish_request ou
+ lorsque l'application s'est terminée et que les fonctions internes d'arrêt sont appelées. Cette directive
+ permet d'appliquer la limite de temps sans condition.
+ Valeur par défaut : no. À partir de PHP 7.3.0.
+
+
+
+
+
+ request_terminate_timeout
+ &mixed;
+
+
+
+ Le timeout pour servir une requête après lequel le processus concerné sera
+ tué. Cette option devrait être utilisée lorsque l'option 'max_execution_time'
+ n'arrête pas l'exécution du script pour une raison quelconque.
+ Une valeur de '0' signifie
+ 'Off'. Unités disponibles : s(econdes)(défaut), m(inutes), h(eures), ou j(ours).
+ Par défaut : 0.
+
+
+
+
+
+ request_slowlog_timeout
+ &mixed;
+
+
+
+ Le timeout pour servir une requête dans laquelle la backtrace PHP sera vidée
+ dans le fichier 'slowlog'. Une valeur de '0' signifie 'Off'.
+ Unités disponibles : s(econdes)(défaut), m(inutes), h(eures), ou j(ours).
+ Par défaut : 0.
+
+
+
+
+
+ request_slowlog_trace_depth
+ int
+
+
+
+ Le niveau de profondeur de la trace de la pile de log slowlog.
+ Valeur par défaut : 20. À partir de PHP 7.2.0.
+
+
+
+
+
+ slowlog
+ &string;
+
+
+
+ Le journal pour les requêtes lentes, par défaut:
+ #INSTALL_PREFIX#/log/php-fpm.log.slow.
+
+
+
+
+
+ rlimit_files
+ &integer;
+
+
+
+ Affecte la rlimit pour les descripteurs de fichiers ouverts des processus
+ enfants de ce pool. Valeur par défaut : valeur du système.
+
+
+
+
+
+ rlimit_core
+ &integer;
+
+
+
+ Affecte la taille maximale de rlimit des processus enfants de ce pool.
+ Valeurs possibles : 'unlimited' ou un entier plus grand ou égal à 0.
+ Valeur par défaut : valeur définie par le système.
+
+
+
+
+
+ chroot
+ &string;
+
+
+
+ Chroot vers ce dossier au démarrage. Cette valeur doit être un chemin absolu.
+ Si cette valeur n'est pas définie, chroot n'est pas utilisé.
+
+
+
+
+
+ chdir
+ &string;
+
+
+
+ Chdir vers ce dossier au démarrage. Cette valeur doit être un chemin absolu.
+ Valeur par défaut : dossier courant ou / si chroot.
+
+
+
+
+
+ catch_workers_output
+ &boolean;
+
+
+
+ Redirige stdout et stderr vers le journal d'erreur principal. Si non précisé,
+ stdout et stderr seront redirigés vers /dev/null selon les specifications FastCGI.
+ Valeur par défaut: no.
+
+
+
+
+
+ decorate_workers_output
+ &boolean;
+
+
+
+ Active la décoration de sortie pour les travailleurs de sortie quand
+ catch_workers_output est activé.
+ Valeur par défaut : yes.
+ Disponible à partir de PHP 7.3.0.
+
+
+
+
+
+ clear_env
+ &boolean;
+
+
+
+ Nettoie l'environnement des agents FPM.
+ Prévient que des variables d’environnement arbitraire puissent
+ atteindre les processus FPM par le nettoyage de l'environnement
+ de ces agents avant que les variables d'environnement spécifiées
+ dans la configuration du pool ne soient ajoutées.
+
+
+
+
+
+ security.limit_extensions
+ &string;
+
+
+
+ Limite les extensions que le script principal FPM va être autorisé à analyser.
+ Ceci peut prévenir les erreurs de configuration côté serveur.
+ Vous pouvez limiter FPM à exécuter seulement les extensions .php pour prévenir que des utilisateurs malicieux utilisent d'autres extensions pour exécuter du code.
+ Valeur par défaut : .php .phar
+
+
+
+
+
+ apparmor_hat
+ string
+
+
+
+ Si AppArmor est activé, permet de changer un hat (chapeau).
+ Valeur par défaut : non défini
+
+
+
+
+
+ access.log
+ &string;
+
+
+
+ Le fichier journal d'accès. Valeur par défaut : non définie
+
+
+
+
+
+ access.format
+ &string;
+
+
+
+ Le format du journal d'accès.
+ Valeur par défaut : "%R - %u %t \"%m %r\" %s":
+
+ Options valide
+
+
+
+ Placeholder
+ &Description;
+
+
+
+
+
+ %%
+
+ Le caractère %
+
+
+
+ %C
+
+
+ %CPU utilisé par la requête. Les formats suivants sont acceptés :
+ %{user}C pour la CPU utilisateur uniquement,
+ %{system}C pour la CPU système uniquement,
+ %{total}C pour la CPU utilisateur + système (par défaut)
+
+
+
+
+ %d
+
+
+ Temps pris pour traiter la requête.
+ Les formats suivants sont acceptés pour la précision :
+ %{seconds}d (par défaut), %{milliseconds}d,
+ %{microseconds}d
+
+
+
+
+ %{name}e
+
+
+ Une variable d'environnement (identique à $_ENV ou $_SERVER).
+ Un nom de variable doit être spécifié entre accolades pour indiquer le nom de la variable d'environnement.
+ Par exemple, des informations spécifiques au serveur comme %{REQUEST_METHOD}e ou
+ %{SERVER_PROTOCOL}e, des en-têtes HTTP tels que
+ %{HTTP_HOST}e ou %{HTTP_USER_AGENT}e
+
+
+
+
+ %f
+
+ Nom du fichier script
+
+
+
+ %l
+
+
+ Content-Length de la requête (pour les requêtes HTTP POST uniquement)
+
+
+
+
+ %m
+
+ Méthode HTTP de la requête
+
+
+
+ %M
+
+
+ Pic de mémoire allouée par PHP.
+ Accepte les formats suivants :
+ %{bytes}M (défaut), %{kilobytes}M
+ %{kilo}M, %{megabytes}M,
+ %{mega}M
+
+
+
+
+ %n
+
+ Nom du pool
+
+
+
+ %{name}o
+
+
+ En-tête de sortie. Le nom de l'en-tête doit être spécifié entre accolades.
+ Par exemple : %{Content-Type}o,
+ %{X-Powered-By}o, %{Transfer-Encoding}o
+
+
+
+
+ %p
+
+ PID de l'enfant qui a traité la demande
+
+
+
+ %P
+
+ PID du parent de l'enfant qui a traité la demande
+
+
+
+ %q
+
+ Chaîne de requête
+
+
+
+ %Q
+
+
+ Le caractère '?', ou le lien entre %q et %r,
+ si la chaîne de requête existe
+
+
+
+
+ %r
+
+
+ URI de la requête sans la chaîne de requête,
+ voir %q et %Q
+
+
+
+
+ %R
+
+ Adresse IP remote
+
+
+
+ %s
+
+ Statut (code de réponse)
+
+
+
+ %t
+
+
+ Heure du serveur à laquelle la requête a été reçue. Elle peut
+ accepter un format strftime(3) :
+ %d/%b/%Y:%H:%M:%S %z (par défaut).
+ Le format strftime(3) doit être encapsulé dans
+ une balise %{<strftime_format>}t, par exemple, pour une chaîne de temps au format ISO8601, utilisez :
+ %{%Y-%m-%dT%H:%M:%S%z}t
+
+
+
+
+ %T
+
+
+ Heure à laquelle le log a été écrit (lorsque la requête s'est terminée). Elle peut accepter un
+ format strftime(3) :
+ %d/%b/%Y:%H:%M:%S %z (par défaut).
+ Le format strftime(3) doit être encapsulé dans une
+ balise %{<strftime_format>}T, par exemple, pour une chaîne de temps au format ISO8601, utilisez :
+ %{%Y-%m-%dT%H:%M:%S%z}T
+
+
+
+
+ %u
+
+ Utilisateur d'authentification basique, si spécifié dans l'en-tête Authorization
+
+
+
+
+
+
+
+
+
+ access.suppress_path
+ array
+
+
+
+ Une liste de valeurs request_uri qui devraient être filtrées du journal d'accès.
+ Valeur par défaut : non définie. Depuis PHP 8.2.0.
+
+
+
+
+
+ Il est possible de passer des variables d'environnement additionnelles et mettre à jour les paramètres
+ de PHP d'un pool. Pour ce faire, vous devez ajouter les options suivantes au
+ fichier de configuration de la file d'attente.
+
+ Passer des variables d'environnement et des paramètres PHP à un pool
+
+
+
+
+ Les paramètres PHP passés avec php_value ou
+ php_flag écraseront leur valeur précédente.
+ Notez que définir
+ disable_functions ou
+ disable_classes n'écrasera pas
+ les valeurs concernées précédemment définies dans php.ini,
+ mais rajouteront les valeurs à la suite des anciennes.
+
+
+ Les paramètres définis avec php_admin_value et php_admin_flag
+ ne peuvent être surchargés via ini_set.
+
+
+ Les paramètres de PHP peuvent être définis dans le serveur web.
+
+ Définit les paramètres PHP dans le fichier nginx.conf
+
+
+
+
+
+
+ En raison du fait que ces configurations sont passées à php-fpm
+ comme en-têtes fastcgi, php-fpm ne doit pas être relié directement
+ au web et ainsi y être directement accessible. Sinon, tout le monde
+ pourra altérer les options de configuration de PHP.
+ Voir aussi l'option
+ listen.allowed_clients.
+
+
+
+
+ Les pools ne sont pas un mécanisme de sécurité, car elles ne
+ fournissent pas une séparation totale ; par exemple toutes les pools
+ utiliseraient une seule instance OPcache.
+
+
+
+
+
+
+
+
diff --git a/install/windows/tools.xml b/install/windows/tools.xml
index c4417e2c39..9dce15e030 100644
--- a/install/windows/tools.xml
+++ b/install/windows/tools.xml
@@ -1,33 +1,33 @@
-
-
-
-
- Outils tiers pour l'installation de PHP
- &warn.install.third-party-support;
-
- XAMPP,
- WampServer, and
- Bitnami
- configurent également des applications PHP pour une utilisation avec Apache sur Windows.
-
-
-
+
+
+
+
+ Outils tiers pour l'installation de PHP
+ &warn.install.third-party-support;
+
+ XAMPP,
+ WampServer, et
+ Bitnami
+ configurent également des applications PHP pour une utilisation avec Apache sur Windows.
+
+
+
From 60ead04262fe20b8b2e1261361f69dda450a3397 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Wed, 18 Feb 2026 22:11:37 +0100
Subject: [PATCH 06/96] Fix language/context/: grammar errors and code
formatting
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- ssl.xml: fix "paires"→"pair", "Requière"→"Requiert", "définit"→"défini"
- ssl.xml: fix "Définie"→"Définit", "sécurités"→"sécurité", "décrit"→"décrits"
- ssl.xml: fix "Requit"→"Requiert"
- http.xml: reformat PHP array examples to match EN style
---
language/context/http.xml | 10 +++++-----
language/context/ssl.xml | 16 ++++++++--------
2 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/language/context/http.xml b/language/context/http.xml
index 41c7fa1ed5..f943497edd 100644
--- a/language/context/http.xml
+++ b/language/context/http.xml
@@ -216,8 +216,8 @@ $postdata = http_build_query(
]
);
-$opts = ['http' =>
- [
+$opts = [
+ 'http' => [
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $postdata,
@@ -242,9 +242,9 @@ $result = file_get_contents('http://example.com/submit.php', false, $context);
$url = "http://www.example.org/header.php";
-$opts = ['http' =>
- [
- 'method' => 'GET',
+$opts = [
+ 'http' => [
+ 'method' => 'GET',
'max_redirects' => '0',
'ignore_errors' => '1',
]
diff --git a/language/context/ssl.xml b/language/context/ssl.xml
index 6dca8a2e10..6f7d8fc00a 100644
--- a/language/context/ssl.xml
+++ b/language/context/ssl.xml
@@ -28,7 +28,7 @@
- Nom de paires à utiliser. Si cette valeur n'est pas définie, alors le
+ Nom du pair à utiliser. Si cette valeur n'est pas définie, alors le
nom sera deviné en se basant sur le nom d'hôte utilisé lors de
l'ouverture du flux.
@@ -55,7 +55,7 @@
- Nécessite la vérification du nom de paires.
+ Nécessite la vérification du nom du pair.
Par défaut, vaut &true;.
@@ -69,7 +69,7 @@
- Permet les certificats autosignés. Requière le
+ Permet les certificats autosignés. Requiert le
paramètre verify_peer.
@@ -182,7 +182,7 @@
- Si définit à &true;, une option de contexte peer_certificate
+ Si défini à &true;, une option de contexte peer_certificate
sera créée, contenant le certificat de l'émetteur.
@@ -194,7 +194,7 @@
- Si définit à &true;, une option de contexte peer_certificate_chain
+ Si défini à &true;, une option de contexte peer_certificate_chain
sera créée, contenant la chaîne de certification.
@@ -250,9 +250,9 @@
- Définie le niveau de sécurité. Si non spécifié le niveau de sécurité par
+ Définit le niveau de sécurité. Si non spécifié, le niveau de sécurité par
défaut est utilisé.
- Les niveaux de sécurités sont décrit dans
+ Les niveaux de sécurité sont décrits dans
SSL_CTX_get_security_level(3).
@@ -279,7 +279,7 @@
7.2.0
- Ajout de security_level. Requit OpenSSL >= 1.1.0.
+ Ajout de security_level. Requiert OpenSSL >= 1.1.0.
From 1fc7f0280c4f57243671450183993cad8a611b26 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Wed, 18 Feb 2026 22:15:42 +0100
Subject: [PATCH 07/96] Fix language/operators/: stray tag, punctuation, and
code example
- bitwise.xml: remove stray tag
- precedence.xml: fix extra period before colon
- precedence.xml: fix missing outer parentheses in code example
---
language/operators/bitwise.xml | 1365 ++++++++++++++---------------
language/operators/precedence.xml | 972 ++++++++++----------
2 files changed, 1168 insertions(+), 1169 deletions(-)
diff --git a/language/operators/bitwise.xml b/language/operators/bitwise.xml
index e9bfcbb3d8..698e2c6ac0 100644
--- a/language/operators/bitwise.xml
+++ b/language/operators/bitwise.xml
@@ -1,683 +1,682 @@
-
-
-
-
- Opérateurs sur les bits
- Bitwise
-
- Les opérateurs sur les bits vous permettent de
- manipuler les bits dans un entier.
-
-
- Les opérateurs sur les bits
-
-
-
- Exemple
- Nom
- Résultat
-
-
-
-
- $a & $b
- And (Et)
-
- Les bits positionnés à 1 dans $a ET dans
- $b sont positionnés à 1.
-
-
-
- $a | $b
- Or (Ou)
-
- Les bits positionnés à 1 dans $a OU $b
- sont positionnés à 1.
-
-
-
- $a ^ $b
- Xor (ou exclusif)
-
- Les bits positionnés à 1 dans $a OU dans
- $b mais pas dans les deux sont positionnés à 1.
-
-
-
- ~ $a
- Not (Non)
-
- Les bits qui sont positionnés à 1 dans $a
- sont positionnés à 0, et vice-versa.
-
-
-
- $a << $b
- Décalage à gauche
-
- Décale les bits de $a, $b fois
- sur la gauche (chaque décalage équivaut à une multiplication par 2).
-
-
-
- $a >> $b
- Décalage à droite
-
- Décale les bits de $a, $b fois
- sur la droite (chaque décalage équivaut à une division par 2).
-
-
-
-
-
-
- Le décalage de bits en PHP est arithmétique.
- Les bits qui sont décalés hors de l'entier sont perdus.
- Les décalages à gauche font apparaître des zéros à droite,
- tandis que le bit de signe est décalé à gauche, ce qui signifie
- que le signe de l'entier n'est pas préservé.
- Les décalages à droite décalent aussi le bit de signe sur la
- droite, ce qui signifie que le signe est préservé.
-
-
-
- Utilisez des parenthèses pour vous assurer que la
- précédence
- voulue est bien appliquée. Par exemple,
- $a & $b == true applique d'abord
- l'égalité, et ensuite le ET logique, alors que
- ($a & $b) == true applique d'abord le
- ET logique, puis l'égalité.
-
-
-
- Si les deux opérandes pour les opérateurs &,
- | et ^ sont des chaînes de caractères,
- alors l'opération sera réalisée sur les valeurs ASCII des caractères et le
- résultat sera une chaîne de caractères. Dans tous les autres cas, les deux
- opérandes seront
- converties en entier
- et le résultat sera un entier.
-
-
- Si l'opérande pour l'opérateur ~ est une chaîne
- de caractères, l'opération sera effectuée sur les caractères ASCII composant
- la chaîne et le résultat sera une chaîne de caractères. Sinon l'opérande et
- le résultat seront traités comme des entiers.
-
-
- Les opérandes et le résultat des opérateurs << et
- >> sont traités comme des entiers.
-
-
- Le rapport d'erreur de PHP utilise des champs de bits,
- qui sont une illustration de l'extinction des bits.
- Pour afficher les erreurs, sauf les notices, les
- instructions du php.ini sont :
- E_ALL & ~E_NOTICE
-
-
-
-
-
-
- Cela se comprend en comparant avec E_ALL :
- 00000000000000000111011111111111
- Puis en éteignant la valeur de E_NOTICE...
- 00000000000000000000000000001000
- ... et en l'inversant via ~:
- 11111111111111111111111111110111
- Finalement, on utilise le ET logique (&) pour lire les bits activés
- dans les deux valeurs :
- 00000000000000000111011111110111
-
-
-
-
-
-
-
- Un autre moyen d'arriver à ce résultat est d'utiliser
- le OU exclusif (^), qui cherche
- les bits qui ne sont activés que dans l'une ou l'autre des
- valeurs, exclusivement :
- E_ALL ^ E_NOTICE
-
-
- error_reporting peut aussi être utilisé pour
- illustrer l'activation de bits. Pour afficher
- uniquement les erreurs et les erreurs recouvrables,
- on utilise :
- E_ERROR | E_RECOVERABLE_ERROR
-
-
-
-
-
- Cette approche combine E_ERROR
- 00000000000000000000000000000001
- et E_RECOVERABLE_ERROR
- 00000000000000000001000000000000
- Avec l'opérateur OR (|) pour s'assurer que
- les bits sont activés dans l'une ou l'autre valeur :
- 00000000000000000001000000000001
-
-
-
-
-
-
- Opérations sur les bits et les entiers
-
-
-]]>
-
- &example.outputs;
-
-
-
-
-
-
-
- Opération sur les bits et les chaînes
-
-
-]]>
-
-
-
-
-
- Décalage de bits sur les entiers
-
-> $places;
-p($res, $val, '>>', $places, 'copie du bit de signe maintenant à gauche');
-
-$val = 4;
-$places = 2;
-$res = $val >> $places;
-p($res, $val, '>>', $places);
-
-$val = 4;
-$places = 3;
-$res = $val >> $places;
-p($res, $val, '>>', $places, 'des bits sont sortis par la droite');
-
-$val = 4;
-$places = 4;
-$res = $val >> $places;
-p($res, $val, '>>', $places, 'même résultat que ci-dessus : pas de décalage au dela de 0');
-
-
-echo "\n--- Décalages à droite sur des entiers négatifs ---\n";
-
-$val = -4;
-$places = 1;
-$res = $val >> $places;
-p($res, $val, '>>', $places, 'copie du bit de signe maintenant à gauche');
-
-$val = -4;
-$places = 2;
-$res = $val >> $places;
-p($res, $val, '>>', $places, 'des bits sont sortis par la droite');
-
-$val = -4;
-$places = 3;
-$res = $val >> $places;
-p($res, $val, '>>', $places, 'même résultat que ci-dessus : pas de décalage au dela de -1');
-
-
-echo "\n--- Décalages à gauche sur des entiers positifs ---\n";
-
-$val = 4;
-$places = 1;
-$res = $val << $places;
-p($res, $val, '<<', $places, 'complément de zéros à droite');
-
-$val = 4;
-$places = (PHP_INT_SIZE * 8) - 4;
-$res = $val << $places;
-p($res, $val, '<<', $places);
-
-$val = 4;
-$places = (PHP_INT_SIZE * 8) - 3;
-$res = $val << $places;
-p($res, $val, '<<', $places, 'le bit de signe est sorti');
-
-$val = 4;
-$places = (PHP_INT_SIZE * 8) - 2;
-$res = $val << $places;
-p($res, $val, '<<', $places, 'des bits sont sortis à gauche');
-
-
-echo "\n--- Décalages à gauche sur des entiers négatifs ---\n";
-
-$val = -4;
-$places = 1;
-$res = $val << $places;
-p($res, $val, '<<', $places, 'complément de zéros à droite');
-
-$val = -4;
-$places = (PHP_INT_SIZE * 8) - 3;
-$res = $val << $places;
-p($res, $val, '<<', $places);
-
-$val = -4;
-$places = (PHP_INT_SIZE * 8) - 2;
-$res = $val << $places;
-p($res, $val, '<<', $places, 'des bits sont sortis à gauche, y compris le bit de signe');
-
-
-/*
- * Ignorez cette section
- * Elle contient du code pour le formatage de cet exemple
- */
-
-function p($res, $val, $op, $places, $note = '') {
- $format = '%0' . (PHP_INT_SIZE * 8) . "b\n";
-
- printf("Expression : %d = %d %s %d\n", $res, $val, $op, $places);
-
- echo " Décimal :\n";
- printf(" val=%d\n", $val);
- printf(" res=%d\n", $res);
-
- echo " Binaire :\n";
- printf(' val=' . $format, $val);
- printf(' res=' . $format, $res);
-
- if ($note) {
- echo " Note : $note\n";
- }
-
- echo "\n\n";
-}
-?>
-]]>
-
- &example.outputs.32bit;
-
-> 1
- Décimal :
- val=4
- res=2
- Binaire :
- val=00000000000000000000000000000100
- res=00000000000000000000000000000010
- Note : copie du bit de signe maintenant à gauche
-
-Expression : 1 = 4 >> 2
- Décimal :
- val=4
- res=1
- Binaire :
- val=00000000000000000000000000000100
- res=00000000000000000000000000000001
-
-Expression : 0 = 4 >> 3
- Décimal :
- val=4
- res=0
- Binaire :
- val=00000000000000000000000000000100
- res=00000000000000000000000000000000
- Note : des bits sont sortis par la droite
-
-Expression : 0 = 4 >> 4
- Décimal :
- val=4
- res=0
- Binaire :
- val=00000000000000000000000000000100
- res=00000000000000000000000000000000
- Note : même résultat que ci-dessus : pas de décalage au dela de 0
-
-
---- Décalages à droite sur des entiers négatifs ---
-Expression : -2 = -4 >> 1
- Décimal :
- val=-4
- res=-2
- Binaire :
- val=11111111111111111111111111111100
- res=11111111111111111111111111111110
- Note : copie du bit de signe à gauche
-
-Expression : -1 = -4 >> 2
- Décimal :
- val=-4
- res=-1
- Binaire :
- val=11111111111111111111111111111100
- res=11111111111111111111111111111111
- Note : des bits sont sortis par la droite
-
-Expression : -1 = -4 >> 3
- Décimal :
- val=-4
- res=-1
- Binaire :
- val=11111111111111111111111111111100
- res=11111111111111111111111111111111
- Note : même résultat que ci-dessus : pas de décalage au dela de -1
-
-
---- Décalages à gauche sur des entiers positifs ---
-Expression : 8 = 4 << 1
- Décimal :
- val=4
- res=8
- Binaire :
- val=00000000000000000000000000000100
- res=00000000000000000000000000001000
- Note : complément de zéros à droite
-
-Expression : 1073741824 = 4 << 28
- Décimal :
- val=4
- res=1073741824
- Binaire :
- val=00000000000000000000000000000100
- res=01000000000000000000000000000000
-
-Expression : -2147483648 = 4 << 29
- Décimal :
- val=4
- res=-2147483648
- Binaire :
- val=00000000000000000000000000000100
- res=10000000000000000000000000000000
- Note : le bit de signe est sorti
-
-Expression : 0 = 4 << 30
- Décimal :
- val=4
- res=0
- Binaire :
- val=00000000000000000000000000000100
- res=00000000000000000000000000000000
- Note : des bits sont sortis à gauche
-
-
---- Décalages à gauche sur des entiers négatifs ---
-Expression : -8 = -4 << 1
- Décimal :
- val=-4
- res=-8
- Binaire :
- val=11111111111111111111111111111100
- res=11111111111111111111111111111000
- Note : complément de zéros à droite
-
-Expression : -2147483648 = -4 << 29
- Décimal :
- val=-4
- res=-2147483648
- Binaire :
- val=11111111111111111111111111111100
- res=10000000000000000000000000000000
-
-Expression : 0 = -4 << 30
- Décimal :
- val=-4
- res=0
- Binaire :
- val=11111111111111111111111111111100
- res=00000000000000000000000000000000
- Note : des bits sont sortis à gauche, y compris le bit de signe
-]]>
-
- &example.outputs.64bit;
-
-> 1
- Décimal :
- val=4
- res=2
- Binaire :
- val=0000000000000000000000000000000000000000000000000000000000000100
- res=0000000000000000000000000000000000000000000000000000000000000010
- Note : copie du bit de signe maintenant à gauche
-
-Expression : 1 = 4 >> 2
- Décimal :
- val=4
- res=1
- Binaire :
- val=0000000000000000000000000000000000000000000000000000000000000100
- res=0000000000000000000000000000000000000000000000000000000000000001
-
-Expression : 0 = 4 >> 3
- Décimal :
- val=4
- res=0
- Binaire :
- val=0000000000000000000000000000000000000000000000000000000000000100
- res=0000000000000000000000000000000000000000000000000000000000000000
- Note : des bits sont sortis par la droite
-
-Expression : 0 = 4 >> 4
- Décimal :
- val=4
- res=0
- Binaire :
- val=0000000000000000000000000000000000000000000000000000000000000100
- res=0000000000000000000000000000000000000000000000000000000000000000
- Note : même résultat que ci-dessus : pas de décalage au dela de 0
-
-
---- Décalages à droite sur des entiers négatifs ---
-Expression : -2 = -4 >> 1
- Décimal :
- val=-4
- res=-2
- Binaire :
- val=1111111111111111111111111111111111111111111111111111111111111100
- res=1111111111111111111111111111111111111111111111111111111111111110
- Note : copie du bit de signe maintenant à gauche
-
-Expression : -1 = -4 >> 2
- Décimal :
- val=-4
- res=-1
- Binaire :
- val=1111111111111111111111111111111111111111111111111111111111111100
- res=1111111111111111111111111111111111111111111111111111111111111111
- Note : des bits sont sortis par la droite
-
-Expression : -1 = -4 >> 3
- Décimal :
- val=-4
- res=-1
- Binaire :
- val=1111111111111111111111111111111111111111111111111111111111111100
- res=1111111111111111111111111111111111111111111111111111111111111111
- Note : même résultat que ci-dessus : pas de décalage au dela de -1
-
-
---- Décalage à gauche sur les entiers positifs ---
-Expression : 8 = 4 << 1
- Décimal :
- val=4
- res=8
- Binaire :
- val=0000000000000000000000000000000000000000000000000000000000000100
- res=0000000000000000000000000000000000000000000000000000000000001000
- Note : complément de zéros à droite
-
-Expression : 4611686018427387904 = 4 << 60
- Décimal :
- val=4
- res=4611686018427387904
- Binaire :
- val=0000000000000000000000000000000000000000000000000000000000000100
- res=0100000000000000000000000000000000000000000000000000000000000000
-
-Expression : -9223372036854775808 = 4 << 61
- Décimal :
- val=4
- res=-9223372036854775808
- Binaire :
- val=0000000000000000000000000000000000000000000000000000000000000100
- res=1000000000000000000000000000000000000000000000000000000000000000
- Note : le bit de signe est sorti
-
-Expression : 0 = 4 << 62
- Décimal :
- val=4
- res=0
- Binaire :
- val=0000000000000000000000000000000000000000000000000000000000000100
- res=0000000000000000000000000000000000000000000000000000000000000000
- Note : des bits sont sortis à gauche
-
-
---- Décalage à gauche sur les entiers négatifs ---
-Expression : -8 = -4 << 1
- Décimal :
- val=-4
- res=-8
- Binaire :
- val=1111111111111111111111111111111111111111111111111111111111111100
- res=1111111111111111111111111111111111111111111111111111111111111000
- Note : complément de zéros à droite
-
-Expression : -9223372036854775808 = -4 << 61
- Décimal :
- val=-4
- res=-9223372036854775808
- Binaire :
- val=1111111111111111111111111111111111111111111111111111111111111100
- res=1000000000000000000000000000000000000000000000000000000000000000
-
-Expression : 0 = -4 << 62
- Décimal :
- val=-4
- res=0
- Binaire :
- val=1111111111111111111111111111111111111111111111111111111111111100
- res=0000000000000000000000000000000000000000000000000000000000000000
- Note : des bits sont sortis à gauche, y compris le bit de signe
-]]>
-
-
-
-
-
- Utilisez les fonctions de l'extension gmp
- pour les manipulations sur les bits, lorsque les entiers dépassent
- PHP_INT_MAX.
-
-
-
-
- &reftitle.seealso;
-
-
- pack
- unpack
- gmp_and
- gmp_or
- gmp_xor
- gmp_testbit
- gmp_clrbit
-
-
-
-
+
+
+
+
+ Opérateurs sur les bits
+ Bitwise
+
+ Les opérateurs sur les bits vous permettent de
+ manipuler les bits dans un entier.
+
+
+ Les opérateurs sur les bits
+
+
+
+ Exemple
+ Nom
+ Résultat
+
+
+
+
+ $a & $b
+ And (Et)
+
+ Les bits positionnés à 1 dans $a ET dans
+ $b sont positionnés à 1.
+
+
+
+ $a | $b
+ Or (Ou)
+
+ Les bits positionnés à 1 dans $a OU $b
+ sont positionnés à 1.
+
+
+
+ $a ^ $b
+ Xor (ou exclusif)
+
+ Les bits positionnés à 1 dans $a OU dans
+ $b mais pas dans les deux sont positionnés à 1.
+
+
+
+ ~ $a
+ Not (Non)
+
+ Les bits qui sont positionnés à 1 dans $a
+ sont positionnés à 0, et vice-versa.
+
+
+
+ $a << $b
+ Décalage à gauche
+
+ Décale les bits de $a, $b fois
+ sur la gauche (chaque décalage équivaut à une multiplication par 2).
+
+
+
+ $a >> $b
+ Décalage à droite
+
+ Décale les bits de $a, $b fois
+ sur la droite (chaque décalage équivaut à une division par 2).
+
+
+
+
+
+
+ Le décalage de bits en PHP est arithmétique.
+ Les bits qui sont décalés hors de l'entier sont perdus.
+ Les décalages à gauche font apparaître des zéros à droite,
+ tandis que le bit de signe est décalé à gauche, ce qui signifie
+ que le signe de l'entier n'est pas préservé.
+ Les décalages à droite décalent aussi le bit de signe sur la
+ droite, ce qui signifie que le signe est préservé.
+
+
+
+ Utilisez des parenthèses pour vous assurer que la
+ précédence
+ voulue est bien appliquée. Par exemple,
+ $a & $b == true applique d'abord
+ l'égalité, et ensuite le ET logique, alors que
+ ($a & $b) == true applique d'abord le
+ ET logique, puis l'égalité.
+
+
+
+ Si les deux opérandes pour les opérateurs &,
+ | et ^ sont des chaînes de caractères,
+ alors l'opération sera réalisée sur les valeurs ASCII des caractères et le
+ résultat sera une chaîne de caractères. Dans tous les autres cas, les deux
+ opérandes seront
+ converties en entier
+ et le résultat sera un entier.
+
+
+ Si l'opérande pour l'opérateur ~ est une chaîne
+ de caractères, l'opération sera effectuée sur les caractères ASCII composant
+ la chaîne et le résultat sera une chaîne de caractères. Sinon l'opérande et
+ le résultat seront traités comme des entiers.
+
+
+ Les opérandes et le résultat des opérateurs << et
+ >> sont traités comme des entiers.
+
+
+ Le rapport d'erreur de PHP utilise des champs de bits,
+ qui sont une illustration de l'extinction des bits.
+ Pour afficher les erreurs, sauf les notices, les
+ instructions du php.ini sont :
+ E_ALL & ~E_NOTICE
+
+
+
+
+
+
+ Cela se comprend en comparant avec E_ALL :
+ 00000000000000000111011111111111
+ Puis en éteignant la valeur de E_NOTICE...
+ 00000000000000000000000000001000
+ ... et en l'inversant via ~:
+ 11111111111111111111111111110111
+ Finalement, on utilise le ET logique (&) pour lire les bits activés
+ dans les deux valeurs :
+ 00000000000000000111011111110111
+
+
+
+
+
+
+ Un autre moyen d'arriver à ce résultat est d'utiliser
+ le OU exclusif (^), qui cherche
+ les bits qui ne sont activés que dans l'une ou l'autre des
+ valeurs, exclusivement :
+ E_ALL ^ E_NOTICE
+
+
+ error_reporting peut aussi être utilisé pour
+ illustrer l'activation de bits. Pour afficher
+ uniquement les erreurs et les erreurs recouvrables,
+ on utilise :
+ E_ERROR | E_RECOVERABLE_ERROR
+
+
+
+
+
+ Cette approche combine E_ERROR
+ 00000000000000000000000000000001
+ et E_RECOVERABLE_ERROR
+ 00000000000000000001000000000000
+ Avec l'opérateur OR (|) pour s'assurer que
+ les bits sont activés dans l'une ou l'autre valeur :
+ 00000000000000000001000000000001
+
+
+
+
+
+
+ Opérations sur les bits et les entiers
+
+
+]]>
+
+ &example.outputs;
+
+
+
+
+
+
+
+ Opération sur les bits et les chaînes
+
+
+]]>
+
+
+
+
+
+ Décalage de bits sur les entiers
+
+> $places;
+p($res, $val, '>>', $places, 'copie du bit de signe maintenant à gauche');
+
+$val = 4;
+$places = 2;
+$res = $val >> $places;
+p($res, $val, '>>', $places);
+
+$val = 4;
+$places = 3;
+$res = $val >> $places;
+p($res, $val, '>>', $places, 'des bits sont sortis par la droite');
+
+$val = 4;
+$places = 4;
+$res = $val >> $places;
+p($res, $val, '>>', $places, 'même résultat que ci-dessus : pas de décalage au dela de 0');
+
+
+echo "\n--- Décalages à droite sur des entiers négatifs ---\n";
+
+$val = -4;
+$places = 1;
+$res = $val >> $places;
+p($res, $val, '>>', $places, 'copie du bit de signe maintenant à gauche');
+
+$val = -4;
+$places = 2;
+$res = $val >> $places;
+p($res, $val, '>>', $places, 'des bits sont sortis par la droite');
+
+$val = -4;
+$places = 3;
+$res = $val >> $places;
+p($res, $val, '>>', $places, 'même résultat que ci-dessus : pas de décalage au dela de -1');
+
+
+echo "\n--- Décalages à gauche sur des entiers positifs ---\n";
+
+$val = 4;
+$places = 1;
+$res = $val << $places;
+p($res, $val, '<<', $places, 'complément de zéros à droite');
+
+$val = 4;
+$places = (PHP_INT_SIZE * 8) - 4;
+$res = $val << $places;
+p($res, $val, '<<', $places);
+
+$val = 4;
+$places = (PHP_INT_SIZE * 8) - 3;
+$res = $val << $places;
+p($res, $val, '<<', $places, 'le bit de signe est sorti');
+
+$val = 4;
+$places = (PHP_INT_SIZE * 8) - 2;
+$res = $val << $places;
+p($res, $val, '<<', $places, 'des bits sont sortis à gauche');
+
+
+echo "\n--- Décalages à gauche sur des entiers négatifs ---\n";
+
+$val = -4;
+$places = 1;
+$res = $val << $places;
+p($res, $val, '<<', $places, 'complément de zéros à droite');
+
+$val = -4;
+$places = (PHP_INT_SIZE * 8) - 3;
+$res = $val << $places;
+p($res, $val, '<<', $places);
+
+$val = -4;
+$places = (PHP_INT_SIZE * 8) - 2;
+$res = $val << $places;
+p($res, $val, '<<', $places, 'des bits sont sortis à gauche, y compris le bit de signe');
+
+
+/*
+ * Ignorez cette section
+ * Elle contient du code pour le formatage de cet exemple
+ */
+
+function p($res, $val, $op, $places, $note = '') {
+ $format = '%0' . (PHP_INT_SIZE * 8) . "b\n";
+
+ printf("Expression : %d = %d %s %d\n", $res, $val, $op, $places);
+
+ echo " Décimal :\n";
+ printf(" val=%d\n", $val);
+ printf(" res=%d\n", $res);
+
+ echo " Binaire :\n";
+ printf(' val=' . $format, $val);
+ printf(' res=' . $format, $res);
+
+ if ($note) {
+ echo " Note : $note\n";
+ }
+
+ echo "\n\n";
+}
+?>
+]]>
+
+ &example.outputs.32bit;
+
+> 1
+ Décimal :
+ val=4
+ res=2
+ Binaire :
+ val=00000000000000000000000000000100
+ res=00000000000000000000000000000010
+ Note : copie du bit de signe maintenant à gauche
+
+Expression : 1 = 4 >> 2
+ Décimal :
+ val=4
+ res=1
+ Binaire :
+ val=00000000000000000000000000000100
+ res=00000000000000000000000000000001
+
+Expression : 0 = 4 >> 3
+ Décimal :
+ val=4
+ res=0
+ Binaire :
+ val=00000000000000000000000000000100
+ res=00000000000000000000000000000000
+ Note : des bits sont sortis par la droite
+
+Expression : 0 = 4 >> 4
+ Décimal :
+ val=4
+ res=0
+ Binaire :
+ val=00000000000000000000000000000100
+ res=00000000000000000000000000000000
+ Note : même résultat que ci-dessus : pas de décalage au dela de 0
+
+
+--- Décalages à droite sur des entiers négatifs ---
+Expression : -2 = -4 >> 1
+ Décimal :
+ val=-4
+ res=-2
+ Binaire :
+ val=11111111111111111111111111111100
+ res=11111111111111111111111111111110
+ Note : copie du bit de signe à gauche
+
+Expression : -1 = -4 >> 2
+ Décimal :
+ val=-4
+ res=-1
+ Binaire :
+ val=11111111111111111111111111111100
+ res=11111111111111111111111111111111
+ Note : des bits sont sortis par la droite
+
+Expression : -1 = -4 >> 3
+ Décimal :
+ val=-4
+ res=-1
+ Binaire :
+ val=11111111111111111111111111111100
+ res=11111111111111111111111111111111
+ Note : même résultat que ci-dessus : pas de décalage au dela de -1
+
+
+--- Décalages à gauche sur des entiers positifs ---
+Expression : 8 = 4 << 1
+ Décimal :
+ val=4
+ res=8
+ Binaire :
+ val=00000000000000000000000000000100
+ res=00000000000000000000000000001000
+ Note : complément de zéros à droite
+
+Expression : 1073741824 = 4 << 28
+ Décimal :
+ val=4
+ res=1073741824
+ Binaire :
+ val=00000000000000000000000000000100
+ res=01000000000000000000000000000000
+
+Expression : -2147483648 = 4 << 29
+ Décimal :
+ val=4
+ res=-2147483648
+ Binaire :
+ val=00000000000000000000000000000100
+ res=10000000000000000000000000000000
+ Note : le bit de signe est sorti
+
+Expression : 0 = 4 << 30
+ Décimal :
+ val=4
+ res=0
+ Binaire :
+ val=00000000000000000000000000000100
+ res=00000000000000000000000000000000
+ Note : des bits sont sortis à gauche
+
+
+--- Décalages à gauche sur des entiers négatifs ---
+Expression : -8 = -4 << 1
+ Décimal :
+ val=-4
+ res=-8
+ Binaire :
+ val=11111111111111111111111111111100
+ res=11111111111111111111111111111000
+ Note : complément de zéros à droite
+
+Expression : -2147483648 = -4 << 29
+ Décimal :
+ val=-4
+ res=-2147483648
+ Binaire :
+ val=11111111111111111111111111111100
+ res=10000000000000000000000000000000
+
+Expression : 0 = -4 << 30
+ Décimal :
+ val=-4
+ res=0
+ Binaire :
+ val=11111111111111111111111111111100
+ res=00000000000000000000000000000000
+ Note : des bits sont sortis à gauche, y compris le bit de signe
+]]>
+
+ &example.outputs.64bit;
+
+> 1
+ Décimal :
+ val=4
+ res=2
+ Binaire :
+ val=0000000000000000000000000000000000000000000000000000000000000100
+ res=0000000000000000000000000000000000000000000000000000000000000010
+ Note : copie du bit de signe maintenant à gauche
+
+Expression : 1 = 4 >> 2
+ Décimal :
+ val=4
+ res=1
+ Binaire :
+ val=0000000000000000000000000000000000000000000000000000000000000100
+ res=0000000000000000000000000000000000000000000000000000000000000001
+
+Expression : 0 = 4 >> 3
+ Décimal :
+ val=4
+ res=0
+ Binaire :
+ val=0000000000000000000000000000000000000000000000000000000000000100
+ res=0000000000000000000000000000000000000000000000000000000000000000
+ Note : des bits sont sortis par la droite
+
+Expression : 0 = 4 >> 4
+ Décimal :
+ val=4
+ res=0
+ Binaire :
+ val=0000000000000000000000000000000000000000000000000000000000000100
+ res=0000000000000000000000000000000000000000000000000000000000000000
+ Note : même résultat que ci-dessus : pas de décalage au dela de 0
+
+
+--- Décalages à droite sur des entiers négatifs ---
+Expression : -2 = -4 >> 1
+ Décimal :
+ val=-4
+ res=-2
+ Binaire :
+ val=1111111111111111111111111111111111111111111111111111111111111100
+ res=1111111111111111111111111111111111111111111111111111111111111110
+ Note : copie du bit de signe maintenant à gauche
+
+Expression : -1 = -4 >> 2
+ Décimal :
+ val=-4
+ res=-1
+ Binaire :
+ val=1111111111111111111111111111111111111111111111111111111111111100
+ res=1111111111111111111111111111111111111111111111111111111111111111
+ Note : des bits sont sortis par la droite
+
+Expression : -1 = -4 >> 3
+ Décimal :
+ val=-4
+ res=-1
+ Binaire :
+ val=1111111111111111111111111111111111111111111111111111111111111100
+ res=1111111111111111111111111111111111111111111111111111111111111111
+ Note : même résultat que ci-dessus : pas de décalage au dela de -1
+
+
+--- Décalage à gauche sur les entiers positifs ---
+Expression : 8 = 4 << 1
+ Décimal :
+ val=4
+ res=8
+ Binaire :
+ val=0000000000000000000000000000000000000000000000000000000000000100
+ res=0000000000000000000000000000000000000000000000000000000000001000
+ Note : complément de zéros à droite
+
+Expression : 4611686018427387904 = 4 << 60
+ Décimal :
+ val=4
+ res=4611686018427387904
+ Binaire :
+ val=0000000000000000000000000000000000000000000000000000000000000100
+ res=0100000000000000000000000000000000000000000000000000000000000000
+
+Expression : -9223372036854775808 = 4 << 61
+ Décimal :
+ val=4
+ res=-9223372036854775808
+ Binaire :
+ val=0000000000000000000000000000000000000000000000000000000000000100
+ res=1000000000000000000000000000000000000000000000000000000000000000
+ Note : le bit de signe est sorti
+
+Expression : 0 = 4 << 62
+ Décimal :
+ val=4
+ res=0
+ Binaire :
+ val=0000000000000000000000000000000000000000000000000000000000000100
+ res=0000000000000000000000000000000000000000000000000000000000000000
+ Note : des bits sont sortis à gauche
+
+
+--- Décalage à gauche sur les entiers négatifs ---
+Expression : -8 = -4 << 1
+ Décimal :
+ val=-4
+ res=-8
+ Binaire :
+ val=1111111111111111111111111111111111111111111111111111111111111100
+ res=1111111111111111111111111111111111111111111111111111111111111000
+ Note : complément de zéros à droite
+
+Expression : -9223372036854775808 = -4 << 61
+ Décimal :
+ val=-4
+ res=-9223372036854775808
+ Binaire :
+ val=1111111111111111111111111111111111111111111111111111111111111100
+ res=1000000000000000000000000000000000000000000000000000000000000000
+
+Expression : 0 = -4 << 62
+ Décimal :
+ val=-4
+ res=0
+ Binaire :
+ val=1111111111111111111111111111111111111111111111111111111111111100
+ res=0000000000000000000000000000000000000000000000000000000000000000
+ Note : des bits sont sortis à gauche, y compris le bit de signe
+]]>
+
+
+
+
+
+ Utilisez les fonctions de l'extension gmp
+ pour les manipulations sur les bits, lorsque les entiers dépassent
+ PHP_INT_MAX.
+
+
+
+
+ &reftitle.seealso;
+
+
+ pack
+ unpack
+ gmp_and
+ gmp_or
+ gmp_xor
+ gmp_testbit
+ gmp_clrbit
+
+
+
+
diff --git a/language/operators/precedence.xml b/language/operators/precedence.xml
index 2ed912d951..209fc16195 100644
--- a/language/operators/precedence.xml
+++ b/language/operators/precedence.xml
@@ -1,486 +1,486 @@
-
-
-
-
- La priorité des opérateurs
- Priorité des opérateurs
-
- La priorité des opérateurs spécifie
- l'ordre dans lequel les valeurs doivent être analysées.
- Par exemple, dans l'expression 1 + 5 * 3, le résultat est
- 16 et non 18, car la multiplication
- ("*") a une priorité supérieure par rapport à l'addition ("+").
- Des parenthèses peuvent être utilisées pour forcer la priorité, si
- nécessaire. Par exemple : (1 + 5) * 3 donnera
- 18.
-
-
- Lorsque les opérateurs ont une priorité égale, leur association
- décide la façon dont les opérateurs sont groupés. Par exemple,
- "-" est une association par la gauche, ainsi 1 - 2 - 3
- est groupé comme ceci (1 - 2) - 3 et sera évalué
- à -4. D'un autre côté, "=" est une association par la
- droite, ainsi, $a = $b = $c est groupé comme ceci
- $a = ($b = $c).
-
-
-
- Les opérateurs, dont la priorité est égale, qui ne sont pas associatifs,
- ne peuvent pas être utilisés entre eux, par exemple,
- 1 < 2 > 1 est interdit en PHP. L'expression
- 1 <= 1 == 1 par contre, est autorisée, car l'opérateur
- == a une précédence inférieure que l'opérateur
- <=.
-
-
- L'associativité a uniquement du sens pour les opérateurs binaire (et ternaire).
- Les opérateurs unitaires sont soit préfixés, soit suffixés ainsi cette notion
- n'est pas applicable. Par exemple !!$a peut uniquement
- être groupé de la manière suivante !(!$a).
-
-
- L'utilisation des parenthèses, y compris lorsqu'elles ne sont pas nécessaires,
- permet de mieux lire le code en effectuant des groupements explicites
- plutôt qu'imaginer la priorité des opérateurs et leurs associations.
-
-
- Le tableau qui suit liste les opérateurs par ordre de priorité, avec la
- priorité la plus élevée en haut. Les opérateurs sur la même ligne ont
- une priorité équivalente (donc l'associativité décide du groupement).
-
-
-
-
- Associativité
-
- $a = 5, $b = 5
-var_dump($a, $b);
-?>
-]]>
-
-
-
-
- L'opérateur ternaire requiert spécifiquement l'utilisation de parenthèses
- pour lever l'ambiguïté de la priorité.
-
-
-
- Précédence explicite
-
-
-]]>
-
-
-
-
- La priorité et l'association de l'opérateur ne déterminent que
- la façon dont les expressions sont groupées ; ils ne spécifient
- pas l'ordre de l'évaluation. PHP ne spécifie pas (de manière générale)
- l'ordre dans lequel une expression est évaluée et le code qui suppose
- un ordre spécifique d'évaluation ne devrait pas exister, car le
- comportement peut changer entre les différentes versions de PHP
- ou suivant le code environnant.
-
- Ordre d'évaluation indéfini
-
-
-]]>
-
-
-
- Priorité de +, - et .
-
-
-]]>
-
- &example.outputs;
-
-
-
-
-
- Avant PHP 8, +, - et . avaient la même précédence
-
-
-]]>
-
- &example.outputs;
-
-
-
-
-
-
-
- Bien que = soit prioritaire sur
- la plupart des opérateurs, PHP va tout de même exécuter des
- expressions comme : if (!$a = foo()).
- Dans cette situation, le résultat de foo()
- sera placé dans la variable $a.
-
-
-
- &reftitle.changelog;
-
-
-
-
- &Version;
- &Description;
-
-
-
-
- 8.0.0
-
- La concaténation de chaînes de caractères (.) a désormais
- une précédence moins élevée que l'addition/soustraction arithmétique
- (+ et -) et les shifts bit-à-bit
- gauche/droite (<< et >>);
- auparavant ceci avait la même précédence que + et -,
- et une précédence plus élevée que << et >>.
-
-
-
- 8.0.0
-
- L'opérateur ternaire (? :) est désormais non associatif ;
- auparavant, il était gauche-associatif.
-
-
-
- 7.4.0
-
- Dépendre de la précédence de la concaténation de chaînes de caractères
- (.) relatif à l'addition/soustraction arithmétique
- (+ ou -) ou les shifts bit-à-bit
- gauche/droite (<< ou >>),
- c.-à-d. les utiliser ensemble dans une expression sans parenthèse, est obsolète.
-
-
-
- 7.4.0
-
- Dépendre de la gauche-associativité de l'opérateur ternaire (? :),
- c.-à-d. l'imbrication de plusieurs opérateurs ternaires qui ne sont pas
- entre parenthèse, est obsolète.
-
-
-
-
-
-
-
+
+
+
+
+ La priorité des opérateurs
+ Priorité des opérateurs
+
+ La priorité des opérateurs spécifie
+ l'ordre dans lequel les valeurs doivent être analysées.
+ Par exemple, dans l'expression 1 + 5 * 3, le résultat est
+ 16 et non 18, car la multiplication
+ ("*") a une priorité supérieure par rapport à l'addition ("+").
+ Des parenthèses peuvent être utilisées pour forcer la priorité, si
+ nécessaire. Par exemple : (1 + 5) * 3 donnera
+ 18.
+
+
+ Lorsque les opérateurs ont une priorité égale, leur association
+ décide la façon dont les opérateurs sont groupés. Par exemple,
+ "-" est une association par la gauche, ainsi 1 - 2 - 3
+ est groupé comme ceci (1 - 2) - 3 et sera évalué
+ à -4. D'un autre côté, "=" est une association par la
+ droite, ainsi, $a = $b = $c est groupé comme ceci
+ $a = ($b = $c).
+
+
+
+ Les opérateurs, dont la priorité est égale, qui ne sont pas associatifs,
+ ne peuvent pas être utilisés entre eux, par exemple,
+ 1 < 2 > 1 est interdit en PHP. L'expression
+ 1 <= 1 == 1 par contre, est autorisée, car l'opérateur
+ == a une précédence inférieure que l'opérateur
+ <=.
+
+
+ L'associativité a uniquement du sens pour les opérateurs binaire (et ternaire).
+ Les opérateurs unitaires sont soit préfixés, soit suffixés ainsi cette notion
+ n'est pas applicable. Par exemple !!$a peut uniquement
+ être groupé de la manière suivante !(!$a).
+
+
+ L'utilisation des parenthèses, y compris lorsqu'elles ne sont pas nécessaires,
+ permet de mieux lire le code en effectuant des groupements explicites
+ plutôt qu'imaginer la priorité des opérateurs et leurs associations.
+
+
+ Le tableau qui suit liste les opérateurs par ordre de priorité, avec la
+ priorité la plus élevée en haut. Les opérateurs sur la même ligne ont
+ une priorité équivalente (donc l'associativité décide du groupement).
+
+
+
+
+ Associativité
+
+ $a = 5, $b = 5
+var_dump($a, $b);
+?>
+]]>
+
+
+
+
+ L'opérateur ternaire requiert spécifiquement l'utilisation de parenthèses
+ pour lever l'ambiguïté de la priorité.
+
+
+
+ Précédence explicite
+
+
+]]>
+
+
+
+
+ La priorité et l'association de l'opérateur ne déterminent que
+ la façon dont les expressions sont groupées ; ils ne spécifient
+ pas l'ordre de l'évaluation. PHP ne spécifie pas (de manière générale)
+ l'ordre dans lequel une expression est évaluée et le code qui suppose
+ un ordre spécifique d'évaluation ne devrait pas exister, car le
+ comportement peut changer entre les différentes versions de PHP
+ ou suivant le code environnant.
+
+ Ordre d'évaluation indéfini
+
+
+]]>
+
+
+
+ Priorité de +, - et .
+
+
+]]>
+
+ &example.outputs;
+
+
+
+
+
+ Avant PHP 8, +, - et . avaient la même précédence
+
+
+]]>
+
+ &example.outputs;
+
+
+
+
+
+
+
+ Bien que = soit prioritaire sur
+ la plupart des opérateurs, PHP va tout de même exécuter des
+ expressions comme : if (!$a = foo()).
+ Dans cette situation, le résultat de foo()
+ sera placé dans la variable $a.
+
+
+
+ &reftitle.changelog;
+
+
+
+
+ &Version;
+ &Description;
+
+
+
+
+ 8.0.0
+
+ La concaténation de chaînes de caractères (.) a désormais
+ une précédence moins élevée que l'addition/soustraction arithmétique
+ (+ et -) et les shifts bit-à-bit
+ gauche/droite (<< et >>);
+ auparavant ceci avait la même précédence que + et -,
+ et une précédence plus élevée que << et >>.
+
+
+
+ 8.0.0
+
+ L'opérateur ternaire (? :) est désormais non associatif ;
+ auparavant, il était gauche-associatif.
+
+
+
+ 7.4.0
+
+ Dépendre de la précédence de la concaténation de chaînes de caractères
+ (.) relatif à l'addition/soustraction arithmétique
+ (+ ou -) ou les shifts bit-à-bit
+ gauche/droite (<< ou >>),
+ c.-à-d. les utiliser ensemble dans une expression sans parenthèse, est obsolète.
+
+
+
+ 7.4.0
+
+ Dépendre de la gauche-associativité de l'opérateur ternaire (? :),
+ c.-à-d. l'imbrication de plusieurs opérateurs ternaires qui ne sont pas
+ entre parenthèse, est obsolète.
+
+
+
+
+
+
+
From f94ec7921e91ebe1e6d116c2936c5280e7246684 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:18:01 +0100
Subject: [PATCH 08/96] =?UTF-8?q?Fix=20reference/:=20doubles=20espaces,=20?=
=?UTF-8?q?anglicismes,=20accents,=20balises,=20entit=C3=A9s?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 143 doubles espaces supprimées dans 117 fichiers
- 22 "librairie" → "bibliothèque" dans 17 fichiers
- "connection" → "connexion" (mongodb/book.xml)
- 4 accents manquants sur "défaut" (mongodb, zookeeper)
- 6 corrections structurelles : balises manquantes (mqseries),
constructeur manquant (parallel), conditions d'erreur incomplètes
(simdjson), public manquant (stomp), entrée de
table manquante (swoole), type de retour faux + contenu manquant (yar)
- 13 entités &true;/&false;/&null; corrigées dans 10 fichiers
- 1 paragraphe non traduit corrigé (parle/rlexer/push.xml)
---
reference/apcu/functions/apcu-entry.xml | 2 +-
reference/array/functions/array-find.xml | 2 +-
reference/array/functions/array-splice.xml | 2 +-
reference/bc/functions/bcmul.xml | 2 +-
.../cubrid/functions/cubrid-lob2-seek64.xml | 2 +-
.../dateinterval/createfromdatestring.xml | 2 +-
reference/datetime/dateperiod/construct.xml | 2 +-
reference/datetime/datetime/modify.xml | 2 +-
reference/datetime/datetime/sub.xml | 2 +-
.../datetime/datetimeimmutable/modify.xml | 2 +-
.../datetime/datetimeinterface/format.xml | 4 +-
reference/datetime/examples.xml | 316 +-
reference/datetime/functions/mktime.xml | 2 +-
reference/datetime/functions/strftime.xml | 2 +-
reference/dba/configure.xml | 548 +-
reference/eio/functions/eio-ftruncate.xml | 218 +-
reference/eio/functions/eio-read.xml | 2 +-
reference/ev/evsignal.xml | 236 +-
reference/exif/functions/exif-read-data.xml | 2 +-
reference/expect/setup.xml | 112 +-
.../fann-set-activation-steepness.xml | 242 +-
reference/fann/setup.xml | 374 +-
reference/ffi/ffi/load.xml | 2 +-
reference/ffi/ffi/string.xml | 2 +-
reference/ftp/functions/ftp-ssl-connect.xml | 2 +-
.../functions/register-shutdown-function.xml | 2 +-
reference/gearman/gearmanclient/dohigh.xml | 190 +-
reference/geoip/ini.xml | 92 +-
reference/gmp/setup.xml | 106 +-
.../ibm_db2/functions/db2-bind-param.xml | 2 +-
reference/ibm_db2/ini.xml | 2 +-
reference/image/functions/gd-info.xml | 2 +-
reference/image/functions/getimagesize.xml | 2 +-
reference/image/ini.xml | 2 +-
reference/imagick/imagickdraw/bezier.xml | 2 +-
reference/imap/setup.xml | 178 +-
reference/info/constants.xml | 1202 ++--
reference/info/functions/getopt.xml | 2 +-
reference/info/functions/ini-set.xml | 2 +-
reference/inotify/constants.xml | 590 +-
reference/ldap/functions/ldap-search.xml | 2 +-
.../functions/libxml-set-streams-context.xml | 2 +-
reference/libxml/libxmlerror.xml | 2 +-
reference/mail/functions/mail.xml | 2 +-
reference/mail/ini.xml | 2 +-
reference/mbstring/encodings.xml | 4 +-
.../mcrypt/functions/mcrypt-module-open.xml | 2 +-
reference/memcached/memcached/get.xml | 2 +-
reference/mongodb/architecture.xml | 2004 +++----
reference/mongodb/book.xml | 138 +-
reference/mongodb/configure.xml | 664 +--
reference/mongodb/functions/bson/tojson.xml | 2 +-
.../mongodb/driver/bulkwrite/construct.xml | 2 +-
.../mongodb/driver/bulkwrite/delete.xml | 2 +-
.../mongodb/driver/bulkwrite/update.xml | 2 +-
.../driver/readpreference/construct.xml | 2 +-
.../driver/server/executebulkwrite.xml | 2 +-
.../mongodb/driver/writeconcern/construct.xml | 2 +-
reference/mqseries/constants.xml | 136 +-
reference/mysqli/configure.xml | 2 +-
reference/mysqli/mysqli/get-client-info.xml | 2 +-
reference/mysqlnd/config.xml | 912 +--
reference/mysqlnd/notes.xml | 76 +-
reference/mysqlnd/plugin.xml | 2924 ++++-----
.../functions/oci-get-implicit-resultset.xml | 2 +-
.../oci8/functions/oci-set-prefetch-lob.xml | 6 +-
reference/oci8/ocilob/saveFile.xml | 2 +-
reference/oci8/setup.xml | 182 +-
reference/opcache/ini.xml | 2974 ++++-----
reference/openssl/book.xml | 116 +-
reference/openssl/configure.xml | 298 +-
.../openssl/functions/openssl-digest.xml | 2 +-
.../functions/openssl-x509-checkpurpose.xml | 2 +-
reference/openssl/setup.xml | 144 +-
.../parallel/parallel/runtime/construct.xml | 7 +
reference/parle/book.xml | 118 +-
reference/parle/parle/rlexer/push.xml | 242 +-
reference/password/constants.xml | 520 +-
.../password/functions/password-hash.xml | 6 +-
reference/pcre/functions/preg-match.xml | 2 +-
reference/pcre/functions/preg-replace.xml | 2 +-
reference/pcre/pattern.syntax.xml | 5294 ++++++++---------
reference/pdo/configure.xml | 202 +-
reference/pdo/connections.xml | 350 +-
reference/pdo/constants.xml | 1494 ++---
reference/pgsql/constants.xml | 2026 +++----
reference/pgsql/functions/pg-delete.xml | 2 +-
.../pgsql/functions/pg-escape-literal.xml | 2 +-
.../pgsql/functions/pg-result-status.xml | 2 +-
.../pgsql/functions/pg-unescape-bytea.xml | 2 +-
reference/pgsql/functions/pg-update.xml | 2 +-
reference/phar/Phar/buildFromIterator.xml | 2 +-
reference/phar/Phar/convertToExecutable.xml | 4 +-
reference/phar/Phar/isCompressed.xml | 4 +-
reference/phar/Phar/running.xml | 2 +-
reference/phar/Phar/stopBuffering.xml | 2 +-
reference/phar/PharData/compressFiles.xml | 2 +-
reference/phar/PharData/decompressFiles.xml | 2 +-
.../phar/PharData/setSignatureAlgorithm.xml | 2 +-
reference/phar/book.xml | 378 +-
reference/phar/fileformat.xml | 1044 ++--
reference/phar/ini.xml | 328 +-
reference/phar/using.xml | 784 +--
.../functions/pspell-config-save-repl.xml | 2 +-
.../pspell/functions/pspell-new-personal.xml | 2 +-
reference/pthreads/configure.xml | 94 +-
reference/radius/constants.xml | 4008 ++++++-------
.../reflectionclass/iscloneable.xml | 2 +-
.../reflectionenum/getbackingtype.xml | 248 +-
.../reflectionproperty/ispublic.xml | 178 +-
reference/rpminfo/book.xml | 92 +-
reference/rrd/functions/rrd-first.xml | 146 +-
.../functions/runkit7-constant-remove.xml | 144 +-
reference/seaslog/seaslog/analyzerdetail.xml | 2 +-
reference/session/book.xml | 230 +-
reference/session/functions/session-start.xml | 2 +-
reference/session/security.xml | 1716 +++---
.../simdjson/functions/simdjson-key-value.xml | 252 +-
reference/spl/arrayobject/setflags.xml | 2 +-
reference/spl/splfileinfo/setfileclass.xml | 2 +-
reference/spl/splfixedarray/offsetget.xml | 2 +-
reference/sqlite3/setup.xml | 94 +-
reference/sqlsrv/constants.xml | 2038 +++----
reference/ssh2/functions/ssh2-sftp-lstat.xml | 2 +-
.../functions/stats-rand-gen-chisquare.xml | 2 +-
reference/stomp/stomp/construct.xml | 2 +-
reference/stream/functions/stream-select.xml | 2 +-
.../stream/streamwrapper/stream-metadata.xml | 2 +-
.../streamwrapper/stream-set-option.xml | 4 +-
reference/swoole/ini.xml | 313 +-
.../swoole/swoole/coroutine/lock/lock.xml | 116 +-
.../swoole/swoole/coroutine/lock/trylock.xml | 116 +-
.../swoole/swoole/coroutine/lock/unlock.xml | 138 +-
reference/tidy/tidy/html.xml | 2 +-
reference/tidy/tidynode/ishtml.xml | 2 +-
reference/uodbc/configure.xml | 6 +-
.../uodbc/functions/odbc-data-source.xml | 2 +-
reference/uodbc/functions/odbc-tables.xml | 2 +-
reference/uopz/functions/uopz-extend.xml | 2 +-
reference/uopz/functions/uopz-implement.xml | 2 +-
reference/uopz/functions/uopz_set_static.xml | 2 +-
reference/url/functions/rawurlencode.xml | 2 +-
.../rightinfo/get-full-username.xml | 2 +-
.../functions/wincache-ocache-fileinfo.xml | 4 +-
reference/wincache/win32build.xml | 2 +-
reference/xhprof/ini.xml | 2 +-
reference/xml/configure.xml | 2 +-
.../xmlreader/xmlreader/getattributens.xml | 2 +-
.../xsl/xsltprocessor/getsecurityprefs.xml | 2 +-
.../yar/yar_client_exception/gettype.xml | 6 +-
reference/yaz/functions/yaz-record.xml | 2 +-
reference/zookeeper/book.xml | 2 +-
reference/zookeeper/ini.xml | 2 +-
.../zookeeper/zookeeper/setdebuglevel.xml | 2 +-
.../zookeeper/zookeeper/setlogstream.xml | 6 +-
155 files changed, 18963 insertions(+), 18953 deletions(-)
diff --git a/reference/apcu/functions/apcu-entry.xml b/reference/apcu/functions/apcu-entry.xml
index 7d6c35d67a..adaee36ad2 100644
--- a/reference/apcu/functions/apcu-entry.xml
+++ b/reference/apcu/functions/apcu-entry.xml
@@ -20,7 +20,7 @@
Tente de récupérer atomiquement la valeur indexée par la clé key
dans le cache. Si elle ne peut pas être récupérée, la fonction passée à
callback est appelée, avec pour unique argument la valeur
- contenue dans key. La valeur de retour de l'appel est
+ contenue dans key. La valeur de retour de l'appel est
ensuite mise en cache avec le paramètre optionnel ttl,
puis rend la main.
diff --git a/reference/array/functions/array-find.xml b/reference/array/functions/array-find.xml
index 92113a0cea..ef8b8d1017 100644
--- a/reference/array/functions/array-find.xml
+++ b/reference/array/functions/array-find.xml
@@ -42,7 +42,7 @@
mixedvaluemixedkey
- Si cette fonction retourne &true;, la valeur de l'élément sera retournée par
+ Si cette fonction retourne &true;, la valeur de l'élément sera retournée par
array_find et la fonction de rappel ne sera pas appelée
pour les autres éléments.
diff --git a/reference/array/functions/array-splice.xml b/reference/array/functions/array-splice.xml
index c8dd21a17c..d5149440fe 100644
--- a/reference/array/functions/array-splice.xml
+++ b/reference/array/functions/array-splice.xml
@@ -216,7 +216,7 @@ array(5) {
- Déclaration équivalentes à des exemples de array_splice divers
+ Déclaration équivalentes à des exemples de array_splice divers
Les déclarations suivantes sont équivalentes :
diff --git a/reference/bc/functions/bcmul.xml b/reference/bc/functions/bcmul.xml
index b31bac519b..ac3866ba6d 100644
--- a/reference/bc/functions/bcmul.xml
+++ b/reference/bc/functions/bcmul.xml
@@ -53,7 +53,7 @@
7.3.0
- bcmul retourne désormais les nombres avec la précision demandée.
+ bcmul retourne désormais les nombres avec la précision demandée.
Auparavant, les nombres retournés pouvait omettre les zéros décimaux trainant à la fin.
diff --git a/reference/cubrid/functions/cubrid-lob2-seek64.xml b/reference/cubrid/functions/cubrid-lob2-seek64.xml
index fb61ebe5bf..cd7269ccca 100644
--- a/reference/cubrid/functions/cubrid-lob2-seek64.xml
+++ b/reference/cubrid/functions/cubrid-lob2-seek64.xml
@@ -75,7 +75,7 @@
Ce paramètre peut prendre les valeurs suivantes :CUBRID_CURSOR_FIRST : déplace le curseur vers l'avant en partant du début.
- CUBRID_CURSOR_CURRENT : déplace le curseur vers l'arrière et vers l'avant depuis la position courante.
+ CUBRID_CURSOR_CURRENT : déplace le curseur vers l'arrière et vers l'avant depuis la position courante.CUBRID_CURSOR_LAST : déplace le curseur vers l'arrière depuis la fin de l'objet LOB.
diff --git a/reference/datetime/dateinterval/createfromdatestring.xml b/reference/datetime/dateinterval/createfromdatestring.xml
index e2692e2cde..7542623772 100644
--- a/reference/datetime/dateinterval/createfromdatestring.xml
+++ b/reference/datetime/dateinterval/createfromdatestring.xml
@@ -84,7 +84,7 @@
DateInterval::createFromDateString lance désormais
DateMalformedStringException si une
- chaîne invalide est passée. Auparavant, il retournait false,
+ chaîne invalide est passée. Auparavant, il retournait &false;,
et un avertissement était émis.
date_interval_create_from_date_string n'a pas été
modifié.
diff --git a/reference/datetime/dateperiod/construct.xml b/reference/datetime/dateperiod/construct.xml
index 7005c8fd0a..edb9f6a9af 100644
--- a/reference/datetime/dateperiod/construct.xml
+++ b/reference/datetime/dateperiod/construct.xml
@@ -305,7 +305,7 @@ Thursday 2022-12-29
Les nombres de répétitions non liés spécifiés dans la section 4.5
"Intervalle de temps récurrent" de la norme ISO 8601 ne sont pas
supportés, c'est-à-dire ni "R/..." comme
- isostr ni &null; comme
+ isostr ni &null; comme
end ne fonctionnerait.
diff --git a/reference/datetime/datetime/modify.xml b/reference/datetime/datetime/modify.xml
index 6aeddd657e..4941adc089 100644
--- a/reference/datetime/datetime/modify.xml
+++ b/reference/datetime/datetime/modify.xml
@@ -74,7 +74,7 @@
DateTime::modify lance désormais
DateMalformedStringException si une
- chaîne invalide est passée. Auparavant, il retournait false,
+ chaîne invalide est passée. Auparavant, il retournait &false;,
et un avertissement était émis.
diff --git a/reference/datetime/datetime/sub.xml b/reference/datetime/datetime/sub.xml
index 6ec382855f..9da406f899 100644
--- a/reference/datetime/datetime/sub.xml
+++ b/reference/datetime/datetime/sub.xml
@@ -88,7 +88,7 @@
Lance désormais une
DateInvalidOperationException avec
- DateTime::sub au lieu d'un avertissement
+ DateTime::sub au lieu d'un avertissement
quand une opération non supportée est tentée.
date_sub n'a pas été modifié.
diff --git a/reference/datetime/datetimeimmutable/modify.xml b/reference/datetime/datetimeimmutable/modify.xml
index 59db4b1e9a..eefd913fd4 100644
--- a/reference/datetime/datetimeimmutable/modify.xml
+++ b/reference/datetime/datetimeimmutable/modify.xml
@@ -65,7 +65,7 @@
DateTimeImmutable::modify lance désormais
DateMalformedStringException si une
- chaîne invalide est fourni. Auparavant, il retournait false,
+ chaîne invalide est fourni. Auparavant, il retournait &false;,
et un avertissement était émis.
diff --git a/reference/datetime/datetimeinterface/format.xml b/reference/datetime/datetimeinterface/format.xml
index 8e9f7a2eb8..2e6c5c9f6a 100644
--- a/reference/datetime/datetimeinterface/format.xml
+++ b/reference/datetime/datetimeinterface/format.xml
@@ -101,7 +101,7 @@
Suffixe ordinal d'un nombre pour le jour du mois, en anglais, sur deux lettresst, nd, rd ou
- th. Fonctionne bien avec j
+ th. Fonctionne bien avec j
@@ -343,7 +343,7 @@
U
- Secondes depuis l'époque Unix (1er Janvier 1970, 0h00 00s GMT)
+ Secondes depuis l'époque Unix (1er Janvier 1970, 0h00 00s GMT)Voir aussi time
diff --git a/reference/datetime/examples.xml b/reference/datetime/examples.xml
index d7854b8ebd..810ece6e82 100644
--- a/reference/datetime/examples.xml
+++ b/reference/datetime/examples.xml
@@ -1,158 +1,158 @@
-
-
-
-
-
-
- &reftitle.examples;
-
-
- Arithmétique avec DateTime
-
- Les exemples suivants montrent quelques pièges de l'arithmétique de DateTime
- en ce qui concerne les transitions DST et les mois ayant un nombre différent
- de jours.
-
-
-
- DateTimeImmutable::add/sub ajout d'un interval de temps écoulé.
-
- Ajouter PT24H au dela d'une transition DST semblera ajouter 23/25 heures
- (pour la plupart des fuseaux horaires).
-
-
-format("Y-m-d H:i:s P"), PHP_EOL;
-$dt = $dt->add(new DateInterval("PT3H"));
-echo "End: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
-]]>
-
- &example.outputs;
-
-
-
-
-
-
-
- DateTimeImmutable::modify et strtotime incrémentation ou décrémentation de valeurs individuelles
-
- Ajouter +24 heures au dela d'une transition DST peut ajouter exactement 24
- heures comme vu avec la chaîne date/time
- (sauf si l'heure de début ou de fin est sur un point de transition).
-
-
-format("Y-m-d H:i:s P"), PHP_EOL;
-$dt = $dt->modify("+24 hours");
-echo "End: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
-]]>
-
- &example.outputs;
-
-
-
-
-
-
-
- L'ajout ou la soustraction de dates/heures peut dépasser
- (en plus ou en moins) des dates
-
- Comme pour 31 Janvier + 1 mois donnera comme résultat 2 Mars (année bisextile) ou
- 3 Mars (année normale).
-
-
-format("Y-m-d H:i:s P"), PHP_EOL;
-$dt = $dt->modify("+1 month");
-echo "End: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
-
-echo "Leap year:\n"; // February has 29 days
-$dt = new DateTimeImmutable("2016-01-31 00:00:00", new DateTimeZone("America/New_York"));
-echo "Start: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
-$dt = $dt->modify("+1 month");
-echo "End: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
-]]>
-
- &example.outputs;
-
-
-
-
- Pour obtenir le dernier du mois prochain (autrement dit pour prévenir le
- dépassement), le format last day of est disponible.
-
-
-format("Y-m-d H:i:s P"), PHP_EOL;
-$dt = $dt->modify("last day of next month");
-echo "End: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
-
-echo "Leap year:\n"; // February has 29 days
-$dt = new DateTimeImmutable("2016-01-31 00:00:00", new DateTimeZone("America/New_York"));
-echo "Start: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
-$dt = $dt->modify("last day of next month");
-echo "End: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
-]]>
-
- &example.outputs;
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+ &reftitle.examples;
+
+
+ Arithmétique avec DateTime
+
+ Les exemples suivants montrent quelques pièges de l'arithmétique de DateTime
+ en ce qui concerne les transitions DST et les mois ayant un nombre différent
+ de jours.
+
+
+
+ DateTimeImmutable::add/sub ajout d'un interval de temps écoulé.
+
+ Ajouter PT24H au dela d'une transition DST semblera ajouter 23/25 heures
+ (pour la plupart des fuseaux horaires).
+
+
+format("Y-m-d H:i:s P"), PHP_EOL;
+$dt = $dt->add(new DateInterval("PT3H"));
+echo "End: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
+]]>
+
+ &example.outputs;
+
+
+
+
+
+
+
+ DateTimeImmutable::modify et strtotime incrémentation ou décrémentation de valeurs individuelles
+
+ Ajouter +24 heures au dela d'une transition DST peut ajouter exactement 24
+ heures comme vu avec la chaîne date/time
+ (sauf si l'heure de début ou de fin est sur un point de transition).
+
+
+format("Y-m-d H:i:s P"), PHP_EOL;
+$dt = $dt->modify("+24 hours");
+echo "End: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
+]]>
+
+ &example.outputs;
+
+
+
+
+
+
+
+ L'ajout ou la soustraction de dates/heures peut dépasser
+ (en plus ou en moins) des dates
+
+ Comme pour 31 Janvier + 1 mois donnera comme résultat 2 Mars (année bisextile) ou
+ 3 Mars (année normale).
+
+
+format("Y-m-d H:i:s P"), PHP_EOL;
+$dt = $dt->modify("+1 month");
+echo "End: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
+
+echo "Leap year:\n"; // February has 29 days
+$dt = new DateTimeImmutable("2016-01-31 00:00:00", new DateTimeZone("America/New_York"));
+echo "Start: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
+$dt = $dt->modify("+1 month");
+echo "End: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
+]]>
+
+ &example.outputs;
+
+
+
+
+ Pour obtenir le dernier du mois prochain (autrement dit pour prévenir le
+ dépassement), le format last day of est disponible.
+
+
+format("Y-m-d H:i:s P"), PHP_EOL;
+$dt = $dt->modify("last day of next month");
+echo "End: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
+
+echo "Leap year:\n"; // February has 29 days
+$dt = new DateTimeImmutable("2016-01-31 00:00:00", new DateTimeZone("America/New_York"));
+echo "Start: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
+$dt = $dt->modify("last day of next month");
+echo "End: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
+]]>
+
+ &example.outputs;
+
+
+
+
+
+
+
+
+
+
diff --git a/reference/datetime/functions/mktime.xml b/reference/datetime/functions/mktime.xml
index 1555b6ffa0..52b4e1a82e 100644
--- a/reference/datetime/functions/mktime.xml
+++ b/reference/datetime/functions/mktime.xml
@@ -121,7 +121,7 @@
allant de 0 à 69, correspondant aux valeurs 2000 à 2069 et 70 à 100,
correspondant aux valeurs 1970 à 2000. Sur les systèmes où time_t
un entier signé sur 32bits, ce qui est le plus courant de nos jours,
- la période valide pour year est
+ la période valide pour year est
quelque part près de 1901 et 2038.
diff --git a/reference/datetime/functions/strftime.xml b/reference/datetime/functions/strftime.xml
index fe16c01951..a0872b43dc 100644
--- a/reference/datetime/functions/strftime.xml
+++ b/reference/datetime/functions/strftime.xml
@@ -287,7 +287,7 @@
%cDate et heure préférées, basées sur la locale
- Exemple : Tue Feb 5 00:45:10 2009 pour
+ Exemple : Tue Feb 5 00:45:10 2009 pour
le 5 février 2009 à 12:45:10 AM
diff --git a/reference/dba/configure.xml b/reference/dba/configure.xml
index 3dc6c97035..7adb811c3b 100644
--- a/reference/dba/configure.xml
+++ b/reference/dba/configure.xml
@@ -1,274 +1,274 @@
-
-
-
-
-
- &reftitle.install;
-
- En utilisant l'option de compilation ,
- vous pouvez compiler un module dynamique qui activera le support
- des bases de données de style DBM pour PHP. Vous devez aussi ajouter le support
- d'au moins l'un des gestionnaires suivants, en spécifiant l'option de
- configuration ou
- lors de la configuration de
- PHP.
-
-
-
- Après avoir configuré et compilé PHP, vous devez exécuter les tests
- suivants à partir de la ligne de commande : php run-tests.php
- ext/dba. Cela montre si votre combinaison de pilotes
- fonctionne. Les plus problématiques sont dbm et
- ndbm qui entrent en conflit avec nombre d'installations.
- Ceci est dû au fait que sur de nombreux systèmes, ces bibliothèques font
- parties de plus d'une bibliothèque. Le test de configuration vous empêche
- juste de configurer des descripteurs dont la combinaison est défectueuse
- alors qu'ils fonctionnent correctement séparément.
-
-
-
- Gestionnaires DBA supportés
-
-
-
- Gestionnaire
- Option de configuration
-
-
-
-
- dbm
-
-
- Pour activer le support de dbm, ajoutez l'option
- de compilation .
-
-
- dbm est une surcouche qui aboutit souvent à des échecs.
- Ainsi, vous ne devez utiliser dbm que si vous êtes sûr qu'il
- fonctionne et que vous avez besoin de ce format.
-
-
-
-
-
-
-
- ndbm
-
-
- Pour activer le support de ndbm, ajoutez l'option
- de compilation .
-
-
- ndbm est une surcouche qui aboutit souvent à des échecs.
- Ainsi, vous ne devez utiliser ndbm que si vous êtes sûr qu'il
- fonctionne et que vous avez besoin de ce format.
-
-
-
-
-
-
-
- gdbm
-
- Pour activer le support de gdbm, ajoutez l'option
- de compilation .
-
-
-
-
- db2
-
-
- Pour activer le support de Oracle Berkeley DB 2, ajoutez l'option
- de compilation .
-
-
- db2 entre en conflit avec db3 et db4.
-
-
-
-
-
-
-
- db3
-
-
- Pour activer le support de Oracle Berkeley DB 3, ajoutez l'option
- de compilation .
-
-
- db3 entre en conflit avec db2 et db4.
-
-
-
-
-
-
-
- db4
-
-
- Pour activer le support de Oracle Berkeley DB 4, ajoutez l'option
- de compilation .
-
-
- db4 entre en conflit avec db2 et db3.
-
-
-
-
- Les bibliothèques db avec des
- versions allant de 4.1 à 4.1.24 ne peuvent être utilisées avec aucune
- version de PHP.
-
-
- Le support DB5 a été ajouté en PHP 5.3.3.
-
-
-
-
-
-
-
- cdb
-
-
- Pour activer le support de cdb, ajoutez l'option
- de compilation .
-
-
- Vous pouvez omettre d'utiliser DIR, afin
- d'exploiter la bibliothèque cdb fournie avec PHP, qui ajoute un
- gestionnaire cdb_make, permet la création de fichier
- cdb et permet l'accès aux fichiers cbd via le réseau avec les
- flux de PHP.
-
-
-
-
-
-
-
- flatfile
-
-
- Pour activer le support des fichiers, ajoutez l'option
- de compilation
- .
- Antérieur à PHP 5.2.1 l'option
- devait être utilisé à la place.
-
-
- Ceci a été ajouté pour assurer la compatibilité avec l'extension
- dbm qui est obsolète.
- Utilisez ce gestionnaire seulement quand vous ne pouvez installer
- aucun autre gestionnaire et que vous ne pouvez pas utiliser le
- gestionnaire cdb intégré.
-
-
-
-
-
-
-
- inifile
-
-
- Pour activer le support de inifile, ajoutez l'option
- de compilation .
- Antérieur à PHP 5.2.1 l'option
- devait être utilisé à la place.
-
-
- Cette option a été ajoutée pour permettre de lire et écrire dans
- des fichiers d'initialisation de type Microsoft
- (.ini), comme le &php.ini; par exemple.
-
-
-
-
-
-
-
- qdbm
-
-
- Pour activer le support de qdbm, ajoutez l'option de compilation
- .
-
-
- qdbm entre en conflit avec dbm et gdbm.
-
-
-
-
- La bibliothèque qdbm peut être téléchargée depuis
- .
-
-
-
-
-
-
-
- tcadb
-
-
- Pour activer le support de Tokyo Cabinet, ajouter l'option de compilation
- .
-
-
- La bibliothèque Tokyo Cabinet peut être
- téléchargée depuis .
-
-
-
-
-
-
-
- lmdb
-
-
- Pour activer le support de Lightning Memory-Mapped Database ajoutez
- l'option de configuration
- .
-
-
- Ceci a été ajouté en PHP 7.2.0. La bibliothèque
- Lightning Memory-Mapped Database peut être téléchargée depuis
- .
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+ &reftitle.install;
+
+ En utilisant l'option de compilation ,
+ vous pouvez compiler un module dynamique qui activera le support
+ des bases de données de style DBM pour PHP. Vous devez aussi ajouter le support
+ d'au moins l'un des gestionnaires suivants, en spécifiant l'option de
+ configuration ou
+ lors de la configuration de
+ PHP.
+
+
+
+ Après avoir configuré et compilé PHP, vous devez exécuter les tests
+ suivants à partir de la ligne de commande : php run-tests.php
+ ext/dba. Cela montre si votre combinaison de pilotes
+ fonctionne. Les plus problématiques sont dbm et
+ ndbm qui entrent en conflit avec nombre d'installations.
+ Ceci est dû au fait que sur de nombreux systèmes, ces bibliothèques font
+ parties de plus d'une bibliothèque. Le test de configuration vous empêche
+ juste de configurer des descripteurs dont la combinaison est défectueuse
+ alors qu'ils fonctionnent correctement séparément.
+
+
+
+ Gestionnaires DBA supportés
+
+
+
+ Gestionnaire
+ Option de configuration
+
+
+
+
+ dbm
+
+
+ Pour activer le support de dbm, ajoutez l'option
+ de compilation .
+
+
+ dbm est une surcouche qui aboutit souvent à des échecs.
+ Ainsi, vous ne devez utiliser dbm que si vous êtes sûr qu'il
+ fonctionne et que vous avez besoin de ce format.
+
+
+
+
+
+
+
+ ndbm
+
+
+ Pour activer le support de ndbm, ajoutez l'option
+ de compilation .
+
+
+ ndbm est une surcouche qui aboutit souvent à des échecs.
+ Ainsi, vous ne devez utiliser ndbm que si vous êtes sûr qu'il
+ fonctionne et que vous avez besoin de ce format.
+
+
+
+
+
+
+
+ gdbm
+
+ Pour activer le support de gdbm, ajoutez l'option
+ de compilation .
+
+
+
+
+ db2
+
+
+ Pour activer le support de Oracle Berkeley DB 2, ajoutez l'option
+ de compilation .
+
+
+ db2 entre en conflit avec db3 et db4.
+
+
+
+
+
+
+
+ db3
+
+
+ Pour activer le support de Oracle Berkeley DB 3, ajoutez l'option
+ de compilation .
+
+
+ db3 entre en conflit avec db2 et db4.
+
+
+
+
+
+
+
+ db4
+
+
+ Pour activer le support de Oracle Berkeley DB 4, ajoutez l'option
+ de compilation .
+
+
+ db4 entre en conflit avec db2 et db3.
+
+
+
+
+ Les bibliothèques db avec des
+ versions allant de 4.1 à 4.1.24 ne peuvent être utilisées avec aucune
+ version de PHP.
+
+
+ Le support DB5 a été ajouté en PHP 5.3.3.
+
+
+
+
+
+
+
+ cdb
+
+
+ Pour activer le support de cdb, ajoutez l'option
+ de compilation .
+
+
+ Vous pouvez omettre d'utiliser DIR, afin
+ d'exploiter la bibliothèque cdb fournie avec PHP, qui ajoute un
+ gestionnaire cdb_make, permet la création de fichier
+ cdb et permet l'accès aux fichiers cbd via le réseau avec les
+ flux de PHP.
+
+
+
+
+
+
+
+ flatfile
+
+
+ Pour activer le support des fichiers, ajoutez l'option
+ de compilation
+ .
+ Antérieur à PHP 5.2.1 l'option
+ devait être utilisé à la place.
+
+
+ Ceci a été ajouté pour assurer la compatibilité avec l'extension
+ dbm qui est obsolète.
+ Utilisez ce gestionnaire seulement quand vous ne pouvez installer
+ aucun autre gestionnaire et que vous ne pouvez pas utiliser le
+ gestionnaire cdb intégré.
+
+
+
+
+
+
+
+ inifile
+
+
+ Pour activer le support de inifile, ajoutez l'option
+ de compilation .
+ Antérieur à PHP 5.2.1 l'option
+ devait être utilisé à la place.
+
+
+ Cette option a été ajoutée pour permettre de lire et écrire dans
+ des fichiers d'initialisation de type Microsoft
+ (.ini), comme le &php.ini; par exemple.
+
+
+
+
+
+
+
+ qdbm
+
+
+ Pour activer le support de qdbm, ajoutez l'option de compilation
+ .
+
+
+ qdbm entre en conflit avec dbm et gdbm.
+
+
+
+
+ La bibliothèque qdbm peut être téléchargée depuis
+ .
+
+
+
+
+
+
+
+ tcadb
+
+
+ Pour activer le support de Tokyo Cabinet, ajouter l'option de compilation
+ .
+
+
+ La bibliothèque Tokyo Cabinet peut être
+ téléchargée depuis .
+
+
+
+
+
+
+
+ lmdb
+
+
+ Pour activer le support de Lightning Memory-Mapped Database ajoutez
+ l'option de configuration
+ .
+
+
+ Ceci a été ajouté en PHP 7.2.0. La bibliothèque
+ Lightning Memory-Mapped Database peut être téléchargée depuis
+ .
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reference/eio/functions/eio-ftruncate.xml b/reference/eio/functions/eio-ftruncate.xml
index 5f04fe7d00..bb64256625 100644
--- a/reference/eio/functions/eio-ftruncate.xml
+++ b/reference/eio/functions/eio-ftruncate.xml
@@ -1,109 +1,109 @@
-
-
-
-
-
-
- eio_ftruncate
- Tronque un fichier
-
-
-
- &reftitle.description;
-
- resourceeio_ftruncate
- mixedfd
- intoffset0
- intpriEIO_PRI_DEFAULT
- callablecallbackNULL
- mixeddataNULL
-
-
- eio_ftruncate tronque un fichier régulier décrit
- par le descripteur fd à la position de
- length octets.
-
-
-
-
-
- &reftitle.parameters;
-
-
- fd
-
-
- Un flux, une ressource de socket, ou
- un descripteur de fichier.
-
-
-
-
- offset
-
-
- La position depuis le début du fichier.
-
-
-
-
- pri
-
- &eio.request.pri.values;
-
-
-
- callback
-
- &eio.callback.proto;
-
-
-
- data
-
-
- Variables arbitraires à passer à la fonction de rappel
- callback.
-
-
-
-
-
-
-
- &reftitle.returnvalues;
-
- eio_ftruncate retourne la ressource demandée
- en cas de succès,&return.falseforfailure;.
-
-
-
-
-
- &reftitle.seealso;
-
- eio_truncate
-
-
-
-
-
+
+
+
+
+
+
+ eio_ftruncate
+ Tronque un fichier
+
+
+
+ &reftitle.description;
+
+ resourceeio_ftruncate
+ mixedfd
+ intoffset0
+ intpriEIO_PRI_DEFAULT
+ callablecallbackNULL
+ mixeddataNULL
+
+
+ eio_ftruncate tronque un fichier régulier décrit
+ par le descripteur fd à la position de
+ length octets.
+
+
+
+
+
+ &reftitle.parameters;
+
+
+ fd
+
+
+ Un flux, une ressource de socket, ou
+ un descripteur de fichier.
+
+
+
+
+ offset
+
+
+ La position depuis le début du fichier.
+
+
+
+
+ pri
+
+ &eio.request.pri.values;
+
+
+
+ callback
+
+ &eio.callback.proto;
+
+
+
+ data
+
+
+ Variables arbitraires à passer à la fonction de rappel
+ callback.
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+
+ eio_ftruncate retourne la ressource demandée
+ en cas de succès,&return.falseforfailure;.
+
+
+
+
+
+ &reftitle.seealso;
+
+ eio_truncate
+
+
+
+
+
diff --git a/reference/eio/functions/eio-read.xml b/reference/eio/functions/eio-read.xml
index 5d97039fd9..c81578b35e 100644
--- a/reference/eio/functions/eio-read.xml
+++ b/reference/eio/functions/eio-read.xml
@@ -20,7 +20,7 @@
mixeddataNULL
- eio_read lit length octets
+ eio_read lit length octets
depuis le descripteur de fichier fd à la position
offset. Les octets lus sont stockés dans l'argument
result de la fonction de rappel callback.
diff --git a/reference/ev/evsignal.xml b/reference/ev/evsignal.xml
index 7720e4eca6..b46f280e20 100644
--- a/reference/ev/evsignal.xml
+++ b/reference/ev/evsignal.xml
@@ -1,118 +1,118 @@
-
-
-
-
-
- La classe EvSignal
- EvSignal
-
-
-
- &reftitle.intro;
-
- Les watchers EvSignal vont lancer un événement
- lorsque le processus reçoit un signal spécifique une ou plusieurs fois.
- Malgré le fait que les signaux soient asynchrones,
- libev va tenter de faire de son mieux pour
- délivrer les signaux de façon synchrone, i.e. tout comme n'importe quel
- autre événement.
-
-
- Il n'y a aucune limite pour le nombre de watchers pour le même signal,
- mais seulement dans la même boucle, i.e. un peu surveiller
- SIGINT dans la boucle par défaut, et pour
- SIGIO dans une autre boucle, mais il n'est pas
- autorisé de surveiller SIGINT à la fois dans
- la boucle par défaut, et dans une autre boucle au même moment.
- A ce moment, SIGCHLD est lié de façon permanente
- à la boucle par défaut.
-
-
- Si possible et si supporté, libev va installer son
- gestionnaire avec SA_RESTART (ou équivalent) activé,
- aussi, les appels système ne devraient pas être interrompus. Dans le cas
- d'un problème avec les appels système qui se verraient interrompus par
- des signaux, tous les signaux peuvent être bloqués dans un watcher
- EvCheck et débloqués dans un watcher
- EvPrepare.
-
-
-
-
- &reftitle.classsynopsis;
-
-
-
-
- EvSignal
-
-
-
-
- EvSignal
-
-
- extends
- EvWatcher
-
-
-
- &Properties;
-
- public
- signum
-
- &InheritedProperties;
-
- &Methods;
-
-
- &InheritedMethods;
-
-
-
-
-
-
- &reftitle.properties;
-
-
-
- signum
-
-
-
- Le numéro du signal. Voir les constantes exportées par l'extension
- pcntl. Voir aussi la page de manuel pour
- signal(7).
-
-
-
-
-
-
-
-
- &reference.ev.entities.evsignal;
-
-
-
+
+
+
+
+
+ La classe EvSignal
+ EvSignal
+
+
+
+ &reftitle.intro;
+
+ Les watchers EvSignal vont lancer un événement
+ lorsque le processus reçoit un signal spécifique une ou plusieurs fois.
+ Malgré le fait que les signaux soient asynchrones,
+ libev va tenter de faire de son mieux pour
+ délivrer les signaux de façon synchrone, i.e. tout comme n'importe quel
+ autre événement.
+
+
+ Il n'y a aucune limite pour le nombre de watchers pour le même signal,
+ mais seulement dans la même boucle, i.e. un peu surveiller
+ SIGINT dans la boucle par défaut, et pour
+ SIGIO dans une autre boucle, mais il n'est pas
+ autorisé de surveiller SIGINT à la fois dans
+ la boucle par défaut, et dans une autre boucle au même moment.
+ A ce moment, SIGCHLD est lié de façon permanente
+ à la boucle par défaut.
+
+
+ Si possible et si supporté, libev va installer son
+ gestionnaire avec SA_RESTART (ou équivalent) activé,
+ aussi, les appels système ne devraient pas être interrompus. Dans le cas
+ d'un problème avec les appels système qui se verraient interrompus par
+ des signaux, tous les signaux peuvent être bloqués dans un watcher
+ EvCheck et débloqués dans un watcher
+ EvPrepare.
+
+
+
+
+ &reftitle.classsynopsis;
+
+
+
+
+ EvSignal
+
+
+
+
+ EvSignal
+
+
+ extends
+ EvWatcher
+
+
+
+ &Properties;
+
+ public
+ signum
+
+ &InheritedProperties;
+
+ &Methods;
+
+
+ &InheritedMethods;
+
+
+
+
+
+
+ &reftitle.properties;
+
+
+
+ signum
+
+
+
+ Le numéro du signal. Voir les constantes exportées par l'extension
+ pcntl. Voir aussi la page de manuel pour
+ signal(7).
+
+
+
+
+
+
+
+
+ &reference.ev.entities.evsignal;
+
+
+
diff --git a/reference/exif/functions/exif-read-data.xml b/reference/exif/functions/exif-read-data.xml
index c2cc3ef8d9..a33ef989a3 100755
--- a/reference/exif/functions/exif-read-data.xml
+++ b/reference/exif/functions/exif-read-data.xml
@@ -150,7 +150,7 @@
Spécifie si chaque section doit devenir un tableau ou non.
- Les required_sectionsCOMPUTED,
+ Les required_sectionsCOMPUTED,
THUMBNAIL et COMMENT seront
toujours transformées en tableau, car elle contiennent des noms qui
risquent d'être en conflit.
diff --git a/reference/expect/setup.xml b/reference/expect/setup.xml
index f6d0c6076d..b080c980e6 100644
--- a/reference/expect/setup.xml
+++ b/reference/expect/setup.xml
@@ -1,56 +1,56 @@
-
-
-
-
-
- &reftitle.setup;
-
-
-
- &reftitle.required;
-
- Ce module utilise les fonctions de la bibliothèque expect.
- Vous avez besoin de la libexpect version >= 5.43.0.
-
-
-
-
-
- &reference.expect.configure;
-
-
-
- &reference.expect.ini;
-
-
-
-
- &reftitle.resources;
-
- expect_popen retourne un flux ouvert PTY utilisé par la fonction
- expect_expectl.
-
-
-
-
-
-
+
+
+
+
+
+ &reftitle.setup;
+
+
+
+ &reftitle.required;
+
+ Ce module utilise les fonctions de la bibliothèque expect.
+ Vous avez besoin de la libexpect version >= 5.43.0.
+
+
+
+
+
+ &reference.expect.configure;
+
+
+
+ &reference.expect.ini;
+
+
+
+
+ &reftitle.resources;
+
+ expect_popen retourne un flux ouvert PTY utilisé par la fonction
+ expect_expectl.
+
+
+
+
+
+
diff --git a/reference/fann/functions/fann-set-activation-steepness.xml b/reference/fann/functions/fann-set-activation-steepness.xml
index 3e0c84be98..d06ce4929c 100644
--- a/reference/fann/functions/fann-set-activation-steepness.xml
+++ b/reference/fann/functions/fann-set-activation-steepness.xml
@@ -1,121 +1,121 @@
-
-
-
-
-
-
-
- fann_set_activation_steepness
- Défini la pente d'activation pour le neurone et le numéro de couche donnés
-
-
-
- &reftitle.description;
-
- boolfann_set_activation_steepness
- resourceann
- floatactivation_steepness
- intlayer
- intneuron
-
-
- Définit la pente d'activation pour le neurone numéro neuron
- dans la couche numéro layer, en comptant la couche d'entrée
- comme la couche numéro 0.
-
-
- Il n'est pas possible de définir la pente d'activation pour les neurones
- dans la couche d'entrée.
-
-
- La pente d'une fonction d'activation indique une valeur signifiant la rapidité de la fonction
- d'activation pour aller du minimum au maximum. Une valeur ahute pour la fonction
- d'activation va également produire un entrainement plus agressif.
-
-
- Lors d'un entrainement sur des réseaux neuronaux, où les valeurs de sortie doivent
- être aux extrèmes (habituellement, 0 et 1, suivant la fonction d'activation),
- une fonction de pente d'activation peut être utilisée (i.e. 1.0).
-
-
- La pente d'activation par défaut est 0.5.
-
-
-
-
- &reftitle.parameters;
-
-
- ann
-
- &fann.ann.description;
-
-
-
- activation_steepness
-
-
- La pente d'activation.
-
-
-
-
- layer
-
-
- Le numéro de la couche.
-
-
-
-
- neuron
-
-
- Le numéro du neurone.
-
-
-
-
-
-
-
- &reftitle.returnvalues;
- &fann.return.bool;
-
-
-
- &reftitle.seealso;
-
-
- fann_set_activation_steepness_layer
- fann_set_activation_steepness_hidden
- fann_set_activation_steepness_output
- fann_get_activation_steepness
- fann_set_activation_function
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+ fann_set_activation_steepness
+ Défini la pente d'activation pour le neurone et le numéro de couche donnés
+
+
+
+ &reftitle.description;
+
+ boolfann_set_activation_steepness
+ resourceann
+ floatactivation_steepness
+ intlayer
+ intneuron
+
+
+ Définit la pente d'activation pour le neurone numéro neuron
+ dans la couche numéro layer, en comptant la couche d'entrée
+ comme la couche numéro 0.
+
+
+ Il n'est pas possible de définir la pente d'activation pour les neurones
+ dans la couche d'entrée.
+
+
+ La pente d'une fonction d'activation indique une valeur signifiant la rapidité de la fonction
+ d'activation pour aller du minimum au maximum. Une valeur ahute pour la fonction
+ d'activation va également produire un entrainement plus agressif.
+
+
+ Lors d'un entrainement sur des réseaux neuronaux, où les valeurs de sortie doivent
+ être aux extrèmes (habituellement, 0 et 1, suivant la fonction d'activation),
+ une fonction de pente d'activation peut être utilisée (i.e. 1.0).
+
+
+ La pente d'activation par défaut est 0.5.
+
+
+
+
+ &reftitle.parameters;
+
+
+ ann
+
+ &fann.ann.description;
+
+
+
+ activation_steepness
+
+
+ La pente d'activation.
+
+
+
+
+ layer
+
+
+ Le numéro de la couche.
+
+
+
+
+ neuron
+
+
+ Le numéro du neurone.
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+ &fann.return.bool;
+
+
+
+ &reftitle.seealso;
+
+
+ fann_set_activation_steepness_layer
+ fann_set_activation_steepness_hidden
+ fann_set_activation_steepness_output
+ fann_get_activation_steepness
+ fann_set_activation_function
+
+
+
+
+
+
+
+
diff --git a/reference/fann/setup.xml b/reference/fann/setup.xml
index 62d7b8e719..f31ed9559a 100644
--- a/reference/fann/setup.xml
+++ b/reference/fann/setup.xml
@@ -1,187 +1,187 @@
-
-
-
-
- &reftitle.setup;
-
-
- &reftitle.required;
-
- PHP >= 5.2.0 et libfann >= 2.1.0
-
-
-
-
- &reftitle.install;
-
- L'extension FANN PHP devrait fonctionner sur tous les systèmes Linux.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- FANN Library Installation
-
-
- Avant de commencer l'installation, assurez-vous que libfann est installé
- sur votre système. Il fait partie du dépôt principal dans la plupart des distributions Linux
- (recherchez fann). Vous avez besoin d'une version de développement.
-
-
- Si ce n'est pas installé, vous devez d'abord l'installer. Téléchargez-le depuis le
- site officiel ou obtenez-le depuis le dépôt de votre
- distribution. Par exemple sur Fedora:
-
-
-
- or Ubuntu:
-
-
-
-
-
- Si la librarie est ré-installée manuellement, alors tous les anciens fichiers de la librairie
- doivent être supprimés avant de ré-installer sinon l'ancienne version de la librairie pourrait être liée.
-
-
-
-
-
- Installation PECL
-
-
- Cette extension est disponible sur PECL. L'installation est très simple. Exécutez simplement:
-
-
-
-
-
-
-
-
- Manuel d'installation
-
-
- Pour les développeurs et les personnes intéressées par les derniers changements, vous
- pouvez compiler le pilote à partir du code source le plus récent sur
- Github.
- Allez sur Github et cliquez sur le bouton "Download ZIP". Ensuite exécutez:
-
-
-
-
-
-
-
- Appliquez les changements suivants à php.ini:
-
-
-
-
- Assurez-vous que la variable extension_dir pointe vers
- le répertoire contenant fann.so. La construction affichera où
- il installe le pilote PHP avec une sortie qui ressemble à:
-
-
-
-
- Assurez-vous que c'est le même que le répertoire d'extension PHP en exécutant:
-
-
- /usr/lib/php/extensions/no-debug-non-zts-20060613 =>
- /usr/lib/php/extensions/no-debug-non-zts-20060613
-
-]]>
-
-
- Si ce n'est pas le cas, changez la variable extension_dir dans php.ini ou
- déplacez fann.so.
-
-
-
-
- Pour charger l'extension au démarrage de PHP, ajoutez une ligne:
-
-
-
-
-
-
-
-
-
-
-
-
-
- &reftitle.resources;
-
-
-
-
-
-
-
-
+
+
+
+
+ &reftitle.setup;
+
+
+ &reftitle.required;
+
+ PHP >= 5.2.0 et libfann >= 2.1.0
+
+
+
+
+ &reftitle.install;
+
+ L'extension FANN PHP devrait fonctionner sur tous les systèmes Linux.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FANN Library Installation
+
+
+ Avant de commencer l'installation, assurez-vous que libfann est installé
+ sur votre système. Il fait partie du dépôt principal dans la plupart des distributions Linux
+ (recherchez fann). Vous avez besoin d'une version de développement.
+
+
+ Si ce n'est pas installé, vous devez d'abord l'installer. Téléchargez-le depuis le
+ site officiel ou obtenez-le depuis le dépôt de votre
+ distribution. Par exemple sur Fedora:
+
+
+
+ or Ubuntu:
+
+
+
+
+
+ Si la bibliothèque est ré-installée manuellement, alors tous les anciens fichiers de la bibliothèque
+ doivent être supprimés avant de ré-installer sinon l'ancienne version de la bibliothèque pourrait être liée.
+
+
+
+
+
+ Installation PECL
+
+
+ Cette extension est disponible sur PECL. L'installation est très simple. Exécutez simplement:
+
+
+
+
+
+
+
+
+ Manuel d'installation
+
+
+ Pour les développeurs et les personnes intéressées par les derniers changements, vous
+ pouvez compiler le pilote à partir du code source le plus récent sur
+ Github.
+ Allez sur Github et cliquez sur le bouton "Download ZIP". Ensuite exécutez:
+
+
+
+
+
+
+
+ Appliquez les changements suivants à php.ini:
+
+
+
+
+ Assurez-vous que la variable extension_dir pointe vers
+ le répertoire contenant fann.so. La construction affichera où
+ il installe le pilote PHP avec une sortie qui ressemble à:
+
+
+
+
+ Assurez-vous que c'est le même que le répertoire d'extension PHP en exécutant:
+
+
+ /usr/lib/php/extensions/no-debug-non-zts-20060613 =>
+ /usr/lib/php/extensions/no-debug-non-zts-20060613
+
+]]>
+
+
+ Si ce n'est pas le cas, changez la variable extension_dir dans php.ini ou
+ déplacez fann.so.
+
+
+
+
+ Pour charger l'extension au démarrage de PHP, ajoutez une ligne:
+
+
+
+
+
+
+
+
+
+
+
+
+
+ &reftitle.resources;
+
+
+
+
+
+
+
+
diff --git a/reference/ffi/ffi/load.xml b/reference/ffi/ffi/load.xml
index d25eff7ab7..12ee8f79c7 100644
--- a/reference/ffi/ffi/load.xml
+++ b/reference/ffi/ffi/load.xml
@@ -43,7 +43,7 @@
Le fichier d'en-tête peut contenir une déclaration #define pour la variable
FFI_LIB pour spécifier la bibliothèque qu'elle expose. S'il s'agit d'une
bibliothèque système, seul le nom du fichier est requis, par exemple : #define FFI_LIB
- "libc.so.6". S'il s'agit d'une bibliothèque personnalisée, un chemin relatif est requis,
+ "libc.so.6". S'il s'agit d'une bibliothèque personnalisée, un chemin relatif est requis,
par exemple : #define FFI_LIB "./mylib.so".
diff --git a/reference/ffi/ffi/string.xml b/reference/ffi/ffi/string.xml
index 69ee1953eb..c660308688 100644
--- a/reference/ffi/ffi/string.xml
+++ b/reference/ffi/ffi/string.xml
@@ -48,7 +48,7 @@
&reftitle.returnvalues;
- La string PHP fraîchement créé.
+ La string PHP fraîchement créé.
diff --git a/reference/ftp/functions/ftp-ssl-connect.xml b/reference/ftp/functions/ftp-ssl-connect.xml
index dabfb7500c..2340861e35 100644
--- a/reference/ftp/functions/ftp-ssl-connect.xml
+++ b/reference/ftp/functions/ftp-ssl-connect.xml
@@ -20,7 +20,7 @@
à l'hostname spécifié. Cela implique que
ftp_ssl_connect réussira même si le serveur n'est pas
configuré SSL-FTP. C'est uniquement quand ftp_login est appelé, que le client recevra la
- commande AUTH FTP appropriée, alors ftp_login échouera.
+ commande AUTH FTP appropriée, alors ftp_login échouera.
La connexion établie par ftp_ssl_connectne fera pas
de vérification du certificat de pair.
diff --git a/reference/funchand/functions/register-shutdown-function.xml b/reference/funchand/functions/register-shutdown-function.xml
index 295f264d22..d14171e0a9 100644
--- a/reference/funchand/functions/register-shutdown-function.xml
+++ b/reference/funchand/functions/register-shutdown-function.xml
@@ -121,7 +121,7 @@ register_shutdown_function('shutdown');
Les fonctions d'arrêt s'exécutent séparément du temps suivi par
max_execution_time. Cela signifie
que même si un processus est terminé pour avoir fonctionné trop longtemps, les
- fonctions d'arrêt seront toujours appelées. De plus, si le
+ fonctions d'arrêt seront toujours appelées. De plus, si le
max_execution_time atteint sa limite pendant qu'une fonction
d'arrêt est en cours d'exécution, elle ne sera pas interrompue.
diff --git a/reference/gearman/gearmanclient/dohigh.xml b/reference/gearman/gearmanclient/dohigh.xml
index 390e6613d2..2eb94024ce 100644
--- a/reference/gearman/gearmanclient/dohigh.xml
+++ b/reference/gearman/gearmanclient/dohigh.xml
@@ -1,95 +1,95 @@
-
-
-
-
-
- GearmanClient::doHigh
- Exécute une seule tâche en priorité haute
-
-
-
- &reftitle.description;
-
- publicstringGearmanClient::doHigh
- stringfunction
- stringworkload
- stringnullunique&null;
-
-
- Exécute une seule tâche en priorité haute et retourne une représentation
- du résultat sous la forme d'une &string;. C'est aux fonctions
- GearmanClient et GearmanWorker d'accorder
- le format du résultat. Les tâches en priorités hautes seront exécutées avant celles
- dont la priorité est normale, voire, basse dans la file d'attente.
-
-
-
-
- &reftitle.parameters;
-
-
- function
-
-
- &gearman.parameter.functionname;
-
-
-
-
- workload
-
-
- &gearman.parameter.workload;
-
-
-
-
- unique
-
-
- &gearman.parameter.unique;
-
-
-
-
-
-
-
- &reftitle.returnvalues;
-
- Le résultat de la tâche sous la forme d'une &string;.
-
-
-
-
- &reftitle.seealso;
-
- GearmanClient::doNormal
- GearmanClient::doLow
- GearmanClient::doBackground
- GearmanClient::doHighBackground
- GearmanClient::doLowBackground
-
-
-
-
-
+
+
+
+
+
+ GearmanClient::doHigh
+ Exécute une seule tâche en priorité haute
+
+
+
+ &reftitle.description;
+
+ publicstringGearmanClient::doHigh
+ stringfunction
+ stringworkload
+ stringnullunique&null;
+
+
+ Exécute une seule tâche en priorité haute et retourne une représentation
+ du résultat sous la forme d'une &string;. C'est aux fonctions
+ GearmanClient et GearmanWorker d'accorder
+ le format du résultat. Les tâches en priorités hautes seront exécutées avant celles
+ dont la priorité est normale, voire, basse dans la file d'attente.
+
+
+
+
+ &reftitle.parameters;
+
+
+ function
+
+
+ &gearman.parameter.functionname;
+
+
+
+
+ workload
+
+
+ &gearman.parameter.workload;
+
+
+
+
+ unique
+
+
+ &gearman.parameter.unique;
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+
+ Le résultat de la tâche sous la forme d'une &string;.
+
+
+
+
+ &reftitle.seealso;
+
+ GearmanClient::doNormal
+ GearmanClient::doLow
+ GearmanClient::doBackground
+ GearmanClient::doHighBackground
+ GearmanClient::doLowBackground
+
+
+
+
+
diff --git a/reference/geoip/ini.xml b/reference/geoip/ini.xml
index 5d4165937d..60ac6f9474 100644
--- a/reference/geoip/ini.xml
+++ b/reference/geoip/ini.xml
@@ -1,46 +1,46 @@
-
-
-
-
-
- &reftitle.runtime;
- &extension.runtime;
-
-
- &ini.descriptions.title;
-
-
-
-
- geoip.custom_directory
- string
-
-
-
- Vide par défaut, mais peut être utilisé pour charger une base
- de données différente de celle incluse dans la librairie.
-
-
-
-
-
+
+
+
+
+
+ &reftitle.runtime;
+ &extension.runtime;
+
+
+ &ini.descriptions.title;
+
+
+
+
+ geoip.custom_directory
+ string
+
+
+
+ Vide par défaut, mais peut être utilisé pour charger une base
+ de données différente de celle incluse dans la bibliothèque.
+
+
+
+
+
diff --git a/reference/gmp/setup.xml b/reference/gmp/setup.xml
index bf81e821fa..684dec33f8 100644
--- a/reference/gmp/setup.xml
+++ b/reference/gmp/setup.xml
@@ -1,53 +1,53 @@
-
-
-
-
-
-
- &reftitle.setup;
-
-
-
- &reftitle.required;
-
- La librairie GMP peut être téléchargé depuis le site de
- &url.gmp;. Ce site propose aussi un manuel
- GMP.
-
-
- Au moins la version 4.2 de GMP est requise, avec certaines
- fonctions nécessitant une version plus récente de la bibliothèque
- GMP.
-
-
- Sous Windows, MPIR est requis à la place de GMP.
-
-
-
-
-
- &reference.gmp.configure;
-
-
-
-
-
+
+
+
+
+
+
+ &reftitle.setup;
+
+
+
+ &reftitle.required;
+
+ La bibliothèque GMP peut être téléchargée depuis le site de
+ &url.gmp;. Ce site propose aussi un manuel
+ GMP.
+
+
+ Au moins la version 4.2 de GMP est requise, avec certaines
+ fonctions nécessitant une version plus récente de la bibliothèque
+ GMP.
+
+
+ Sous Windows, MPIR est requis à la place de GMP.
+
+
+
+
+
+ &reference.gmp.configure;
+
+
+
+
+
diff --git a/reference/ibm_db2/functions/db2-bind-param.xml b/reference/ibm_db2/functions/db2-bind-param.xml
index 3f62b4970d..606a938ad0 100644
--- a/reference/ibm_db2/functions/db2-bind-param.xml
+++ b/reference/ibm_db2/functions/db2-bind-param.xml
@@ -188,7 +188,7 @@ Peaches, chien, 12.3
un paramètre d'entrée-sortie (INOUT) qui accepte le nom du second
- animal en entré et retourne une &string; TRUE si un
+ animal en entré et retourne une &string; &true; si un
animal dans la base de données correspond à ce nom
diff --git a/reference/ibm_db2/ini.xml b/reference/ibm_db2/ini.xml
index 00960fe06a..c4cdacec62 100644
--- a/reference/ibm_db2/ini.xml
+++ b/reference/ibm_db2/ini.xml
@@ -158,7 +158,7 @@
- 0 - Les connexions persistantes et non persistantes peuvent être établies.
+ 0 - Les connexions persistantes et non persistantes peuvent être établies.
diff --git a/reference/image/functions/gd-info.xml b/reference/image/functions/gd-info.xml
index f3f96f3bbc..86b491707d 100644
--- a/reference/image/functions/gd-info.xml
+++ b/reference/image/functions/gd-info.xml
@@ -92,7 +92,7 @@
WebP Support
- Valeur bool. &true;
+ Valeur bool. &true;
si le support WebP est inclus.
diff --git a/reference/image/functions/getimagesize.xml b/reference/image/functions/getimagesize.xml
index 2301aa4eb3..c6f8310977 100644
--- a/reference/image/functions/getimagesize.xml
+++ b/reference/image/functions/getimagesize.xml
@@ -121,7 +121,7 @@
Certains formats peuvent ne contenir aucune image, ou bien plusieurs.
Dans ces cas-là, getimagesize peut ne pas être capable
de déterminer correctement la taille de l'image.
- getimagesize retourne alors zéro comme taille de
+ getimagesize retourne alors zéro comme taille de
hauteur et largeur.
diff --git a/reference/image/ini.xml b/reference/image/ini.xml
index 313529d5a8..bb75380916 100644
--- a/reference/image/ini.xml
+++ b/reference/image/ini.xml
@@ -77,7 +77,7 @@
Les fonctions sur les images sont très gourmandes en termes de mémoire.
Assurez-vous de définir une valeur assez importante pour memory_limit si vous utilisez la librairie GD intégrée.
+ linkend="ini.memory-limit">memory_limit si vous utilisez la bibliothèque GD intégrée.
diff --git a/reference/imagick/imagickdraw/bezier.xml b/reference/imagick/imagickdraw/bezier.xml
index 92699ce03d..6bd906085d 100644
--- a/reference/imagick/imagickdraw/bezier.xml
+++ b/reference/imagick/imagickdraw/bezier.xml
@@ -30,7 +30,7 @@
Tableau multidimensionnel tel que
- array( array( 'x' => 1, 'y' => 2 ), array( 'x' => 3, 'y' => 4 ) )
+ array( array( 'x' => 1, 'y' => 2 ), array( 'x' => 3, 'y' => 4 ) )
diff --git a/reference/imap/setup.xml b/reference/imap/setup.xml
index 85772d45de..8e6e3bddd8 100644
--- a/reference/imap/setup.xml
+++ b/reference/imap/setup.xml
@@ -1,89 +1,89 @@
-
-
-
-
- &reftitle.setup;
-
-
-
- &reftitle.required;
-
- Cette extension requiert la bibliothèque C cliente. Téléchargez
- cette dernière version à &url.imap;
- et compilez-la.
-
-
- Il est important de ne pas copier les fichiers sources IMAP directement
- dans le dossier d'inclusion système sous peine de conflits. À la place de cela,
- créez un nouveau dossier dans le dossier d'inclusion système, comme
- /usr/local/imap-2000b/ (le chemin et le nom
- dépendent de votre configuration et de votre version d'IMAP) et dans ce nouveau
- dossier, créez les dossiers nommés lib/ et
- include/. Depuis le dossier
- c-client des sources IMAP, copiez tous les fichiers
- *.h dans le dossier include/
- et tous les fichiers *.c dans le dossier
- lib/. Additionnellement, lorsque vous compilez IMAP, un
- fichier nommé c-client.a est crée. Mettez le également
- dans le dossier lib/ mais renommez le en
- libc-client.a.
-
-
-
- Pour compiler la bibliothèque C cliente avec
- SSL et/ou avec le support Kerberos, lisez la doc fournie dans
- la distribution.
-
-
-
-
- Sur Mandrake Linux, la bibliothèque IMAP
- (libc-client.a) est compilée sans le support
- Kerberos. Une version séparée avec SSL
- (client-PHP4.a) est installée. La bibliothèque doit
- être recompilée pour ajouter le support Kerberos.
-
-
-
-
-
-
- &reference.imap.configure;
-
-
-
- &reference.imap.ini;
-
-
-
-
- &reftitle.resources;
-
- Antérieur à PHP 8.1.0, cette extension utilisait un type de ressource
- imap retourné par imap_open qui
- fait référence à un flux IMAP ouvert.
-
-
-
-
-
-
+
+
+
+
+ &reftitle.setup;
+
+
+
+ &reftitle.required;
+
+ Cette extension requiert la bibliothèque C cliente. Téléchargez
+ cette dernière version à &url.imap;
+ et compilez-la.
+
+
+ Il est important de ne pas copier les fichiers sources IMAP directement
+ dans le dossier d'inclusion système sous peine de conflits. À la place de cela,
+ créez un nouveau dossier dans le dossier d'inclusion système, comme
+ /usr/local/imap-2000b/ (le chemin et le nom
+ dépendent de votre configuration et de votre version d'IMAP) et dans ce nouveau
+ dossier, créez les dossiers nommés lib/ et
+ include/. Depuis le dossier
+ c-client des sources IMAP, copiez tous les fichiers
+ *.h dans le dossier include/
+ et tous les fichiers *.c dans le dossier
+ lib/. Additionnellement, lorsque vous compilez IMAP, un
+ fichier nommé c-client.a est crée. Mettez le également
+ dans le dossier lib/ mais renommez le en
+ libc-client.a.
+
+
+
+ Pour compiler la bibliothèque C cliente avec
+ SSL et/ou avec le support Kerberos, lisez la doc fournie dans
+ la distribution.
+
+
+
+
+ Sur Mandrake Linux, la bibliothèque IMAP
+ (libc-client.a) est compilée sans le support
+ Kerberos. Une version séparée avec SSL
+ (client-PHP4.a) est installée. La bibliothèque doit
+ être recompilée pour ajouter le support Kerberos.
+
+
+
+
+
+
+ &reference.imap.configure;
+
+
+
+ &reference.imap.ini;
+
+
+
+
+ &reftitle.resources;
+
+ Antérieur à PHP 8.1.0, cette extension utilisait un type de ressource
+ imap retourné par imap_open qui
+ fait référence à un flux IMAP ouvert.
+
+
+
+
+
+
diff --git a/reference/info/constants.xml b/reference/info/constants.xml
index 889d973882..2fc8f5e4b5 100644
--- a/reference/info/constants.xml
+++ b/reference/info/constants.xml
@@ -1,601 +1,601 @@
-
-
-
-
-
- &reftitle.constants;
- &extension.constants.core;
-
-
- Constantes prédéfinies de phpcredits
-
-
- CREDITS_GROUP
- (int)
-
-
-
- Une liste des développeurs principaux
-
-
-
-
-
- CREDITS_GENERAL
- (int)
-
-
-
- Crédits généraux. Design du langage, concepts,
- auteurs de PHP et module SAPI.
-
-
-
-
-
- CREDITS_SAPI
- (int)
-
-
-
- Une liste des API de serveurs, et leurs auteurs.
-
-
-
-
-
- CREDITS_MODULES
- (int)
-
-
-
- Une liste des extensions de PHP, et leurs auteurs
-
-
-
-
-
- CREDITS_DOCS
- (int)
-
-
-
- Les crédits de l'équipe de documentation
-
-
-
-
-
- CREDITS_FULLPAGE
- (int)
-
-
-
- Généralement utilisé combiné avec d'autres options. Cette
- option indique qu'une page HTML complète doit être générée.
-
-
-
-
-
- CREDITS_QA
- (int)
-
-
-
- Les crédits pour le groupe d'assurance qualité.
-
-
-
-
-
- CREDITS_ALL
- (int)
-
-
-
- Tous les crédits. C'est l'équivalent de : CREDITS_DOCS
- | CREDITS_GENERAL | CREDITS_GROUP | CREDITS_MODULES | CREDITS_QA
- | CREDITS_FULLPAGE. Elle génère une page HTML complète
- et autonome. C'est la valeur par défaut.
-
-
-
-
-
-
- Constantes de phpinfo
-
-
- INFO_GENERAL
- (int)
-
-
-
- La ligne de configuration, le chemin du &php.ini;, la date de
- compilation, le système et plus encore.
-
-
-
-
-
- INFO_CREDITS
- (int)
-
-
-
- Crédits de PHP. Voir aussi phpcredits.
-
-
-
-
-
- INFO_CONFIGURATION
- (int)
-
-
-
- Valeurs locales et serveurs des directives PHP. Voir aussi
- ini_get.
-
-
-
-
-
- INFO_MODULES
- (int)
-
-
-
- Les modules chargés et leurs configurations respectives.
-
-
-
-
-
- INFO_ENVIRONMENT
- (int)
-
-
-
- Les variables d'environnement, qui sont aussi disponibles
- dans $_ENV.
-
-
-
-
-
- INFO_VARIABLES
- (int)
-
-
-
- Toutes les
- variables prédéfinies : EGPCS
- (Environnement, GET, POST, Cookie, Server).
-
-
-
-
-
- INFO_LICENSE
- (int)
-
-
-
- La licence PHP. Voir aussi la
- FAQ de la licence.
-
-
-
-
-
- INFO_ALL
- (int)
-
-
-
- Affiche toutes les valeurs citées ci-dessus. C'est la valeur
- par défaut.
-
-
-
-
-
-
- Constantes mode INI
-
-
- INI_USER
- (int)
-
-
-
- Cette entrée peut être définie dans les scripts utilisateur (comme avec ini_set)
- ou dans le registre Windows.
- L'entrée peut être définie dans le fichier &user-ini;.
-
-
-
-
-
- INI_PERDIR
- (int)
-
-
-
- Cette entrée peut être définie dans le fichier &php.ini;, &htaccess;, &httpd.conf; ou &user-ini;.
-
-
-
-
-
- INI_SYSTEM
- (int)
-
-
-
- Cette entrée peut être définie dans le fichier &php.ini; ou &httpd.conf;.
-
-
-
-
-
- INI_ALL
- (int)
-
-
-
- Cette entrée peut être définie n'importe où.
-
-
-
-
-
-
-
- Les constantes d'assertions servent avec la fonction
- assert_options.
-
-
- Constantes d'assert
-
-
- ASSERT_ACTIVE
- (int)
-
-
-
- Active l'évaluation assert.
-
- &warn.deprecated.feature-8-3-0;
-
-
-
-
- ASSERT_CALLBACK
- (int)
-
-
-
- Fonction de rappel des assertions échouées.
-
- &warn.deprecated.feature-8-3-0;
-
-
-
-
- ASSERT_BAIL
- (int)
-
-
-
- Termine l'exécution des assertions échouées.
-
- &warn.deprecated.feature-8-3-0;
-
-
-
-
- ASSERT_EXCEPTION
- (int)
-
-
-
- Lance une AssertionError pour chaque assertion échouée.
-
- &warn.deprecated.feature-8-3-0;
-
-
-
-
- ASSERT_WARNING
- (int)
-
-
-
- Émet une alerte PHP pour chaque assertion échouée.
-
- &warn.deprecated.feature-8-3-0;
-
-
-
-
- ASSERT_QUIET_EVAL
- (int)
-
-
-
- Désactive le error_reporting durant l'évaluation
- des expressions d'assertion.
- &warn.feature.removed-8-0-0;
-
-
-
-
-
-
-
- Les constantes suivantes ne sont disponibles que si le système
- d'hébergement est sur Windows, et peut vous donner des informations
- sur les versions, qui vous permettront de détecter la présence
- de fonctionnalités. Elles sont disponibles depuis PHP 5.3.0.
-
-
- Constantes particulières à Windows
-
-
- PHP_WINDOWS_VERSION_MAJOR
- (int)
-
-
-
- La version majeure de Windows, qui peut être 4 (NT4/Me/98/95),
- 5 (XP/2003 R2/2003/2000) ou 6 (Vista/2008/7/8/8.1).
-
-
-
-
-
- PHP_WINDOWS_VERSION_MINOR
- (int)
-
-
-
- La version mineure de Windows, qui peut être 0
- (Vista/2008/2000/NT4/95), 1 (XP), 2
- (2003 R2/2003/XP x64), 10 (98) ou 90 (ME).
-
-
-
-
-
- PHP_WINDOWS_VERSION_BUILD
- (int)
-
-
-
- Le numéro de compilation de Windows (par exemple,
- Windows Vista avec SP1 a le numéro 6001)
-
-
-
-
-
- PHP_WINDOWS_VERSION_PLATFORM
- (int)
-
-
-
- La plate-forme que PHP utilise actuellement : cette valeur peut être
- 2 sur Windows Vista/XP/2000/NT4, Server 2008/2003 et
- sur Windows ME/98/95 cette valeur est 1.
-
-
-
-
-
- PHP_WINDOWS_VERSION_SP_MAJOR
- (int)
-
-
-
- La version majeure du paquet de service installé : cette valeur vaut
- 0 si aucun paquet de service n'est disponible. Par
- exemple, Windows XP avec le paquet de service 3 donne la valeur
- 3 à cette constante.
-
-
-
-
-
- PHP_WINDOWS_VERSION_SP_MINOR
- (int)
-
-
-
- La version mineur du paquet de service installé. Cette valeur est
- 0 si aucun paquet de service n'est installé.
-
-
-
-
-
- PHP_WINDOWS_VERSION_SUITEMASK
- (int)
-
-
-
- Le masque est un champ de bits qui permet de connaître la présence
- de différentes fonctionnalités de Windows. Voyez la table ci-dessous
- pour connaître les différents champs.
-
-
-
-
-
- PHP_WINDOWS_VERSION_PRODUCTTYPE
- (int)
-
-
-
- Cette constante contient la valeur utilisée pour déterminer
- la valeur des constantes
- PHP_WINDOWS_NT_*.
- Cette valeur peut être l'une des constantes
- PHP_WINDOWS_NT_*,
- indiquant le type de plate-forme.
-
-
-
-
-
- PHP_WINDOWS_NT_DOMAIN_CONTROLLER
- (int)
-
-
-
- Le contrôleur de domaine.
-
-
-
-
-
- PHP_WINDOWS_NT_SERVER
- (int)
-
-
-
- Un serveur système (eg. Server 2008/2003/2000). Notez que
- si c'est un contrôleur de domaine, il est indiqué dans
- PHP_WINDOWS_NT_DOMAIN_CONTROLLER.
-
-
-
-
-
- PHP_WINDOWS_NT_WORKSTATION
- (int)
-
-
-
- Un poste de travail (eg. Vista/XP/2000/NT4)
-
-
-
-
-
- La table ci-desous présente les fonctionnalités qui peuvent être
- vérifiées dans le champ de bit de la constante
- PHP_WINDOWS_VERSION_SUITEMASK.
-
-
- Champs du masque Windows
-
-
-
- Bits
- Description
-
-
-
-
- 0x00000004
- Les composants Microsoft BackOffice sont installés.
-
-
- 0x00000400
- Windows Server 2003, Web Edition est installé.
-
-
- 0x00004000
- Windows Server 2003, Compute Cluster Edition est installé.
-
-
- 0x00000080
-
- Windows Server 2008 Datacenter, Windows Server 2003, Datacenter Edition ou
- Windows 2000 Datacenter Server est installé.
-
-
-
- 0x00000002
-
- Windows Server 2008 Enterprise, Windows Server 2003, Enterprise Edition,
- Windows 2000 Advanced Server, ou Windows NT Server 4.0 Enterprise Edition
- est installé.
-
-
-
- 0x00000040
- Windows XP Embedded est installé.
-
-
- 0x00000200
-
- Windows Vista Home Premium, Windows Vista Home Basic, ou Windows XP Home
- Edition est installé.
-
-
-
- 0x00000100
-
- Remote Desktop est supporté, mais une seule session interactive est
- supportée. Cette valeur est présente, à moins que le système ne fonctionne
- en mode serveur d'application.
-
-
-
- 0x00000001
-
- Microsoft Small Business Server a été installé sur le système, mais
- a été mis à joru vers une nouvelle version de Windows.
-
-
-
- 0x00000020
-
- Microsoft Small Business Server est installé avec la licence cliente
- restreinte.
-
-
-
- 0x00002000
- Windows Storage Server 2003 R2 ou Windows Storage Server 2003 est installé.
-
-
- 0x00000010
-
- Terminal Services est installé. Cette valeur est toujours activée. Si cette
- valeur est activée, mais 0x00000100 ne l'est pas, alors
- le système fonctionne en mode de serveur d'application.
-
-
-
- 0x00008000
- Windows Home Server est installé.
-
-
-
-
-
-
+
+
+
+
+
+ &reftitle.constants;
+ &extension.constants.core;
+
+
+ Constantes prédéfinies de phpcredits
+
+
+ CREDITS_GROUP
+ (int)
+
+
+
+ Une liste des développeurs principaux
+
+
+
+
+
+ CREDITS_GENERAL
+ (int)
+
+
+
+ Crédits généraux. Design du langage, concepts,
+ auteurs de PHP et module SAPI.
+
+
+
+
+
+ CREDITS_SAPI
+ (int)
+
+
+
+ Une liste des API de serveurs, et leurs auteurs.
+
+
+
+
+
+ CREDITS_MODULES
+ (int)
+
+
+
+ Une liste des extensions de PHP, et leurs auteurs
+
+
+
+
+
+ CREDITS_DOCS
+ (int)
+
+
+
+ Les crédits de l'équipe de documentation
+
+
+
+
+
+ CREDITS_FULLPAGE
+ (int)
+
+
+
+ Généralement utilisé combiné avec d'autres options. Cette
+ option indique qu'une page HTML complète doit être générée.
+
+
+
+
+
+ CREDITS_QA
+ (int)
+
+
+
+ Les crédits pour le groupe d'assurance qualité.
+
+
+
+
+
+ CREDITS_ALL
+ (int)
+
+
+
+ Tous les crédits. C'est l'équivalent de : CREDITS_DOCS
+ | CREDITS_GENERAL | CREDITS_GROUP | CREDITS_MODULES | CREDITS_QA
+ | CREDITS_FULLPAGE. Elle génère une page HTML complète
+ et autonome. C'est la valeur par défaut.
+
+
+
+
+
+
+ Constantes de phpinfo
+
+
+ INFO_GENERAL
+ (int)
+
+
+
+ La ligne de configuration, le chemin du &php.ini;, la date de
+ compilation, le système et plus encore.
+
+
+
+
+
+ INFO_CREDITS
+ (int)
+
+
+
+ Crédits de PHP. Voir aussi phpcredits.
+
+
+
+
+
+ INFO_CONFIGURATION
+ (int)
+
+
+
+ Valeurs locales et serveurs des directives PHP. Voir aussi
+ ini_get.
+
+
+
+
+
+ INFO_MODULES
+ (int)
+
+
+
+ Les modules chargés et leurs configurations respectives.
+
+
+
+
+
+ INFO_ENVIRONMENT
+ (int)
+
+
+
+ Les variables d'environnement, qui sont aussi disponibles
+ dans $_ENV.
+
+
+
+
+
+ INFO_VARIABLES
+ (int)
+
+
+
+ Toutes les
+ variables prédéfinies : EGPCS
+ (Environnement, GET, POST, Cookie, Server).
+
+
+
+
+
+ INFO_LICENSE
+ (int)
+
+
+
+ La licence PHP. Voir aussi la
+ FAQ de la licence.
+
+
+
+
+
+ INFO_ALL
+ (int)
+
+
+
+ Affiche toutes les valeurs citées ci-dessus. C'est la valeur
+ par défaut.
+
+
+
+
+
+
+ Constantes mode INI
+
+
+ INI_USER
+ (int)
+
+
+
+ Cette entrée peut être définie dans les scripts utilisateur (comme avec ini_set)
+ ou dans le registre Windows.
+ L'entrée peut être définie dans le fichier &user-ini;.
+
+
+
+
+
+ INI_PERDIR
+ (int)
+
+
+
+ Cette entrée peut être définie dans le fichier &php.ini;, &htaccess;, &httpd.conf; ou &user-ini;.
+
+
+
+
+
+ INI_SYSTEM
+ (int)
+
+
+
+ Cette entrée peut être définie dans le fichier &php.ini; ou &httpd.conf;.
+
+
+
+
+
+ INI_ALL
+ (int)
+
+
+
+ Cette entrée peut être définie n'importe où.
+
+
+
+
+
+
+
+ Les constantes d'assertions servent avec la fonction
+ assert_options.
+
+
+ Constantes d'assert
+
+
+ ASSERT_ACTIVE
+ (int)
+
+
+
+ Active l'évaluation assert.
+
+ &warn.deprecated.feature-8-3-0;
+
+
+
+
+ ASSERT_CALLBACK
+ (int)
+
+
+
+ Fonction de rappel des assertions échouées.
+
+ &warn.deprecated.feature-8-3-0;
+
+
+
+
+ ASSERT_BAIL
+ (int)
+
+
+
+ Termine l'exécution des assertions échouées.
+
+ &warn.deprecated.feature-8-3-0;
+
+
+
+
+ ASSERT_EXCEPTION
+ (int)
+
+
+
+ Lance une AssertionError pour chaque assertion échouée.
+
+ &warn.deprecated.feature-8-3-0;
+
+
+
+
+ ASSERT_WARNING
+ (int)
+
+
+
+ Émet une alerte PHP pour chaque assertion échouée.
+
+ &warn.deprecated.feature-8-3-0;
+
+
+
+
+ ASSERT_QUIET_EVAL
+ (int)
+
+
+
+ Désactive le error_reporting durant l'évaluation
+ des expressions d'assertion.
+ &warn.feature.removed-8-0-0;
+
+
+
+
+
+
+
+ Les constantes suivantes ne sont disponibles que si le système
+ d'hébergement est sur Windows, et peut vous donner des informations
+ sur les versions, qui vous permettront de détecter la présence
+ de fonctionnalités. Elles sont disponibles depuis PHP 5.3.0.
+
+
+ Constantes particulières à Windows
+
+
+ PHP_WINDOWS_VERSION_MAJOR
+ (int)
+
+
+
+ La version majeure de Windows, qui peut être 4 (NT4/Me/98/95),
+ 5 (XP/2003 R2/2003/2000) ou 6 (Vista/2008/7/8/8.1).
+
+
+
+
+
+ PHP_WINDOWS_VERSION_MINOR
+ (int)
+
+
+
+ La version mineure de Windows, qui peut être 0
+ (Vista/2008/2000/NT4/95), 1 (XP), 2
+ (2003 R2/2003/XP x64), 10 (98) ou 90 (ME).
+
+
+
+
+
+ PHP_WINDOWS_VERSION_BUILD
+ (int)
+
+
+
+ Le numéro de compilation de Windows (par exemple,
+ Windows Vista avec SP1 a le numéro 6001)
+
+
+
+
+
+ PHP_WINDOWS_VERSION_PLATFORM
+ (int)
+
+
+
+ La plate-forme que PHP utilise actuellement : cette valeur peut être
+ 2 sur Windows Vista/XP/2000/NT4, Server 2008/2003 et
+ sur Windows ME/98/95 cette valeur est 1.
+
+
+
+
+
+ PHP_WINDOWS_VERSION_SP_MAJOR
+ (int)
+
+
+
+ La version majeure du paquet de service installé : cette valeur vaut
+ 0 si aucun paquet de service n'est disponible. Par
+ exemple, Windows XP avec le paquet de service 3 donne la valeur
+ 3 à cette constante.
+
+
+
+
+
+ PHP_WINDOWS_VERSION_SP_MINOR
+ (int)
+
+
+
+ La version mineur du paquet de service installé. Cette valeur est
+ 0 si aucun paquet de service n'est installé.
+
+
+
+
+
+ PHP_WINDOWS_VERSION_SUITEMASK
+ (int)
+
+
+
+ Le masque est un champ de bits qui permet de connaître la présence
+ de différentes fonctionnalités de Windows. Voyez la table ci-dessous
+ pour connaître les différents champs.
+
+
+
+
+
+ PHP_WINDOWS_VERSION_PRODUCTTYPE
+ (int)
+
+
+
+ Cette constante contient la valeur utilisée pour déterminer
+ la valeur des constantes
+ PHP_WINDOWS_NT_*.
+ Cette valeur peut être l'une des constantes
+ PHP_WINDOWS_NT_*,
+ indiquant le type de plate-forme.
+
+
+
+
+
+ PHP_WINDOWS_NT_DOMAIN_CONTROLLER
+ (int)
+
+
+
+ Le contrôleur de domaine.
+
+
+
+
+
+ PHP_WINDOWS_NT_SERVER
+ (int)
+
+
+
+ Un serveur système (eg. Server 2008/2003/2000). Notez que
+ si c'est un contrôleur de domaine, il est indiqué dans
+ PHP_WINDOWS_NT_DOMAIN_CONTROLLER.
+
+
+
+
+
+ PHP_WINDOWS_NT_WORKSTATION
+ (int)
+
+
+
+ Un poste de travail (eg. Vista/XP/2000/NT4)
+
+
+
+
+
+ La table ci-desous présente les fonctionnalités qui peuvent être
+ vérifiées dans le champ de bit de la constante
+ PHP_WINDOWS_VERSION_SUITEMASK.
+
+
+ Champs du masque Windows
+
+
+
+ Bits
+ Description
+
+
+
+
+ 0x00000004
+ Les composants Microsoft BackOffice sont installés.
+
+
+ 0x00000400
+ Windows Server 2003, Web Edition est installé.
+
+
+ 0x00004000
+ Windows Server 2003, Compute Cluster Edition est installé.
+
+
+ 0x00000080
+
+ Windows Server 2008 Datacenter, Windows Server 2003, Datacenter Edition ou
+ Windows 2000 Datacenter Server est installé.
+
+
+
+ 0x00000002
+
+ Windows Server 2008 Enterprise, Windows Server 2003, Enterprise Edition,
+ Windows 2000 Advanced Server, ou Windows NT Server 4.0 Enterprise Edition
+ est installé.
+
+
+
+ 0x00000040
+ Windows XP Embedded est installé.
+
+
+ 0x00000200
+
+ Windows Vista Home Premium, Windows Vista Home Basic, ou Windows XP Home
+ Edition est installé.
+
+
+
+ 0x00000100
+
+ Remote Desktop est supporté, mais une seule session interactive est
+ supportée. Cette valeur est présente, à moins que le système ne fonctionne
+ en mode serveur d'application.
+
+
+
+ 0x00000001
+
+ Microsoft Small Business Server a été installé sur le système, mais
+ a été mis à joru vers une nouvelle version de Windows.
+
+
+
+ 0x00000020
+
+ Microsoft Small Business Server est installé avec la licence cliente
+ restreinte.
+
+
+
+ 0x00002000
+ Windows Storage Server 2003 R2 ou Windows Storage Server 2003 est installé.
+
+
+ 0x00000010
+
+ Terminal Services est installé. Cette valeur est toujours activée. Si cette
+ valeur est activée, mais 0x00000100 ne l'est pas, alors
+ le système fonctionne en mode de serveur d'application.
+
+
+
+ 0x00008000
+ Windows Home Server est installé.
+
+
+
+
+
+
diff --git a/reference/info/functions/getopt.xml b/reference/info/functions/getopt.xml
index 43da7f1c86..a662936d9d 100644
--- a/reference/info/functions/getopt.xml
+++ b/reference/info/functions/getopt.xml
@@ -74,7 +74,7 @@
Caractères suivis par un deux-points (le paramètre nécessite une valeur)Caractères suivis par deux deux-points (valeur optionnelle)
- Les valeurs optionnelles sont les premiers arguments après la chaîne. Si
+ Les valeurs optionnelles sont les premiers arguments après la chaîne. Si
une valeur est requise, peu importe que la valeur soit suivi d'un espace ou
non. Voir la note.
diff --git a/reference/info/functions/ini-set.xml b/reference/info/functions/ini-set.xml
index 31db8ac3f5..2acd8d1ac0 100644
--- a/reference/info/functions/ini-set.xml
+++ b/reference/info/functions/ini-set.xml
@@ -17,7 +17,7 @@
Change la valeur de l'option de configuration varname
- et lui donne celle de newvalue.
+ et lui donne celle de newvalue.
La valeur de l'option de configuration sera modifiée durant toute
l'exécution du script et pour ce script spécifiquement. Elle reprendra
sa valeur par défaut dès la fin du script.
diff --git a/reference/inotify/constants.xml b/reference/inotify/constants.xml
index f48daae002..4cdc8c8e8e 100644
--- a/reference/inotify/constants.xml
+++ b/reference/inotify/constants.xml
@@ -1,295 +1,295 @@
-
-
-
-
-
-
- &reftitle.constants;
- &extension.constants;
-
- Les constantes Inotify sont utilisables avec les fonctions inotify_add_watch
- et/ou retournées par la fonction inotify_read
-
-
- IN_ACCESS
- (int)
-
-
-
- Le fichier a été accédé (lu) (*)
-
-
-
-
-
- IN_MODIFY
- (int)
-
-
-
- Le fichier a été modifié (*)
-
-
-
-
-
- IN_ATTRIB
- (int)
-
-
-
- Les métadonnées ont changé (e.g. les permissions, la date de modification, etc.) (*)
-
-
-
-
-
- IN_CLOSE_WRITE
- (int)
-
-
-
- Le fichier ouvert en écriture a été refermé (*)
-
-
-
-
-
- IN_CLOSE_NOWRITE
- (int)
-
-
-
- Le fichier non-ouvert en écriture a été refermé (*)
-
-
-
-
-
- IN_OPEN
- (int)
-
-
-
- Le fichier a été ouvert (*)
-
-
-
-
-
- IN_MOVED_TO
- (int)
-
-
-
- Fichier déplacé dans un dossier surveillé (*)
-
-
-
-
-
- IN_MOVED_FROM
- (int)
-
-
-
- Fichier déplacé depuis un dossier surveillé (*)
-
-
-
-
-
- IN_CREATE
- (int)
-
-
-
- Fichier ou dossier créé dans un dossier surveillé (*)
-
-
-
-
-
- IN_DELETE
- (int)
-
-
-
- Fichier ou dossier supprimé dans un dossier surveillé (*)
-
-
-
-
-
- IN_DELETE_SELF
- (int)
-
-
-
- Les fichiers ou dossiers surveillés ont été supprimés
-
-
-
-
-
- IN_MOVE_SELF
- (int)
-
-
-
- Les fichiers ou dossiers surveillés ont été déplacés
-
-
-
-
-
- IN_CLOSE
- (int)
-
-
-
- Égal à IN_CLOSE_WRITE | IN_CLOSE_NOWRITE
-
-
-
-
-
- IN_MOVE
- (int)
-
-
-
- Égal à IN_MOVED_FROM | IN_MOVED_TO
-
-
-
-
-
- IN_ALL_EVENTS
- (int)
-
-
-
- Composition de toutes les constantes précédentes
-
-
-
-
-
- IN_UNMOUNT
- (int)
-
-
-
- Le système de fichiers contenant les objets surveillés a été démonté
-
-
-
-
-
- IN_Q_OVERFLOW
- (int)
-
-
-
- Queue d'événements en dépassement de capacité (wd vaut -1 pour cet événement)
-
-
-
-
-
- IN_IGNORED
- (int)
-
-
-
- La surveillance a été retirée (explicitement par inotify_rm_watch
- ou par ce que le fichier a été supprimé, ou que le système de fichiers a été démonté)
-
-
-
-
-
- IN_ISDIR
- (int)
-
-
-
- Le sujet de cet événement est un dossier
-
-
-
-
-
- IN_ONLYDIR
- (int)
-
-
-
- Ne surveille que le chemin, si c'est un dossier (Depuis Linux 2.6.15)
-
-
-
-
-
- IN_DONT_FOLLOW
- (int)
-
-
-
- Ne déréférence pas le chemin si c'est un lien symbolique (Depuis Linux 2.6.15)
-
-
-
-
-
- IN_MASK_ADD
- (int)
-
-
-
- Ajoute les événements au masque de surveillance pour ce chemin, s'il existe déjà
- (au lieu de remplacer).
-
-
-
-
-
- IN_ONESHOT
- (int)
-
-
-
- Surveille le chemin de cet événement, puis le supprime de la liste de surveillance.
-
-
-
-
-
-
- Les événements marqués par un astérisque (*) ci-dessus peuvent survenir pour des fichiers
- dans des dossiers sous surveillance.
-
-
-
-
-
+
+
+
+
+
+
+ &reftitle.constants;
+ &extension.constants;
+
+ Les constantes Inotify sont utilisables avec les fonctions inotify_add_watch
+ et/ou retournées par la fonction inotify_read
+
+
+ IN_ACCESS
+ (int)
+
+
+
+ Le fichier a été accédé (lu) (*)
+
+
+
+
+
+ IN_MODIFY
+ (int)
+
+
+
+ Le fichier a été modifié (*)
+
+
+
+
+
+ IN_ATTRIB
+ (int)
+
+
+
+ Les métadonnées ont changé (e.g. les permissions, la date de modification, etc.) (*)
+
+
+
+
+
+ IN_CLOSE_WRITE
+ (int)
+
+
+
+ Le fichier ouvert en écriture a été refermé (*)
+
+
+
+
+
+ IN_CLOSE_NOWRITE
+ (int)
+
+
+
+ Le fichier non-ouvert en écriture a été refermé (*)
+
+
+
+
+
+ IN_OPEN
+ (int)
+
+
+
+ Le fichier a été ouvert (*)
+
+
+
+
+
+ IN_MOVED_TO
+ (int)
+
+
+
+ Fichier déplacé dans un dossier surveillé (*)
+
+
+
+
+
+ IN_MOVED_FROM
+ (int)
+
+
+
+ Fichier déplacé depuis un dossier surveillé (*)
+
+
+
+
+
+ IN_CREATE
+ (int)
+
+
+
+ Fichier ou dossier créé dans un dossier surveillé (*)
+
+
+
+
+
+ IN_DELETE
+ (int)
+
+
+
+ Fichier ou dossier supprimé dans un dossier surveillé (*)
+
+
+
+
+
+ IN_DELETE_SELF
+ (int)
+
+
+
+ Les fichiers ou dossiers surveillés ont été supprimés
+
+
+
+
+
+ IN_MOVE_SELF
+ (int)
+
+
+
+ Les fichiers ou dossiers surveillés ont été déplacés
+
+
+
+
+
+ IN_CLOSE
+ (int)
+
+
+
+ Égal à IN_CLOSE_WRITE | IN_CLOSE_NOWRITE
+
+
+
+
+
+ IN_MOVE
+ (int)
+
+
+
+ Égal à IN_MOVED_FROM | IN_MOVED_TO
+
+
+
+
+
+ IN_ALL_EVENTS
+ (int)
+
+
+
+ Composition de toutes les constantes précédentes
+
+
+
+
+
+ IN_UNMOUNT
+ (int)
+
+
+
+ Le système de fichiers contenant les objets surveillés a été démonté
+
+
+
+
+
+ IN_Q_OVERFLOW
+ (int)
+
+
+
+ Queue d'événements en dépassement de capacité (wd vaut -1 pour cet événement)
+
+
+
+
+
+ IN_IGNORED
+ (int)
+
+
+
+ La surveillance a été retirée (explicitement par inotify_rm_watch
+ ou par ce que le fichier a été supprimé, ou que le système de fichiers a été démonté)
+
+
+
+
+
+ IN_ISDIR
+ (int)
+
+
+
+ Le sujet de cet événement est un dossier
+
+
+
+
+
+ IN_ONLYDIR
+ (int)
+
+
+
+ Ne surveille que le chemin, si c'est un dossier (Depuis Linux 2.6.15)
+
+
+
+
+
+ IN_DONT_FOLLOW
+ (int)
+
+
+
+ Ne déréférence pas le chemin si c'est un lien symbolique (Depuis Linux 2.6.15)
+
+
+
+
+
+ IN_MASK_ADD
+ (int)
+
+
+
+ Ajoute les événements au masque de surveillance pour ce chemin, s'il existe déjà
+ (au lieu de remplacer).
+
+
+
+
+
+ IN_ONESHOT
+ (int)
+
+
+
+ Surveille le chemin de cet événement, puis le supprime de la liste de surveillance.
+
+
+
+
+
+
+ Les événements marqués par un astérisque (*) ci-dessus peuvent survenir pour des fichiers
+ dans des dossiers sous surveillance.
+
+
+
+
+
diff --git a/reference/ldap/functions/ldap-search.xml b/reference/ldap/functions/ldap-search.xml
index e4b0a30788..48c0b8530a 100644
--- a/reference/ldap/functions/ldap-search.xml
+++ b/reference/ldap/functions/ldap-search.xml
@@ -24,7 +24,7 @@
Effectue une recherche avec le filtre filter dans le
dossier base_dn avec le paramétrage
- LDAP_SCOPE_SUBTREE. C'est l'équivalent
+ LDAP_SCOPE_SUBTREE. C'est l'équivalent
d'une recherche dans le dossier.
&ldap.return-result-array-info;
diff --git a/reference/libxml/functions/libxml-set-streams-context.xml b/reference/libxml/functions/libxml-set-streams-context.xml
index 694e81fd45..21d2c1ee64 100755
--- a/reference/libxml/functions/libxml-set-streams-context.xml
+++ b/reference/libxml/functions/libxml-set-streams-context.xml
@@ -81,7 +81,7 @@
&reftitle.examples;
- Exemple avec libxml_set_streams_context
+ Exemple avec libxml_set_streams_context
Cette propriété n'est pas totalement implémentée par la
- bibliothèque libxml ; aussi, 0 est souvent
+ bibliothèque libxml ; aussi, 0 est souvent
retourné.
diff --git a/reference/mail/functions/mail.xml b/reference/mail/functions/mail.xml
index 7cb867e83d..b34f8e212f 100644
--- a/reference/mail/functions/mail.xml
+++ b/reference/mail/functions/mail.xml
@@ -160,7 +160,7 @@
plus être utilisés. La fonction mail ne peut autoriser ces caractères,
aussi, dans les programme où leur utilisation est nécessaire, vous devriez utiliser
une méthode alternative pour l'envoi des emails (comme l'utilisation d'un framework
- ou d'une librairie.
+ ou d'une bibliothèque.
L'utilisateur sous lequel tourne le serveur web doit être ajouté en tant qu'utilisateur de confiance
diff --git a/reference/mail/ini.xml b/reference/mail/ini.xml
index 6ee9f6be4e..d020695ae9 100644
--- a/reference/mail/ini.xml
+++ b/reference/mail/ini.xml
@@ -153,7 +153,7 @@
- Sous Windows seulement : numéro de port à utiliser pour se connecter
+ Sous Windows seulement : numéro de port à utiliser pour se connecter
au serveur SMTP lors de l'envoi de mail avec
la fonction mail; par défaut, c'est 25.
diff --git a/reference/mbstring/encodings.xml b/reference/mbstring/encodings.xml
index f601e73753..7c53e96ff6 100644
--- a/reference/mbstring/encodings.xml
+++ b/reference/mbstring/encodings.xml
@@ -119,7 +119,7 @@
Unicode
Format de transformation d'Unicode sur 16 bits. Il faut noter
- que UTF-16 n'est plus identique à UCS-2
+ que UTF-16 n'est plus identique à UCS-2
car un mécanisme a été introduit en Unicode 2.0 et
UTF-16 fait maintenant référence à un
codage de 21 bits.
@@ -226,7 +226,7 @@
le jeu JIS X 0201:1976. Selon la définition de
l'IANA, le jeu de caractères Shift_JIS est légèrement
différent de IBM932 / CP932. Cependant, les noms
- "SJIS" et "Shift_JIS" sont
+ "SJIS" et "Shift_JIS" sont
souvent utilisés à tort, pour ces jeux.
Pour CP932, utilisez SJIS-WIN.
diff --git a/reference/mcrypt/functions/mcrypt-module-open.xml b/reference/mcrypt/functions/mcrypt-module-open.xml
index 7080c9af3b..7fb52954c0 100644
--- a/reference/mcrypt/functions/mcrypt-module-open.xml
+++ b/reference/mcrypt/functions/mcrypt-module-open.xml
@@ -42,7 +42,7 @@
algorithm_directory
- Le paramètre algorithm_directory est utilisé
+ Le paramètre algorithm_directory est utilisé
pour localiser le module de cryptage. Lorsque vous spécifiez un
nom de dossier, il sera utilisé. Si vous spécifiez une chaîne vide
(""), la valeur définie dans la directive
diff --git a/reference/memcached/memcached/get.xml b/reference/memcached/memcached/get.xml
index 02649d3797..b1cf802a1f 100644
--- a/reference/memcached/memcached/get.xml
+++ b/reference/memcached/memcached/get.xml
@@ -22,7 +22,7 @@
get_flags est fourni Memcached::GET_EXTENDED,
la valeur du jeton CAS de l'élément sera aussi retournée.
Voir Memcached::cas pour savoir comment utiliser les
- jetons CAS. Une Fonction de rappel en cas
+ jetons CAS. Une Fonction de rappel en cas
d'absence peut être
spécifiée avec le paramètre cache_cb.
diff --git a/reference/mongodb/architecture.xml b/reference/mongodb/architecture.xml
index 94c7c55640..9f0845afd7 100644
--- a/reference/mongodb/architecture.xml
+++ b/reference/mongodb/architecture.xml
@@ -1,1002 +1,1002 @@
-
-
-
-
- Architecture et fonctionnalités spéciales
- Explications de l'architecture du pilote et des fonctionnalités spéciales
-
-
- Architecture
- Aperçu de l'architecture
-
-
- Cet article explique comment tous les différents composants du pilote PHP
- s'emboîtent, des bibliothèques système de base, à l'extension, et aux
- bibliothèques PHP en haut.
-
-
-
-
-
- Le diagramme d'architecture du pilote MongoDB PHP. Le niveau le plus bas
- du pilote est nos bibliothèques système : libmongoc, libbson, et
- libmongocrypt. Le niveau intermédiaire est l'extension PHP MongoDB. Le
- niveau supérieur est le code utilisateur PHP et inclut la bibliothèque
- MongoDB PHP et des packages de plus haut niveau tels que les intégrations
- de frameworks et les applications.
-
-
-
-
-
-
-
-
- En haut de cette pile se trouve une
- librairie PHP,
- qui distribue un
- package Composer.
- Cette librairie fournit une API cohérente avec d'autres
- drivers
- MongoDB et implémente diverses
- specifications
- croisées. Bien que l'extension puisse être utilisée directement, la librairie
- a un surcoût minimal et devrait être une dépendance commune pour la plupart
- des applications construites avec MongoDB.
-
-
-
- En dessous de cette bibliothèque se trouve une extension PHP, qui est
- distribuée via
- PECL.
- L'extension forme la colle entre PHP et nos bibliothèques système
- (libmongoc,
- libbson, et
- libmongocrypt).
- Son API publique fournit uniquement les fonctionnalités les plus essentielles :
-
- Gestion de connexions
- Encodage et décoage BSON
- Sérialisation et désérialisation de documents (support des librairies ODM)
- Exécution de commandes, requêtes, et opérations d'écriture
- Gestion des curseurs pour les résultats de commandes et de requêtes
-
-
-
-
-
-
-
-
-
- Connections
- Gestion de la connection et de la persistence
-
- &mongodb.note.forking;
-
-
- Connexions et topologie persistante (version PHP depuis 1.2.0)
-
-
- Toutes les versions de l'extension depuis 1.2.0 conservent l'objet client
- libmongoc dans le processus
- PHP, ce qui lui permet de réutiliser les connexions de base de données, les
- états d'authentification, et les informations de
- topologie à travers plusieurs requêtes.
-
-
-
- Lorsque MongoDB\Driver\Manager::__construct est
- invoqué, un hachage est créé à partir de ses arguments (c'est-à-dire la
- chaîne URI et le tableau d'options). L'extension tentera de trouver un objet
- client libmongoc persisté
- précédemment pour ce hachage. Si un client existant ne peut pas être trouvé
- pour le hachage, un nouveau client sera créé et persisté pour une utilisation
- future. Ce comportement peut être désactivé via l'option du pilote
- "disableClientPersistence".
-
-
-
- Chaque client contient ses propres connexions de base de données et une vue
- de la topologie du serveur (par exemple, autonome, ensemble de réplicas,
- grappe de fragments). En persistant le client entre les requêtes PHP,
- l'extension est capable de réutiliser les connexions de base de données
- établies et d'éliminer le besoin de
- découvrir la topologie du serveur
- à chaque requête.
-
-
-
- Considérez l'exemple suivant :
-
-
-
- 'myReplicaSet']),
-];
-
-foreach ($managers as $manager) {
- $manager->executeCommand('test', new MongoDB\Driver\Command(['ping' => 1]));
-}
-
-?>
-]]>
-
-
-
- Les deux premiers objets Manager partageront le même
- client libmongoc car leurs
- arguments de constructeur sont identiques. Les troisième et quatrième objets
- utiliseront chacun leur propre client. Au total, trois clients seront créés
- et le processus PHP exécutant ce script ouvrira deux connexions à
- 127.0.0.1 et une connexion à chacun de
- rs1.example.com et rs2.example.com.
- Si l'extension découvre des membres supplémentaires de l'ensemble de réplicas
- après avoir émis des commandes hello, elle ouvrira des
- connexions supplémentaires à ces serveurs également.
-
-
-
- Si les mêmes connexions sont réutilisées par le même processus PHP, les trois
- clients seront réutilisés et aucune nouvelle connexion ne sera établie. En
- fonction de la durée écoulée depuis la dernière requête servie, l'extension
- peut avoir besoin d'émettre des commandes hello supplémentaires
- pour mettre à jour sa vue des topologies.
-
-
-
-
- Persistance des sockets (versions PHP avant 1.2.0)
-
-
- Les versions de l'extension avant 1.2.0 utilisent l'API des flux PHP pour
- les connexions de base de données, utilisant une API dans
- libmongoc pour désigner des
- gestionnaires personnalisés pour la communication par socket ; cependant, un
- nouveau client libmongoc est créé pour chaque
- MongoDB\Driver\Manager. En conséquence, l'extension
- persiste les connexions de base de données individuelles mais pas l'état
- d'authentification ou les informations de topologie. Cela signifie que
- l'extension doit émettre des commandes au début de chaque requête pour
- s'authentifier et
- découvrir la topologie du serveur.
-
-
-
- Les connexions de base de données sont persistées par un hachage dérivé de
- l'hôte du serveur, du port et de la chaîne URI utilisée pour construire le
- MongoDB\Driver\Manager. Les options du tableau du
- constructeur ne sont pas incluses dans ce hachage.
-
-
-
-
- Les version de l'extension >= 1.1.8 et < 1.2.0 ne persistent pas les
- sockets pour les connexions SSL. Voir
- PHPC-720 pour plus
- d'informations.
-
-
-
-
- Malgré ses lacunes avec les connexions SSL persistantes et les informations
- de topologie, cette version de l'extension supporte toutes les
- options de contexte SSL puisqu'elle
- utilise l'API des flux PHP.
-
-
-
-
-
- Persister des données
- Sérialisation and déserialisation des variables PHP dans MongoDB
-
-
- Ce document explique comment les structures composées (c'est-à-dire les
- documents, les tableaux et les objets) sont converties entre les valeurs BSON et PHP.
-
-
-
- Sérialisation en BSON
-
-
- Tableaux
-
-
- Si un tableau est un tableau compact — c'est-à-dire un
- tableau vide ou les clés commencent à 0 et sont séquentielles sans trous :
- tableau BSON.
-
-
-
- Si le tableau n'est pas compact — c'est-à-dire qu'il a des clés
- associatives (chaînes), que les clés ne commencent pas à 0, ou qu'il y a
- des trous : objet BSON.
-
-
-
- Un document de niveau supérieur (racine), toujours
- sérialisé en tant que document BSON.
-
-
-
- Exemples
-
-
- Ces exemples sérialisent en tant que tableau BSON :
-
-
-
- [ 8, 5, 2, 3 ]
-[ 0 => 4, 1 => 9 ] => [ 4, 9 ]
-]]>
-
-
-
- Ces exemples sérialisent en tant qu'objet BSON :
-
-
-
- 1, 2 => 8, 3 => 12 ] => { "0" : 1, "2" : 8, "3" : 12 }
-[ "foo" => 42 ] => { "foo" : 42 }
-[ 1 => 9, 0 => 10 ] => { "1" : 9, "0" : 10 }
-]]>
-
-
-
- Il est à noter que les cinq exemples sont des extraits
- d'un document complet, et ne représentent qu'une valeur
- à l'intérieur d'un document.
-
-
-
-
-
-
- Objets
-
-
- Si un objet est de la classe stdClass, sérialiser
- en tant que document BSON.
-
-
-
- Si un objet est une classe supportée qui implémente
- MongoDB\BSON\Type, alors utiliser la logique
- de sérialisation BSON pour ce type spécifique.
- Les instances de MongoDB\BSON\Type (à
- l'exclusion de MongoDB\BSON\Serializable)
- ne peuvent être sérialisées que comme valeur de champ de document. Tenter
- de sérialiser un tel objet en tant que document racine lèvera une
- MongoDB\Driver\Exception\UnexpectedValueException.
-
-
-
- Si un objet est d'une classe inconnue implémentant l'interface
- MongoDB\BSON\Type, alors une
- MongoDB\Driver\Exception\UnexpectedValueException est lancée.
-
-
-
- Si un objet est d'une classe autre, sans implémenter une interface spéciale,
- sérialiser en tant que document BSON. Garder seulement
- les propriétés public, et ignorer les propriétés
- protected et private.
-
-
-
- Si un objet est d'une classe qui implémente
- MongoDB\BSON\Serializable, appeler
- MongoDB\BSON\Serializable::bsonSerialize et
- utiliser le tableau ou stdClass retourné pour
- sérialiser en tant que document BSON ou tableau. Le type BSON sera
- déterminé par les règles suivantes :
-
-
-
-
-
- Les documents racines doivent être sérialisés en tant que
- document BSON.
-
-
-
-
- Les objets MongoDB\BSON\Persistable doivent
- être sérialisés en tant que document BSON.
-
-
-
-
- Si MongoDB\BSON\Serializable::bsonSerialize
- retourne un tableau compact, sérialiser en tant que tableau BSON.
-
-
-
-
- Si MongoDB\BSON\Serializable::bsonSerialize
- retourne un tableau non-compact ou stdClass,
- sérialiser en tant qu'objet BSON.
-
-
-
-
- Si MongoDB\BSON\Serializable::bsonSerialize
- ne retourne pas un tableau ou stdClass, lance
- une exception
- MongoDB\Driver\Exception\UnexpectedValueException.
-
-
-
-
-
-
- Si un objet est d'une classe qui implémente l'interface
- MongoDB\BSON\Persistable (qui implique
- MongoDB\BSON\Serializable), obtenir les
- propriétés de manière similaire aux paragraphes précédents, mais
- aussi ajouter une propriété
- __pclass en tant que valeur binaire, avec un sous-type
- 0x80 et des données portant le nom de la classe
- entièrement qualifié de l'objet qui est sérialisé.
-
-
-
- La propriété __pclass est ajoutée au tableau ou à
- l'objet retourné par
- MongoDB\BSON\Serializable::bsonSerialize, ce qui
- signifie qu'elle écrasera toute clé/propriété __pclass
- dans la valeur de retour de
- MongoDB\BSON\Serializable::bsonSerialize. Si vous
- voulez éviter ce comportement et définir votre propre valeur
- __pclass,
- vous ne devez pas implémenter
- MongoDB\BSON\Persistable et devriez plutôt
- implémenter
- MongoDB\BSON\Serializable directement.
-
-
-
- Exemples
-
-
- {"foo": 42}
-
-class MyClass
-{
- public $foo = 42;
- protected $prot = 'wine';
- private $fpr = 'cheese';
-} // => {"foo": 42}
-
-class AnotherClass1 implements MongoDB\BSON\Serializable
-{
- public $foo = 42;
- protected $prot = 'wine';
- private $fpr = 'cheese';
-
- public function bsonSerialize(): array
- {
- return ['foo' => $this->foo, 'prot' => $this->prot];
- }
-} // => {"foo": 42, "prot": "wine"}
-
-class AnotherClass2 implements MongoDB\BSON\Serializable
-{
- public $foo = 42;
-
- public function bsonSerialize(): self
- {
- return $this;
- }
-} // => MongoDB\Driver\Exception\UnexpectedValueException("bsonSerialize() did not return an array or stdClass")
-
-class AnotherClass3 implements MongoDB\BSON\Serializable
-{
- private $elements = ['foo', 'bar'];
-
- public function bsonSerialize(): array
- {
- return $this->elements;
- }
-} // => {"0": "foo", "1": "bar"}
-
-/**
- * Nesting Serializable classes
- */
-
-class AnotherClass4 implements MongoDB\BSON\Serializable
-{
- private $elements = [0 => 'foo', 2 => 'bar'];
-
- public function bsonSerialize(): array
- {
- return $this->elements;
- }
-} // => {"0": "foo", "2": "bar"}
-
-class ContainerClass1 implements MongoDB\BSON\Serializable
-{
- public $things;
-
- public function __construct()
- {
- $this->things = new AnotherClass4();
- }
-
- function bsonSerialize(): array
- {
- return ['things' => $this->things];
- }
-} // => {"things": {"0": "foo", "2": "bar"}}
-
-
-class AnotherClass5 implements MongoDB\BSON\Serializable
-{
- private $elements = [0 => 'foo', 2 => 'bar'];
-
- public function bsonSerialize(): array
- {
- return array_values($this->elements);
- }
-} // => {"0": "foo", "1": "bar"} en tant que classe racine
- // ["foo", "bar"] en tant que valeur imbriquée
-
-class ContainerClass2 implements MongoDB\BSON\Serializable
-{
- public $things;
-
- public function __construct()
- {
- $this->things = new AnotherClass5();
- }
-
- public function bsonSerialize(): array
- {
- return ['things' => $this->things];
- }
-} // => {"things": ["foo", "bar"]}
-
-
-class AnotherClass6 implements MongoDB\BSON\Serializable
-{
- private $elements = ['foo', 'bar'];
-
- function bsonSerialize(): object
- {
- return (object) $this->elements;
- }
-} // => {"0": "foo", "1": "bar"}
-
-class ContainerClass3 implements MongoDB\BSON\Serializable
-{
- public $things;
-
- public function __construct()
- {
- $this->things = new AnotherClass6();
- }
-
- public function bsonSerialize(): array
- {
- return ['things' => $this->things];
- }
-} // => {"things": {"0": "foo", "1": "bar"}}
-
-class UpperClass implements MongoDB\BSON\Persistable
-{
- public $foo = 42;
- protected $prot = 'wine';
- private $fpr = 'cheese';
-
- private $data;
-
- public function bsonUnserialize(array $data): void
- {
- $this->data = $data;
- }
-
- public function bsonSerialize(): array
- {
- return ['foo' => $this->foo, 'prot' => $this->prot];
- }
-} // => {"foo": 42, "prot": "wine", "__pclass": {"$type": "80", "$binary": "VXBwZXJDbGFzcw=="}}
-
-?>
-]]>
-
-
-
-
-
-
- Deserialization from BSON
-
- &mongodb.warning.duplicate-keys;
-
-
- L'extension mongodb désérialise les documents BSON
- et les tableaux BSON en tant que tableaux PHP. Tant que les tableaux PHP sont
- pratiques à utiliser, ce comportement était problématique car différents
- types BSON pouvaient être désérialisés en la même valeur PHP (par exemple
- {"0": "foo"} et ["foo"]) et rendait
- impossible d'inférer le type BSON original. Par défaut, l'extension
- mongodb adresse cette préoccupation en s'assurant que les
- tableaux BSON et les documents BSON sont convertis en tableaux et objets PHP,
- respectivement.
-
-
- Pour les types composés, il existe trois types de données :
-
-
-
-
-
- root
-
-
- réfère à un document BSON de niveau supérieur seulement
-
-
-
-
- document
-
-
- réfère à des documents BSON imbriqués seulement
-
-
-
-
- array
-
-
- réfère à un tableau BSON
-
-
-
-
-
-
-
- A part les trois types collectifs, il est aussi possible de configurer des
- champs spécifiques dans votre document pour mapper les types de données
- mentionnés ci-dessous. Par exemple, le type de carte suivant vous permet de
- mapper chaque document intégré dans un tableau "addresses"
- à une classe Addresset chaque
- champ "city" dans ces documents d'adresse intégrés à une
- classe City:
-
-
- [
- 'addresses.$' => 'MyProject\Address',
- 'addresses.$.city' => 'MyProject\City',
- ],
-]
-]]>
-
-
-
-
- Chacun de ces trois types de données, ainsi que les mappages spécifiques
- aux champs, peuvent être mappés contre différents types PHP. Les valeurs de
- mappage possibles sont:
-
-
-
-
-
- non défini ou NULL (par défaut)
-
-
-
-
-
- Un tableau BSON sera désérialisé en un array PHP.
-
-
-
-
- Un document BSON (racine ou imbriqué) sans propriété
- __pclass
-
-
- Une propriété __pclass n'est considérée comme existante que si
- une propriété portant ce nom existe, et qu'elle est une valeur
- binaire, et que le sous-type de la valeur binaire est 0x80. Si
- une de ces trois conditions n'est pas remplie, la propriété
- __pclass n'existe pas et doit être traitée comme toute autre
- propriété normale.
-
-
- devient un objet stdClass, avec chaque clé de document
- BSON définie comme une propriété de stdClass
- publique.
-
-
-
-
- Un document BSON (racine ou imbriqué) avec une propriété
- __pclass devient un objet PHP de la classe
- nommée par la propriété __pclass.
-
-
- Si la classe nommée implémente l'interface
- MongoDB\BSON\Persistable, alors les
- propriétés du document BSON, y compris la propriété
- __pclass, sont envoyées sous forme de tableau
- associatif à la fonction
- MongoDB\BSON\Unserializable::bsonUnserialize
- pour initialiser les propriétés de l'objet.
-
-
- Si la classe nommée n'existe pas ou n'implémente pas
- l'interface MongoDB\BSON\Persistable,
- stdClass sera
- utilisé et chaque clé de document BSON (y compris __pclass)
- sera définie comme une propriété publique de stdClass.
-
-
- La fonctionnalité __pclass repose sur le fait
- que la propriété soit partie d'un document MongoDB récupéré. Si vous
- utilisez une
- projection
- lors de la recherche de documents, vous devez inclure le champ
- __pclass dans la projection pour que cette
- fonctionnalité fonctionne.
-
-
-
-
-
-
-
-
- "array"
-
-
- Transforme un tableau BSON en un array PHP. Il n'y aura
- pas de traitement spécial d'une propriété __pclass
- mais elle peut être définie comme un élément dans le tableau retourné
- si elle était présente dans le document BSON.
-
-
-
-
-
- "object" ou "stdClass"
-
-
- Transforme un tableau BSON ou un document BSON en un objet
- stdClass. Il n'y aura pas de traitement spécial d'une
- propriété __pclass
- mais elle peut être définie comme une propriété publique dans l'objet
- retourné si elle était présente dans le document BSON.
-
-
-
-
-
- "bson"
-
-
- Transforme un tableau BSON en un MongoDB\BSON\PackedArray
- et un document BSON en un MongoDB\BSON\Document,
- indépendamment du fait que le document BSON ait une propriété
- __pclass.
-
-
-
- La valeur bson n'est disponible que pour les trois
- types racines, et non dans les mappages spécifiques aux champs.
-
-
-
-
-
-
- toues les autres chaînes de caractères
-
-
- Définit le nom de la classe à laquelle le document BSON doit être
- désérialisé. Pour les documents BSON qui incluent des propriétés
- __pclass,
- cette classe prendra la priorité.
-
-
-
- Si la classe nommée n'existe pas ou n'implémente pas
- l'interface MongoDB\BSON\Unserializable,
- une exception
- MongoDB\Driver\Exception\InvalidArgumentException
- est lancée.
-
-
-
- Si l'objet BSON a une propriété __pclass et que
- cette classe existe et implémente
- MongoDB\BSON\Persistable, elle prendra
- le pas sur la classe fournie dans la carte de type.
-
-
-
- Les propriétés du document BSON, y compris la propriété
- __pclass,
- seront envoyées sous forme de tableau associatif à la fonction
- MongoDB\BSON\Unserializable::bsonUnserialize
- pour initialiser les propriétés de l'objet.
-
-
-
-
-
-
-
- TypeMaps
-
-
- Les TypeMaps peuvent être définis via la méthode
- MongoDB\Driver\Cursor::setTypeMap sur un objet
- MongoDB\Driver\Cursor, ou l'argument
- $typeMap de
- MongoDB\BSON\toPHP,
- MongoDB\BSON\Document::toPHP, et
- MongoDB\BSON\PackedArray::toPHP. Chacune des trois
- classes (racine, document, et
- array) peut être définie individuellement, en plus des
- types spécifiques aux champs.
-
-
-
- Si la valeur dans le TypeMap est NULL, cela signifie la même
- chose que la valeur par défaut pour cet élément.
-
-
-
-
- Exemples
-
-
- Ces exemples utilisent les classes suivantes:
-
-
-
-
-
- MyClass
-
-
- qui n'implémente aucune interface
-
-
-
-
- YourClass
-
-
- qui implémente
- MongoDB\BSON\Unserializable
-
-
-
-
- OurClass
-
-
- qui implémente
- MongoDB\BSON\Persistable
-
-
-
-
- TheirClass
-
-
- qui étends OurClass
-
-
-
-
-
-
-
- La méthode MongoDB\BSON\Unserializable::bsonUnserialize
- de YourClass, OurClass, TheirClass itère sur le tableau et définit les
- propriétés sans modifications. Elle ajoute aussi la
- propriété $unserialized à &true;:
-
-
- $value )
- {
- $this->$k = $value;
- }
- $this->unserialized = true;
-}
-]]>
-
-
-
-
-
- stdClass { $foo => 'yes', $bar => false }
-
-{ "foo": "no", "array" : [ 5, 6 ] }
- -> stdClass { $foo => 'no', $array => [ 5, 6 ] }
-
-{ "foo": "no", "obj" : { "embedded" : 3.14 } }
- -> stdClass { $foo => 'no', $obj => stdClass { $embedded => 3.14 } }
-
-{ "foo": "yes", "__pclass": "MyClass" }
- -> stdClass { $foo => 'yes', $__pclass => 'MyClass' }
-
-{ "foo": "yes", "__pclass": { "$type" : "80", "$binary" : "MyClass" } }
- -> stdClass { $foo => 'yes', $__pclass => Binary(0x80, 'MyClass') }
-
-{ "foo": "yes", "__pclass": { "$type" : "80", "$binary" : "YourClass") }
- -> stdClass { $foo => 'yes', $__pclass => Binary(0x80, 'YourClass') }
-
-{ "foo": "yes", "__pclass": { "$type" : "80", "$binary" : "OurClass") }
- -> OurClass { $foo => 'yes', $__pclass => Binary(0x80, 'OurClass'), $unserialized => true }
-
-{ "foo": "yes", "__pclass": { "$type" : "44", "$binary" : "YourClass") }
- -> stdClass { $foo => 'yes', $__pclass => Binary(0x44, 'YourClass') }
-]]>
-
-
-
-
-
- "MissingClass" ] */
-{ "foo": "yes" }
- -> MongoDB\Driver\Exception\InvalidArgumentException("MissingClass does not exist")
-
-/* typemap: [ "root" => "MyClass" ] */
-{ "foo": "yes", "__pclass" : { "$type": "80", "$binary": "MyClass" } }
- -> MongoDB\Driver\Exception\InvalidArgumentException("MyClass does not implement Unserializable interface")
-
-/* typemap: [ "root" => "MongoDB\BSON\Unserializable" ] */
-{ "foo": "yes" }
- -> MongoDB\Driver\Exception\InvalidArgumentException("Unserializable is not a concrete class")
-
-/* typemap: [ "root" => "YourClass" ] */
-{ "foo": "yes", "__pclass" : { "$type": "80", "$binary": "MongoDB\BSON\Unserializable" } }
- -> YourClass { $foo => "yes", $__pclass => Binary(0x80, "MongoDB\BSON\Unserializable"), $unserialized => true }
-
-/* typemap: [ "root" => "YourClass" ] */
-{ "foo": "yes", "__pclass" : { "$type": "80", "$binary": "MyClass" } }
- -> YourClass { $foo => "yes", $__pclass => Binary(0x80, "MyClass"), $unserialized => true }
-
-/* typemap: [ "root" => "YourClass" ] */
-{ "foo": "yes", "__pclass" : { "$type": "80", "$binary": "OurClass" } }
- -> OurClass { $foo => "yes", $__pclass => Binary(0x80, "OurClass"), $unserialized => true }
-
-/* typemap: [ "root" => "YourClass" ] */
-{ "foo": "yes", "__pclass" : { "$type": "80", "$binary": "TheirClass" } }
- -> TheirClass { $foo => "yes", $__pclass => Binary(0x80, "TheirClass"), $unserialized => true }
-
-/* typemap: [ "root" => "OurClass" ] */
-{ foo: "yes", "__pclass" : { "$type": "80", "$binary": "TheirClass" } }
- -> TheirClass { $foo => "yes", $__pclass => Binary(0x80, "TheirClass"), $unserialized => true }
-]]>
-
-
-
-
-
- 'YourClass' ] */
-{ foo: "yes", "__pclass" : { "$type": "80", "$binary": "YourClass" } }
- -> YourClass { $foo => 'yes', $__pclass => Binary(0x80, 'YourClass'), $unserialized => true }
-]]>
-
-
-
-
-
- 'array', 'document' => 'array' ] */
-{ "foo": "yes", "bar" : false }
- -> [ "foo" => "yes", "bar" => false ]
-
-{ "foo": "no", "array" : [ 5, 6 ] }
- -> [ "foo" => "no", "array" => [ 5, 6 ] ]
-
-{ "foo": "no", "obj" : { "embedded" : 3.14 } }
- -> [ "foo" => "no", "obj" => [ "embedded => 3.14 ] ]
-
-{ "foo": "yes", "__pclass": "MyClass" }
- -> [ "foo" => "yes", "__pclass" => "MyClass" ]
-
-{ "foo": "yes", "__pclass" : { "$type": "80", "$binary": "MyClass" } }
- -> [ "foo" => "yes", "__pclass" => Binary(0x80, "MyClass") ]
-
-{ "foo": "yes", "__pclass" : { "$type": "80", "$binary": "OurClass" } }
- -> [ "foo" => "yes", "__pclass" => Binary(0x80, "OurClass") ]
-]]>
-
-
-
-
-
- 'object', 'document' => 'object' ] */
-{ "foo": "yes", "__pclass": { "$type": "80", "$binary": "MyClass" } }
- -> stdClass { $foo => "yes", "__pclass" => Binary(0x80, "MyClass") }
-]]>
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ Architecture et fonctionnalités spéciales
+ Explications de l'architecture du pilote et des fonctionnalités spéciales
+
+
+ Architecture
+ Aperçu de l'architecture
+
+
+ Cet article explique comment tous les différents composants du pilote PHP
+ s'emboîtent, des bibliothèques système de base, à l'extension, et aux
+ bibliothèques PHP en haut.
+
+
+
+
+
+ Le diagramme d'architecture du pilote MongoDB PHP. Le niveau le plus bas
+ du pilote est nos bibliothèques système : libmongoc, libbson, et
+ libmongocrypt. Le niveau intermédiaire est l'extension PHP MongoDB. Le
+ niveau supérieur est le code utilisateur PHP et inclut la bibliothèque
+ MongoDB PHP et des packages de plus haut niveau tels que les intégrations
+ de frameworks et les applications.
+
+
+
+
+
+
+
+
+ En haut de cette pile se trouve une
+ bibliothèque PHP,
+ qui distribue un
+ package Composer.
+ Cette bibliothèque fournit une API cohérente avec d'autres
+ drivers
+ MongoDB et implémente diverses
+ specifications
+ croisées. Bien que l'extension puisse être utilisée directement, la bibliothèque
+ a un surcoût minimal et devrait être une dépendance commune pour la plupart
+ des applications construites avec MongoDB.
+
+
+
+ En dessous de cette bibliothèque se trouve une extension PHP, qui est
+ distribuée via
+ PECL.
+ L'extension forme la colle entre PHP et nos bibliothèques système
+ (libmongoc,
+ libbson, et
+ libmongocrypt).
+ Son API publique fournit uniquement les fonctionnalités les plus essentielles :
+
+ Gestion de connexions
+ Encodage et décoage BSON
+ Sérialisation et désérialisation de documents (support des bibliothèques ODM)
+ Exécution de commandes, requêtes, et opérations d'écriture
+ Gestion des curseurs pour les résultats de commandes et de requêtes
+
+
+
+
+
+
+
+
+
+ Connections
+ Gestion de la connection et de la persistence
+
+ &mongodb.note.forking;
+
+
+ Connexions et topologie persistante (version PHP depuis 1.2.0)
+
+
+ Toutes les versions de l'extension depuis 1.2.0 conservent l'objet client
+ libmongoc dans le processus
+ PHP, ce qui lui permet de réutiliser les connexions de base de données, les
+ états d'authentification, et les informations de
+ topologie à travers plusieurs requêtes.
+
+
+
+ Lorsque MongoDB\Driver\Manager::__construct est
+ invoqué, un hachage est créé à partir de ses arguments (c'est-à-dire la
+ chaîne URI et le tableau d'options). L'extension tentera de trouver un objet
+ client libmongoc persisté
+ précédemment pour ce hachage. Si un client existant ne peut pas être trouvé
+ pour le hachage, un nouveau client sera créé et persisté pour une utilisation
+ future. Ce comportement peut être désactivé via l'option du pilote
+ "disableClientPersistence".
+
+
+
+ Chaque client contient ses propres connexions de base de données et une vue
+ de la topologie du serveur (par exemple, autonome, ensemble de réplicas,
+ grappe de fragments). En persistant le client entre les requêtes PHP,
+ l'extension est capable de réutiliser les connexions de base de données
+ établies et d'éliminer le besoin de
+ découvrir la topologie du serveur
+ à chaque requête.
+
+
+
+ Considérez l'exemple suivant :
+
+
+
+ 'myReplicaSet']),
+];
+
+foreach ($managers as $manager) {
+ $manager->executeCommand('test', new MongoDB\Driver\Command(['ping' => 1]));
+}
+
+?>
+]]>
+
+
+
+ Les deux premiers objets Manager partageront le même
+ client libmongoc car leurs
+ arguments de constructeur sont identiques. Les troisième et quatrième objets
+ utiliseront chacun leur propre client. Au total, trois clients seront créés
+ et le processus PHP exécutant ce script ouvrira deux connexions à
+ 127.0.0.1 et une connexion à chacun de
+ rs1.example.com et rs2.example.com.
+ Si l'extension découvre des membres supplémentaires de l'ensemble de réplicas
+ après avoir émis des commandes hello, elle ouvrira des
+ connexions supplémentaires à ces serveurs également.
+
+
+
+ Si les mêmes connexions sont réutilisées par le même processus PHP, les trois
+ clients seront réutilisés et aucune nouvelle connexion ne sera établie. En
+ fonction de la durée écoulée depuis la dernière requête servie, l'extension
+ peut avoir besoin d'émettre des commandes hello supplémentaires
+ pour mettre à jour sa vue des topologies.
+
+
+
+
+ Persistance des sockets (versions PHP avant 1.2.0)
+
+
+ Les versions de l'extension avant 1.2.0 utilisent l'API des flux PHP pour
+ les connexions de base de données, utilisant une API dans
+ libmongoc pour désigner des
+ gestionnaires personnalisés pour la communication par socket ; cependant, un
+ nouveau client libmongoc est créé pour chaque
+ MongoDB\Driver\Manager. En conséquence, l'extension
+ persiste les connexions de base de données individuelles mais pas l'état
+ d'authentification ou les informations de topologie. Cela signifie que
+ l'extension doit émettre des commandes au début de chaque requête pour
+ s'authentifier et
+ découvrir la topologie du serveur.
+
+
+
+ Les connexions de base de données sont persistées par un hachage dérivé de
+ l'hôte du serveur, du port et de la chaîne URI utilisée pour construire le
+ MongoDB\Driver\Manager. Les options du tableau du
+ constructeur ne sont pas incluses dans ce hachage.
+
+
+
+
+ Les version de l'extension >= 1.1.8 et < 1.2.0 ne persistent pas les
+ sockets pour les connexions SSL. Voir
+ PHPC-720 pour plus
+ d'informations.
+
+
+
+
+ Malgré ses lacunes avec les connexions SSL persistantes et les informations
+ de topologie, cette version de l'extension supporte toutes les
+ options de contexte SSL puisqu'elle
+ utilise l'API des flux PHP.
+
+
+
+
+
+ Persister des données
+ Sérialisation and déserialisation des variables PHP dans MongoDB
+
+
+ Ce document explique comment les structures composées (c'est-à-dire les
+ documents, les tableaux et les objets) sont converties entre les valeurs BSON et PHP.
+
+
+
+ Sérialisation en BSON
+
+
+ Tableaux
+
+
+ Si un tableau est un tableau compact — c'est-à-dire un
+ tableau vide ou les clés commencent à 0 et sont séquentielles sans trous :
+ tableau BSON.
+
+
+
+ Si le tableau n'est pas compact — c'est-à-dire qu'il a des clés
+ associatives (chaînes), que les clés ne commencent pas à 0, ou qu'il y a
+ des trous : objet BSON.
+
+
+
+ Un document de niveau supérieur (racine), toujours
+ sérialisé en tant que document BSON.
+
+
+
+ Exemples
+
+
+ Ces exemples sérialisent en tant que tableau BSON :
+
+
+
+ [ 8, 5, 2, 3 ]
+[ 0 => 4, 1 => 9 ] => [ 4, 9 ]
+]]>
+
+
+
+ Ces exemples sérialisent en tant qu'objet BSON :
+
+
+
+ 1, 2 => 8, 3 => 12 ] => { "0" : 1, "2" : 8, "3" : 12 }
+[ "foo" => 42 ] => { "foo" : 42 }
+[ 1 => 9, 0 => 10 ] => { "1" : 9, "0" : 10 }
+]]>
+
+
+
+ Il est à noter que les cinq exemples sont des extraits
+ d'un document complet, et ne représentent qu'une valeur
+ à l'intérieur d'un document.
+
+
+
+
+
+
+ Objets
+
+
+ Si un objet est de la classe stdClass, sérialiser
+ en tant que document BSON.
+
+
+
+ Si un objet est une classe supportée qui implémente
+ MongoDB\BSON\Type, alors utiliser la logique
+ de sérialisation BSON pour ce type spécifique.
+ Les instances de MongoDB\BSON\Type (à
+ l'exclusion de MongoDB\BSON\Serializable)
+ ne peuvent être sérialisées que comme valeur de champ de document. Tenter
+ de sérialiser un tel objet en tant que document racine lèvera une
+ MongoDB\Driver\Exception\UnexpectedValueException.
+
+
+
+ Si un objet est d'une classe inconnue implémentant l'interface
+ MongoDB\BSON\Type, alors une
+ MongoDB\Driver\Exception\UnexpectedValueException est lancée.
+
+
+
+ Si un objet est d'une classe autre, sans implémenter une interface spéciale,
+ sérialiser en tant que document BSON. Garder seulement
+ les propriétés public, et ignorer les propriétés
+ protected et private.
+
+
+
+ Si un objet est d'une classe qui implémente
+ MongoDB\BSON\Serializable, appeler
+ MongoDB\BSON\Serializable::bsonSerialize et
+ utiliser le tableau ou stdClass retourné pour
+ sérialiser en tant que document BSON ou tableau. Le type BSON sera
+ déterminé par les règles suivantes :
+
+
+
+
+
+ Les documents racines doivent être sérialisés en tant que
+ document BSON.
+
+
+
+
+ Les objets MongoDB\BSON\Persistable doivent
+ être sérialisés en tant que document BSON.
+
+
+
+
+ Si MongoDB\BSON\Serializable::bsonSerialize
+ retourne un tableau compact, sérialiser en tant que tableau BSON.
+
+
+
+
+ Si MongoDB\BSON\Serializable::bsonSerialize
+ retourne un tableau non-compact ou stdClass,
+ sérialiser en tant qu'objet BSON.
+
+
+
+
+ Si MongoDB\BSON\Serializable::bsonSerialize
+ ne retourne pas un tableau ou stdClass, lance
+ une exception
+ MongoDB\Driver\Exception\UnexpectedValueException.
+
+
+
+
+
+
+ Si un objet est d'une classe qui implémente l'interface
+ MongoDB\BSON\Persistable (qui implique
+ MongoDB\BSON\Serializable), obtenir les
+ propriétés de manière similaire aux paragraphes précédents, mais
+ aussi ajouter une propriété
+ __pclass en tant que valeur binaire, avec un sous-type
+ 0x80 et des données portant le nom de la classe
+ entièrement qualifié de l'objet qui est sérialisé.
+
+
+
+ La propriété __pclass est ajoutée au tableau ou à
+ l'objet retourné par
+ MongoDB\BSON\Serializable::bsonSerialize, ce qui
+ signifie qu'elle écrasera toute clé/propriété __pclass
+ dans la valeur de retour de
+ MongoDB\BSON\Serializable::bsonSerialize. Si vous
+ voulez éviter ce comportement et définir votre propre valeur
+ __pclass,
+ vous ne devez pas implémenter
+ MongoDB\BSON\Persistable et devriez plutôt
+ implémenter
+ MongoDB\BSON\Serializable directement.
+
+
+
+ Exemples
+
+
+ {"foo": 42}
+
+class MyClass
+{
+ public $foo = 42;
+ protected $prot = 'wine';
+ private $fpr = 'cheese';
+} // => {"foo": 42}
+
+class AnotherClass1 implements MongoDB\BSON\Serializable
+{
+ public $foo = 42;
+ protected $prot = 'wine';
+ private $fpr = 'cheese';
+
+ public function bsonSerialize(): array
+ {
+ return ['foo' => $this->foo, 'prot' => $this->prot];
+ }
+} // => {"foo": 42, "prot": "wine"}
+
+class AnotherClass2 implements MongoDB\BSON\Serializable
+{
+ public $foo = 42;
+
+ public function bsonSerialize(): self
+ {
+ return $this;
+ }
+} // => MongoDB\Driver\Exception\UnexpectedValueException("bsonSerialize() did not return an array or stdClass")
+
+class AnotherClass3 implements MongoDB\BSON\Serializable
+{
+ private $elements = ['foo', 'bar'];
+
+ public function bsonSerialize(): array
+ {
+ return $this->elements;
+ }
+} // => {"0": "foo", "1": "bar"}
+
+/**
+ * Nesting Serializable classes
+ */
+
+class AnotherClass4 implements MongoDB\BSON\Serializable
+{
+ private $elements = [0 => 'foo', 2 => 'bar'];
+
+ public function bsonSerialize(): array
+ {
+ return $this->elements;
+ }
+} // => {"0": "foo", "2": "bar"}
+
+class ContainerClass1 implements MongoDB\BSON\Serializable
+{
+ public $things;
+
+ public function __construct()
+ {
+ $this->things = new AnotherClass4();
+ }
+
+ function bsonSerialize(): array
+ {
+ return ['things' => $this->things];
+ }
+} // => {"things": {"0": "foo", "2": "bar"}}
+
+
+class AnotherClass5 implements MongoDB\BSON\Serializable
+{
+ private $elements = [0 => 'foo', 2 => 'bar'];
+
+ public function bsonSerialize(): array
+ {
+ return array_values($this->elements);
+ }
+} // => {"0": "foo", "1": "bar"} en tant que classe racine
+ // ["foo", "bar"] en tant que valeur imbriquée
+
+class ContainerClass2 implements MongoDB\BSON\Serializable
+{
+ public $things;
+
+ public function __construct()
+ {
+ $this->things = new AnotherClass5();
+ }
+
+ public function bsonSerialize(): array
+ {
+ return ['things' => $this->things];
+ }
+} // => {"things": ["foo", "bar"]}
+
+
+class AnotherClass6 implements MongoDB\BSON\Serializable
+{
+ private $elements = ['foo', 'bar'];
+
+ function bsonSerialize(): object
+ {
+ return (object) $this->elements;
+ }
+} // => {"0": "foo", "1": "bar"}
+
+class ContainerClass3 implements MongoDB\BSON\Serializable
+{
+ public $things;
+
+ public function __construct()
+ {
+ $this->things = new AnotherClass6();
+ }
+
+ public function bsonSerialize(): array
+ {
+ return ['things' => $this->things];
+ }
+} // => {"things": {"0": "foo", "1": "bar"}}
+
+class UpperClass implements MongoDB\BSON\Persistable
+{
+ public $foo = 42;
+ protected $prot = 'wine';
+ private $fpr = 'cheese';
+
+ private $data;
+
+ public function bsonUnserialize(array $data): void
+ {
+ $this->data = $data;
+ }
+
+ public function bsonSerialize(): array
+ {
+ return ['foo' => $this->foo, 'prot' => $this->prot];
+ }
+} // => {"foo": 42, "prot": "wine", "__pclass": {"$type": "80", "$binary": "VXBwZXJDbGFzcw=="}}
+
+?>
+]]>
+
+
+
+
+
+
+ Deserialization from BSON
+
+ &mongodb.warning.duplicate-keys;
+
+
+ L'extension mongodb désérialise les documents BSON
+ et les tableaux BSON en tant que tableaux PHP. Tant que les tableaux PHP sont
+ pratiques à utiliser, ce comportement était problématique car différents
+ types BSON pouvaient être désérialisés en la même valeur PHP (par exemple
+ {"0": "foo"} et ["foo"]) et rendait
+ impossible d'inférer le type BSON original. Par défaut, l'extension
+ mongodb adresse cette préoccupation en s'assurant que les
+ tableaux BSON et les documents BSON sont convertis en tableaux et objets PHP,
+ respectivement.
+
+
+ Pour les types composés, il existe trois types de données :
+
+
+
+
+
+ root
+
+
+ réfère à un document BSON de niveau supérieur seulement
+
+
+
+
+ document
+
+
+ réfère à des documents BSON imbriqués seulement
+
+
+
+
+ array
+
+
+ réfère à un tableau BSON
+
+
+
+
+
+
+
+ A part les trois types collectifs, il est aussi possible de configurer des
+ champs spécifiques dans votre document pour mapper les types de données
+ mentionnés ci-dessous. Par exemple, le type de carte suivant vous permet de
+ mapper chaque document intégré dans un tableau "addresses"
+ à une classe Addresset chaque
+ champ "city" dans ces documents d'adresse intégrés à une
+ classe City:
+
+
+ [
+ 'addresses.$' => 'MyProject\Address',
+ 'addresses.$.city' => 'MyProject\City',
+ ],
+]
+]]>
+
+
+
+
+ Chacun de ces trois types de données, ainsi que les mappages spécifiques
+ aux champs, peuvent être mappés contre différents types PHP. Les valeurs de
+ mappage possibles sont:
+
+
+
+
+
+ non défini ou NULL (par défaut)
+
+
+
+
+
+ Un tableau BSON sera désérialisé en un array PHP.
+
+
+
+
+ Un document BSON (racine ou imbriqué) sans propriété
+ __pclass
+
+
+ Une propriété __pclass n'est considérée comme existante que si
+ une propriété portant ce nom existe, et qu'elle est une valeur
+ binaire, et que le sous-type de la valeur binaire est 0x80. Si
+ une de ces trois conditions n'est pas remplie, la propriété
+ __pclass n'existe pas et doit être traitée comme toute autre
+ propriété normale.
+
+
+ devient un objet stdClass, avec chaque clé de document
+ BSON définie comme une propriété de stdClass
+ publique.
+
+
+
+
+ Un document BSON (racine ou imbriqué) avec une propriété
+ __pclass devient un objet PHP de la classe
+ nommée par la propriété __pclass.
+
+
+ Si la classe nommée implémente l'interface
+ MongoDB\BSON\Persistable, alors les
+ propriétés du document BSON, y compris la propriété
+ __pclass, sont envoyées sous forme de tableau
+ associatif à la fonction
+ MongoDB\BSON\Unserializable::bsonUnserialize
+ pour initialiser les propriétés de l'objet.
+
+
+ Si la classe nommée n'existe pas ou n'implémente pas
+ l'interface MongoDB\BSON\Persistable,
+ stdClass sera
+ utilisé et chaque clé de document BSON (y compris __pclass)
+ sera définie comme une propriété publique de stdClass.
+
+
+ La fonctionnalité __pclass repose sur le fait
+ que la propriété soit partie d'un document MongoDB récupéré. Si vous
+ utilisez une
+ projection
+ lors de la recherche de documents, vous devez inclure le champ
+ __pclass dans la projection pour que cette
+ fonctionnalité fonctionne.
+
+
+
+
+
+
+
+
+ "array"
+
+
+ Transforme un tableau BSON en un array PHP. Il n'y aura
+ pas de traitement spécial d'une propriété __pclass
+ mais elle peut être définie comme un élément dans le tableau retourné
+ si elle était présente dans le document BSON.
+
+
+
+
+
+ "object" ou "stdClass"
+
+
+ Transforme un tableau BSON ou un document BSON en un objet
+ stdClass. Il n'y aura pas de traitement spécial d'une
+ propriété __pclass
+ mais elle peut être définie comme une propriété publique dans l'objet
+ retourné si elle était présente dans le document BSON.
+
+
+
+
+
+ "bson"
+
+
+ Transforme un tableau BSON en un MongoDB\BSON\PackedArray
+ et un document BSON en un MongoDB\BSON\Document,
+ indépendamment du fait que le document BSON ait une propriété
+ __pclass.
+
+
+
+ La valeur bson n'est disponible que pour les trois
+ types racines, et non dans les mappages spécifiques aux champs.
+
+
+
+
+
+
+ toues les autres chaînes de caractères
+
+
+ Définit le nom de la classe à laquelle le document BSON doit être
+ désérialisé. Pour les documents BSON qui incluent des propriétés
+ __pclass,
+ cette classe prendra la priorité.
+
+
+
+ Si la classe nommée n'existe pas ou n'implémente pas
+ l'interface MongoDB\BSON\Unserializable,
+ une exception
+ MongoDB\Driver\Exception\InvalidArgumentException
+ est lancée.
+
+
+
+ Si l'objet BSON a une propriété __pclass et que
+ cette classe existe et implémente
+ MongoDB\BSON\Persistable, elle prendra
+ le pas sur la classe fournie dans la carte de type.
+
+
+
+ Les propriétés du document BSON, y compris la propriété
+ __pclass,
+ seront envoyées sous forme de tableau associatif à la fonction
+ MongoDB\BSON\Unserializable::bsonUnserialize
+ pour initialiser les propriétés de l'objet.
+
+
+
+
+
+
+
+ TypeMaps
+
+
+ Les TypeMaps peuvent être définis via la méthode
+ MongoDB\Driver\Cursor::setTypeMap sur un objet
+ MongoDB\Driver\Cursor, ou l'argument
+ $typeMap de
+ MongoDB\BSON\toPHP,
+ MongoDB\BSON\Document::toPHP, et
+ MongoDB\BSON\PackedArray::toPHP. Chacune des trois
+ classes (racine, document, et
+ array) peut être définie individuellement, en plus des
+ types spécifiques aux champs.
+
+
+
+ Si la valeur dans le TypeMap est NULL, cela signifie la même
+ chose que la valeur par défaut pour cet élément.
+
+
+
+
+ Exemples
+
+
+ Ces exemples utilisent les classes suivantes:
+
+
+
+
+
+ MyClass
+
+
+ qui n'implémente aucune interface
+
+
+
+
+ YourClass
+
+
+ qui implémente
+ MongoDB\BSON\Unserializable
+
+
+
+
+ OurClass
+
+
+ qui implémente
+ MongoDB\BSON\Persistable
+
+
+
+
+ TheirClass
+
+
+ qui étends OurClass
+
+
+
+
+
+
+
+ La méthode MongoDB\BSON\Unserializable::bsonUnserialize
+ de YourClass, OurClass, TheirClass itère sur le tableau et définit les
+ propriétés sans modifications. Elle ajoute aussi la
+ propriété $unserialized à &true;:
+
+
+ $value )
+ {
+ $this->$k = $value;
+ }
+ $this->unserialized = true;
+}
+]]>
+
+
+
+
+
+ stdClass { $foo => 'yes', $bar => false }
+
+{ "foo": "no", "array" : [ 5, 6 ] }
+ -> stdClass { $foo => 'no', $array => [ 5, 6 ] }
+
+{ "foo": "no", "obj" : { "embedded" : 3.14 } }
+ -> stdClass { $foo => 'no', $obj => stdClass { $embedded => 3.14 } }
+
+{ "foo": "yes", "__pclass": "MyClass" }
+ -> stdClass { $foo => 'yes', $__pclass => 'MyClass' }
+
+{ "foo": "yes", "__pclass": { "$type" : "80", "$binary" : "MyClass" } }
+ -> stdClass { $foo => 'yes', $__pclass => Binary(0x80, 'MyClass') }
+
+{ "foo": "yes", "__pclass": { "$type" : "80", "$binary" : "YourClass") }
+ -> stdClass { $foo => 'yes', $__pclass => Binary(0x80, 'YourClass') }
+
+{ "foo": "yes", "__pclass": { "$type" : "80", "$binary" : "OurClass") }
+ -> OurClass { $foo => 'yes', $__pclass => Binary(0x80, 'OurClass'), $unserialized => true }
+
+{ "foo": "yes", "__pclass": { "$type" : "44", "$binary" : "YourClass") }
+ -> stdClass { $foo => 'yes', $__pclass => Binary(0x44, 'YourClass') }
+]]>
+
+
+
+
+
+ "MissingClass" ] */
+{ "foo": "yes" }
+ -> MongoDB\Driver\Exception\InvalidArgumentException("MissingClass does not exist")
+
+/* typemap: [ "root" => "MyClass" ] */
+{ "foo": "yes", "__pclass" : { "$type": "80", "$binary": "MyClass" } }
+ -> MongoDB\Driver\Exception\InvalidArgumentException("MyClass does not implement Unserializable interface")
+
+/* typemap: [ "root" => "MongoDB\BSON\Unserializable" ] */
+{ "foo": "yes" }
+ -> MongoDB\Driver\Exception\InvalidArgumentException("Unserializable is not a concrete class")
+
+/* typemap: [ "root" => "YourClass" ] */
+{ "foo": "yes", "__pclass" : { "$type": "80", "$binary": "MongoDB\BSON\Unserializable" } }
+ -> YourClass { $foo => "yes", $__pclass => Binary(0x80, "MongoDB\BSON\Unserializable"), $unserialized => true }
+
+/* typemap: [ "root" => "YourClass" ] */
+{ "foo": "yes", "__pclass" : { "$type": "80", "$binary": "MyClass" } }
+ -> YourClass { $foo => "yes", $__pclass => Binary(0x80, "MyClass"), $unserialized => true }
+
+/* typemap: [ "root" => "YourClass" ] */
+{ "foo": "yes", "__pclass" : { "$type": "80", "$binary": "OurClass" } }
+ -> OurClass { $foo => "yes", $__pclass => Binary(0x80, "OurClass"), $unserialized => true }
+
+/* typemap: [ "root" => "YourClass" ] */
+{ "foo": "yes", "__pclass" : { "$type": "80", "$binary": "TheirClass" } }
+ -> TheirClass { $foo => "yes", $__pclass => Binary(0x80, "TheirClass"), $unserialized => true }
+
+/* typemap: [ "root" => "OurClass" ] */
+{ foo: "yes", "__pclass" : { "$type": "80", "$binary": "TheirClass" } }
+ -> TheirClass { $foo => "yes", $__pclass => Binary(0x80, "TheirClass"), $unserialized => true }
+]]>
+
+
+
+
+
+ 'YourClass' ] */
+{ foo: "yes", "__pclass" : { "$type": "80", "$binary": "YourClass" } }
+ -> YourClass { $foo => 'yes', $__pclass => Binary(0x80, 'YourClass'), $unserialized => true }
+]]>
+
+
+
+
+
+ 'array', 'document' => 'array' ] */
+{ "foo": "yes", "bar" : false }
+ -> [ "foo" => "yes", "bar" => false ]
+
+{ "foo": "no", "array" : [ 5, 6 ] }
+ -> [ "foo" => "no", "array" => [ 5, 6 ] ]
+
+{ "foo": "no", "obj" : { "embedded" : 3.14 } }
+ -> [ "foo" => "no", "obj" => [ "embedded => 3.14 ] ]
+
+{ "foo": "yes", "__pclass": "MyClass" }
+ -> [ "foo" => "yes", "__pclass" => "MyClass" ]
+
+{ "foo": "yes", "__pclass" : { "$type": "80", "$binary": "MyClass" } }
+ -> [ "foo" => "yes", "__pclass" => Binary(0x80, "MyClass") ]
+
+{ "foo": "yes", "__pclass" : { "$type": "80", "$binary": "OurClass" } }
+ -> [ "foo" => "yes", "__pclass" => Binary(0x80, "OurClass") ]
+]]>
+
+
+
+
+
+ 'object', 'document' => 'object' ] */
+{ "foo": "yes", "__pclass": { "$type": "80", "$binary": "MyClass" } }
+ -> stdClass { $foo => "yes", "__pclass" => Binary(0x80, "MyClass") }
+]]>
+
+
+
+
+
+
+
+
+
+
diff --git a/reference/mongodb/book.xml b/reference/mongodb/book.xml
index 1fdd538fb2..234f438733 100644
--- a/reference/mongodb/book.xml
+++ b/reference/mongodb/book.xml
@@ -1,69 +1,69 @@
-
-
-
-
-
- L'extension MongoDB
- MongoDB
-
-
-
-
- Cette extension est développée au-dessus des bibliothèques
- libmongoc et
- libbson.
- Elle fournit une API minimale pour les fonctionnalités de base du pilote :
- commandes,
- requêtes,
- écritures,
- gestion de connection,
- et serialization BSON.
-
-
- Les bibliothèques PHP côté utilisateur qui dépendent de cette extension
- peuvent fournir des API de plus haut niveau, telles que des constructeurs
- de requêtes, des méthodes d'aide pour les commandes individuelles, et
- GridFS. Les développeurs d'applications devraient envisager d'utiliser
- cette extension en conjonction avec la
- bibliothèque MongoDB PHP,
- qui implémente les mêmes API de plus haut niveau que l'on trouve dans les
- pilotes MongoDB pour d'autres langages. Cette séparation des préoccupations
- permet à l'extension de se concentrer sur les fonctionnalités essentielles
- pour lesquelles une implémentation d'extension est primordiale pour les
- performances.
-
-
-
-
- &reference.mongodb.setup;
- &reference.mongodb.constants;
- &reference.mongodb.tutorial;
- &reference.mongodb.architecture;
- &reference.mongodb.security;
-
- &reference.mongodb.mongodb;
- &reference.mongodb.bson;
- &reference.mongodb.monitoring;
- &reference.mongodb.exceptions;
-
-
-
+
+
+
+
+
+ L'extension MongoDB
+ MongoDB
+
+
+
+
+ Cette extension est développée au-dessus des bibliothèques
+ libmongoc et
+ libbson.
+ Elle fournit une API minimale pour les fonctionnalités de base du pilote :
+ commandes,
+ requêtes,
+ écritures,
+ gestion de connexion,
+ et serialization BSON.
+
+
+ Les bibliothèques PHP côté utilisateur qui dépendent de cette extension
+ peuvent fournir des API de plus haut niveau, telles que des constructeurs
+ de requêtes, des méthodes d'aide pour les commandes individuelles, et
+ GridFS. Les développeurs d'applications devraient envisager d'utiliser
+ cette extension en conjonction avec la
+ bibliothèque MongoDB PHP,
+ qui implémente les mêmes API de plus haut niveau que l'on trouve dans les
+ pilotes MongoDB pour d'autres langages. Cette séparation des préoccupations
+ permet à l'extension de se concentrer sur les fonctionnalités essentielles
+ pour lesquelles une implémentation d'extension est primordiale pour les
+ performances.
+
+
+
+
+ &reference.mongodb.setup;
+ &reference.mongodb.constants;
+ &reference.mongodb.tutorial;
+ &reference.mongodb.architecture;
+ &reference.mongodb.security;
+
+ &reference.mongodb.mongodb;
+ &reference.mongodb.bson;
+ &reference.mongodb.monitoring;
+ &reference.mongodb.exceptions;
+
+
+
diff --git a/reference/mongodb/configure.xml b/reference/mongodb/configure.xml
index 4cfffd3ef6..2a3fd7a4b7 100644
--- a/reference/mongodb/configure.xml
+++ b/reference/mongodb/configure.xml
@@ -1,332 +1,332 @@
-
-
-
-
- &reftitle.install;
-
-
- Installer l'extension de MongoDB PHP avec PIE
-
- &pecl.moving.to.pie;
-
-
- Pour installer l'extension MongoDB avec PIE, exécutez la commande suivante :
-
-
-
-
-
-
-
-
-
- Installe l'extension de MongoDB PHP avec PECL
-
-
- &pecl.info;
- &url.pecl.package;mongodb
-
-
-
- Linux, Unix et les utilisateurs de macOS peuvent exécuter la commande suivante pour
- installer l'extension :
-
-
-
-
-
-
- Sur les systèmes avec plusieurs versions de PHP installées (par exemple, macOS par défaut,
- Homebrew, XAMPP), chaque version de PHP
- aura sa propre commande pecl
- et fichier &php.ini;. De plus, chaque environnement PHP (par exemple
- CLI, web) peut utiliser des fichiers &php.ini; séparés.
-
-
-
- Depuis la version 1.17.0 de l'extension, PECL demandera diverses options de
- configurations. Pour installer l'extension avec les options par défaut
- dans un script non interactif, une entrée vide peut être envoyée à
- pecl install en utilisant la commande yes :
-
-
-
-
-
-
- Une liste complète des options configure supportées peut être
- trouvée dans le fichier package.xml inclus dans le paquet PECL.
- Pour installer l'extension avec des options de configurations spécifiques
- dans un script non interactif, l'option
- --configureoptions pour
- pecl install peut être utilisée :
-
-
-
-
-
-
- Par défaut l'installation de l'extension via PECL utilisera les versions incluses de
- libbson,
- libmongoc, et
- libmongocrypt et essayera automatiquement
- de les configurer.
-
-
-
-
- Si le processus de construction échoue à trouver une bibliothèque SSL, vérifiez que les
- paquets de développement (par exemple libssl-dev) et
- pkg-config sont tous deux
- installés. Si cela ne résout pas le problème, envisagez d'utiliser le
- processus
- d'installation manuel.
-
-
-
-
- Pour finir, ajoutez la ligne suivante au fichier &php.ini; pour chaque environnement
- qui aura besoin d'utiliser l'extension :
-
-
-
-
-
-
-
- Installer l'extension de MongoDB PHP sur macOS avec Homebrew
-
-
- Homebrew 1.5.0
- a déprécié le tap Homebrew/php
- et a supprimé les formules pour les extensions PHP individuelles. À l'avenir, les utilisateurs
- de macOS sont invités à installer la formule
- php et à suivre les instructions
- d'installation standard de PECL
- en utilisant la commande pecl
- fournie par l'installation PHP Homebrew.
-
-
- Sinon, le
- tap shivammathur/extensions
- fourni des formules pour les extensions PHP individuelles. Par exemple, pour installer
- l'extension pour PHP 8.4, exécutez :
-
-
-
- Il est a noter que seule la dernière version de l'extension est disponible dans brew.
-
-
- Installer les dépendances requises
-
- Pour garantir que le support SSL peut être configuré correctement, assurez-vous que les
- formules openssl et pkgconf sont
- installées. Si l'un de ces paquets est manquant, l'extension sera compilée
- avec Secure Transport, ce qui peut entraîner des problèmes de compatibilité.
-
-
-
-
-
- Installer l'extension de MongoDB PHP sur Windows
-
-
- Les binaires précompilés sont attachés aux
- versions Github
- du projet. Les archives sont publiées pour diverses combinaisons de version PHP,
- de sécurité des threads (TS ou NTS) et d'architecture (x86 ou x64). Déterminez
- l'archive correcte pour l'environnement PHP et extrayez le fichier
- php_mongodb.dll dans le répertoire d'extension ("ext" par défaut).
-
-
-
- Ajouter la ligne suivante au fichier &php.ini; pour chaque environnement qui aura
- besoin d'utiliser l'extension :
-
-
-
-
-
-
- L'échec de sélection du binaire correct entraînera une erreur lors de la tentative
- de chargement de l'extension DLL à l'exécution :
-
-
-
-
-
-
- Assurez-vous que la DLL téléchargée correspond aux propriétés d'exécution PHP
- suivantes :
-
- Version de PHP(PHP_VERSION)
- Sécurité des threads (PHP_ZTS)
- Architecture (PHP_INT_SIZE)
-
-
-
-
- En plus des constantes mentionnées ci-dessus, ces propriétés peuvent également être
- déduites de phpinfo. Si un système a plusieurs exécutions PHP
- installées, vérifiez que la sortie de phpinfo est pour
- l'environnement correct.
-
-
-
- Dépendences additionnelles DLL pour les utilisateurs Windows
-
- &ext.windows.path.dll;
- libsasl.dll
-
-
-
-
-
- Installation manuelle de l'extension de MongoDB PHP
-
-
- Pour les développeurs et les utilisateurs intéressés par les dernières corrections de bogues,
- l'extension peut être compilée à partir du dernier code source sur
- Github. Exécutez les commandes suivantes
- pour cloner et construire le projet :
-
-
-
-
-
-
- Sur les systèmes avec plusieurs versions de PHP installées (par exemple, macOS par défaut,
- Homebrew, XAMPP), chaque version de PHP
- aura sa propre commande phpize
- et fichier &php.ini;. De plus, chaque environnement PHP (par exemple
- CLI, web) peut utiliser des fichiers &php.ini; séparés.
-
-
-
- Par défaut, l'extension utilisera les versions incluses de
- libbson,
- libmongoc, et
- libmongocrypt et
- essayera de les configurer automatiquement. Si ces bibliothèques sont déjà
- installées en tant que bibliothèques système, l'extension peut les utiliser en
- spécifiant --with-mongodb-system-libs=yes comme option à
- configure.
-
-
-
- Pour une liste complète des options configure, exécutez
- configure --help.
-
-
-
- Lorsque vous utilisez les versions groupées de libmongoc et libmongocrypt,
- l'extension tentera également de sélectionner une bibliothèque SSL selon
- l'option de configuration--with-mongodb-ssl.
- À partir de la version 1.17.0 de l'extension, OpenSSL est toujours préféré par défaut.
- Auparavant, Secure Transport était le défaut sur macOS et OpenSSL était le défaut
- sur toutes les autres plates-formes.
-
-
-
-
- Si le processus de construction échoue à trouver une bibliothèque SSL, vérifiez que les
- paquets de développement (par exemple libssl-dev) et
- pkg-config sont tous deux
- installés.
-
-
-
- Lorsque vous utilisez Homebrew sur macOS, il est courant qu'un système ait
- plusieurs versions d'OpenSSL installées. Pour garantir que la version d'OpenSSL
- souhaitée est sélectionnée, la variable d'environnement PKG_CONFIG_PATH
- peut être utilisée pour contrôler le chemin de recherche de pkg-config.
-
-
-
-
- La dernière étape de construction, make install, indiquera où
- mongodb.so a été installé, similaire à :
-
-
-
-
-
-
- Assurez-vous que l'option extension_dir
- dans &php.ini; pointe vers le répertoire où mongodb.so
- a été installé. L'option peut être interrogée en exécutant :
-
- /usr/lib/php/extensions/debug-non-zts-20220829 =>
- /usr/lib/php/extensions/debug-non-zts-20220829
-]]>
-
-
-
-
- Si les répertoires diffèrent, modifiez
- extension_dir dans &php.ini; ou
- déplacez manuellement mongodb.so dans le répertoire correct.
-
-
-
- Pour finir, ajoutez la ligne suivante au fichier &php.ini; pour chaque environnement
- qui aura besoin d'utiliser l'extension :
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ &reftitle.install;
+
+
+ Installer l'extension de MongoDB PHP avec PIE
+
+ &pecl.moving.to.pie;
+
+
+ Pour installer l'extension MongoDB avec PIE, exécutez la commande suivante :
+
+
+
+
+
+
+
+
+
+ Installe l'extension de MongoDB PHP avec PECL
+
+
+ &pecl.info;
+ &url.pecl.package;mongodb
+
+
+
+ Linux, Unix et les utilisateurs de macOS peuvent exécuter la commande suivante pour
+ installer l'extension :
+
+
+
+
+
+
+ Sur les systèmes avec plusieurs versions de PHP installées (par exemple, macOS par défaut,
+ Homebrew, XAMPP), chaque version de PHP
+ aura sa propre commande pecl
+ et fichier &php.ini;. De plus, chaque environnement PHP (par exemple
+ CLI, web) peut utiliser des fichiers &php.ini; séparés.
+
+
+
+ Depuis la version 1.17.0 de l'extension, PECL demandera diverses options de
+ configurations. Pour installer l'extension avec les options par défaut
+ dans un script non interactif, une entrée vide peut être envoyée à
+ pecl install en utilisant la commande yes :
+
+
+
+
+
+
+ Une liste complète des options configure supportées peut être
+ trouvée dans le fichier package.xml inclus dans le paquet PECL.
+ Pour installer l'extension avec des options de configurations spécifiques
+ dans un script non interactif, l'option
+ --configureoptions pour
+ pecl install peut être utilisée :
+
+
+
+
+
+
+ Par défaut l'installation de l'extension via PECL utilisera les versions incluses de
+ libbson,
+ libmongoc, et
+ libmongocrypt et essayera automatiquement
+ de les configurer.
+
+
+
+
+ Si le processus de construction échoue à trouver une bibliothèque SSL, vérifiez que les
+ paquets de développement (par exemple libssl-dev) et
+ pkg-config sont tous deux
+ installés. Si cela ne résout pas le problème, envisagez d'utiliser le
+ processus
+ d'installation manuel.
+
+
+
+
+ Pour finir, ajoutez la ligne suivante au fichier &php.ini; pour chaque environnement
+ qui aura besoin d'utiliser l'extension :
+
+
+
+
+
+
+
+ Installer l'extension de MongoDB PHP sur macOS avec Homebrew
+
+
+ Homebrew 1.5.0
+ a déprécié le tap Homebrew/php
+ et a supprimé les formules pour les extensions PHP individuelles. À l'avenir, les utilisateurs
+ de macOS sont invités à installer la formule
+ php et à suivre les instructions
+ d'installation standard de PECL
+ en utilisant la commande pecl
+ fournie par l'installation PHP Homebrew.
+
+
+ Sinon, le
+ tap shivammathur/extensions
+ fourni des formules pour les extensions PHP individuelles. Par exemple, pour installer
+ l'extension pour PHP 8.4, exécutez :
+
+
+
+ Il est a noter que seule la dernière version de l'extension est disponible dans brew.
+
+
+ Installer les dépendances requises
+
+ Pour garantir que le support SSL peut être configuré correctement, assurez-vous que les
+ formules openssl et pkgconf sont
+ installées. Si l'un de ces paquets est manquant, l'extension sera compilée
+ avec Secure Transport, ce qui peut entraîner des problèmes de compatibilité.
+
+
+
+
+
+ Installer l'extension de MongoDB PHP sur Windows
+
+
+ Les binaires précompilés sont attachés aux
+ versions Github
+ du projet. Les archives sont publiées pour diverses combinaisons de version PHP,
+ de sécurité des threads (TS ou NTS) et d'architecture (x86 ou x64). Déterminez
+ l'archive correcte pour l'environnement PHP et extrayez le fichier
+ php_mongodb.dll dans le répertoire d'extension ("ext" par défaut).
+
+
+
+ Ajouter la ligne suivante au fichier &php.ini; pour chaque environnement qui aura
+ besoin d'utiliser l'extension :
+
+
+
+
+
+
+ L'échec de sélection du binaire correct entraînera une erreur lors de la tentative
+ de chargement de l'extension DLL à l'exécution :
+
+
+
+
+
+
+ Assurez-vous que la DLL téléchargée correspond aux propriétés d'exécution PHP
+ suivantes :
+
+ Version de PHP(PHP_VERSION)
+ Sécurité des threads (PHP_ZTS)
+ Architecture (PHP_INT_SIZE)
+
+
+
+
+ En plus des constantes mentionnées ci-dessus, ces propriétés peuvent également être
+ déduites de phpinfo. Si un système a plusieurs exécutions PHP
+ installées, vérifiez que la sortie de phpinfo est pour
+ l'environnement correct.
+
+
+
+ Dépendences additionnelles DLL pour les utilisateurs Windows
+
+ &ext.windows.path.dll;
+ libsasl.dll
+
+
+
+
+
+ Installation manuelle de l'extension de MongoDB PHP
+
+
+ Pour les développeurs et les utilisateurs intéressés par les dernières corrections de bogues,
+ l'extension peut être compilée à partir du dernier code source sur
+ Github. Exécutez les commandes suivantes
+ pour cloner et construire le projet :
+
+
+
+
+
+
+ Sur les systèmes avec plusieurs versions de PHP installées (par exemple, macOS par défaut,
+ Homebrew, XAMPP), chaque version de PHP
+ aura sa propre commande phpize
+ et fichier &php.ini;. De plus, chaque environnement PHP (par exemple
+ CLI, web) peut utiliser des fichiers &php.ini; séparés.
+
+
+
+ Par défaut, l'extension utilisera les versions incluses de
+ libbson,
+ libmongoc, et
+ libmongocrypt et
+ essayera de les configurer automatiquement. Si ces bibliothèques sont déjà
+ installées en tant que bibliothèques système, l'extension peut les utiliser en
+ spécifiant --with-mongodb-system-libs=yes comme option à
+ configure.
+
+
+
+ Pour une liste complète des options configure, exécutez
+ configure --help.
+
+
+
+ Lorsque vous utilisez les versions groupées de libmongoc et libmongocrypt,
+ l'extension tentera également de sélectionner une bibliothèque SSL selon
+ l'option de configuration--with-mongodb-ssl.
+ À partir de la version 1.17.0 de l'extension, OpenSSL est toujours préféré par défaut.
+ Auparavant, Secure Transport était le défaut sur macOS et OpenSSL était le défaut
+ sur toutes les autres plates-formes.
+
+
+
+
+ Si le processus de construction échoue à trouver une bibliothèque SSL, vérifiez que les
+ paquets de développement (par exemple libssl-dev) et
+ pkg-config sont tous deux
+ installés.
+
+
+
+ Lorsque vous utilisez Homebrew sur macOS, il est courant qu'un système ait
+ plusieurs versions d'OpenSSL installées. Pour garantir que la version d'OpenSSL
+ souhaitée est sélectionnée, la variable d'environnement PKG_CONFIG_PATH
+ peut être utilisée pour contrôler le chemin de recherche de pkg-config.
+
+
+
+
+ La dernière étape de construction, make install, indiquera où
+ mongodb.so a été installé, similaire à :
+
+
+
+
+
+
+ Assurez-vous que l'option extension_dir
+ dans &php.ini; pointe vers le répertoire où mongodb.so
+ a été installé. L'option peut être interrogée en exécutant :
+
+ /usr/lib/php/extensions/debug-non-zts-20220829 =>
+ /usr/lib/php/extensions/debug-non-zts-20220829
+]]>
+
+
+
+
+ Si les répertoires diffèrent, modifiez
+ extension_dir dans &php.ini; ou
+ déplacez manuellement mongodb.so dans le répertoire correct.
+
+
+
+ Pour finir, ajoutez la ligne suivante au fichier &php.ini; pour chaque environnement
+ qui aura besoin d'utiliser l'extension :
+
+
+
+
+
+
+
+
+
+
diff --git a/reference/mongodb/functions/bson/tojson.xml b/reference/mongodb/functions/bson/tojson.xml
index a211514013..648ec782e3 100644
--- a/reference/mongodb/functions/bson/tojson.xml
+++ b/reference/mongodb/functions/bson/tojson.xml
@@ -32,7 +32,7 @@
Il existe plusieurs formats JSON pour représenter BSON. Cette fonction
- implémente le "strict mode" défini dans
+ implémente le "strict mode" défini dans
MongoDB Extended JSON,
qui a été remplacé par les formats canoniques et étendues définis dans la
spécification JSON étendue
diff --git a/reference/mongodb/mongodb/driver/bulkwrite/construct.xml b/reference/mongodb/mongodb/driver/bulkwrite/construct.xml
index 43fa73ff10..53dcad17dc 100644
--- a/reference/mongodb/mongodb/driver/bulkwrite/construct.xml
+++ b/reference/mongodb/mongodb/driver/bulkwrite/construct.xml
@@ -36,7 +36,7 @@
OptionTypeDescription
- Defaut
+ Défaut
diff --git a/reference/mongodb/mongodb/driver/bulkwrite/delete.xml b/reference/mongodb/mongodb/driver/bulkwrite/delete.xml
index a697a21655..a7c2968ad2 100644
--- a/reference/mongodb/mongodb/driver/bulkwrite/delete.xml
+++ b/reference/mongodb/mongodb/driver/bulkwrite/delete.xml
@@ -37,7 +37,7 @@
OptionTypeDescription
- Defaut
+ Défaut
diff --git a/reference/mongodb/mongodb/driver/bulkwrite/update.xml b/reference/mongodb/mongodb/driver/bulkwrite/update.xml
index b0f41d3fb9..0a273f2f3d 100644
--- a/reference/mongodb/mongodb/driver/bulkwrite/update.xml
+++ b/reference/mongodb/mongodb/driver/bulkwrite/update.xml
@@ -49,7 +49,7 @@
OptionTypeDescription
- Defaut
+ Défaut
diff --git a/reference/mongodb/mongodb/driver/readpreference/construct.xml b/reference/mongodb/mongodb/driver/readpreference/construct.xml
index 914abe1d7a..c1b391690f 100644
--- a/reference/mongodb/mongodb/driver/readpreference/construct.xml
+++ b/reference/mongodb/mongodb/driver/readpreference/construct.xml
@@ -157,7 +157,7 @@
&integer;
- Spécifie un décalage de réplication maximal, ou "obsolescence", pour
+ Spécifie un décalage de réplication maximal, ou "obsolescence", pour
les lectures des secondaires. Lorsque l'obsolescence estimée d'un
secondaire dépasse cette valeur, le pilote cesse de l'utiliser pour les
opérations de lecture.
diff --git a/reference/mongodb/mongodb/driver/server/executebulkwrite.xml b/reference/mongodb/mongodb/driver/server/executebulkwrite.xml
index db7ea26b4b..46287775c5 100644
--- a/reference/mongodb/mongodb/driver/server/executebulkwrite.xml
+++ b/reference/mongodb/mongodb/driver/server/executebulkwrite.xml
@@ -73,7 +73,7 @@
&reftitle.errors;
Lance une exception MongoDB\Driver\Exception\InvalidArgumentException si bulk ne contient aucune opération d'écriture.
- Lance une exception MongoDB\Driver\Exception\InvalidArgumentException si bulk a déjà été exécuté. Les objets MongoDB\Driver\BulkWrite ne peuvent pas être exécutés plusieurs fois.
+ Lance une exception MongoDB\Driver\Exception\InvalidArgumentException si bulk a déjà été exécuté. Les objets MongoDB\Driver\BulkWrite ne peuvent pas être exécutés plusieurs fois.
&mongodb.throws.session-unacknowledged;
&mongodb.throws.std;
&mongodb.throws.bulkwriteexception;
diff --git a/reference/mongodb/mongodb/driver/writeconcern/construct.xml b/reference/mongodb/mongodb/driver/writeconcern/construct.xml
index 6e60d5f45c..6e94922cad 100644
--- a/reference/mongodb/mongodb/driver/writeconcern/construct.xml
+++ b/reference/mongodb/mongodb/driver/writeconcern/construct.xml
@@ -152,7 +152,7 @@
&reftitle.errors;
&mongodb.throws.argumentparsing;
- Lève une exception MongoDB\Driver\Exception\InvalidArgumentException si w est invalide ou wtimeout est negatif ou supérieure aux limites d'un entier signé 32 bits.
+ Lève une exception MongoDB\Driver\Exception\InvalidArgumentException si w est invalide ou wtimeout est negatif ou supérieure aux limites d'un entier signé 32 bits.
diff --git a/reference/mqseries/constants.xml b/reference/mqseries/constants.xml
index 799e988135..6fa52cc6d6 100644
--- a/reference/mqseries/constants.xml
+++ b/reference/mqseries/constants.xml
@@ -1,68 +1,68 @@
-
-
-
-
-
- &reftitle.constants;
-
- Pour chaque constante WebSphere MQ Constant, il y a un équivalent mqseries.
-
- Pour les définitions et utilisation, reportez-vous au
- "WebSphere MQ Application Programming Guide" et "WebSphere MQ
- Application Programming Reference red books".
-
- Le nom des constantes mqseries est fait en préfixant le nom de la constante
- WebSphere MQ avec MQSERIES_. Par exemple, les constantes
- de CompletionCode sont :
-
-
-
-
-
+
+
+
+
+
+ &reftitle.constants;
+
+ Pour chaque constante WebSphere MQ Constant, il y a un équivalent mqseries.
+
+ Pour les définitions et utilisation, reportez-vous au
+ "WebSphere MQ Application Programming Guide" et "WebSphere MQ
+ Application Programming Reference red books".
+
+ Le nom des constantes mqseries est fait en préfixant le nom de la constante
+ WebSphere MQ avec MQSERIES_. Par exemple, les constantes
+ de CompletionCode sont :
+
+
+
+
+
diff --git a/reference/mysqli/configure.xml b/reference/mysqli/configure.xml
index 7011f0c678..269b086fde 100644
--- a/reference/mysqli/configure.xml
+++ b/reference/mysqli/configure.xml
@@ -93,7 +93,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink">
Il est à noter qu'il est possible de mélanger les extensions MySQL ainsi que les
bibliothèques clientes. Par exemple, il est possible d'activer l'extension
MySQL pour utiliser la bibliothèque cliente MySQL (libmysqlclient) tout en configurant
- l'extension mysqli pour utiliser le driver natif MySQL.
+ l'extension mysqli pour utiliser le driver natif MySQL.
Toutes les combinaisons d'extensions et bibliothèques clientes sont possibles.
diff --git a/reference/mysqli/mysqli/get-client-info.xml b/reference/mysqli/mysqli/get-client-info.xml
index b2610b28af..87c8cb2992 100644
--- a/reference/mysqli/mysqli/get-client-info.xml
+++ b/reference/mysqli/mysqli/get-client-info.xml
@@ -24,7 +24,7 @@
mysqlinullmysql&null;
- Retourne une &string; qui représente la version de la librairie cliente MySQL.
+ Retourne une &string; qui représente la version de la bibliothèque cliente MySQL.
diff --git a/reference/mysqlnd/config.xml b/reference/mysqlnd/config.xml
index e3f7f7b0d8..0e64ddbf15 100644
--- a/reference/mysqlnd/config.xml
+++ b/reference/mysqlnd/config.xml
@@ -1,456 +1,456 @@
-
-
-
-
-
-
- &reftitle.runtime;
- &extension.runtime;
-
-
-
- &ini.php.constants;
-
-
- &ini.descriptions.title;
-
-
-
-
- mysqlnd.collect_statistics
- bool
-
-
-
- Active la collecte de différentes statistiques du client auxquelles vous
- pouvez accéder via mysqli_get_client_stats,
- mysqli_get_connection_stats,
- et qui sont aussi décrites
- dans la section mysqlnd de la sortie de la fonction
- phpinfo.
-
-
- Ce paramètre active toutes
- les statistiques de MySQL Native Driver
- sauf celles relatives à la gestion de la mémoire.
-
-
-
-
-
- mysqlnd.collect_memory_statistics
- bool
-
-
-
- Active la collecte de différentes statistiques concernant la mémoire
- qui peuvent être consultées via
- mysqli_get_client_stats,
- mysqli_get_connection_stats,
- et qui sont aussi montrées dans
- la section mysqlnd de la sortie de la fonction
- phpinfo.
-
-
- Ce paramètre active les statistiques de gestion de la mémoire parmi
- les statistiques fournies par MySQL
- Native Driver.
-
-
-
-
-
- mysqlnd.debugstring
-
-
-
- Journalise les communications en provenance de toute extension utilisant
- mysqlnd.
-
-
- Le format de cette directive est mysqlnd.debug =
- "option1[,parameter_option1][:option2[,parameter_option2]]".
-
-
- Les options de formatage des chaînes sont les suivantes:
-
-
-
-
- A[,file] - Ajoute la trace à un fichier. S'assure que les données sont écrites
- après chaque écriture en fermant puis rouvrant le fichier de trace (lent). Ceci
- aide à s'assurer que le fichier de traces sera complet même si l'application crash.
-
-
-
-
- a[,file] - Ajoute la trace à un fichier.
-
-
-
-
- d - Active la sortie depuis les macros DBUG_<N> pour l'état actuel.
- Peut être suivi d'une liste de mots-clés qui selectionnent la sortie seulement
- pour les macros DBUG avec ce mot-clé (filtre). Une liste vide de mot-clé
- sélectionnera tout.
-
-
-
-
- f[,functions] - Limite les actions du débogueur à une liste spécifique de fonctions.
- Une liste vide fera en sorte que toutes les fonctions seront utilisées.
-
-
-
-
- F - Marque chaque ligne de débogage du nom du fichier source contenant la macro
- causant cette sortie.
-
-
-
-
- i - Marque chaque ligne de débogage du PID.
-
-
-
-
- L - Marque chaque ligne de débogage du nom du fichier source ainsi que de la ligne
- de la macro qui cause cette sortie.
-
-
-
-
- n - Marque chaque ligne de débogage de la profondeur actuelle de la fonction.
-
-
-
-
- o[,file] - Similaire à a[,file] mais écrase les fichiers plutôt que de les
- compléter.
-
-
-
-
- O[,file] - Similaire à A[,file] mais écrase les fichiers plutôt que de les
- compléter.
-
-
-
-
- t[,N] - Active le traçage du flux de contrôle des fonctions. La profondeur maximale
- est précisée par N, par défaut 200.
-
-
-
-
- x - Active le profilage.
-
-
-
-
- m - Trace les allocations et désallocations de mémoire.
-
-
-
-
- Exemple:
-
-
-
-
-
-
- Cette caractéristique n'est disponible que pour les versions debug de PHP.
-
-
-
-
-
-
-
- mysqlnd.log_mask
- int
-
-
-
- Définit quelle requête sera historisée. Par défaut, vaut 0, ce qui signifie
- que les logs sont désactivés. Il convient de définir cette option en utilisant
- un entier, et non une constante PHP. Par exemple, une valeur de
- 48 (16 + 32) va historiser les requêtes lentes qui utilisent soit 'no good index'
- (SERVER_QUERY_NO_GOOD_INDEX_USED = 16) soit aucun index du tout (SERVER_QUERY_NO_INDEX_USED = 32).
- Une valeur de 2043 (1 + 2 + 8 + ... + 1024) historisera tout type de requêtes lentes.
-
-
- Les types sont les suivants : SERVER_STATUS_IN_TRANS=1, SERVER_STATUS_AUTOCOMMIT=2,
- SERVER_MORE_RESULTS_EXISTS=8, SERVER_QUERY_NO_GOOD_INDEX_USED=16, SERVER_QUERY_NO_INDEX_USED=32,
- SERVER_STATUS_CURSOR_EXISTS=64, SERVER_STATUS_LAST_ROW_SENT=128, SERVER_STATUS_DB_DROPPED=256,
- SERVER_STATUS_NO_BACKSLASH_ESCAPES=512, et SERVER_QUERY_WAS_SLOW=1024.
-
-
-
-
-
- mysqlnd.mempool_default_size
- int
-
-
-
- Taille par défaut de la file d'attente mémoire mysqlnd, utilisée par les jeux
- de résultats.
-
-
-
-
-
- mysqlnd.net_read_timeout
- int
-
-
-
- mysqlnd et la MySQL Client Library,
- libmysqlclient utilise des API réseau différentes.
- mysqlnd utilise les flux PHP, alors que
- libmysqlclient utilise sa propre implémentation basée sur
- le système. PHP, par défaut, utilise un timeout en lecture de 60s. Ceci
- en utilisant le paramètre de php.ini,
- default_socket_timeout. Ceci s'applique à tous les flux
- qui ne précisent pas de timeout par défaut.
- mysqlnd n'affecte aucune autre valeur et donc des requêtes
- longues peuvent se voir déconnectées après
- default_socket_timeout secondes avec comme résultat
- un message d'erreur 2006 - MySQL Server has gone
- away. La MySQL Client Library affecte un timeout par défaut de
- 24 * 3600 secondes (1 jour) et attend les autres timeout, comme ceux de
- TCP/IP. mysqlnd utilise maintenant le même timeout très long.
- La valeur est configurable via le paramètre php.ini
- mysqlnd.net_read_timeout.
- mysqlnd.net_read_timeout est donc utilisé par toute extension
- (ext/mysql, ext/mysqli,
- PDO_MySQL) qui se repose sur
- mysqlnd. mysqlnd indique aux flux PHP d'utiliser
- mysqlnd.net_read_timeout. Notez qu'il peut y avoir des différences
- subtiles entre
- MYSQL_OPT_READ_TIMEOUT de la MySQL Client Library et les flux
- PHP, par exemple MYSQL_OPT_READ_TIMEOUT est dite fonctionnelle
- uniquement avec des connexions TCP/IP et, avant MySQL 5.1.2, seulement sous Windows.
- Les flux PHP, eux, n'ont pas cette limite. Voyez la documentation des flux en cas
- de doute.
-
-
-
-
-
- mysqlnd.net_cmd_buffer_size
- int
-
-
-
- mysqlnd alloue un buffer interne pour le réseau d'une taille
- de mysqlnd.net_cmd_buffer_size (dans
- php.ini) octets pour chaque connexion. Si une commande du
- protocole MySQL Client Server, par exemple,
- COM_QUERY (requête normale), ne rentre pas dans
- le buffer, mysqlnd va agrandir celui-ci à la taille requise.
- A chaque fois que le buffer est agrandi pour une connexion,
- command_buffer_too_small va être incrémenté de un.
-
-
- Si mysqlnd doit agrandir le buffer au-delà de sa taille initiale de
- mysqlnd.net_cmd_buffer_size octets pour presque toutes les connexions,
- vous devriez alors augmenter cette taille par défaut afin d'éviter les ré-allocations.
-
-
- La taille par défaut du buffer est de 4096 octets.
-
-
- La valeur peut aussi être changée au moyen de mysqli_options(link,
- MYSQLI_OPT_NET_CMD_BUFFER_SIZE, size).
-
-
-
-
-
- mysqlnd.net_read_buffer_size
- int
-
-
-
- Taille maximale du segment en lecture lors de la lecture du corps d'un
- paquet de commande MySQL. Le protocole serveur de MySQL encapsule toutes
- ses commandes dans des paquets. Les paquets consistent en un en-tête court
- suivi d'un corps contenant les infos. La taille du corps est encodée dans
- l'en-tête. mysqlnd lit le corps sous forme de segments
- de MIN(header.size, mysqlnd.net_read_buffer_size)
- octets. Si le corps d'un paquet est plus grand que
- mysqlnd.net_read_buffer_size octets,
- mysqlnd doit alors appeler read()
- plusieurs fois.
-
-
- La valeur peut aussi être changée au moyen de mysqli_options(link,
- MYSQLI_OPT_NET_READ_BUFFER_SIZE, size).
-
-
-
-
-
- mysqlnd.sha256_server_public_key
- string
-
-
-
- En rapport avec le plugin d'authentification SHA-256.
- Fichier contenant la clé publique RSA sur serveur MySQL.
-
-
- Les clients peuvent soit ommettre de définir une clé publique RSA et spécifier
- la clé via la directive de configuration PHP, ou bien, définir la clé
- au moment de l'exécution en utilisant la fonction mysqli_options.
- Si aucun fichier de clé publique RSA n'est fourni par le client, alors la clé
- sera échangé conformément à la procédure du plugin d'authentification standard
- SHA-256.
-
-
-
-
-
- mysqlnd.trace_alloc
- string
-
-
-
-
-
-
-
-
- mysqlnd.fetch_data_copy
- int
-
-
-
- Impose la copie des jeux de résultats depuis les tampons internes vers
- des variables PHP au lieu d'utiliser le mécanisme par défaut de référence
- et de copie sur écriture. Veuillez vous référer aux,
- notes d'implémentation sur la gestion de mémoire
- pour plus de détails.
-
-
- Copier les jeux de résultats au lieu d'avoir des variables PHP les référençant permet de libérer au plus tôt la mémoire occupée par les variables PHP. En fonction du code de l'API cliente, les requêtes actuelles et de la taille de leurs jeux de résultats, ceci peut réduire l'empreinte mémoire de mysqlnd.
-
-
- Ne pas activer avec PDO_MySQL. PDO_MySQL ne supporte pas encore ce mode.
-
-
- Supprimé à partir de PHP 8.1.0
-
-
-
-
-
-
-
+
+
+
+
+
+
+ &reftitle.runtime;
+ &extension.runtime;
+
+
+
+ &ini.php.constants;
+
+
+ &ini.descriptions.title;
+
+
+
+
+ mysqlnd.collect_statistics
+ bool
+
+
+
+ Active la collecte de différentes statistiques du client auxquelles vous
+ pouvez accéder via mysqli_get_client_stats,
+ mysqli_get_connection_stats,
+ et qui sont aussi décrites
+ dans la section mysqlnd de la sortie de la fonction
+ phpinfo.
+
+
+ Ce paramètre active toutes
+ les statistiques de MySQL Native Driver
+ sauf celles relatives à la gestion de la mémoire.
+
+
+
+
+
+ mysqlnd.collect_memory_statistics
+ bool
+
+
+
+ Active la collecte de différentes statistiques concernant la mémoire
+ qui peuvent être consultées via
+ mysqli_get_client_stats,
+ mysqli_get_connection_stats,
+ et qui sont aussi montrées dans
+ la section mysqlnd de la sortie de la fonction
+ phpinfo.
+
+
+ Ce paramètre active les statistiques de gestion de la mémoire parmi
+ les statistiques fournies par MySQL
+ Native Driver.
+
+
+
+
+
+ mysqlnd.debugstring
+
+
+
+ Journalise les communications en provenance de toute extension utilisant
+ mysqlnd.
+
+
+ Le format de cette directive est mysqlnd.debug =
+ "option1[,parameter_option1][:option2[,parameter_option2]]".
+
+
+ Les options de formatage des chaînes sont les suivantes:
+
+
+
+
+ A[,file] - Ajoute la trace à un fichier. S'assure que les données sont écrites
+ après chaque écriture en fermant puis rouvrant le fichier de trace (lent). Ceci
+ aide à s'assurer que le fichier de traces sera complet même si l'application crash.
+
+
+
+
+ a[,file] - Ajoute la trace à un fichier.
+
+
+
+
+ d - Active la sortie depuis les macros DBUG_<N> pour l'état actuel.
+ Peut être suivi d'une liste de mots-clés qui selectionnent la sortie seulement
+ pour les macros DBUG avec ce mot-clé (filtre). Une liste vide de mot-clé
+ sélectionnera tout.
+
+
+
+
+ f[,functions] - Limite les actions du débogueur à une liste spécifique de fonctions.
+ Une liste vide fera en sorte que toutes les fonctions seront utilisées.
+
+
+
+
+ F - Marque chaque ligne de débogage du nom du fichier source contenant la macro
+ causant cette sortie.
+
+
+
+
+ i - Marque chaque ligne de débogage du PID.
+
+
+
+
+ L - Marque chaque ligne de débogage du nom du fichier source ainsi que de la ligne
+ de la macro qui cause cette sortie.
+
+
+
+
+ n - Marque chaque ligne de débogage de la profondeur actuelle de la fonction.
+
+
+
+
+ o[,file] - Similaire à a[,file] mais écrase les fichiers plutôt que de les
+ compléter.
+
+
+
+
+ O[,file] - Similaire à A[,file] mais écrase les fichiers plutôt que de les
+ compléter.
+
+
+
+
+ t[,N] - Active le traçage du flux de contrôle des fonctions. La profondeur maximale
+ est précisée par N, par défaut 200.
+
+
+
+
+ x - Active le profilage.
+
+
+
+
+ m - Trace les allocations et désallocations de mémoire.
+
+
+
+
+ Exemple:
+
+
+
+
+
+
+ Cette caractéristique n'est disponible que pour les versions debug de PHP.
+
+
+
+
+
+
+
+ mysqlnd.log_mask
+ int
+
+
+
+ Définit quelle requête sera historisée. Par défaut, vaut 0, ce qui signifie
+ que les logs sont désactivés. Il convient de définir cette option en utilisant
+ un entier, et non une constante PHP. Par exemple, une valeur de
+ 48 (16 + 32) va historiser les requêtes lentes qui utilisent soit 'no good index'
+ (SERVER_QUERY_NO_GOOD_INDEX_USED = 16) soit aucun index du tout (SERVER_QUERY_NO_INDEX_USED = 32).
+ Une valeur de 2043 (1 + 2 + 8 + ... + 1024) historisera tout type de requêtes lentes.
+
+
+ Les types sont les suivants : SERVER_STATUS_IN_TRANS=1, SERVER_STATUS_AUTOCOMMIT=2,
+ SERVER_MORE_RESULTS_EXISTS=8, SERVER_QUERY_NO_GOOD_INDEX_USED=16, SERVER_QUERY_NO_INDEX_USED=32,
+ SERVER_STATUS_CURSOR_EXISTS=64, SERVER_STATUS_LAST_ROW_SENT=128, SERVER_STATUS_DB_DROPPED=256,
+ SERVER_STATUS_NO_BACKSLASH_ESCAPES=512, et SERVER_QUERY_WAS_SLOW=1024.
+
+
+
+
+
+ mysqlnd.mempool_default_size
+ int
+
+
+
+ Taille par défaut de la file d'attente mémoire mysqlnd, utilisée par les jeux
+ de résultats.
+
+
+
+
+
+ mysqlnd.net_read_timeout
+ int
+
+
+
+ mysqlnd et la MySQL Client Library,
+ libmysqlclient utilise des API réseau différentes.
+ mysqlnd utilise les flux PHP, alors que
+ libmysqlclient utilise sa propre implémentation basée sur
+ le système. PHP, par défaut, utilise un timeout en lecture de 60s. Ceci
+ en utilisant le paramètre de php.ini,
+ default_socket_timeout. Ceci s'applique à tous les flux
+ qui ne précisent pas de timeout par défaut.
+ mysqlnd n'affecte aucune autre valeur et donc des requêtes
+ longues peuvent se voir déconnectées après
+ default_socket_timeout secondes avec comme résultat
+ un message d'erreur 2006 - MySQL Server has gone
+ away. La MySQL Client Library affecte un timeout par défaut de
+ 24 * 3600 secondes (1 jour) et attend les autres timeout, comme ceux de
+ TCP/IP. mysqlnd utilise maintenant le même timeout très long.
+ La valeur est configurable via le paramètre php.ini
+ mysqlnd.net_read_timeout.
+ mysqlnd.net_read_timeout est donc utilisé par toute extension
+ (ext/mysql, ext/mysqli,
+ PDO_MySQL) qui se repose sur
+ mysqlnd. mysqlnd indique aux flux PHP d'utiliser
+ mysqlnd.net_read_timeout. Notez qu'il peut y avoir des différences
+ subtiles entre
+ MYSQL_OPT_READ_TIMEOUT de la MySQL Client Library et les flux
+ PHP, par exemple MYSQL_OPT_READ_TIMEOUT est dite fonctionnelle
+ uniquement avec des connexions TCP/IP et, avant MySQL 5.1.2, seulement sous Windows.
+ Les flux PHP, eux, n'ont pas cette limite. Voyez la documentation des flux en cas
+ de doute.
+
+
+
+
+
+ mysqlnd.net_cmd_buffer_size
+ int
+
+
+
+ mysqlnd alloue un buffer interne pour le réseau d'une taille
+ de mysqlnd.net_cmd_buffer_size (dans
+ php.ini) octets pour chaque connexion. Si une commande du
+ protocole MySQL Client Server, par exemple,
+ COM_QUERY (requête normale), ne rentre pas dans
+ le buffer, mysqlnd va agrandir celui-ci à la taille requise.
+ A chaque fois que le buffer est agrandi pour une connexion,
+ command_buffer_too_small va être incrémenté de un.
+
+
+ Si mysqlnd doit agrandir le buffer au-delà de sa taille initiale de
+ mysqlnd.net_cmd_buffer_size octets pour presque toutes les connexions,
+ vous devriez alors augmenter cette taille par défaut afin d'éviter les ré-allocations.
+
+
+ La taille par défaut du buffer est de 4096 octets.
+
+
+ La valeur peut aussi être changée au moyen de mysqli_options(link,
+ MYSQLI_OPT_NET_CMD_BUFFER_SIZE, size).
+
+
+
+
+
+ mysqlnd.net_read_buffer_size
+ int
+
+
+
+ Taille maximale du segment en lecture lors de la lecture du corps d'un
+ paquet de commande MySQL. Le protocole serveur de MySQL encapsule toutes
+ ses commandes dans des paquets. Les paquets consistent en un en-tête court
+ suivi d'un corps contenant les infos. La taille du corps est encodée dans
+ l'en-tête. mysqlnd lit le corps sous forme de segments
+ de MIN(header.size, mysqlnd.net_read_buffer_size)
+ octets. Si le corps d'un paquet est plus grand que
+ mysqlnd.net_read_buffer_size octets,
+ mysqlnd doit alors appeler read()
+ plusieurs fois.
+
+
+ La valeur peut aussi être changée au moyen de mysqli_options(link,
+ MYSQLI_OPT_NET_READ_BUFFER_SIZE, size).
+
+
+
+
+
+ mysqlnd.sha256_server_public_key
+ string
+
+
+
+ En rapport avec le plugin d'authentification SHA-256.
+ Fichier contenant la clé publique RSA sur serveur MySQL.
+
+
+ Les clients peuvent soit ommettre de définir une clé publique RSA et spécifier
+ la clé via la directive de configuration PHP, ou bien, définir la clé
+ au moment de l'exécution en utilisant la fonction mysqli_options.
+ Si aucun fichier de clé publique RSA n'est fourni par le client, alors la clé
+ sera échangé conformément à la procédure du plugin d'authentification standard
+ SHA-256.
+
+
+
+
+
+ mysqlnd.trace_alloc
+ string
+
+
+
+
+
+
+
+
+ mysqlnd.fetch_data_copy
+ int
+
+
+
+ Impose la copie des jeux de résultats depuis les tampons internes vers
+ des variables PHP au lieu d'utiliser le mécanisme par défaut de référence
+ et de copie sur écriture. Veuillez vous référer aux,
+ notes d'implémentation sur la gestion de mémoire
+ pour plus de détails.
+
+
+ Copier les jeux de résultats au lieu d'avoir des variables PHP les référençant permet de libérer au plus tôt la mémoire occupée par les variables PHP. En fonction du code de l'API cliente, les requêtes actuelles et de la taille de leurs jeux de résultats, ceci peut réduire l'empreinte mémoire de mysqlnd.
+
+
+ Ne pas activer avec PDO_MySQL. PDO_MySQL ne supporte pas encore ce mode.
+
+
+ Supprimé à partir de PHP 8.1.0
+
+
+
+
+
+
+
diff --git a/reference/mysqlnd/notes.xml b/reference/mysqlnd/notes.xml
index 7daffaf42e..edbb3cd9ae 100644
--- a/reference/mysqlnd/notes.xml
+++ b/reference/mysqlnd/notes.xml
@@ -1,38 +1,38 @@
-
-
-
-
-
- Notes
-
- Cette section fournit une compilation de notes diverses sur l'utilisation du
- pilote natif MySQL.
-
-
- Utiliser mysqlnd signifie utiliser les flux PHP
- pour la connexion sous-jascente. Avec mysqlnd, la documentation
- des flux PHP () devrait être consultée en ce qui concerne
- les notions comme les timeouts et non pas la documentation de la librairie cliente MySQL.
-
-
-
-
+
+
+
+
+
+ Notes
+
+ Cette section fournit une compilation de notes diverses sur l'utilisation du
+ pilote natif MySQL.
+
+
+ Utiliser mysqlnd signifie utiliser les flux PHP
+ pour la connexion sous-jascente. Avec mysqlnd, la documentation
+ des flux PHP () devrait être consultée en ce qui concerne
+ les notions comme les timeouts et non pas la documentation de la bibliothèque cliente MySQL.
+
+
+
+
diff --git a/reference/mysqlnd/plugin.xml b/reference/mysqlnd/plugin.xml
index 006362bc54..546a53385c 100644
--- a/reference/mysqlnd/plugin.xml
+++ b/reference/mysqlnd/plugin.xml
@@ -1,1462 +1,1462 @@
-
-
-
-
- API du plugin du driver natif MySQL
-
- L'API du plugin du driver natif MySQL est une fonctionnalité
- du driver natif MySQL, ou mysqlnd.
- Le plugin Mysqlnd opère sur la couche entre
- les applications PHP et le serveur MySQL. Il est comparable
- à un proxy MySQL. Un proxy MySQL opère sur une couche entre toutes
- les applications clientes MySQL, par exemple, une application PHP
- et un serveur MySQL. Le plugin Mysqlnd
- peut entreprendre des tâches typiques de proxy MySQL comme
- l'équilibrage de charge, ainsi que le suivi et l'optimisation
- des performances. En raison d'une architecture et d'une localisation
- différente, le plugin mysqlnd n'a pas tous les
- inconvénients d'un proxy MySQL. Par exemple, avec le plugin, il
- n'y a pas qu'un seul point d'échec, pas de serveur de proxy dédié
- à déployer, et pas de nouveau langage à apprendre (Lua).
-
-
- Un plugin mysqlnd peut être exécuté comme une extension
- à mysqlnd. Un plugin peut intercepter la majorité des
- fonctions mysqlnd. Les fonctions mysqlnd
- sont appelées par l'extension PHP MySQL comme
- ext/mysql, ext/mysqli, et
- PDO_MYSQL. Comme résultat, il est possible pour un
- plugin mysqlnd d'intercepter tous les appels effectués
- par ces extensions depuis une application cliente.
-
-
- Les appels aux fonctions internes mysqlnd peuvent
- également être interceptés ou remplacés. Il n'y a aucune restriction
- sur la manipulation des tables de fonctions internes mysqlnd.
- Il est possible de définir des actions pour faire que lorsque
- certaines fonctions mysqlnd sont appelées
- par l'extension qui utilise mysqlnd, l'appel
- est redirigé vers la fonction appropriée du plugin
- mysqlnd. La possibilité de manipuler les tables
- de fonctions internes mysqlnd dans ce sens permet
- un maximum de flexibilité.
-
-
- Le plugin Mysqlnd est en faite, une extension PHP,
- écrit en C, qui utilise l'API du plugin mysqlnd
- (qui est compilé dans le driver natif MySQL, mysqlnd).
- Le plugin peut être à 100% transparent pour les applications PHP. Aucune
- modification aux applications n'est nécessaire car le plugin opère
- sur une couche différente. Le plugin mysqlnd
- peut être utilisé dans une couche en dessous de mysqlnd.
-
-
- La liste suivante représente quelques applications possibles
- du plugin mysqlnd.
-
-
-
-
- L'équilibrage de charge.
-
-
-
-
- Séparation des lectures et des écritures. Un exemple de cette fonctionnalité
- est l'extension PECL/mysqlnd_ms (Maître/esclave). Cette extension sépare
- les requêtes de lecture et d'écriture pour une configuration de réplication.
-
-
-
-
- Basculement
-
-
-
-
- Round-Robin, le moins chargé
-
-
-
-
-
-
- Surveillance
-
-
-
-
- Journalisation des requêtes
-
-
-
-
- Analyse de requêtes
-
-
-
-
- Audite de requêtes. Un exemple de ceci est l'extension
- PECL/mysqlnd_sip (SQL Injection Protection). Cette extension
- inspecte les requêtes et exécute uniquement celles qui sont
- autorisées suivants des ensembles de règles.
-
-
-
-
-
-
- Performance
-
-
-
-
- La mise en cache. Un exemple de ceci est l'extension
- PECL/mysqlnd_qc (Query Cache).
-
-
-
-
- Étranglement
-
-
-
-
- Fragmentation. Un exemple de ceci est l'extension
- PECL/mysqlnd_mc (Multi Connect). Cette extension tente
- de séparer une requête SELECT en n parties, en utilisant
- des requêtes du type SELECT ... LIMIT part_1, SELECT LIMIT part_n.
- L'extension envoie les requêtes à des serveurs MySQL distincts
- et fusionne ensuite le résultat à destination du client.
-
-
-
-
-
-
- PLugins du driver natif MySQL disponibles
-
-
- Il y a déjà plusieurs plugins mysqlnd de disponible.
-
-
-
-
- PECL/mysqlnd_mc -Plugin Multi Connexion.
-
-
-
-
- PECL/mysqlnd_ms - Plugin Maître Esclave.
-
-
-
-
- PECL/mysqlnd_qc - Plugin de mise en cache de requêtes.
-
-
-
-
- PECL/mysqlnd_pscache - Plugin de mise en cache de gestionnaire
- de requêtes préparées.
-
-
-
-
- PECL/mysqlnd_sip - Plugin permettant la protection
- contre les injections SQL.
-
-
-
-
- PECL/mysqlnd_uh - Plugin de gestionnaire d'utilisateurs.
-
-
-
-
- Comparaison des plugins mysqlnd avec proxy MySQL
-
- Les plugins Mysqlnd et le proxy MySQL sont
- des technologies différentes utilisant différentes approches.
- Les deux sont des outils valides pour résoudre bon nombre
- de tâches classiques, comme l'équilibrage de charge, la surveillance,
- et l'amélioration des performances. Une importante différence est
- que le proxy MySQL fonctionne avec tous les clients MySQL alors que
- les plugins mysqlnd sont spécifiques aux
- applications PHP.
-
-
- Comme une extension PHP, un plugin mysqlnd
- doit être installé sur le serveur d'applications PHP, en plus du
- reste de PHP. Un proxy MySQL peut soit fonctionner sur le serveur
- d'applications PHP, soit être installé sur une machine dédiée pour
- gérer plusieurs serveurs d'applications PHP.
-
-
- Le déploiement d'un proxy MySQL sur un serveur d'applications
- a 2 avantages :
-
-
-
-
- Pas un seul point d'échec
-
-
-
-
- Facile à redimensionner (redimensionnement horizontal,
- redimensionnement par le client)
-
-
-
-
- Un proxy MySQL (et les plugins mysqlnd) peut
- résoudre des problèmes facilement, qui sinon, auraient dû nécessiter
- des modifications aux applications existantes.
-
-
- Cependant, un proxy MySQL a quelques désavantages :
-
-
-
-
- Un proxy MySQL est un nouveau composant, une nouvelle technologie à
- appliquer au maître et à déployer.
-
-
-
-
- Un proxy MySQL nécessite la connaissance du langage de script Lua.
-
-
-
-
- Un proxy MySQL peut être personnalisé en utilisant les langages de
- programmation C et Lua. Lua est le langage préféré pour un proxy MySQL.
- Pour la plupart des experts PHP, Lua est un nouveau langage à apprendre.
- Un plugin mysqlnd peut être écrit en C. Il est également
- possible d'écrire un plugin en PHP en utilisant
- PECL/mysqlnd_uh.
-
-
- Un proxy MySQL fonctionne comme un démon - un processus en arrière-plan.
- Un proxy MySQL peut rappeler des décisions prises antérieurement,
- vu que tous les états peuvent être conservés. Cependant, un plugin
- mysqlnd est lié au cycle de vie d'une requête PHP.
- Un proxy MySQL peut également partager des résultats calculés une seule fois
- sur plusieurs serveurs d'applications. Un plugin mysqlnd
- peut donc avoir besoin de stocker des données dans un médium persistant.
- Un autre démon peut être utilisé dans ce but, comme par exemple,
- Memcache. Ce mécanisme donne un avantage au proxy MySQL.
-
-
- Un proxy MySQL fonctionne au-dessus de la couche physique. Avec un
- proxy MySQL, vous devez analyser et effectuer du "reverse engineering"
- du protocole client serveur MySQL. Les actions sont limitées à celles
- qui peuvent être effectuées par la manipulation du protocole
- de communication. Si la couche physique change (ce qui arrive très rarement),
- les scripts du proxy MySQL peut devoir être adaptés.
-
-
- Les plugins Mysqlnd fonctionnent au-dessus de l'API C,
- reflétant ainsi les APIs client libmysqlclient.
- Cette API C est essentiellement une enveloppe du protocole Serveur Client MySQL,
- ou de la couche physique, vu qu'elle est appelée quelques fois. Vous pouvez
- intercepter tous les appels à l'API C. PHP utilise l'API C, toutefois,
- vous pouvez connecter tous les appels PHP, sans avoir besoin de programmer
- au niveau de la couche physique.
-
-
- Mysqlnd implémente la couche physique. Les plugins
- peuvent toutefois analyser, effectuer un "reverse engineering", manipuler
- et toujours remplacer le protocole de communication. Cependant, ce n'est
- généralement pas nécessaire.
-
-
- Vu que les plugins vous autorisent à créer des implémentations qui
- utilisent les 2 niveaux (API C et couche physique), ils ont plus de flexibilité
- que le proxy MySQL. Si un plugin mysqlnd est implémenté
- en utilisant l'API C, toutes les modifications ultérieures à la couche
- physique ne nécessiteront pas de modification au plugin en tant que tel.
-
-
-
- Obtenir l'API du plugin mysqlnd
-
- L'API du plugin mysqlnd est simplement une partie
- de l'extension du driver PHP Natif MySQL, ext/mysqlnd.
- Le développement de l'API du plugin mysqlnd commença
- en Décembre 2009. Il est développé comme une partie du dépôt source de PHP,
- et ainsi, est disponible depuis soit le dépôt public Git, soit depuis
- le téléchargement des sources.
-
-
- Les développeurs de plugin peuvent déterminer la version de
- mysqlnd via la variable
- MYSQLND_VERSION,
- au format mysqlnd 8.3.17,
- ou via MYSQLND_VERSION_ID, qui est un entier
- comme par exemple 50007. Les développeurs peuvent calculer le numéro
- de version comme ceci :
-
-
-
- Lors du développement, les développeurs doivent se référer
- au numéro de version mysqlnd pour des tests
- de compatibilité et de version, sachant que plusieurs
- versions de mysqlnd peuvent survenir durant
- un cycle de vie de la branche de développement de PHP.
-
-
-
- Architecture du plugin du driver natif
-
- Cette section fournit un aperçu de l'architecture du plugin
- mysqlnd.
-
-
- Aperçu du driver natif MySQL
-
-
- Avant de développer des plugins mysqlnd,
- il est utile d'avoir une connaissance minimale sur l'organisation
- de mysqlnd. Mysqlnd est composé
- des modules suivants :
-
-
- Schéma de l'organisation mysqlnd, par module
-
-
-
- Modules de statistiques
- mysqlnd_statistics.c
-
-
-
-
- Connexion
- mysqlnd.c
-
-
- Jeu de résultats
- mysqlnd_result.c
-
-
- Données méta du jeu de résultats
- mysqlnd_result_meta.c
-
-
- Requête
- mysqlnd_ps.c
-
-
- Réseau
- mysqlnd_net.c
-
-
- Couche physique
- mysqlnd_wireprotocol.c
-
-
-
-
-
- Objet C orienté paradigme
-
-
- Au niveau du code, mysqlnd utilise un masque C
- pour implémenter l'orientation de l'objet.
-
-
- En C, vous utilisez une structure (struct)
- pour représenter un objet. Les membres de cette structure
- représentent les propriétés de l'objet. Les membres de la
- structure pointant vers des fonctions représentent les méthodes.
-
-
- Contrairement aux autres langages comme C++ ou Java, il n'y a
- pas de règles fixes sur l'héritage dans les objets C orientés paradigme.
- Cependant, il y a quelques conventions qui doivent être suivies
- qui seront abordées ultérieurement.
-
-
- Le cycle de vie PHP
-
-
- Le cycle de vie de PHP comporte 2 cycles basiques :
-
-
-
-
- Le cycle de démarrage et d'arrêt du moteur PHP
-
-
-
-
- Le cycle d'une demande
-
-
-
-
- Lorsque le moteur PHP démarre, il appelle la fonction d'initialisation
- du module (MINIT) de chaque extension enregistrée. Ceci
- permet à chaque module de définir les variables et d'allouer les
- ressources qui doivent exister pour la durée de vie du processus
- correspondant au moteur PHP. Lorsque le moteur PHP s'arrête,
- il appelle la fonction d'arrêt du module (MSHUTDOWN) pour chaque extension.
-
-
- Pendant la durée de vie du moteur PHP, il recevra des demandes.
- Chaque demande constitue un autre cycle de vie. Pour chaque
- requête, le moteur PHP appellera la fonction d'initialisation
- de chaque extension. L'extension peut effectuer toutes les définitions
- de variables ainsi que les allocations de ressources nécessaires pour
- traiter la demande. Lorsque le cycle de la demande se termine, le moteur
- appelle la fonction d'arrêt (RSHUTDOWN) pour chaque extension,
- ainsi, l'extension peut lancer tout le nettoyage nécessaire.
-
-
- Comment fonctionne un plugin
-
-
- Un plugin mysqlnd fonctionne en interceptant les appels
- effectués à mysqlnd par les extensions qui utilisent
- mysqlnd. Ceci est possible en obtenant la table
- de fonction mysqlnd, en la sauvegardant, et en la
- remplaçant par une table de fonction personnalisé, qui appelle les fonctions
- du plugin.
-
-
- Le code suivant montre la façon dont la table de fonction
- mysqlnd est remplacée :
-
-
-query = MYSQLND_METHOD(my_conn_class, query);
-}
-]]>
-
-
- Les manipulations de la table de fonction de connexion doivent
- être effectuées lors de l'initialisation du module (MINIT).
- La table de fonction est une ressource globale partagée. Dans
- un environnement multithread, avec une compilation TSRM, la
- manipulation d'une ressource globale partagée lors d'un processus
- de demande entraînera la plupart du temps des conflits.
-
-
-
- N'utilisez aucune logique de taille fixe lors de la manipulation
- de la table de fonction mysqlnd : les nouvelles
- méthodes peuvent être ajoutées à la fin de la table de fonction.
- La table de fonction peut être modifiée à tout moment par la suite.
-
-
-
- Appel des méthodes parents
-
-
- Si la table de fonction originale est sauvegardée, il est toujours
- possible d'appeler les entrées de la table de fonction originale -
- les méthodes parents.
-
-
- Dans ce cas, tout comme pour Connection::stmt_init(),
- il est vital d'appeler la méthode parent avant toute autre activité
- dans la méthode dérivée.
-
-
-
-
-
- Étendre des propriétés
-
-
- Un objet mysqlnd est représenté par une structure C.
- Il n'est pas possible d'ajouter un membre à une structure C au moment
- de l'exécution. Les utilisateurs d'objets mysqlnd
- ne peuvent pas ajouter simplement des propriétés aux objets.
-
-
- Les données arbitraires (propriétés) peuvent être ajoutées aux objets
- mysqlnd en utilisant une fonction appropriée de la
- famille mysqlnd_plugin_get_plugin_<object>_data().
- Lors de l'allocation d'un objet, mysqlnd réserve
- un espace à la fin de l'objet pour accueillir un pointeur
- void * vers des données arbitraires.
- mysqlnd réserve un espace pour un pointeur
- void * par plugin.
-
-
- La table suivante montre comment calculer la position d'un pointeur
- pour un plugin spécifique :
-
-
- Calcul des pointeurs pour mysqlnd
-
-
-
- Adresse mémoire
- Contenus
-
-
-
-
- 0
- Début de la structure C de l'objet mysqlnd
-
-
- n
- Fin de la structure C de l'objet mysqlnd
-
-
- n + (m x sizeof(void*))
- void* vers les données de l'objet du m-ème plugin
-
-
-
-
-
- Si vous prévoyez de faire des sous-classes des constructeurs
- des objets mysqlnd, ce qui est autorisé,
- vous devez conserver ceci en mémoire !
-
-
- Le code suivant montre la façon dont on étend des propriétés :
-
-
-persistent);
- (*props)->query_counter = 0;
- }
- return props;
-}
-]]>
-
-
- Le développeur du plugin est responsable de la gestion de la mémoire
- associée aux données du plugin.
-
-
- L'utilisation de l'allocateur de mémoire mysqlnd
- est recommandée pour les données du plugin. Ces fonctions sont nommées
- en utilisant la convention suivante : mnd_*loc().
- L'allocateur mysqlnd a quelques fonctionnalités bien utiles,
- comme la possibilité d'utiliser un allocateur de débogage dans une compilation
- non-débogue.
-
-
- Quand et comment faire une sous-classe
-
-
-
-
- Quand faire une sous-classe ?
- Est-ce que chaque instance a sa table de fonction privée ?
- Comment faire une sous-classe ?
-
-
-
-
- Connexion (MYSQLND)
- MINIT
- Non
- mysqlnd_conn_get_methods()
-
-
- Jeu de résultats (MYSQLND_RES)
- MINIT ou après
- Oui
- mysqlnd_result_get_methods() ou méthode de l'objet de manipulation de la table de fonction
-
-
- Méta du jeu de résultats (MYSQLND_RES_METADATA)
- MINIT
- Non
- mysqlnd_result_metadata_get_methods()
-
-
- Requête (MYSQLND_STMT)
- MINIT
- Non
- mysqlnd_stmt_get_methods()
-
-
- Réseau (MYSQLND_NET)
- MINIT ou après
- Oui
- mysqlnd_net_get_methods() ou méthode de l'objet de manipulation de la table de fonction
-
-
- Couche physique (MYSQLND_PROTOCOL)
- MINIT ou après
- Oui
- mysqlnd_protocol_get_methods() ou méthode de l'objet de manipulation de la table de fonction
-
-
-
-
-
- Vous ne devez pas manipuler les tables de fonction après MINIT si
- ce n'est pas autorisé suivant la table ci-dessus.
-
-
- Quelques classes contiennent un pointeur vers une méthode de la table
- de fonction. Toutes les instances d'une telle classe partageront
- la même table de fonction. Pour éviter le chaos, en particulier
- dans les environnements threadés, ce genre de tables de fonction
- ne doit être manipulé que lors du MINIT.
-
-
- Les autres classes utilisent une copie de la table de fonction
- globale partagée. Cette copie est créée en même temps que l'objet.
- Chaque objet utilise sa propre table de fonction. Ceci vous donne
- 2 options : vous pouvez manipuler la table de fonction par défaut
- d'un objet au moment du MINIT, et vous pouvez aussi affiner des
- méthodes d'un objet sans impacter les autres instances de la même
- classe.
-
-
- L'avantage de l'approche avec une table de fonction partagée est
- la performance. Il n'est pas nécessaire de copier une table de fonction
- pour chaque objet.
-
-
- Statut du constructeur
-
-
-
- Type
- Allocation, construction, réinitialisation
- Peut-être modifié ?
- Appelant
-
-
-
-
- Connexion (MYSQLND)
- mysqlnd_init()
- Non
- mysqlnd_connect()
-
-
- Jeu de résultats(MYSQLND_RES)
-
- Allocation :
-
-
-
-
- Connection::result_init()
-
-
-
-
- Reset et ré-initialisation lors de :
-
-
-
-
- Result::use_result()
-
-
-
-
- Result::store_result
-
-
-
- Oui, mais appel du parent !
-
-
-
- Connection::list_fields()
-
-
-
-
- Statement::get_result()
-
-
-
-
- Statement::prepare() (Méta-données uniquement)
-
-
-
-
- Statement::resultMetaData()
-
-
-
-
-
- Méta du jeu de résultats (MYSQLND_RES_METADATA)
- Connection::result_meta_init()
- Oui, mais appel du parent !
- Result::read_result_metadata()
-
-
- Statement (MYSQLND_STMT)
- Connection::stmt_init()
- Oui, mais appel du parent !
- Connection::stmt_init()
-
-
- Réseau (MYSQLND_NET)
- mysqlnd_net_init()
- Non
- Connection::init()
-
-
- Couche physique (MYSQLND_PROTOCOL)
- mysqlnd_protocol_init()
- Non
- Connection::init()
-
-
-
-
-
- Il est vivement recommandé de ne pas remplacer entièrement un constructeur.
- Les constructeurs effectuent les allocations mémoires. Les allocations
- mémoires sont vitales pour l'API du plugin mysqlnd
- ainsi que pour la logique de l'objet mysqlnd. Si
- vous ne vous souciez pas des alertes et que vous insistez pour
- remplacer les constructeurs, vous devriez au moins appeler
- le constructeur parent avant de faire quoi que ce soit dans votre
- constructeur.
-
-
- Au niveau de toutes les alertes, il peut être utile de faire des
- sous-classes des constructeurs. Les constructeurs sont les endroits
- parfaits pour modifier les tables de fonction des objets avec les
- tables d'objets non partagés, comme les jeux de résultats, le
- réseau ou encore la couche physique.
-
-
- Statut du destructeur
-
-
-
- Type
- La méthode dérivée doit appeler le parent ?
- Destructeur
-
-
-
-
- Connexion
- oui, après l'exécution de la méthode
- free_contents(), end_psession()
-
-
- Jeu de résultats
- oui, après l'exécution de la méthode
- free_result()
-
-
- Méta du jeu de résultats
- oui, après l'exécution de la méthode
- free()
-
-
- Requête
- oui, après l'exécution de la méthode
- dtor(), free_stmt_content()
-
-
- Réseau
- oui, après l'exécution de la méthode
- free()
-
-
- Couche physique
- oui, après l'exécution de la méthode
- free()
-
-
-
-
-
- Les destructeurs sont les endroits parfaits pour libérer les propriétés,
- mysqlnd_plugin_get_plugin_<object>_data().
-
-
- Les destructeurs listés peuvent ne pas être les équivalents aux
- méthodes actuelles mysqlnd libérant l'objet lui-même.
- Cependant, ils sont les meilleurs endroits pour vous pour libérer
- les données de votre plugin. Tout comme les constructeurs, vous
- pouvez remplacer les méthodes entières mais ce n'est pas recommandé.
- Si plusieurs méthodes sont listées dans la table ci-dessus, vous devez
- modifier toutes les méthodes listées et libérer les données de votre
- plugin dans la méthode appelée en premier par mysqlnd.
-
-
- La méthode recommandée pour les plugins est de modifier simplement les méthodes,
- libérer votre mémoire et appeler l'implémentation du parent immédiatement après.
-
-
-
- L'API du plugin mysqlnd
-
- Voici la liste des fonctions fournies dans l'API plugin
- mysqlnd :
-
-
-
-
- mysqlnd_plugin_register()
-
-
-
-
- mysqlnd_plugin_count()
-
-
-
-
- mysqlnd_plugin_get_plugin_connection_data()
-
-
-
-
- mysqlnd_plugin_get_plugin_result_data()
-
-
-
-
- mysqlnd_plugin_get_plugin_stmt_data()
-
-
-
-
- mysqlnd_plugin_get_plugin_net_data()
-
-
-
-
- mysqlnd_plugin_get_plugin_protocol_data()
-
-
-
-
- mysqlnd_conn_get_methods()
-
-
-
-
- mysqlnd_result_get_methods()
-
-
-
-
- mysqlnd_result_meta_get_methods()
-
-
-
-
- mysqlnd_stmt_get_methods()
-
-
-
-
- mysqlnd_net_get_methods()
-
-
-
-
- mysqlnd_protocol_get_methods()
-
-
-
-
- Il n'y a pas de définition formelle de ce qu'est un plugin
- ainsi de la façon dont fonctionne un plugin.
-
-
- Les composants les plus souvent trouvés dans les mécanismes de plugin sont :
-
-
-
-
- Un gestionnaire de plugin
-
-
-
-
- Une API du plugin
-
-
-
-
- Les services applicatifs (ou modules)
-
-
-
-
- Les APIs des services applicatifs (ou APIs du module)
-
-
-
-
- Le concept d'un plugin mysqlnd utilise ces fonctionnalités,
- ainsi que d'autres joyeusetés d'architecture ouverte.
-
-
- Aucune restriction
-
-
- Un plugin a un accès total aux travaux internes de
- mysqlnd. Il n'y a aucune limite de sécurité
- ou de restrictions. Tout peut être écrasé pour implémenter des
- algorithmes utiles ou hostiles. Il est recommandé de ne déployer
- que des plugins depuis des sources de confiance.
-
-
- Tel que discuté précédemment, les plugins peuvent utiliser librement
- des pointeurs. Ces pointeurs ne sont restreints en aucune manière,
- aussi, vous pouvez pointer vers les données d'un autre plugin.
- Une simple position arithmétique peut être utilisée pour lire
- les données d'un autre plugin.
-
-
- Il est recommandé d'écrire des plugins coopératifs, et ainsi, appeler
- toujours la méthode parent. Les plugins devraient toujours coopérer avec
- mysqlnd.
-
-
-
- Dans ce scénario, un plugin cache (ext/mysqlnd_cache) et
- un plugin de surveillance (ext/mysqlnd_monitor)
- sont chargés. Les 2 ont une sous-classe de Connection::query().
- L'enregistrement du plugin survient lors du MINIT
- en utilisant la logique évoquée précédemment. PHP appelle les extensions
- dans un ordre alphabétique par défaut. Les plugins ne sont pas au courant
- les uns les autres et ne peuvent fixer de dépendances.
-
-
- Par défaut, les plugins appellent l'implémentation du parent de la
- méthode de requête dans leur version de la méthode dérivée.
-
-
- Récapitulatif de l'extension PHP
-
-
- Voici un récapitulatif de ce qui survient lors de l'utilisation
- d'un plugin d'exemple, ext/mysqlnd_plugin,
- qui expose l'API C du plugin mysqlnd à PHP :
-
-
-
-
- Toutes les applications PHP MySQL tente d'établir une connexion
- à l'adresse 192.168.2.29
-
-
-
-
- L'application PHP utilisera ext/mysql,
- ext/mysqli ou PDO_MYSQL.
- Ces 3 extensions PHP MySQL utilisent mysqlnd pour
- établir la connexion à l'adresse 192.168.2.29.
-
-
-
-
- Mysqlnd appelle sa méthode de connexion, qui a été sous-classée
- par ext/mysqlnd_plugin.
-
-
-
-
- ext/mysqlnd_plugin appelle la méthode de l'espace utilisateur
- proxy::connect() enregistrée par l'utilisateur.
-
-
-
-
- L'espace utilisateur modifie l'hôte de connexion de 192.168.2.29
- à 127.0.0.1 et retourne la connexion établie par
- parent::connect().
-
-
-
-
- ext/mysqlnd_plugin exécute l'équivalent de
- parent::connect(127.0.0.1) en appelant la méthode
- originale de mysqlnd pour établir une connexion.
-
-
-
-
- ext/mysqlnd établit une connexion et redonne la main
- à ext/mysqlnd_plugin.
- ext/mysqlnd_plugin retourne également.
-
-
-
-
- Quelle que soit l'extension PHP MySQL utilisée par l'application,
- elle reçoit une connexion à 127.0.0.1. L'extension PHP MySQL
- redonne la main à l'application PHP. Le cycle est clos.
-
-
-
-
-
- Bien commencer la compilation d'un plugin mysqlnd
-
- Il est important de se souvenir qu'un plugin mysqlnd
- est lui-même une extension PHP.
-
-
- Le code suivant montre la structure basique d'une fonction MINIT
- utilisée dans un plugin typique mysqlnd :
-
-
-query = MYSQLND_METHOD(mysqlnd_plugin_conn, query);
- conn_m->connect = MYSQLND_METHOD(mysqlnd_plugin_conn, connect);
-}
-]]>
-
-
-
-
-
- Tâche d'analyse : depuis C vers l'espace utilisateur
-
-
-
-
-
- Process:
-
-
-
-
- PHP : l'utilisateur enregistre une fonction de rappel pour le plugin
-
-
-
-
- PHP : l'utilisateur appelle une méthode de l'API PHP MySQL pour se connecter à MySQL
-
-
-
-
- C : ext/*mysql* appelle la méthode mysqlnd
-
-
-
-
- C : mysqlnd se termine dans ext/mysqlnd_plugin
-
-
-
-
- C : ext/mysqlnd_plugin
-
-
-
- Appel de la fonction de rappel de l'espace utilisateur
-
-
-
-
- Ou la méthode originale mysqlnd, si l'espace
- utilisateur n'a pas défini de fonction de rappel
-
-
-
-
-
-
-
- Vous devez effectuer les opérations suivantes :
-
-
-
-
- Écrire une classe "mysqlnd_plugin_connection" en C
-
-
-
-
- Accepter et enregistrer l'objet proxy via
- "mysqlnd_plugin_set_conn_proxy()"
-
-
-
-
- Appeler les méthodes de proxy de l'espace utilisateur
- depuis C (optimisation - zend_interfaces.h)
-
-
-
-
- Les méthodes de l'objet de l'espace utilisateur peuvent soit être
- appelées en utilisant call_user_function(),
- soit vous pouvez opérer à un niveau en dessous du moteur Zend et
- utiliser zend_call_method().
-
-
- Optimisation : appel des méthodes depuis C en utilisant
- zend_call_method
-
-
- Le code suivant montre un prototype pour la fonction
- zend_call_method, issue de
- zend_interfaces.h.
-
-
-
-
-
- L'API Zend supporte 2 arguments. Vous pouvez en avoir besoin de plus, par
- exemple :
-
-
-
-
-
- Pour contourner ce problème, vous devrez faire une copie
- de zend_call_method() et ajouter une
- fonctionnalité pour ajouter des paramètres. Vous pouvez
- réaliser ceci en créant un jeu de macros
- MY_ZEND_CALL_METHOD_WRAPPER.
-
-
- Appel de l'espace utilisateur PHP
-
-
- Le code ci-dessous montre la méthode optimisée pour effectuer un
- appel à une fonction de l'espace utilisateur depuis C :
-
-
-
-
-
- Appel de l'espace utilisateur: arguments simples
-
-
-
-
-
- Appel de l'espace utilisateur : structures comme arguments
-
-
-
-
-
- Le premier argument de toutes les méthodes mysqlnd
- est un objet C. Par exemple, le premier argument de la méthode
- connect() est un pointeur vers MYSQLND.
- La structure MYSQLND représente un objet de connexion
- mysqlnd.
-
-
- Le pointeur de l'objet de connexion mysqlnd
- peut être comparé à un pointeur de fichier standard I/O.
- Tout comme un pointeur de fichier standard I/O, un objet de
- connexion mysqlnd doit être lié à l'espace
- utilisateur en utilisant une variable PHP de type ressource.
-
-
- Depuis C vers l'espace utilisateur, puis, retour
-
-
-
-
-
- Les utilisateurs PHP doivent pouvoir appeler l'implémentation
- du parent d'une méthode écrasée.
-
-
- Comme résultat d'un sous-classement, il est possible de
- redéfinir uniquement les méthodes sélectionnées, et vous
- pouvez choisir d'avoir des actions "pre" ou "post".
-
-
- Construction d'une classe : mysqlnd_plugin_connection::connect()
-
-
-
-
-
-
-
+
+
+
+
+ API du plugin du driver natif MySQL
+
+ L'API du plugin du driver natif MySQL est une fonctionnalité
+ du driver natif MySQL, ou mysqlnd.
+ Le plugin Mysqlnd opère sur la couche entre
+ les applications PHP et le serveur MySQL. Il est comparable
+ à un proxy MySQL. Un proxy MySQL opère sur une couche entre toutes
+ les applications clientes MySQL, par exemple, une application PHP
+ et un serveur MySQL. Le plugin Mysqlnd
+ peut entreprendre des tâches typiques de proxy MySQL comme
+ l'équilibrage de charge, ainsi que le suivi et l'optimisation
+ des performances. En raison d'une architecture et d'une localisation
+ différente, le plugin mysqlnd n'a pas tous les
+ inconvénients d'un proxy MySQL. Par exemple, avec le plugin, il
+ n'y a pas qu'un seul point d'échec, pas de serveur de proxy dédié
+ à déployer, et pas de nouveau langage à apprendre (Lua).
+
+
+ Un plugin mysqlnd peut être exécuté comme une extension
+ à mysqlnd. Un plugin peut intercepter la majorité des
+ fonctions mysqlnd. Les fonctions mysqlnd
+ sont appelées par l'extension PHP MySQL comme
+ ext/mysql, ext/mysqli, et
+ PDO_MYSQL. Comme résultat, il est possible pour un
+ plugin mysqlnd d'intercepter tous les appels effectués
+ par ces extensions depuis une application cliente.
+
+
+ Les appels aux fonctions internes mysqlnd peuvent
+ également être interceptés ou remplacés. Il n'y a aucune restriction
+ sur la manipulation des tables de fonctions internes mysqlnd.
+ Il est possible de définir des actions pour faire que lorsque
+ certaines fonctions mysqlnd sont appelées
+ par l'extension qui utilise mysqlnd, l'appel
+ est redirigé vers la fonction appropriée du plugin
+ mysqlnd. La possibilité de manipuler les tables
+ de fonctions internes mysqlnd dans ce sens permet
+ un maximum de flexibilité.
+
+
+ Le plugin Mysqlnd est en faite, une extension PHP,
+ écrit en C, qui utilise l'API du plugin mysqlnd
+ (qui est compilé dans le driver natif MySQL, mysqlnd).
+ Le plugin peut être à 100% transparent pour les applications PHP. Aucune
+ modification aux applications n'est nécessaire car le plugin opère
+ sur une couche différente. Le plugin mysqlnd
+ peut être utilisé dans une couche en dessous de mysqlnd.
+
+
+ La liste suivante représente quelques applications possibles
+ du plugin mysqlnd.
+
+
+
+
+ L'équilibrage de charge.
+
+
+
+
+ Séparation des lectures et des écritures. Un exemple de cette fonctionnalité
+ est l'extension PECL/mysqlnd_ms (Maître/esclave). Cette extension sépare
+ les requêtes de lecture et d'écriture pour une configuration de réplication.
+
+
+
+
+ Basculement
+
+
+
+
+ Round-Robin, le moins chargé
+
+
+
+
+
+
+ Surveillance
+
+
+
+
+ Journalisation des requêtes
+
+
+
+
+ Analyse de requêtes
+
+
+
+
+ Audite de requêtes. Un exemple de ceci est l'extension
+ PECL/mysqlnd_sip (SQL Injection Protection). Cette extension
+ inspecte les requêtes et exécute uniquement celles qui sont
+ autorisées suivants des ensembles de règles.
+
+
+
+
+
+
+ Performance
+
+
+
+
+ La mise en cache. Un exemple de ceci est l'extension
+ PECL/mysqlnd_qc (Query Cache).
+
+
+
+
+ Étranglement
+
+
+
+
+ Fragmentation. Un exemple de ceci est l'extension
+ PECL/mysqlnd_mc (Multi Connect). Cette extension tente
+ de séparer une requête SELECT en n parties, en utilisant
+ des requêtes du type SELECT ... LIMIT part_1, SELECT LIMIT part_n.
+ L'extension envoie les requêtes à des serveurs MySQL distincts
+ et fusionne ensuite le résultat à destination du client.
+
+
+
+
+
+
+ PLugins du driver natif MySQL disponibles
+
+
+ Il y a déjà plusieurs plugins mysqlnd de disponible.
+
+
+
+
+ PECL/mysqlnd_mc -Plugin Multi Connexion.
+
+
+
+
+ PECL/mysqlnd_ms - Plugin Maître Esclave.
+
+
+
+
+ PECL/mysqlnd_qc - Plugin de mise en cache de requêtes.
+
+
+
+
+ PECL/mysqlnd_pscache - Plugin de mise en cache de gestionnaire
+ de requêtes préparées.
+
+
+
+
+ PECL/mysqlnd_sip - Plugin permettant la protection
+ contre les injections SQL.
+
+
+
+
+ PECL/mysqlnd_uh - Plugin de gestionnaire d'utilisateurs.
+
+
+
+
+ Comparaison des plugins mysqlnd avec proxy MySQL
+
+ Les plugins Mysqlnd et le proxy MySQL sont
+ des technologies différentes utilisant différentes approches.
+ Les deux sont des outils valides pour résoudre bon nombre
+ de tâches classiques, comme l'équilibrage de charge, la surveillance,
+ et l'amélioration des performances. Une importante différence est
+ que le proxy MySQL fonctionne avec tous les clients MySQL alors que
+ les plugins mysqlnd sont spécifiques aux
+ applications PHP.
+
+
+ Comme une extension PHP, un plugin mysqlnd
+ doit être installé sur le serveur d'applications PHP, en plus du
+ reste de PHP. Un proxy MySQL peut soit fonctionner sur le serveur
+ d'applications PHP, soit être installé sur une machine dédiée pour
+ gérer plusieurs serveurs d'applications PHP.
+
+
+ Le déploiement d'un proxy MySQL sur un serveur d'applications
+ a 2 avantages :
+
+
+
+
+ Pas un seul point d'échec
+
+
+
+
+ Facile à redimensionner (redimensionnement horizontal,
+ redimensionnement par le client)
+
+
+
+
+ Un proxy MySQL (et les plugins mysqlnd) peut
+ résoudre des problèmes facilement, qui sinon, auraient dû nécessiter
+ des modifications aux applications existantes.
+
+
+ Cependant, un proxy MySQL a quelques désavantages :
+
+
+
+
+ Un proxy MySQL est un nouveau composant, une nouvelle technologie à
+ appliquer au maître et à déployer.
+
+
+
+
+ Un proxy MySQL nécessite la connaissance du langage de script Lua.
+
+
+
+
+ Un proxy MySQL peut être personnalisé en utilisant les langages de
+ programmation C et Lua. Lua est le langage préféré pour un proxy MySQL.
+ Pour la plupart des experts PHP, Lua est un nouveau langage à apprendre.
+ Un plugin mysqlnd peut être écrit en C. Il est également
+ possible d'écrire un plugin en PHP en utilisant
+ PECL/mysqlnd_uh.
+
+
+ Un proxy MySQL fonctionne comme un démon - un processus en arrière-plan.
+ Un proxy MySQL peut rappeler des décisions prises antérieurement,
+ vu que tous les états peuvent être conservés. Cependant, un plugin
+ mysqlnd est lié au cycle de vie d'une requête PHP.
+ Un proxy MySQL peut également partager des résultats calculés une seule fois
+ sur plusieurs serveurs d'applications. Un plugin mysqlnd
+ peut donc avoir besoin de stocker des données dans un médium persistant.
+ Un autre démon peut être utilisé dans ce but, comme par exemple,
+ Memcache. Ce mécanisme donne un avantage au proxy MySQL.
+
+
+ Un proxy MySQL fonctionne au-dessus de la couche physique. Avec un
+ proxy MySQL, vous devez analyser et effectuer du "reverse engineering"
+ du protocole client serveur MySQL. Les actions sont limitées à celles
+ qui peuvent être effectuées par la manipulation du protocole
+ de communication. Si la couche physique change (ce qui arrive très rarement),
+ les scripts du proxy MySQL peut devoir être adaptés.
+
+
+ Les plugins Mysqlnd fonctionnent au-dessus de l'API C,
+ reflétant ainsi les APIs client libmysqlclient.
+ Cette API C est essentiellement une enveloppe du protocole Serveur Client MySQL,
+ ou de la couche physique, vu qu'elle est appelée quelques fois. Vous pouvez
+ intercepter tous les appels à l'API C. PHP utilise l'API C, toutefois,
+ vous pouvez connecter tous les appels PHP, sans avoir besoin de programmer
+ au niveau de la couche physique.
+
+
+ Mysqlnd implémente la couche physique. Les plugins
+ peuvent toutefois analyser, effectuer un "reverse engineering", manipuler
+ et toujours remplacer le protocole de communication. Cependant, ce n'est
+ généralement pas nécessaire.
+
+
+ Vu que les plugins vous autorisent à créer des implémentations qui
+ utilisent les 2 niveaux (API C et couche physique), ils ont plus de flexibilité
+ que le proxy MySQL. Si un plugin mysqlnd est implémenté
+ en utilisant l'API C, toutes les modifications ultérieures à la couche
+ physique ne nécessiteront pas de modification au plugin en tant que tel.
+
+
+
+ Obtenir l'API du plugin mysqlnd
+
+ L'API du plugin mysqlnd est simplement une partie
+ de l'extension du driver PHP Natif MySQL, ext/mysqlnd.
+ Le développement de l'API du plugin mysqlnd commença
+ en Décembre 2009. Il est développé comme une partie du dépôt source de PHP,
+ et ainsi, est disponible depuis soit le dépôt public Git, soit depuis
+ le téléchargement des sources.
+
+
+ Les développeurs de plugin peuvent déterminer la version de
+ mysqlnd via la variable
+ MYSQLND_VERSION,
+ au format mysqlnd 8.3.17,
+ ou via MYSQLND_VERSION_ID, qui est un entier
+ comme par exemple 50007. Les développeurs peuvent calculer le numéro
+ de version comme ceci :
+
+
+
+ Lors du développement, les développeurs doivent se référer
+ au numéro de version mysqlnd pour des tests
+ de compatibilité et de version, sachant que plusieurs
+ versions de mysqlnd peuvent survenir durant
+ un cycle de vie de la branche de développement de PHP.
+
+
+
+ Architecture du plugin du driver natif
+
+ Cette section fournit un aperçu de l'architecture du plugin
+ mysqlnd.
+
+
+ Aperçu du driver natif MySQL
+
+
+ Avant de développer des plugins mysqlnd,
+ il est utile d'avoir une connaissance minimale sur l'organisation
+ de mysqlnd. Mysqlnd est composé
+ des modules suivants :
+
+
+ Schéma de l'organisation mysqlnd, par module
+
+
+
+ Modules de statistiques
+ mysqlnd_statistics.c
+
+
+
+
+ Connexion
+ mysqlnd.c
+
+
+ Jeu de résultats
+ mysqlnd_result.c
+
+
+ Données méta du jeu de résultats
+ mysqlnd_result_meta.c
+
+
+ Requête
+ mysqlnd_ps.c
+
+
+ Réseau
+ mysqlnd_net.c
+
+
+ Couche physique
+ mysqlnd_wireprotocol.c
+
+
+
+
+
+ Objet C orienté paradigme
+
+
+ Au niveau du code, mysqlnd utilise un masque C
+ pour implémenter l'orientation de l'objet.
+
+
+ En C, vous utilisez une structure (struct)
+ pour représenter un objet. Les membres de cette structure
+ représentent les propriétés de l'objet. Les membres de la
+ structure pointant vers des fonctions représentent les méthodes.
+
+
+ Contrairement aux autres langages comme C++ ou Java, il n'y a
+ pas de règles fixes sur l'héritage dans les objets C orientés paradigme.
+ Cependant, il y a quelques conventions qui doivent être suivies
+ qui seront abordées ultérieurement.
+
+
+ Le cycle de vie PHP
+
+
+ Le cycle de vie de PHP comporte 2 cycles basiques :
+
+
+
+
+ Le cycle de démarrage et d'arrêt du moteur PHP
+
+
+
+
+ Le cycle d'une demande
+
+
+
+
+ Lorsque le moteur PHP démarre, il appelle la fonction d'initialisation
+ du module (MINIT) de chaque extension enregistrée. Ceci
+ permet à chaque module de définir les variables et d'allouer les
+ ressources qui doivent exister pour la durée de vie du processus
+ correspondant au moteur PHP. Lorsque le moteur PHP s'arrête,
+ il appelle la fonction d'arrêt du module (MSHUTDOWN) pour chaque extension.
+
+
+ Pendant la durée de vie du moteur PHP, il recevra des demandes.
+ Chaque demande constitue un autre cycle de vie. Pour chaque
+ requête, le moteur PHP appellera la fonction d'initialisation
+ de chaque extension. L'extension peut effectuer toutes les définitions
+ de variables ainsi que les allocations de ressources nécessaires pour
+ traiter la demande. Lorsque le cycle de la demande se termine, le moteur
+ appelle la fonction d'arrêt (RSHUTDOWN) pour chaque extension,
+ ainsi, l'extension peut lancer tout le nettoyage nécessaire.
+
+
+ Comment fonctionne un plugin
+
+
+ Un plugin mysqlnd fonctionne en interceptant les appels
+ effectués à mysqlnd par les extensions qui utilisent
+ mysqlnd. Ceci est possible en obtenant la table
+ de fonction mysqlnd, en la sauvegardant, et en la
+ remplaçant par une table de fonction personnalisé, qui appelle les fonctions
+ du plugin.
+
+
+ Le code suivant montre la façon dont la table de fonction
+ mysqlnd est remplacée :
+
+
+query = MYSQLND_METHOD(my_conn_class, query);
+}
+]]>
+
+
+ Les manipulations de la table de fonction de connexion doivent
+ être effectuées lors de l'initialisation du module (MINIT).
+ La table de fonction est une ressource globale partagée. Dans
+ un environnement multithread, avec une compilation TSRM, la
+ manipulation d'une ressource globale partagée lors d'un processus
+ de demande entraînera la plupart du temps des conflits.
+
+
+
+ N'utilisez aucune logique de taille fixe lors de la manipulation
+ de la table de fonction mysqlnd : les nouvelles
+ méthodes peuvent être ajoutées à la fin de la table de fonction.
+ La table de fonction peut être modifiée à tout moment par la suite.
+
+
+
+ Appel des méthodes parents
+
+
+ Si la table de fonction originale est sauvegardée, il est toujours
+ possible d'appeler les entrées de la table de fonction originale -
+ les méthodes parents.
+
+
+ Dans ce cas, tout comme pour Connection::stmt_init(),
+ il est vital d'appeler la méthode parent avant toute autre activité
+ dans la méthode dérivée.
+
+
+
+
+
+ Étendre des propriétés
+
+
+ Un objet mysqlnd est représenté par une structure C.
+ Il n'est pas possible d'ajouter un membre à une structure C au moment
+ de l'exécution. Les utilisateurs d'objets mysqlnd
+ ne peuvent pas ajouter simplement des propriétés aux objets.
+
+
+ Les données arbitraires (propriétés) peuvent être ajoutées aux objets
+ mysqlnd en utilisant une fonction appropriée de la
+ famille mysqlnd_plugin_get_plugin_<object>_data().
+ Lors de l'allocation d'un objet, mysqlnd réserve
+ un espace à la fin de l'objet pour accueillir un pointeur
+ void * vers des données arbitraires.
+ mysqlnd réserve un espace pour un pointeur
+ void * par plugin.
+
+
+ La table suivante montre comment calculer la position d'un pointeur
+ pour un plugin spécifique :
+
+
+ Calcul des pointeurs pour mysqlnd
+
+
+
+ Adresse mémoire
+ Contenus
+
+
+
+
+ 0
+ Début de la structure C de l'objet mysqlnd
+
+
+ n
+ Fin de la structure C de l'objet mysqlnd
+
+
+ n + (m x sizeof(void*))
+ void* vers les données de l'objet du m-ème plugin
+
+
+
+
+
+ Si vous prévoyez de faire des sous-classes des constructeurs
+ des objets mysqlnd, ce qui est autorisé,
+ vous devez conserver ceci en mémoire !
+
+
+ Le code suivant montre la façon dont on étend des propriétés :
+
+
+persistent);
+ (*props)->query_counter = 0;
+ }
+ return props;
+}
+]]>
+
+
+ Le développeur du plugin est responsable de la gestion de la mémoire
+ associée aux données du plugin.
+
+
+ L'utilisation de l'allocateur de mémoire mysqlnd
+ est recommandée pour les données du plugin. Ces fonctions sont nommées
+ en utilisant la convention suivante : mnd_*loc().
+ L'allocateur mysqlnd a quelques fonctionnalités bien utiles,
+ comme la possibilité d'utiliser un allocateur de débogage dans une compilation
+ non-débogue.
+
+
+ Quand et comment faire une sous-classe
+
+
+
+
+ Quand faire une sous-classe ?
+ Est-ce que chaque instance a sa table de fonction privée ?
+ Comment faire une sous-classe ?
+
+
+
+
+ Connexion (MYSQLND)
+ MINIT
+ Non
+ mysqlnd_conn_get_methods()
+
+
+ Jeu de résultats (MYSQLND_RES)
+ MINIT ou après
+ Oui
+ mysqlnd_result_get_methods() ou méthode de l'objet de manipulation de la table de fonction
+
+
+ Méta du jeu de résultats (MYSQLND_RES_METADATA)
+ MINIT
+ Non
+ mysqlnd_result_metadata_get_methods()
+
+
+ Requête (MYSQLND_STMT)
+ MINIT
+ Non
+ mysqlnd_stmt_get_methods()
+
+
+ Réseau (MYSQLND_NET)
+ MINIT ou après
+ Oui
+ mysqlnd_net_get_methods() ou méthode de l'objet de manipulation de la table de fonction
+
+
+ Couche physique (MYSQLND_PROTOCOL)
+ MINIT ou après
+ Oui
+ mysqlnd_protocol_get_methods() ou méthode de l'objet de manipulation de la table de fonction
+
+
+
+
+
+ Vous ne devez pas manipuler les tables de fonction après MINIT si
+ ce n'est pas autorisé suivant la table ci-dessus.
+
+
+ Quelques classes contiennent un pointeur vers une méthode de la table
+ de fonction. Toutes les instances d'une telle classe partageront
+ la même table de fonction. Pour éviter le chaos, en particulier
+ dans les environnements threadés, ce genre de tables de fonction
+ ne doit être manipulé que lors du MINIT.
+
+
+ Les autres classes utilisent une copie de la table de fonction
+ globale partagée. Cette copie est créée en même temps que l'objet.
+ Chaque objet utilise sa propre table de fonction. Ceci vous donne
+ 2 options : vous pouvez manipuler la table de fonction par défaut
+ d'un objet au moment du MINIT, et vous pouvez aussi affiner des
+ méthodes d'un objet sans impacter les autres instances de la même
+ classe.
+
+
+ L'avantage de l'approche avec une table de fonction partagée est
+ la performance. Il n'est pas nécessaire de copier une table de fonction
+ pour chaque objet.
+
+
+ Statut du constructeur
+
+
+
+ Type
+ Allocation, construction, réinitialisation
+ Peut-être modifié ?
+ Appelant
+
+
+
+
+ Connexion (MYSQLND)
+ mysqlnd_init()
+ Non
+ mysqlnd_connect()
+
+
+ Jeu de résultats(MYSQLND_RES)
+
+ Allocation :
+
+
+
+
+ Connection::result_init()
+
+
+
+
+ Reset et ré-initialisation lors de :
+
+
+
+
+ Result::use_result()
+
+
+
+
+ Result::store_result
+
+
+
+ Oui, mais appel du parent !
+
+
+
+ Connection::list_fields()
+
+
+
+
+ Statement::get_result()
+
+
+
+
+ Statement::prepare() (Méta-données uniquement)
+
+
+
+
+ Statement::resultMetaData()
+
+
+
+
+
+ Méta du jeu de résultats (MYSQLND_RES_METADATA)
+ Connection::result_meta_init()
+ Oui, mais appel du parent !
+ Result::read_result_metadata()
+
+
+ Statement (MYSQLND_STMT)
+ Connection::stmt_init()
+ Oui, mais appel du parent !
+ Connection::stmt_init()
+
+
+ Réseau (MYSQLND_NET)
+ mysqlnd_net_init()
+ Non
+ Connection::init()
+
+
+ Couche physique (MYSQLND_PROTOCOL)
+ mysqlnd_protocol_init()
+ Non
+ Connection::init()
+
+
+
+
+
+ Il est vivement recommandé de ne pas remplacer entièrement un constructeur.
+ Les constructeurs effectuent les allocations mémoires. Les allocations
+ mémoires sont vitales pour l'API du plugin mysqlnd
+ ainsi que pour la logique de l'objet mysqlnd. Si
+ vous ne vous souciez pas des alertes et que vous insistez pour
+ remplacer les constructeurs, vous devriez au moins appeler
+ le constructeur parent avant de faire quoi que ce soit dans votre
+ constructeur.
+
+
+ Au niveau de toutes les alertes, il peut être utile de faire des
+ sous-classes des constructeurs. Les constructeurs sont les endroits
+ parfaits pour modifier les tables de fonction des objets avec les
+ tables d'objets non partagés, comme les jeux de résultats, le
+ réseau ou encore la couche physique.
+
+
+ Statut du destructeur
+
+
+
+ Type
+ La méthode dérivée doit appeler le parent ?
+ Destructeur
+
+
+
+
+ Connexion
+ oui, après l'exécution de la méthode
+ free_contents(), end_psession()
+
+
+ Jeu de résultats
+ oui, après l'exécution de la méthode
+ free_result()
+
+
+ Méta du jeu de résultats
+ oui, après l'exécution de la méthode
+ free()
+
+
+ Requête
+ oui, après l'exécution de la méthode
+ dtor(), free_stmt_content()
+
+
+ Réseau
+ oui, après l'exécution de la méthode
+ free()
+
+
+ Couche physique
+ oui, après l'exécution de la méthode
+ free()
+
+
+
+
+
+ Les destructeurs sont les endroits parfaits pour libérer les propriétés,
+ mysqlnd_plugin_get_plugin_<object>_data().
+
+
+ Les destructeurs listés peuvent ne pas être les équivalents aux
+ méthodes actuelles mysqlnd libérant l'objet lui-même.
+ Cependant, ils sont les meilleurs endroits pour vous pour libérer
+ les données de votre plugin. Tout comme les constructeurs, vous
+ pouvez remplacer les méthodes entières mais ce n'est pas recommandé.
+ Si plusieurs méthodes sont listées dans la table ci-dessus, vous devez
+ modifier toutes les méthodes listées et libérer les données de votre
+ plugin dans la méthode appelée en premier par mysqlnd.
+
+
+ La méthode recommandée pour les plugins est de modifier simplement les méthodes,
+ libérer votre mémoire et appeler l'implémentation du parent immédiatement après.
+
+
+
+ L'API du plugin mysqlnd
+
+ Voici la liste des fonctions fournies dans l'API plugin
+ mysqlnd :
+
+
+
+
+ mysqlnd_plugin_register()
+
+
+
+
+ mysqlnd_plugin_count()
+
+
+
+
+ mysqlnd_plugin_get_plugin_connection_data()
+
+
+
+
+ mysqlnd_plugin_get_plugin_result_data()
+
+
+
+
+ mysqlnd_plugin_get_plugin_stmt_data()
+
+
+
+
+ mysqlnd_plugin_get_plugin_net_data()
+
+
+
+
+ mysqlnd_plugin_get_plugin_protocol_data()
+
+
+
+
+ mysqlnd_conn_get_methods()
+
+
+
+
+ mysqlnd_result_get_methods()
+
+
+
+
+ mysqlnd_result_meta_get_methods()
+
+
+
+
+ mysqlnd_stmt_get_methods()
+
+
+
+
+ mysqlnd_net_get_methods()
+
+
+
+
+ mysqlnd_protocol_get_methods()
+
+
+
+
+ Il n'y a pas de définition formelle de ce qu'est un plugin
+ ainsi de la façon dont fonctionne un plugin.
+
+
+ Les composants les plus souvent trouvés dans les mécanismes de plugin sont :
+
+
+
+
+ Un gestionnaire de plugin
+
+
+
+
+ Une API du plugin
+
+
+
+
+ Les services applicatifs (ou modules)
+
+
+
+
+ Les APIs des services applicatifs (ou APIs du module)
+
+
+
+
+ Le concept d'un plugin mysqlnd utilise ces fonctionnalités,
+ ainsi que d'autres joyeusetés d'architecture ouverte.
+
+
+ Aucune restriction
+
+
+ Un plugin a un accès total aux travaux internes de
+ mysqlnd. Il n'y a aucune limite de sécurité
+ ou de restrictions. Tout peut être écrasé pour implémenter des
+ algorithmes utiles ou hostiles. Il est recommandé de ne déployer
+ que des plugins depuis des sources de confiance.
+
+
+ Tel que discuté précédemment, les plugins peuvent utiliser librement
+ des pointeurs. Ces pointeurs ne sont restreints en aucune manière,
+ aussi, vous pouvez pointer vers les données d'un autre plugin.
+ Une simple position arithmétique peut être utilisée pour lire
+ les données d'un autre plugin.
+
+
+ Il est recommandé d'écrire des plugins coopératifs, et ainsi, appeler
+ toujours la méthode parent. Les plugins devraient toujours coopérer avec
+ mysqlnd.
+
+
+
+ Dans ce scénario, un plugin cache (ext/mysqlnd_cache) et
+ un plugin de surveillance (ext/mysqlnd_monitor)
+ sont chargés. Les 2 ont une sous-classe de Connection::query().
+ L'enregistrement du plugin survient lors du MINIT
+ en utilisant la logique évoquée précédemment. PHP appelle les extensions
+ dans un ordre alphabétique par défaut. Les plugins ne sont pas au courant
+ les uns les autres et ne peuvent fixer de dépendances.
+
+
+ Par défaut, les plugins appellent l'implémentation du parent de la
+ méthode de requête dans leur version de la méthode dérivée.
+
+
+ Récapitulatif de l'extension PHP
+
+
+ Voici un récapitulatif de ce qui survient lors de l'utilisation
+ d'un plugin d'exemple, ext/mysqlnd_plugin,
+ qui expose l'API C du plugin mysqlnd à PHP :
+
+
+
+
+ Toutes les applications PHP MySQL tente d'établir une connexion
+ à l'adresse 192.168.2.29
+
+
+
+
+ L'application PHP utilisera ext/mysql,
+ ext/mysqli ou PDO_MYSQL.
+ Ces 3 extensions PHP MySQL utilisent mysqlnd pour
+ établir la connexion à l'adresse 192.168.2.29.
+
+
+
+
+ Mysqlnd appelle sa méthode de connexion, qui a été sous-classée
+ par ext/mysqlnd_plugin.
+
+
+
+
+ ext/mysqlnd_plugin appelle la méthode de l'espace utilisateur
+ proxy::connect() enregistrée par l'utilisateur.
+
+
+
+
+ L'espace utilisateur modifie l'hôte de connexion de 192.168.2.29
+ à 127.0.0.1 et retourne la connexion établie par
+ parent::connect().
+
+
+
+
+ ext/mysqlnd_plugin exécute l'équivalent de
+ parent::connect(127.0.0.1) en appelant la méthode
+ originale de mysqlnd pour établir une connexion.
+
+
+
+
+ ext/mysqlnd établit une connexion et redonne la main
+ à ext/mysqlnd_plugin.
+ ext/mysqlnd_plugin retourne également.
+
+
+
+
+ Quelle que soit l'extension PHP MySQL utilisée par l'application,
+ elle reçoit une connexion à 127.0.0.1. L'extension PHP MySQL
+ redonne la main à l'application PHP. Le cycle est clos.
+
+
+
+
+
+ Bien commencer la compilation d'un plugin mysqlnd
+
+ Il est important de se souvenir qu'un plugin mysqlnd
+ est lui-même une extension PHP.
+
+
+ Le code suivant montre la structure basique d'une fonction MINIT
+ utilisée dans un plugin typique mysqlnd :
+
+
+query = MYSQLND_METHOD(mysqlnd_plugin_conn, query);
+ conn_m->connect = MYSQLND_METHOD(mysqlnd_plugin_conn, connect);
+}
+]]>
+
+
+
+
+
+ Tâche d'analyse : depuis C vers l'espace utilisateur
+
+
+
+
+
+ Process:
+
+
+
+
+ PHP : l'utilisateur enregistre une fonction de rappel pour le plugin
+
+
+
+
+ PHP : l'utilisateur appelle une méthode de l'API PHP MySQL pour se connecter à MySQL
+
+
+
+
+ C : ext/*mysql* appelle la méthode mysqlnd
+
+
+
+
+ C : mysqlnd se termine dans ext/mysqlnd_plugin
+
+
+
+
+ C : ext/mysqlnd_plugin
+
+
+
+ Appel de la fonction de rappel de l'espace utilisateur
+
+
+
+
+ Ou la méthode originale mysqlnd, si l'espace
+ utilisateur n'a pas défini de fonction de rappel
+
+
+
+
+
+
+
+ Vous devez effectuer les opérations suivantes :
+
+
+
+
+ Écrire une classe "mysqlnd_plugin_connection" en C
+
+
+
+
+ Accepter et enregistrer l'objet proxy via
+ "mysqlnd_plugin_set_conn_proxy()"
+
+
+
+
+ Appeler les méthodes de proxy de l'espace utilisateur
+ depuis C (optimisation - zend_interfaces.h)
+
+
+
+
+ Les méthodes de l'objet de l'espace utilisateur peuvent soit être
+ appelées en utilisant call_user_function(),
+ soit vous pouvez opérer à un niveau en dessous du moteur Zend et
+ utiliser zend_call_method().
+
+
+ Optimisation : appel des méthodes depuis C en utilisant
+ zend_call_method
+
+
+ Le code suivant montre un prototype pour la fonction
+ zend_call_method, issue de
+ zend_interfaces.h.
+
+
+
+
+
+ L'API Zend supporte 2 arguments. Vous pouvez en avoir besoin de plus, par
+ exemple :
+
+
+
+
+
+ Pour contourner ce problème, vous devrez faire une copie
+ de zend_call_method() et ajouter une
+ fonctionnalité pour ajouter des paramètres. Vous pouvez
+ réaliser ceci en créant un jeu de macros
+ MY_ZEND_CALL_METHOD_WRAPPER.
+
+
+ Appel de l'espace utilisateur PHP
+
+
+ Le code ci-dessous montre la méthode optimisée pour effectuer un
+ appel à une fonction de l'espace utilisateur depuis C :
+
+
+
+
+
+ Appel de l'espace utilisateur: arguments simples
+
+
+
+
+
+ Appel de l'espace utilisateur : structures comme arguments
+
+
+
+
+
+ Le premier argument de toutes les méthodes mysqlnd
+ est un objet C. Par exemple, le premier argument de la méthode
+ connect() est un pointeur vers MYSQLND.
+ La structure MYSQLND représente un objet de connexion
+ mysqlnd.
+
+
+ Le pointeur de l'objet de connexion mysqlnd
+ peut être comparé à un pointeur de fichier standard I/O.
+ Tout comme un pointeur de fichier standard I/O, un objet de
+ connexion mysqlnd doit être lié à l'espace
+ utilisateur en utilisant une variable PHP de type ressource.
+
+
+ Depuis C vers l'espace utilisateur, puis, retour
+
+
+
+
+
+ Les utilisateurs PHP doivent pouvoir appeler l'implémentation
+ du parent d'une méthode écrasée.
+
+
+ Comme résultat d'un sous-classement, il est possible de
+ redéfinir uniquement les méthodes sélectionnées, et vous
+ pouvez choisir d'avoir des actions "pre" ou "post".
+
+
+ Construction d'une classe : mysqlnd_plugin_connection::connect()
+
+
+
+
+
+
+
diff --git a/reference/oci8/functions/oci-get-implicit-resultset.xml b/reference/oci8/functions/oci-get-implicit-resultset.xml
index 4ee0fde652..f56b9f940e 100644
--- a/reference/oci8/functions/oci-get-implicit-resultset.xml
+++ b/reference/oci8/functions/oci-get-implicit-resultset.xml
@@ -48,7 +48,7 @@
Un identifiant de requête OCI8 valide créé par la fonction
oci_parse et exécutée par la fonction
- oci_execute. L'identifiant de requête
+ oci_execute. L'identifiant de requête
peut ou non être associé avec une requête OCI8 qui retourne
des jeux de résultats implicites.
diff --git a/reference/oci8/functions/oci-set-prefetch-lob.xml b/reference/oci8/functions/oci-set-prefetch-lob.xml
index ac3f627a33..36f3ccb6ee 100644
--- a/reference/oci8/functions/oci-set-prefetch-lob.xml
+++ b/reference/oci8/functions/oci-set-prefetch-lob.xml
@@ -18,9 +18,9 @@
Définit la taille du tampon interne utilisé pour récupérer chaque valeur CLOB ou BLOB lorsque
l'implémentation récupère le localisateur LOB Oracle interne de la base de données après
un appel de requête réussi à oci_execute et pour chaque
- demande de récupération interne ultérieure à la base de données. Augmenter cette valeur
+ demande de récupération interne ultérieure à la base de données. Augmenter cette valeur
peut améliorer les performances de récupération des LOB plus petits en réduisant les allers-retours
- entre PHP et la base de données. L'utilisation de la mémoire changera.
+ entre PHP et la base de données. L'utilisation de la mémoire changera.
Cette valeur affecte les LOB retournés sous forme d'instances OCILob et également ceux retournés
@@ -28,7 +28,7 @@
Appeler oci_set_prefetch_lob avant d'appeler
- oci_execute. Si ce n'est pas fait, la valeur
+ oci_execute. Si ce n'est pas fait, la valeur
de oci8.prefetch_lob_size
est utilisée.
diff --git a/reference/oci8/ocilob/saveFile.xml b/reference/oci8/ocilob/saveFile.xml
index 41731c6d26..83b35dd3d2 100644
--- a/reference/oci8/ocilob/saveFile.xml
+++ b/reference/oci8/ocilob/saveFile.xml
@@ -11,7 +11,7 @@
&reftitle.description;
- &info.function.alias; OCILob::import.
+ &info.function.alias; OCILob::import.
diff --git a/reference/oci8/setup.xml b/reference/oci8/setup.xml
index 5e20194247..b387e2f4e4 100644
--- a/reference/oci8/setup.xml
+++ b/reference/oci8/setup.xml
@@ -1,91 +1,91 @@
-
-
-
-
-
-
- &reftitle.setup;
-
-
-
- &reftitle.required;
-
- OCI8 3.0 est incluse avec PHP 8. Elle est également disponible depuis
- &link.pecl;. Pour PHP 7, utilisez OCI8 2.2 depuis &link.pecl;.
- OCI8 requiert Oracle 10g
- ou bibliothèques cliente ultérieures.
-
-
- Si la base de données Oracle est sur la même machine que PHP, le logiciel
- de base de données contient déjà les bibliothèques et en-têtes nécessaires.
- Lorsque PHP est sur une machine différente, utilisez les bibliothèques gratuites
- Oracle Instant Client.
-
-
- Pour utiliser Oracle Instant Client, installez le fichier
- compressé ZIP Basic ou Basic Light de
- Oracle Instant Client, le paquet RPM, ou le paquet DMG.
- Lors de la compilation de OCI8 depuis le code source, installez aussi le
- SDK de Instant Client.
-
-
- Vous devez exécuter PHP avec la même version ou une version plus récente des
- bibliothèques clients Oracle utilisées pour construire OCI8.
-
-
-
- L'interopérabilité standard du réseau client-serveur d'Oracle permet des
- connexions entre différentes versions de Oracle Client et Oracle Database.
- Pour des configurations certifiées voir la documentation Oracle Support
- ID ID 207303.1. En résumé, Oracle Client 19, 18 et 12.2 peuvent se
- connecter à Oracle Database 11.2 ou supérieur. Oracle Client 12.1 peut se
- connecter à Oracle Database 10.2 ou supérieur. Oracle Client 11.2 peut se
- connecter à Oracle Database 9.2 ou supérieur.
-
-
-
-
- Le support de toutes les fonctionnalités OCI8 n'est disponible que
- lors de l'utilisation des versions les plus récentes des bibliothèques
- clientes Oracle mais aussi de la base de données la plus récente.
-
-
-
-
-
-
- &reference.oci8.configure;
-
-
-
- &reference.oci8.testing;
-
-
-
- &reference.oci8.ini;
-
-
-
-
-
-
-
+
+
+
+
+
+
+ &reftitle.setup;
+
+
+
+ &reftitle.required;
+
+ OCI8 3.0 est incluse avec PHP 8. Elle est également disponible depuis
+ &link.pecl;. Pour PHP 7, utilisez OCI8 2.2 depuis &link.pecl;.
+ OCI8 requiert Oracle 10g
+ ou bibliothèques cliente ultérieures.
+
+
+ Si la base de données Oracle est sur la même machine que PHP, le logiciel
+ de base de données contient déjà les bibliothèques et en-têtes nécessaires.
+ Lorsque PHP est sur une machine différente, utilisez les bibliothèques gratuites
+ Oracle Instant Client.
+
+
+ Pour utiliser Oracle Instant Client, installez le fichier
+ compressé ZIP Basic ou Basic Light de
+ Oracle Instant Client, le paquet RPM, ou le paquet DMG.
+ Lors de la compilation de OCI8 depuis le code source, installez aussi le
+ SDK de Instant Client.
+
+
+ Vous devez exécuter PHP avec la même version ou une version plus récente des
+ bibliothèques clients Oracle utilisées pour construire OCI8.
+
+
+
+ L'interopérabilité standard du réseau client-serveur d'Oracle permet des
+ connexions entre différentes versions de Oracle Client et Oracle Database.
+ Pour des configurations certifiées voir la documentation Oracle Support
+ ID ID 207303.1. En résumé, Oracle Client 19, 18 et 12.2 peuvent se
+ connecter à Oracle Database 11.2 ou supérieur. Oracle Client 12.1 peut se
+ connecter à Oracle Database 10.2 ou supérieur. Oracle Client 11.2 peut se
+ connecter à Oracle Database 9.2 ou supérieur.
+
+
+
+
+ Le support de toutes les fonctionnalités OCI8 n'est disponible que
+ lors de l'utilisation des versions les plus récentes des bibliothèques
+ clientes Oracle mais aussi de la base de données la plus récente.
+
+
+
+
+
+
+ &reference.oci8.configure;
+
+
+
+ &reference.oci8.testing;
+
+
+
+ &reference.oci8.ini;
+
+
+
+
+
+
+
diff --git a/reference/opcache/ini.xml b/reference/opcache/ini.xml
index 3b2c21b586..6fb9253123 100644
--- a/reference/opcache/ini.xml
+++ b/reference/opcache/ini.xml
@@ -1,1487 +1,1487 @@
-
-
-
-
- &reftitle.runtime;
- &extension.runtime;
-
-
- Options de configuration d'OPcache
-
-
-
- &Name;
- &Default;
- &Changeable;
- &Changelog;
-
-
-
-
- opcache.enable
- 1
- INI_ALL
-
-
-
- opcache.enable_cli
- 0
- INI_SYSTEM
- Entre PHP 7.1.2 et 7.1.6 inclusivement, la valeur par défaut était de 1
-
-
- opcache.memory_consumption
- "128"
- INI_SYSTEM
-
-
-
- opcache.interned_strings_buffer
- "8"
- INI_SYSTEM
-
-
-
- opcache.max_accelerated_files
- "10000"
- INI_SYSTEM
-
-
-
- opcache.max_wasted_percentage
- "5"
- INI_SYSTEM
-
-
-
- opcache.use_cwd
- 1
- INI_SYSTEM
-
-
-
- opcache.validate_timestamps
- 1
- INI_ALL
-
-
-
- opcache.revalidate_freq
- "2"
- INI_ALL
-
-
-
- opcache.revalidate_path
- 0
- INI_ALL
-
-
-
- opcache.save_comments
- 1
- INI_SYSTEM
-
-
-
- opcache.fast_shutdown
- 0
- INI_SYSTEM
- Supprimé en PHP 7.2.0.
-
-
- opcache.enable_file_override
- 0
- INI_SYSTEM
-
-
-
- opcache.optimization_level
- "0x7FFEBFFF"
- INI_SYSTEM
- Modifié depuis 0x7FFFBFFF en PHP 7.3.0
-
-
- opcache.inherited_hack
- 1
- INI_SYSTEM
- Supprimé en PHP 7.3.0
-
-
- opcache.dups_fix
- 0
- INI_ALL
-
-
-
- opcache.blacklist_filename
- ""
- INI_SYSTEM
-
-
-
- opcache.max_file_size
- 0
- INI_SYSTEM
-
-
-
- opcache.consistency_checks
- 0
- INI_ALL
- >Désactivé à partir de PHP 8.1.18 et 8.2.5. Supprimé à partir de PHP 8.3.0.
-
-
- opcache.force_restart_timeout
- "180"
- INI_SYSTEM
-
-
-
- opcache.error_log
- ""
- INI_SYSTEM
-
-
-
- opcache.log_verbosity_level
- 1
- INI_SYSTEM
-
-
-
- opcache.record_warnings
- 0
- INI_SYSTEM
- Disponible à partir de PHP 8.0.0.
-
-
- opcache.preferred_memory_model
- ""
- INI_SYSTEM
-
-
-
- opcache.protect_memory
- 0
- INI_SYSTEM
-
-
-
- opcache.mmap_base
- &null;
- INI_SYSTEM
-
-
-
- opcache.restrict_api
- ""
- INI_SYSTEM
-
-
-
- opcache.file_update_protection
- "2"
- INI_ALL
-
-
-
- opcache.huge_code_pages
- 0
- INI_SYSTEM
-
-
-
- opcache.lockfile_path
- "/tmp"
- INI_SYSTEM
-
-
-
- opcache.opt_debug_level
- 0
- INI_SYSTEM
- Disponible à partir de PHP 7.1.0
-
-
- opcache.file_cache
- NULL
- INI_SYSTEM
-
-
-
- opcache.file_cache_only
- 0
- INI_SYSTEM
-
-
-
- opcache.file_cache_consistency_checks
- 1
- INI_SYSTEM
-
-
-
- opcache.file_cache_fallback
- 1
- INI_SYSTEM
- Windows uniquement.
-
-
- opcache.validate_permission
- 0
- INI_SYSTEM
- Disponible à partir de PHP 7.0.14
-
-
- opcache.validate_root
- 0
- INI_SYSTEM
- Disponible à partir de PHP 7.0.14
-
-
- opcache.preload
- ""
- INI_SYSTEM
- Disponible à partir de PHP 7.4.0
-
-
- opcache.preload_user
- ""
- INI_SYSTEM
- Disponible à partir de PHP 7.4.0
-
-
- opcache.cache_id
- ""
- INI_SYSTEM
- Windows uniquement. Disponible à partir de PHP 7.4.0
-
-
- opcache.jit
- "disable"
- INI_ALL
- Disponible à partir de PHP 8.0.0. Auparavant à PHP 8.4.0, la valeur par défaut était "tracing"
-
-
- opcache.jit_buffer_size
- 0
- INI_SYSTEM
- Disponible à partir de PHP 8.0.0
-
-
- opcache.jit_debug
- 0
- INI_ALL
- Disponible à partir de PHP 8.0.0
-
-
- opcache.jit_bisect_limit
- 0
- INI_ALL
- Disponible à partir de PHP 8.0.0
-
-
- opcache.jit_prof_threshold
- "0.005"
- INI_ALL
- Disponible à partir de PHP 8.0.0
-
-
- opcache.jit_max_root_traces
- "1024"
- INI_SYSTEM
- Disponible à partir de PHP 8.0.0
-
-
- opcache.jit_max_side_traces
- "128"
- INI_SYSTEM
- Disponible à partir de PHP 8.0.0
-
-
- opcache.jit_max_exit_counters
- "8192"
- INI_SYSTEM
- Disponible à partir de PHP 8.0.0
-
-
- opcache.jit_hot_loop
- "64"
- INI_SYSTEM
- Disponible à partir de PHP 8.0.0
-
-
- opcache.jit_hot_func
- "127"
- INI_SYSTEM
- Disponible à partir de PHP 8.0.0
-
-
- opcache.jit_hot_return
- "8"
- INI_SYSTEM
- Disponible à partir de PHP 8.0.0
-
-
- opcache.jit_hot_side_exit
- "8"
- INI_SYSTEM
- Disponible à partir de PHP 8.0.0
-
-
- opcache.jit_blacklist_root_trace
- "16"
- INI_ALL
- Disponible à partir de PHP 8.0.0
-
-
- opcache.jit_blacklist_side_trace
- "8"
- INI_ALL
- Disponible à partir de PHP 8.0.0
-
-
- opcache.jit_max_loop_unrolls
- "8"
- INI_ALL
- Disponible à partir de PHP 8.0.0
-
-
- opcache.jit_max_recursive_calls
- "2"
- INI_ALL
- Disponible à partir de PHP 8.0.0
-
-
- opcache.jit_max_recursive_returns
- "2"
- INI_ALL
- Disponible à partir de PHP 8.0.0
-
-
- opcache.jit_max_polymorphic_calls
- "2"
- INI_ALL
- Disponible à partir de PHP 8.0.0
-
-
-
-
- &ini.php.constants;
-
-
- &ini.descriptions.title;
-
-
-
-
- opcache.enable
- bool
-
-
-
- Active le cache d'opcode. Lorsqu'il est désactivé, le code n'est
- ni optimisé, ni mis en cache. Le paramétrage de opcache.enable
- ne peut être activé pendant l'exécution via la fonction
- ini_set, il ne peut être que désactivé. Tenter de l'activer
- dans un script va générer une alerte.
-
-
-
-
-
- opcache.enable_cli
- bool
-
-
-
- Active le cache d'opcode pour la version CLI de PHP.
-
-
-
-
-
- opcache.memory_consumption
- int
-
-
-
- La taille de la mémoire partagée utilisée par OPcache, en mégaoctets.
- La valeur minimale permissible est "8",
- qui est forcé si une valeur plus petite est définie.
-
-
-
-
-
- opcache.interned_strings_buffer
- int
-
-
-
- La quantité de mémoire utilisée pour stocker des chaînes internes, en mégaoctets.
- La valeur maximale est de 32767 sur les architectures 64 bits, et de 4095 sur les architectures 32 bits.
-
-
-
- Avant PHP 8.4.0, la valeur maximale était de 4095 mégaoctets sur toutes les architectures.
-
-
-
-
-
-
- opcache.max_accelerated_files
- int
-
-
-
- Le nombre maximal de clés (et donc, de scripts) dans la table de hachage d'OPcache.
- La valeur actuellement utilisée sera le premier nombre du jeu des
- nombres premiers
- { 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987, 262237, 524521, 1048793 }
- qui est plus grand ou égal que la valeur configurée. La valeur minimale est 200.
- La valeur maximale est 100000 dans PHP < 5.5.6, et 1000000 dans les versions
- ultérieures.
- Les valeurs hors de cet intervalle sont fixées à l'intervalle autorisé.
-
-
-
-
-
- opcache.max_wasted_percentage
- int
-
-
-
- Le pourcentage maximum de mémoire gaspillée autorisée avant qu'un redémarrage
- ne soit programmé, s'il n'y a pas assez de mémoire disponible.
- La valeur maximale permissible est "50",
- qui est forcé si une valeur plus large est définie.
-
-
-
-
-
- opcache.use_cwd
- bool
-
-
-
- Si activé, OPcache ajoute le dossier de travail courant à la clé du script,
- éliminant ainsi les collisions possibles entre les fichiers dont le nom
- de base est identique. Le fait de désactiver cette fonctionnalité améliore
- les performances, mais peut casser les applications existantes.
-
-
-
-
-
- opcache.validate_timestamps
- bool
-
-
-
- Si activé, OPcache va vérifier les mises à jour des scripts toutes les
- opcache.revalidate_freq
- secondes. Lorsque cette directive est désactivée, vous devez réinitialiser
- OPcache manuellement via la fonction opcache_reset,
- la fonction opcache_invalidate ou en redémarrant le serveur
- Web pour que les modifications du système de fichiers ne prennent effet.
-
-
- OPcache peut toujours valider l'horodatage d'un fichier lors de la compilation si les options
- opcache.file_update_protection
- ou opcache.max_file_size
- sont définies sur des valeurs non nulles.
-
-
-
-
-
-
-
- opcache.revalidate_freq
- int
-
-
-
- La fréquence de vérification du timestamp du script afin de détecter
- les possibles mises à jour, en secondes. La valeur 0
- fera qu'OPcache vérifiera les mises à jour à chaque requête.
-
-
- Cette directive de configuration est ignorée si
- opcache.validate_timestamps
- est désactivé.
-
-
-
-
-
- opcache.revalidate_path
- bool
-
-
-
- Si désactivé, les fichiers en cache existant utilisant le même
- include_path seront réutilisés.
- Aussi, si un fichier avec le même nom est quelque part ailleurs dans le
- include_path, il ne sera pas trouvé.
-
-
-
-
-
- opcache.save_comments
- bool
-
-
-
- Si désactivé, tous les commentaires de documentation seront supprimés
- du cache opcode afin de réduire la taille du code optimisé.
- La désactivation de cette directive peut casser des applications
- et des frameworks qui s'appuient sur l'analyse des commentaires
- pour les annotations, comme Doctrine, Zend Framework 2 et PHPUnit.
-
-
-
-
-
- opcache.fast_shutdown
- bool
-
-
-
- Si activé, une séquence d'arrêt rapide sera utilisée, qui ne libère pas
- chaque bloc alloué, mais s'appuie sur le gestionnaire de mémoire
- Zend Engine pour désallouer le jeu entier des variables de requêtes, en masse.
-
-
- Cette directive a été supprimée dans PHP 7.2.0. Une variante de la
- séquence d'arrêt rapide a été intégrée dans PHP et sera automatiquement
- utilisée si possible.
-
-
-
-
-
- opcache.enable_file_override
- bool
-
-
-
- Lorsqu'activé, le cache opcode sera vérifié pour savoir si un fichier
- a déjà été mis en cache lorsque les fonctions file_exists,
- is_file et is_readable sont appelées.
- Ceci peut accroître les performances des applications qui vérifient l'existence
- et la lisibilité des scripts PHP, mais risque de retourner des données
- périmées si
- opcache.validate_timestamps
- est désactivé.
-
-
-
-
-
- opcache.optimization_level
- int
-
-
-
- Un masque de bits qui contrôle quelles passes d'optimisation sont exécutées.
- La valeur par défaut est 0x7FFEBFFF, qui active toutes les
- optimisations sûres. Désactiver des optimisations ou activer des optimisations
- non sûres est surtout utile pour déboguer/développer l'optimiseur.
-
-
- Chaque bit dans le masque de bits active une passe d'optimisation spécifique :
-
-
- Masque de bits des passes d'optimisation
-
-
-
- Bit
- Nom de la passe
- &Description;
- Défaut
-
-
-
-
- 0
- PASS_1
- Optimisations peephole simples
- Activé
-
-
- 1
- PASS_2
- Inutilisé (a été fusionné dans PASS_1)
- Activé
-
-
- 2
- PASS_3
- Optimisation de saut simple
- Activé
-
-
- 3
- PASS_4
- Optimisation des appels
- Activé
-
-
- 4
- PASS_5
- Optimisation basée sur le graphe de flux de contrôle
- Activé
-
-
- 5
- PASS_6
- Optimisation basée sur l'analyse de flux de données
- Activé
-
-
- 6
- PASS_7
- Indique si le graphe d'appels doit être utilisé pour les optimisations SSA
- Activé
-
-
- 7
- PASS_8
- Propagation conditionnelle de constantes creuses
- Activé
-
-
- 8
- PASS_9
- Optimisation des variables temporaires
- Activé
-
-
- 9
- PASS_10
- Suppression des opcodes NOP
- Activé
-
-
- 10
- PASS_11
- Compactage des littéraux
- Activé
-
-
- 11
- PASS_12
- Pré-calcul de la taille de la pile d'appels
- Activé
-
-
- 12
- PASS_13
- Suppression des variables inutilisées
- Activé
-
-
- 13
- PASS_14
- Élimination du code mort
- Activé
-
-
- 14
- PASS_15
- Collecte et substitution des déclarations de constantes (non sûr)
- Désactivé
-
-
- 15
- PASS_16
- Inlining de fonctions triviales (partie de l'optimisation des appels)
- Activé
-
-
- 16
- (Drapeau)
- Ignorer la possibilité de surcharge d'opérateur (non sûr)
- Désactivé
-
-
-
-
-
- Optimisations sûres vs non sûres
-
- Les optimisations sûres (activées par défaut) préservent le
- comportement exact du code PHP tout en améliorant les performances. Elles incluent
- l'élimination du code mort, le repliement de constantes et l'optimisation des sauts.
-
-
- Les optimisations non sûres (désactivées par défaut) peuvent
- altérer le comportement dans des cas particuliers :
-
-
-
-
- Bit 14 : Collecte des constantes. Les constantes sont substituées
- à la compilation, ignorant l'ordre de déclaration à l'exécution :
-
-
-
-
-
-
-
-
-
- Bit 16 : Ignorer la surcharge d'opérateur.
- Non sûr lors de l'utilisation de classes avec do_operation
- (par exemple GMP,
- BCMath) dans des opérations arithmétiques.
- Avec des déclarations de type, l'optimiseur peut appliquer les mêmes
- optimisations en toute sécurité.
-
-
-
-
-
-
-
-
- opcache.inherited_hack
- bool
-
-
-
- Cette directive de configuration est ignorée.
-
-
-
-
-
- opcache.dups_fix
- bool
-
-
-
- Ce hack ne doit être activé que comme solution de contournement des erreurs
- "Cannot redeclare class".
-
-
-
-
-
- opcache.blacklist_filename
- string
-
-
-
- L'endroit de stockage du fichier gérant la liste noire OPcache.
- Un fichier de liste noire est un fichier texte contenant des noms
- de fichiers qui ne doivent pas être accélérés ; un par ligne.
- Les jokers sont autorisés, et les préfixes peuvent également
- être fournis. Les lignes commençant par un point-virgule
- sont vues comme des commentaires et seront donc ignorées.
-
-
- Un fichier de liste noire simple ressemble à ceci :
-
-
-
-
-
-
-
-
-
-
- opcache.max_file_size
- int
-
-
-
- La taille maximale du fichier pouvant être mis en cache, en octets.
- Si vaut 0, tous les fichiers pourront être mis en cache.
-
-
-
-
-
- opcache.consistency_checks
- int
-
-
-
- Si vaut différent de zéro, OPcache va vérifier la somme de contrôle
- du cache toutes les N requêtes, où N est la valeur de cette directive
- de configuration. Ceci ne doit être activé que lors du débogage, sachant
- qu'il impacte fortement les performances.
-
-
-
- Désactivé à partir de PHP 8.1.18 et 8.2.5. Supprimé à partir de PHP 8.3.0.
-
-
-
-
-
-
- opcache.force_restart_timeout
- int
-
-
-
- La durée à attendre pour le début d'un redémarrage programmé, si le
- cache n'est pas activé, en secondes. Si ce délai d'attente est atteint,
- alors OPcache imagine que quelque chose se passe mal, et va tuer les
- processus gérant les verrous sur le cache pour permettre un
- redémarrage.
-
-
- Si
- opcache.log_verbosity_level
- vaut 2 ou plus, un avertissement sera enregistré dans le journal d'événements
- des erreurs lorsque ce comportement survient.
-
-
- Cette directive n'est pas supportée sur Windows.
-
-
-
-
-
- opcache.error_log
- string
-
-
-
- Le log d'erreurs pour les erreurs OPcache. Une chaîne vide sera vue comme
- stderr, et les erreurs seront envoyées vers la sortie
- d'erreurs standard (qui sera le log des erreurs du serveur Web dans la
- plupart des cas).
-
-
-
-
-
- opcache.log_verbosity_level
- int
-
-
-
- Le niveau de verbosité des logs. Par défaut, seules les erreurs fatales
- (niveau 0) et les erreurs (niveau 1) seront enregistrées. Les autres
- niveaux disponibles sont les alertes (niveau 2), les messages
- d'information (niveau 3), et les messages de débogage (niveau 4).
-
-
-
-
-
- opcache.record_warnings
- bool
-
-
-
- Si cette option est activée, OPcache enregistrera les avertissements de compilation
- et les rejouera lors du prochain include, même s'il est servi depuis le cache.
-
-
-
-
-
- opcache.preferred_memory_model
- string
-
-
-
- Le modèle de mémoire préféré pour OPcache, à utiliser. Si laissé vide,
- OPcache va choisir le modèle le plus approprié, ce qui est la meilleure
- façon de faire dans la plupart des cas.
-
-
- Les valeurs possibles sont mmap, shm,
- posix et win32.
-
-
-
-
-
- opcache.protect_memory
- bool
-
-
-
- Protège la mémoire partagée des écritures non-approuvées pendant l'exécution
- des scripts. Ceci est utile uniquement pour du débogage interne.
-
-
-
-
-
- opcache.mmap_base
- string
-
-
-
- La base utilisée pour les segments de mémoire partagée sous Windows.
- Tous les processus PHP doivent lier la mémoire partagée dans le même espace
- d'adresse. L'utilisation de cette directive permet de corriger les erreurs
- "Unable to reattach to base address".
-
-
-
-
-
- opcache.restrict_api
- string
-
-
-
- Autorise l'appel aux fonctions de l'API d'OPcache uniquement depuis
- des scripts PHP dont le chemin commence par une chaîne spécifique.
- La valeur par défaut, "", signifie "aucune restriction".
-
-
-
-
-
- opcache.file_update_protection
- string
-
-
-
- Empêche la mise en cache des fichiers datant moins que ce nombre de secondes.
- Ceci protège de la mise en cache des fichiers incomplètement mis à jour.
- Si toutes les mises à jour de fichiers sont atomiques, les performances
- peuvent être augmentées en le définissant à 0.
- Cela permettra de mettre en cache les fichiers immédiatement.
-
-
-
-
-
- opcache.huge_code_pages
- bool
-
-
-
- Active ou désactive la copie de code PHP (segment de texte) dans des HUGE PAGES.
- Ceci devrait améliorer les performances, mais nécessite une configuration
- appropriée du système d'exploitation.
- Disponible sur Linux à partir de PHP 7.0.0,
- et sur FreeBSD à partir de PHP 7.4.0.
-
-
-
-
-
- opcache.lockfile_path
- string
-
-
-
- Chemin absolu utilisé pour enregistrer les lockfiles partagés (pour *nix uniquement)
-
-
-
-
-
- opcache.opt_debug_level
- string
-
-
-
- Produit un vidage opcode pour déboguer les différentes étapes d'optimisation.
- 0x10000 affichera les opcodes tels que le compilateur les produit avant qu'aucune
- optimisation ne se produise alors que 0x20000 affichera les codes optimisés.
-
-
-
-
-
- opcache.file_cache
- string
-
-
-
- Active et définit le répertoire de cache de second niveau. Ceci devrait
- améliorer les performances quand la mémoire SHM est pleine, au redémarrage
- du serveur ou réinitialisation de SHM.
- La valeur par défaut "" désactive la mise en cache basée sur les fichiers.
-
-
-
-
-
- opcache.file_cache_only
- bool
-
-
-
- Active ou désactive la mise en cache de l'opcode dans la mémoire partagée.
-
-
-
- Antérieur à PHP 8.1.0, désactiver cette directive avec un fichier de
- cache déjà rempli nécessite le vidage manuel du cache.
-
-
-
-
-
-
- opcache.file_cache_consistency_checks
- bool
-
-
-
- Active ou désactive la validation de la somme de contrôle lorsque le script
- est chargé à partir du cache de fichiers.
-
-
-
-
-
- opcache.file_cache_fallback
- bool
-
-
-
- Insinue opcache.file_cache_only=1 pour un certain processus qui a échoué de
- se rattacher à la mémoire partagée (pour Windows uniquement).
- Le cache de fichiers activé explicitement est requis.
-
-
-
- Désactiver cette option de configuration peut empêcher les processus
- de démarrer, et est donc découragé.
-
-
-
-
-
-
- opcache.validate_permission
- bool
-
-
-
- Valide les permissions des fichiers mises en cache par rapport à
- l'utilisateur actuel.
-
-
-
-
-
- opcache.validate_root
- bool
-
-
-
- Empêche la collision de noms dans les environnements `chroot`ées. Ceci devrait
- être activé dans tous les environnements `chroot`ées pour empêcher l'accès
- aux fichiers en-dehors du chroot.
-
-
-
-
-
- opcache.preload
- string
-
-
-
- Spécifie un script PHP qui sera compilé et exécuté lors du démarrage du serveur,
- et qui peut précharger d'autres fichiers, soit grâce à include
- ou en utilisant la fonction opcache_compile_file. Toutes
- les entités (par exemple fonctions et classes) définies dans ces fichiers seront
- disponibles aux requêtes prêt à l'emploi, jusqu'à ce que le serveur soit éteint.
-
-
-
- Le préchargement n'est pas supporté sur Windows.
-
-
-
-
-
-
- opcache.preload_user
- string
-
-
-
- Permet au préchargement d'être exécuté en tant qu'utilisateur système
- spécifié. Ceci est utile pour les serveurs qui démarrent en tant que root
- avant de passer à un utilisateur système non privilégié. Le préchargement
- en tant que root n'est pas autorisé par défaut pour des raisons de sécurité,
- sauf si cette directive est explicitement définie sur root.
- À partir de PHP 8.3.0, cette directive n'a plus besoin d'être définie afin d'autoriser le préchargement
- lors de l'exécution en tant que root avec &cli.sapi; ou phpdbg SAPI.
-
-
-
-
-
- opcache.cache_id
- string
-
-
-
- Sur Windows, tous les processus exécutant le même PHP
- SAPI sous le même compte utilisateur ayant le même ID
- de cache partage une instance unique de OPcache.
- La valeur de l'ID de cache peut être choisie librement.
-
-
-
- Pour IIS, des pools d'applications différentes peuvent avoir leur propre
- instance OPcache en utilisant la variable d'environnement
- APP_POOL_ID comme opcache.cache_id.
-
-
-
-
-
-
- opcache.jit
- stringint
-
-
-
- Pour un usage typique, cette option accepte une des quatre valeurs de chaîne suivantes :
-
-
- disable: Désactivé complètement, ne peut pas
- être activé lors du runtime.
- off: Désactivé, mais peut être activé lors du runtime.
-
- tracing/on: Utilise le tracing JIT.
- Activé par défaut et recommandé pour la plupart des utilisateurs.
-
- function: Utilise le function JIT.
-
-
- Pour un usage avancé, cette option accepte un entier à 4 chiffres
- CRTO, où les chiffres signifient :
-
-
- C (Drapeaux d'optimisation spécifique au CPU)
-
-
- 0: Désactive les optimisations spécifiques au CPU.
- 1: Active l'usage d'AVX, si le CPU le supporte.
-
-
-
-
- R (allocation de registre)
-
-
- 0: N'accomplit aucune allocation de registres
- 1: Accomplit des allocations de registres au niveau d'un bloc.
- 2: Accomplit des allocations de registres globales.
-
-
-
-
- T (trigger/déclencheur)
-
-
- 0: Compile toutes les fonctions lors du chargement du script.
- 1: Compile les fonctions lors de leur première exécution.
-
- 2: Profile les fonctions lors de la première requête et compile les fonctions
- les plus chaudes juste après.
-
- 3: Profile à la volée et compile les fonctions chaudes.
- 4: Actuellement inutilisé.
-
- 5: Utilise le tracing JIT. Profile à la volée et
- compile les traces pour les segments de code chaud.
-
-
-
-
-
- O (niveau d'optimisation)
-
-
- 0: Pas de JIT.
- 1: JIT minimal (appelle les handlers standard de la VM).
- 2: Inline les handlers de la VM.
- 3: Utilise l'inférence de type.
- 4: Utilise un graphe d'appel.
- 5: Optimise le script entier.
-
-
-
-
- Le mode "tracing" correspond à CRTO = 1254,
- le mode "function" correspond à CRTO = 1205.
-
-
-
-
-
- opcache.jit_buffer_size
- int
-
-
-
- La quantité de mémoire partagée réservée pour du code compilé JIT. Une valeur de zéro désactive le JIT.
-
- &ini.shorthandbytes;
-
-
-
-
- opcache.jit_debug
- int
-
-
-
- Un masque de bits spécifiant quelle sortie de débogage de JIT activer
- Pour les valeurs possibles, consultez zend_jit.h
- (voir les définitions de macro commençant par ZEND_JIT_DEBUG).
-
-
-
-
-
- opcache.jit_bisect_limit
- int
-
-
-
- Option de débogage qui désactive la compilation JIT après la compilation d'un certain nombre
- de fonctions.
- Ceci peut être utile pour bisect la source d'une mauvaise compilation JIT.
- Remarque : cette option ne fonctionne que lorsque le déclencheur JIT est défini
- à 0 (compilation au chargement du script) ou 1 (compilation à la première exécution),
- par exemple, opcache.jit=1215.
- Voir plus dans l'option opcache.jit.
-
-
-
-
-
- opcache.jit_prof_threshold
- float
-
-
-
- Lors de l'utilisation du mode de déclencheur "profile les fonctions lors de la première requête",
- cette limite détermine si une fonction est considérée chaude. Le nombre d'appels à la fonction
- divisé par le nombre d'appels à toutes les fonctions doit être supérieur à cette limite.
- Par exemple, une limite de 0.005 signifie qu'une fonction qui correspond à plus de 0.5% de tous
- les appels sera compilée JIT.
-
-
-
-
-
- opcache.jit_max_root_traces
- int
-
-
-
- Nombre maximal de traces racines (root traces). La trace racine est un flux d'exécution prenant
- d'abord un chemin à travers le code, qui est une unité de la compilation JIT. JIT ne compilera
- pas de nouveau code s'il atteint cette limite.
-
-
-
-
-
- opcache.jit_max_side_traces
- int
-
-
-
- Nombre maximal de traces adjacentes (side trace) une trace racine peut avoir.
- La trace adjacente est un autre flux d'exécution qui ne suit pas le chemin de la trace
- racine compilée. Les traces adjacentes appartenant à la même trace racine ne seront pas compilées
- si elles atteignent cette limite.
-
-
-
-
-
- opcache.jit_max_exit_counters
- int
-
-
-
- Nombre maximal de compteurs de sortie de trace adjacente. Ceci limite le nombre total de
- traces adjacentes qu'il peut y avoir, à travers toutes les traces racines.
-
-
-
-
-
- opcache.jit_hot_loop
- int
-
-
-
- Après combien d'itérations une boucle est considérée chaude.
- L'intervalle de valeurs valides est [0,255] ;
- pour tout paramètre hors de cette plage, par exemple -1 ou 256, la valeur par défaut sera utilisée à la place.
- Spécialement, une valeur nulle désactivera le JIT pour tracer et compiler toutes les boucles.
-
-
-
-
-
- opcache.jit_hot_func
- int
-
-
-
- Après combien d'appels une fonction est considérée chaude.
- La plage de valeurs valides est [0,255] ;
- pour tout paramètre hors de cette plage, par exemple -1 ou 256, la valeur par défaut sera utilisée à la place.
- Spécialement, une valeur nulle désactivera le JIT pour tracer et compiler toutes les fonctions.
-
-
-
-
-
- opcache.jit_hot_return
- int
-
-
-
- Après combien de retours un retour est considéré chaud.
- La plage de valeurs valides est [0,255] ;
- pour tout paramètre hors de cette plage, par exemple -1 ou 256, la valeur par défaut sera utilisée à la place.
- Spécialement, une valeur nulle désactivera le JIT pour tracer et compiler tous les retours.
-
-
-
-
-
- opcache.jit_hot_side_exit
- int
-
-
-
- Après combien de sortie, une sortie adjacente est considérée chaude.
- La plage de valeurs valides est [0,255] ;
- pour tout paramètre hors de cette plage, par exemple -1 ou 256, la valeur par défaut sera utilisée à la place.
- Spécialement, une valeur nulle désactivera le JIT pour tracer et compiler toutes les sorties latérales.
-
-
-
-
-
- opcache.jit_blacklist_root_trace
- int
-
-
-
- Nombre maximal de tentatives de compilation d'une trace racine avant que celle-ci ne soit exclue.
-
-
-
-
-
- opcache.jit_blacklist_side_trace
- int
-
-
-
- Nombre maximal de tentatives de compilation d'une trace adjacente avant que celle-ci ne soit exclue.
-
-
-
-
-
- opcache.jit_max_loop_unrolls
- int
-
-
-
- Nombre maximal de tentatives pour dérouler une boucle dans une trace adjacente,
- tentant d'atteindre la trace racine et de fermer la boucle extérieure.
-
-
-
-
-
- opcache.jit_max_recursive_calls
- int
-
-
-
-
- Nombre maximal d'appels récursifs déroulés dans une boucle.
-
-
-
-
-
- opcache.jit_max_recursive_returns
- int
-
-
-
-
- Nombre maximal de retours récursifs déroulés dans une boucle.
-
-
-
-
-
- opcache.jit_max_polymorphic_calls
- int
-
-
-
- Nombre maximal de tentatives pour inliner un appel polymorphe (dynamique ou méthode).
- Les appels au-dessus de cette limite sont traités comme mégamorphes et ne sont pas inlinés.
-
-
-
-
-
-
+
+
+
+
+ &reftitle.runtime;
+ &extension.runtime;
+
+
+ Options de configuration d'OPcache
+
+
+
+ &Name;
+ &Default;
+ &Changeable;
+ &Changelog;
+
+
+
+
+ opcache.enable
+ 1
+ INI_ALL
+
+
+
+ opcache.enable_cli
+ 0
+ INI_SYSTEM
+ Entre PHP 7.1.2 et 7.1.6 inclusivement, la valeur par défaut était de 1
+
+
+ opcache.memory_consumption
+ "128"
+ INI_SYSTEM
+
+
+
+ opcache.interned_strings_buffer
+ "8"
+ INI_SYSTEM
+
+
+
+ opcache.max_accelerated_files
+ "10000"
+ INI_SYSTEM
+
+
+
+ opcache.max_wasted_percentage
+ "5"
+ INI_SYSTEM
+
+
+
+ opcache.use_cwd
+ 1
+ INI_SYSTEM
+
+
+
+ opcache.validate_timestamps
+ 1
+ INI_ALL
+
+
+
+ opcache.revalidate_freq
+ "2"
+ INI_ALL
+
+
+
+ opcache.revalidate_path
+ 0
+ INI_ALL
+
+
+
+ opcache.save_comments
+ 1
+ INI_SYSTEM
+
+
+
+ opcache.fast_shutdown
+ 0
+ INI_SYSTEM
+ Supprimé en PHP 7.2.0.
+
+
+ opcache.enable_file_override
+ 0
+ INI_SYSTEM
+
+
+
+ opcache.optimization_level
+ "0x7FFEBFFF"
+ INI_SYSTEM
+ Modifié depuis 0x7FFFBFFF en PHP 7.3.0
+
+
+ opcache.inherited_hack
+ 1
+ INI_SYSTEM
+ Supprimé en PHP 7.3.0
+
+
+ opcache.dups_fix
+ 0
+ INI_ALL
+
+
+
+ opcache.blacklist_filename
+ ""
+ INI_SYSTEM
+
+
+
+ opcache.max_file_size
+ 0
+ INI_SYSTEM
+
+
+
+ opcache.consistency_checks
+ 0
+ INI_ALL
+ >Désactivé à partir de PHP 8.1.18 et 8.2.5. Supprimé à partir de PHP 8.3.0.
+
+
+ opcache.force_restart_timeout
+ "180"
+ INI_SYSTEM
+
+
+
+ opcache.error_log
+ ""
+ INI_SYSTEM
+
+
+
+ opcache.log_verbosity_level
+ 1
+ INI_SYSTEM
+
+
+
+ opcache.record_warnings
+ 0
+ INI_SYSTEM
+ Disponible à partir de PHP 8.0.0.
+
+
+ opcache.preferred_memory_model
+ ""
+ INI_SYSTEM
+
+
+
+ opcache.protect_memory
+ 0
+ INI_SYSTEM
+
+
+
+ opcache.mmap_base
+ &null;
+ INI_SYSTEM
+
+
+
+ opcache.restrict_api
+ ""
+ INI_SYSTEM
+
+
+
+ opcache.file_update_protection
+ "2"
+ INI_ALL
+
+
+
+ opcache.huge_code_pages
+ 0
+ INI_SYSTEM
+
+
+
+ opcache.lockfile_path
+ "/tmp"
+ INI_SYSTEM
+
+
+
+ opcache.opt_debug_level
+ 0
+ INI_SYSTEM
+ Disponible à partir de PHP 7.1.0
+
+
+ opcache.file_cache
+ NULL
+ INI_SYSTEM
+
+
+
+ opcache.file_cache_only
+ 0
+ INI_SYSTEM
+
+
+
+ opcache.file_cache_consistency_checks
+ 1
+ INI_SYSTEM
+
+
+
+ opcache.file_cache_fallback
+ 1
+ INI_SYSTEM
+ Windows uniquement.
+
+
+ opcache.validate_permission
+ 0
+ INI_SYSTEM
+ Disponible à partir de PHP 7.0.14
+
+
+ opcache.validate_root
+ 0
+ INI_SYSTEM
+ Disponible à partir de PHP 7.0.14
+
+
+ opcache.preload
+ ""
+ INI_SYSTEM
+ Disponible à partir de PHP 7.4.0
+
+
+ opcache.preload_user
+ ""
+ INI_SYSTEM
+ Disponible à partir de PHP 7.4.0
+
+
+ opcache.cache_id
+ ""
+ INI_SYSTEM
+ Windows uniquement. Disponible à partir de PHP 7.4.0
+
+
+ opcache.jit
+ "disable"
+ INI_ALL
+ Disponible à partir de PHP 8.0.0. Auparavant à PHP 8.4.0, la valeur par défaut était "tracing"
+
+
+ opcache.jit_buffer_size
+ 0
+ INI_SYSTEM
+ Disponible à partir de PHP 8.0.0
+
+
+ opcache.jit_debug
+ 0
+ INI_ALL
+ Disponible à partir de PHP 8.0.0
+
+
+ opcache.jit_bisect_limit
+ 0
+ INI_ALL
+ Disponible à partir de PHP 8.0.0
+
+
+ opcache.jit_prof_threshold
+ "0.005"
+ INI_ALL
+ Disponible à partir de PHP 8.0.0
+
+
+ opcache.jit_max_root_traces
+ "1024"
+ INI_SYSTEM
+ Disponible à partir de PHP 8.0.0
+
+
+ opcache.jit_max_side_traces
+ "128"
+ INI_SYSTEM
+ Disponible à partir de PHP 8.0.0
+
+
+ opcache.jit_max_exit_counters
+ "8192"
+ INI_SYSTEM
+ Disponible à partir de PHP 8.0.0
+
+
+ opcache.jit_hot_loop
+ "64"
+ INI_SYSTEM
+ Disponible à partir de PHP 8.0.0
+
+
+ opcache.jit_hot_func
+ "127"
+ INI_SYSTEM
+ Disponible à partir de PHP 8.0.0
+
+
+ opcache.jit_hot_return
+ "8"
+ INI_SYSTEM
+ Disponible à partir de PHP 8.0.0
+
+
+ opcache.jit_hot_side_exit
+ "8"
+ INI_SYSTEM
+ Disponible à partir de PHP 8.0.0
+
+
+ opcache.jit_blacklist_root_trace
+ "16"
+ INI_ALL
+ Disponible à partir de PHP 8.0.0
+
+
+ opcache.jit_blacklist_side_trace
+ "8"
+ INI_ALL
+ Disponible à partir de PHP 8.0.0
+
+
+ opcache.jit_max_loop_unrolls
+ "8"
+ INI_ALL
+ Disponible à partir de PHP 8.0.0
+
+
+ opcache.jit_max_recursive_calls
+ "2"
+ INI_ALL
+ Disponible à partir de PHP 8.0.0
+
+
+ opcache.jit_max_recursive_returns
+ "2"
+ INI_ALL
+ Disponible à partir de PHP 8.0.0
+
+
+ opcache.jit_max_polymorphic_calls
+ "2"
+ INI_ALL
+ Disponible à partir de PHP 8.0.0
+
+
+
+
+ &ini.php.constants;
+
+
+ &ini.descriptions.title;
+
+
+
+
+ opcache.enable
+ bool
+
+
+
+ Active le cache d'opcode. Lorsqu'il est désactivé, le code n'est
+ ni optimisé, ni mis en cache. Le paramétrage de opcache.enable
+ ne peut être activé pendant l'exécution via la fonction
+ ini_set, il ne peut être que désactivé. Tenter de l'activer
+ dans un script va générer une alerte.
+
+
+
+
+
+ opcache.enable_cli
+ bool
+
+
+
+ Active le cache d'opcode pour la version CLI de PHP.
+
+
+
+
+
+ opcache.memory_consumption
+ int
+
+
+
+ La taille de la mémoire partagée utilisée par OPcache, en mégaoctets.
+ La valeur minimale permissible est "8",
+ qui est forcé si une valeur plus petite est définie.
+
+
+
+
+
+ opcache.interned_strings_buffer
+ int
+
+
+
+ La quantité de mémoire utilisée pour stocker des chaînes internes, en mégaoctets.
+ La valeur maximale est de 32767 sur les architectures 64 bits, et de 4095 sur les architectures 32 bits.
+
+
+
+ Avant PHP 8.4.0, la valeur maximale était de 4095 mégaoctets sur toutes les architectures.
+
+
+
+
+
+
+ opcache.max_accelerated_files
+ int
+
+
+
+ Le nombre maximal de clés (et donc, de scripts) dans la table de hachage d'OPcache.
+ La valeur actuellement utilisée sera le premier nombre du jeu des
+ nombres premiers
+ { 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987, 262237, 524521, 1048793 }
+ qui est plus grand ou égal que la valeur configurée. La valeur minimale est 200.
+ La valeur maximale est 100000 dans PHP < 5.5.6, et 1000000 dans les versions
+ ultérieures.
+ Les valeurs hors de cet intervalle sont fixées à l'intervalle autorisé.
+
+
+
+
+
+ opcache.max_wasted_percentage
+ int
+
+
+
+ Le pourcentage maximum de mémoire gaspillée autorisée avant qu'un redémarrage
+ ne soit programmé, s'il n'y a pas assez de mémoire disponible.
+ La valeur maximale permissible est "50",
+ qui est forcé si une valeur plus large est définie.
+
+
+
+
+
+ opcache.use_cwd
+ bool
+
+
+
+ Si activé, OPcache ajoute le dossier de travail courant à la clé du script,
+ éliminant ainsi les collisions possibles entre les fichiers dont le nom
+ de base est identique. Le fait de désactiver cette fonctionnalité améliore
+ les performances, mais peut casser les applications existantes.
+
+
+
+
+
+ opcache.validate_timestamps
+ bool
+
+
+
+ Si activé, OPcache va vérifier les mises à jour des scripts toutes les
+ opcache.revalidate_freq
+ secondes. Lorsque cette directive est désactivée, vous devez réinitialiser
+ OPcache manuellement via la fonction opcache_reset,
+ la fonction opcache_invalidate ou en redémarrant le serveur
+ Web pour que les modifications du système de fichiers ne prennent effet.
+
+
+ OPcache peut toujours valider l'horodatage d'un fichier lors de la compilation si les options
+ opcache.file_update_protection
+ ou opcache.max_file_size
+ sont définies sur des valeurs non nulles.
+
+
+
+
+
+
+
+ opcache.revalidate_freq
+ int
+
+
+
+ La fréquence de vérification du timestamp du script afin de détecter
+ les possibles mises à jour, en secondes. La valeur 0
+ fera qu'OPcache vérifiera les mises à jour à chaque requête.
+
+
+ Cette directive de configuration est ignorée si
+ opcache.validate_timestamps
+ est désactivé.
+
+
+
+
+
+ opcache.revalidate_path
+ bool
+
+
+
+ Si désactivé, les fichiers en cache existant utilisant le même
+ include_path seront réutilisés.
+ Aussi, si un fichier avec le même nom est quelque part ailleurs dans le
+ include_path, il ne sera pas trouvé.
+
+
+
+
+
+ opcache.save_comments
+ bool
+
+
+
+ Si désactivé, tous les commentaires de documentation seront supprimés
+ du cache opcode afin de réduire la taille du code optimisé.
+ La désactivation de cette directive peut casser des applications
+ et des frameworks qui s'appuient sur l'analyse des commentaires
+ pour les annotations, comme Doctrine, Zend Framework 2 et PHPUnit.
+
+
+
+
+
+ opcache.fast_shutdown
+ bool
+
+
+
+ Si activé, une séquence d'arrêt rapide sera utilisée, qui ne libère pas
+ chaque bloc alloué, mais s'appuie sur le gestionnaire de mémoire
+ Zend Engine pour désallouer le jeu entier des variables de requêtes, en masse.
+
+
+ Cette directive a été supprimée dans PHP 7.2.0. Une variante de la
+ séquence d'arrêt rapide a été intégrée dans PHP et sera automatiquement
+ utilisée si possible.
+
+
+
+
+
+ opcache.enable_file_override
+ bool
+
+
+
+ Lorsqu'activé, le cache opcode sera vérifié pour savoir si un fichier
+ a déjà été mis en cache lorsque les fonctions file_exists,
+ is_file et is_readable sont appelées.
+ Ceci peut accroître les performances des applications qui vérifient l'existence
+ et la lisibilité des scripts PHP, mais risque de retourner des données
+ périmées si
+ opcache.validate_timestamps
+ est désactivé.
+
+
+
+
+
+ opcache.optimization_level
+ int
+
+
+
+ Un masque de bits qui contrôle quelles passes d'optimisation sont exécutées.
+ La valeur par défaut est 0x7FFEBFFF, qui active toutes les
+ optimisations sûres. Désactiver des optimisations ou activer des optimisations
+ non sûres est surtout utile pour déboguer/développer l'optimiseur.
+
+
+ Chaque bit dans le masque de bits active une passe d'optimisation spécifique :
+
+
+ Masque de bits des passes d'optimisation
+
+
+
+ Bit
+ Nom de la passe
+ &Description;
+ Défaut
+
+
+
+
+ 0
+ PASS_1
+ Optimisations peephole simples
+ Activé
+
+
+ 1
+ PASS_2
+ Inutilisé (a été fusionné dans PASS_1)
+ Activé
+
+
+ 2
+ PASS_3
+ Optimisation de saut simple
+ Activé
+
+
+ 3
+ PASS_4
+ Optimisation des appels
+ Activé
+
+
+ 4
+ PASS_5
+ Optimisation basée sur le graphe de flux de contrôle
+ Activé
+
+
+ 5
+ PASS_6
+ Optimisation basée sur l'analyse de flux de données
+ Activé
+
+
+ 6
+ PASS_7
+ Indique si le graphe d'appels doit être utilisé pour les optimisations SSA
+ Activé
+
+
+ 7
+ PASS_8
+ Propagation conditionnelle de constantes creuses
+ Activé
+
+
+ 8
+ PASS_9
+ Optimisation des variables temporaires
+ Activé
+
+
+ 9
+ PASS_10
+ Suppression des opcodes NOP
+ Activé
+
+
+ 10
+ PASS_11
+ Compactage des littéraux
+ Activé
+
+
+ 11
+ PASS_12
+ Pré-calcul de la taille de la pile d'appels
+ Activé
+
+
+ 12
+ PASS_13
+ Suppression des variables inutilisées
+ Activé
+
+
+ 13
+ PASS_14
+ Élimination du code mort
+ Activé
+
+
+ 14
+ PASS_15
+ Collecte et substitution des déclarations de constantes (non sûr)
+ Désactivé
+
+
+ 15
+ PASS_16
+ Inlining de fonctions triviales (partie de l'optimisation des appels)
+ Activé
+
+
+ 16
+ (Drapeau)
+ Ignorer la possibilité de surcharge d'opérateur (non sûr)
+ Désactivé
+
+
+
+
+
+ Optimisations sûres vs non sûres
+
+ Les optimisations sûres (activées par défaut) préservent le
+ comportement exact du code PHP tout en améliorant les performances. Elles incluent
+ l'élimination du code mort, le repliement de constantes et l'optimisation des sauts.
+
+
+ Les optimisations non sûres (désactivées par défaut) peuvent
+ altérer le comportement dans des cas particuliers :
+
+
+
+
+ Bit 14 : Collecte des constantes. Les constantes sont substituées
+ à la compilation, ignorant l'ordre de déclaration à l'exécution :
+
+
+
+
+
+
+
+
+
+ Bit 16 : Ignorer la surcharge d'opérateur.
+ Non sûr lors de l'utilisation de classes avec do_operation
+ (par exemple GMP,
+ BCMath) dans des opérations arithmétiques.
+ Avec des déclarations de type, l'optimiseur peut appliquer les mêmes
+ optimisations en toute sécurité.
+
+
+
+
+
+
+
+
+ opcache.inherited_hack
+ bool
+
+
+
+ Cette directive de configuration est ignorée.
+
+
+
+
+
+ opcache.dups_fix
+ bool
+
+
+
+ Ce hack ne doit être activé que comme solution de contournement des erreurs
+ "Cannot redeclare class".
+
+
+
+
+
+ opcache.blacklist_filename
+ string
+
+
+
+ L'endroit de stockage du fichier gérant la liste noire OPcache.
+ Un fichier de liste noire est un fichier texte contenant des noms
+ de fichiers qui ne doivent pas être accélérés ; un par ligne.
+ Les jokers sont autorisés, et les préfixes peuvent également
+ être fournis. Les lignes commençant par un point-virgule
+ sont vues comme des commentaires et seront donc ignorées.
+
+
+ Un fichier de liste noire simple ressemble à ceci :
+
+
+
+
+
+
+
+
+
+
+ opcache.max_file_size
+ int
+
+
+
+ La taille maximale du fichier pouvant être mis en cache, en octets.
+ Si vaut 0, tous les fichiers pourront être mis en cache.
+
+
+
+
+
+ opcache.consistency_checks
+ int
+
+
+
+ Si vaut différent de zéro, OPcache va vérifier la somme de contrôle
+ du cache toutes les N requêtes, où N est la valeur de cette directive
+ de configuration. Ceci ne doit être activé que lors du débogage, sachant
+ qu'il impacte fortement les performances.
+
+
+
+ Désactivé à partir de PHP 8.1.18 et 8.2.5. Supprimé à partir de PHP 8.3.0.
+
+
+
+
+
+
+ opcache.force_restart_timeout
+ int
+
+
+
+ La durée à attendre pour le début d'un redémarrage programmé, si le
+ cache n'est pas activé, en secondes. Si ce délai d'attente est atteint,
+ alors OPcache imagine que quelque chose se passe mal, et va tuer les
+ processus gérant les verrous sur le cache pour permettre un
+ redémarrage.
+
+
+ Si
+ opcache.log_verbosity_level
+ vaut 2 ou plus, un avertissement sera enregistré dans le journal d'événements
+ des erreurs lorsque ce comportement survient.
+
+
+ Cette directive n'est pas supportée sur Windows.
+
+
+
+
+
+ opcache.error_log
+ string
+
+
+
+ Le log d'erreurs pour les erreurs OPcache. Une chaîne vide sera vue comme
+ stderr, et les erreurs seront envoyées vers la sortie
+ d'erreurs standard (qui sera le log des erreurs du serveur Web dans la
+ plupart des cas).
+
+
+
+
+
+ opcache.log_verbosity_level
+ int
+
+
+
+ Le niveau de verbosité des logs. Par défaut, seules les erreurs fatales
+ (niveau 0) et les erreurs (niveau 1) seront enregistrées. Les autres
+ niveaux disponibles sont les alertes (niveau 2), les messages
+ d'information (niveau 3), et les messages de débogage (niveau 4).
+
+
+
+
+
+ opcache.record_warnings
+ bool
+
+
+
+ Si cette option est activée, OPcache enregistrera les avertissements de compilation
+ et les rejouera lors du prochain include, même s'il est servi depuis le cache.
+
+
+
+
+
+ opcache.preferred_memory_model
+ string
+
+
+
+ Le modèle de mémoire préféré pour OPcache, à utiliser. Si laissé vide,
+ OPcache va choisir le modèle le plus approprié, ce qui est la meilleure
+ façon de faire dans la plupart des cas.
+
+
+ Les valeurs possibles sont mmap, shm,
+ posix et win32.
+
+
+
+
+
+ opcache.protect_memory
+ bool
+
+
+
+ Protège la mémoire partagée des écritures non-approuvées pendant l'exécution
+ des scripts. Ceci est utile uniquement pour du débogage interne.
+
+
+
+
+
+ opcache.mmap_base
+ string
+
+
+
+ La base utilisée pour les segments de mémoire partagée sous Windows.
+ Tous les processus PHP doivent lier la mémoire partagée dans le même espace
+ d'adresse. L'utilisation de cette directive permet de corriger les erreurs
+ "Unable to reattach to base address".
+
+
+
+
+
+ opcache.restrict_api
+ string
+
+
+
+ Autorise l'appel aux fonctions de l'API d'OPcache uniquement depuis
+ des scripts PHP dont le chemin commence par une chaîne spécifique.
+ La valeur par défaut, "", signifie "aucune restriction".
+
+
+
+
+
+ opcache.file_update_protection
+ string
+
+
+
+ Empêche la mise en cache des fichiers datant moins que ce nombre de secondes.
+ Ceci protège de la mise en cache des fichiers incomplètement mis à jour.
+ Si toutes les mises à jour de fichiers sont atomiques, les performances
+ peuvent être augmentées en le définissant à 0.
+ Cela permettra de mettre en cache les fichiers immédiatement.
+
+
+
+
+
+ opcache.huge_code_pages
+ bool
+
+
+
+ Active ou désactive la copie de code PHP (segment de texte) dans des HUGE PAGES.
+ Ceci devrait améliorer les performances, mais nécessite une configuration
+ appropriée du système d'exploitation.
+ Disponible sur Linux à partir de PHP 7.0.0,
+ et sur FreeBSD à partir de PHP 7.4.0.
+
+
+
+
+
+ opcache.lockfile_path
+ string
+
+
+
+ Chemin absolu utilisé pour enregistrer les lockfiles partagés (pour *nix uniquement)
+
+
+
+
+
+ opcache.opt_debug_level
+ string
+
+
+
+ Produit un vidage opcode pour déboguer les différentes étapes d'optimisation.
+ 0x10000 affichera les opcodes tels que le compilateur les produit avant qu'aucune
+ optimisation ne se produise alors que 0x20000 affichera les codes optimisés.
+
+
+
+
+
+ opcache.file_cache
+ string
+
+
+
+ Active et définit le répertoire de cache de second niveau. Ceci devrait
+ améliorer les performances quand la mémoire SHM est pleine, au redémarrage
+ du serveur ou réinitialisation de SHM.
+ La valeur par défaut "" désactive la mise en cache basée sur les fichiers.
+
+
+
+
+
+ opcache.file_cache_only
+ bool
+
+
+
+ Active ou désactive la mise en cache de l'opcode dans la mémoire partagée.
+
+
+
+ Antérieur à PHP 8.1.0, désactiver cette directive avec un fichier de
+ cache déjà rempli nécessite le vidage manuel du cache.
+
+
+
+
+
+
+ opcache.file_cache_consistency_checks
+ bool
+
+
+
+ Active ou désactive la validation de la somme de contrôle lorsque le script
+ est chargé à partir du cache de fichiers.
+
+
+
+
+
+ opcache.file_cache_fallback
+ bool
+
+
+
+ Insinue opcache.file_cache_only=1 pour un certain processus qui a échoué de
+ se rattacher à la mémoire partagée (pour Windows uniquement).
+ Le cache de fichiers activé explicitement est requis.
+
+
+
+ Désactiver cette option de configuration peut empêcher les processus
+ de démarrer, et est donc découragé.
+
+
+
+
+
+
+ opcache.validate_permission
+ bool
+
+
+
+ Valide les permissions des fichiers mises en cache par rapport à
+ l'utilisateur actuel.
+
+
+
+
+
+ opcache.validate_root
+ bool
+
+
+
+ Empêche la collision de noms dans les environnements `chroot`ées. Ceci devrait
+ être activé dans tous les environnements `chroot`ées pour empêcher l'accès
+ aux fichiers en-dehors du chroot.
+
+
+
+
+
+ opcache.preload
+ string
+
+
+
+ Spécifie un script PHP qui sera compilé et exécuté lors du démarrage du serveur,
+ et qui peut précharger d'autres fichiers, soit grâce à include
+ ou en utilisant la fonction opcache_compile_file. Toutes
+ les entités (par exemple fonctions et classes) définies dans ces fichiers seront
+ disponibles aux requêtes prêt à l'emploi, jusqu'à ce que le serveur soit éteint.
+
+
+
+ Le préchargement n'est pas supporté sur Windows.
+
+
+
+
+
+
+ opcache.preload_user
+ string
+
+
+
+ Permet au préchargement d'être exécuté en tant qu'utilisateur système
+ spécifié. Ceci est utile pour les serveurs qui démarrent en tant que root
+ avant de passer à un utilisateur système non privilégié. Le préchargement
+ en tant que root n'est pas autorisé par défaut pour des raisons de sécurité,
+ sauf si cette directive est explicitement définie sur root.
+ À partir de PHP 8.3.0, cette directive n'a plus besoin d'être définie afin d'autoriser le préchargement
+ lors de l'exécution en tant que root avec &cli.sapi; ou phpdbg SAPI.
+
+
+
+
+
+ opcache.cache_id
+ string
+
+
+
+ Sur Windows, tous les processus exécutant le même PHP
+ SAPI sous le même compte utilisateur ayant le même ID
+ de cache partage une instance unique de OPcache.
+ La valeur de l'ID de cache peut être choisie librement.
+
+
+
+ Pour IIS, des pools d'applications différentes peuvent avoir leur propre
+ instance OPcache en utilisant la variable d'environnement
+ APP_POOL_ID comme opcache.cache_id.
+
+
+
+
+
+
+ opcache.jit
+ stringint
+
+
+
+ Pour un usage typique, cette option accepte une des quatre valeurs de chaîne suivantes :
+
+
+ disable: Désactivé complètement, ne peut pas
+ être activé lors du runtime.
+ off: Désactivé, mais peut être activé lors du runtime.
+
+ tracing/on: Utilise le tracing JIT.
+ Activé par défaut et recommandé pour la plupart des utilisateurs.
+
+ function: Utilise le function JIT.
+
+
+ Pour un usage avancé, cette option accepte un entier à 4 chiffres
+ CRTO, où les chiffres signifient :
+
+
+ C (Drapeaux d'optimisation spécifique au CPU)
+
+
+ 0: Désactive les optimisations spécifiques au CPU.
+ 1: Active l'usage d'AVX, si le CPU le supporte.
+
+
+
+
+ R (allocation de registre)
+
+
+ 0: N'accomplit aucune allocation de registres
+ 1: Accomplit des allocations de registres au niveau d'un bloc.
+ 2: Accomplit des allocations de registres globales.
+
+
+
+
+ T (trigger/déclencheur)
+
+
+ 0: Compile toutes les fonctions lors du chargement du script.
+ 1: Compile les fonctions lors de leur première exécution.
+
+ 2: Profile les fonctions lors de la première requête et compile les fonctions
+ les plus chaudes juste après.
+
+ 3: Profile à la volée et compile les fonctions chaudes.
+ 4: Actuellement inutilisé.
+
+ 5: Utilise le tracing JIT. Profile à la volée et
+ compile les traces pour les segments de code chaud.
+
+
+
+
+
+ O (niveau d'optimisation)
+
+
+ 0: Pas de JIT.
+ 1: JIT minimal (appelle les handlers standard de la VM).
+ 2: Inline les handlers de la VM.
+ 3: Utilise l'inférence de type.
+ 4: Utilise un graphe d'appel.
+ 5: Optimise le script entier.
+
+
+
+
+ Le mode "tracing" correspond à CRTO = 1254,
+ le mode "function" correspond à CRTO = 1205.
+
+
+
+
+
+ opcache.jit_buffer_size
+ int
+
+
+
+ La quantité de mémoire partagée réservée pour du code compilé JIT. Une valeur de zéro désactive le JIT.
+
+ &ini.shorthandbytes;
+
+
+
+
+ opcache.jit_debug
+ int
+
+
+
+ Un masque de bits spécifiant quelle sortie de débogage de JIT activer
+ Pour les valeurs possibles, consultez zend_jit.h
+ (voir les définitions de macro commençant par ZEND_JIT_DEBUG).
+
+
+
+
+
+ opcache.jit_bisect_limit
+ int
+
+
+
+ Option de débogage qui désactive la compilation JIT après la compilation d'un certain nombre
+ de fonctions.
+ Ceci peut être utile pour bisect la source d'une mauvaise compilation JIT.
+ Remarque : cette option ne fonctionne que lorsque le déclencheur JIT est défini
+ à 0 (compilation au chargement du script) ou 1 (compilation à la première exécution),
+ par exemple, opcache.jit=1215.
+ Voir plus dans l'option opcache.jit.
+
+
+
+
+
+ opcache.jit_prof_threshold
+ float
+
+
+
+ Lors de l'utilisation du mode de déclencheur "profile les fonctions lors de la première requête",
+ cette limite détermine si une fonction est considérée chaude. Le nombre d'appels à la fonction
+ divisé par le nombre d'appels à toutes les fonctions doit être supérieur à cette limite.
+ Par exemple, une limite de 0.005 signifie qu'une fonction qui correspond à plus de 0.5% de tous
+ les appels sera compilée JIT.
+
+
+
+
+
+ opcache.jit_max_root_traces
+ int
+
+
+
+ Nombre maximal de traces racines (root traces). La trace racine est un flux d'exécution prenant
+ d'abord un chemin à travers le code, qui est une unité de la compilation JIT. JIT ne compilera
+ pas de nouveau code s'il atteint cette limite.
+
+
+
+
+
+ opcache.jit_max_side_traces
+ int
+
+
+
+ Nombre maximal de traces adjacentes (side trace) une trace racine peut avoir.
+ La trace adjacente est un autre flux d'exécution qui ne suit pas le chemin de la trace
+ racine compilée. Les traces adjacentes appartenant à la même trace racine ne seront pas compilées
+ si elles atteignent cette limite.
+
+
+
+
+
+ opcache.jit_max_exit_counters
+ int
+
+
+
+ Nombre maximal de compteurs de sortie de trace adjacente. Ceci limite le nombre total de
+ traces adjacentes qu'il peut y avoir, à travers toutes les traces racines.
+
+
+
+
+
+ opcache.jit_hot_loop
+ int
+
+
+
+ Après combien d'itérations une boucle est considérée chaude.
+ L'intervalle de valeurs valides est [0,255] ;
+ pour tout paramètre hors de cette plage, par exemple -1 ou 256, la valeur par défaut sera utilisée à la place.
+ Spécialement, une valeur nulle désactivera le JIT pour tracer et compiler toutes les boucles.
+
+
+
+
+
+ opcache.jit_hot_func
+ int
+
+
+
+ Après combien d'appels une fonction est considérée chaude.
+ La plage de valeurs valides est [0,255] ;
+ pour tout paramètre hors de cette plage, par exemple -1 ou 256, la valeur par défaut sera utilisée à la place.
+ Spécialement, une valeur nulle désactivera le JIT pour tracer et compiler toutes les fonctions.
+
+
+
+
+
+ opcache.jit_hot_return
+ int
+
+
+
+ Après combien de retours un retour est considéré chaud.
+ La plage de valeurs valides est [0,255] ;
+ pour tout paramètre hors de cette plage, par exemple -1 ou 256, la valeur par défaut sera utilisée à la place.
+ Spécialement, une valeur nulle désactivera le JIT pour tracer et compiler tous les retours.
+
+
+
+
+
+ opcache.jit_hot_side_exit
+ int
+
+
+
+ Après combien de sortie, une sortie adjacente est considérée chaude.
+ La plage de valeurs valides est [0,255] ;
+ pour tout paramètre hors de cette plage, par exemple -1 ou 256, la valeur par défaut sera utilisée à la place.
+ Spécialement, une valeur nulle désactivera le JIT pour tracer et compiler toutes les sorties latérales.
+
+
+
+
+
+ opcache.jit_blacklist_root_trace
+ int
+
+
+
+ Nombre maximal de tentatives de compilation d'une trace racine avant que celle-ci ne soit exclue.
+
+
+
+
+
+ opcache.jit_blacklist_side_trace
+ int
+
+
+
+ Nombre maximal de tentatives de compilation d'une trace adjacente avant que celle-ci ne soit exclue.
+
+
+
+
+
+ opcache.jit_max_loop_unrolls
+ int
+
+
+
+ Nombre maximal de tentatives pour dérouler une boucle dans une trace adjacente,
+ tentant d'atteindre la trace racine et de fermer la boucle extérieure.
+
+
+
+
+
+ opcache.jit_max_recursive_calls
+ int
+
+
+
+
+ Nombre maximal d'appels récursifs déroulés dans une boucle.
+
+
+
+
+
+ opcache.jit_max_recursive_returns
+ int
+
+
+
+
+ Nombre maximal de retours récursifs déroulés dans une boucle.
+
+
+
+
+
+ opcache.jit_max_polymorphic_calls
+ int
+
+
+
+ Nombre maximal de tentatives pour inliner un appel polymorphe (dynamique ou méthode).
+ Les appels au-dessus de cette limite sont traités comme mégamorphes et ne sont pas inlinés.
+
+
+
+
+
+
diff --git a/reference/openssl/book.xml b/reference/openssl/book.xml
index cd3568466b..af95040ec5 100644
--- a/reference/openssl/book.xml
+++ b/reference/openssl/book.xml
@@ -1,58 +1,58 @@
-
-
-
-
-
-
-
- OpenSSL
-
-
-
- &reftitle.intro;
-
- Cette extension lie des fonctions de la librairie
- OpenSSL pour le chiffrement et
- déchiffremment symétrique et asymétrique, PBKDF2, PKCS7, PKCS12, X509 et autre
- opération cryptographique. De plus elle fournit une implémentation de flux TLS.
-
-
- OpenSSL offre beaucoup de fonctionnalités
- que ce module n'offre pas actuellement. Quelques-unes pourront être ajoutées
- dans le futur.
-
-
-
-
- &reference.openssl.setup;
- &reference.openssl.constants;
- &reference.openssl.certparams;
- &reference.openssl.cert-verification;
- &reference.openssl.reference;
- &reference.openssl.opensslcertificate;
- &reference.openssl.opensslcertificatesigningrequest;
- &reference.openssl.opensslasymmetrickey;
-
-
-
-
-
+
+
+
+
+
+
+
+ OpenSSL
+
+
+
+ &reftitle.intro;
+
+ Cette extension lie des fonctions de la bibliothèque
+ OpenSSL pour le chiffrement et
+ déchiffremment symétrique et asymétrique, PBKDF2, PKCS7, PKCS12, X509 et autre
+ opération cryptographique. De plus elle fournit une implémentation de flux TLS.
+
+
+ OpenSSL offre beaucoup de fonctionnalités
+ que ce module n'offre pas actuellement. Quelques-unes pourront être ajoutées
+ dans le futur.
+
+
+
+
+ &reference.openssl.setup;
+ &reference.openssl.constants;
+ &reference.openssl.certparams;
+ &reference.openssl.cert-verification;
+ &reference.openssl.reference;
+ &reference.openssl.opensslcertificate;
+ &reference.openssl.opensslcertificatesigningrequest;
+ &reference.openssl.opensslasymmetrickey;
+
+
+
+
+
diff --git a/reference/openssl/configure.xml b/reference/openssl/configure.xml
index 9b97657dae..f113b5d1ab 100644
--- a/reference/openssl/configure.xml
+++ b/reference/openssl/configure.xml
@@ -1,149 +1,149 @@
-
-
-
-
-
-
- &reftitle.install;
-
- Pour utiliser le support OpenSSL de PHP, vous devez aussi compiler PHP avec l'option
- de configuration .
-
-
- La bibliothèque OpenSSL possède aussi des dépendances à l'exécution. Par exemple,
- OpenSSL a besoin d'accéder à un générateur de nombres pseudo-aléatoires; sur la
- plupart des plateformes Unix (incluant donc Linux), elle doit avoir accès au
- périphérique /dev/urandom ou /dev/random.
-
-
- L'option de configuration
- est disponible
- qui fait que PHP utilise la liste de chiffrement système au lieu des valeurs
- par défaut codé en dur.
-
-
- Note aux utilisateurs Win32
-
- &ext.windows.path.dll;
- libeay32.dll,
- ou, à partir de OpenSSL 1.1, libcrypto-*.dll
-
-
- De plus, si vous avez prévu d'utiliser les fonctions relatives à la génération
- de clés et aux certificats, vous devez installer un fichier
- openssl.cnf valide sur votre système.
- Un fichier de configuration de base est inclus dans les distributions de PHP
- pour win32 dans le dossier extras/ssl.
-
-
- PHP va rechercher le fichier openssl.cnf suivant la
- tactique suivante :
-
-
-
- La variable d'environnement OPENSSL_CONF, si elle est
- définie, sera utilisée comme chemin (comprenant le fichier) vers le
- fichier de configuration.
-
-
-
-
- La variable d'environnement SSLEAY_CONF, si elle est
- définie, sera utilisée comme chemin (comprenant le fichier) vers le
- fichier de configuration.
-
-
-
-
- Le fichier openssl.cnf sera supposé se trouver dans
- le dossier des certificats, tel que configuré lors de la compilation
- de la bibliothèque openssl. Cela signifie généralement C:\Program Files\Common Files\SSL\openssl.cnf (x64)
- or C:\Program Files (x86)\Common Files\SSL\openssl.cnf (x86), ou,
- avant PHP 7.4.0,
- c:\usr\local\ssl\openssl.cnf.
-
-
-
-
-
- Dans votre installation, vous devrez décider si vous allez installer le fichier
- de configuration dans le chemin par défaut ou si vous allez
- le faire ailleurs et configurer une variable d'environnement (possiblement
- par site virtuel). Notez qu'il est possible de remplacer le chemin par
- défaut en utilisant le paramètre options des fonctions
- qui requièrent un fichier de configuration.
-
-
-
- Veiller à ce que les utilisateurs non privilégiés ne soient pas autorisés à
- modifier openssl.cnf.
-
-
-
- À partir d'OpenSSL 3.0.0, qui est utilisé par défaut sur Windows depuis PHP 8.2.0, plusieurs
- algorithmes ont été jugés obsolètes. Ces algorithmes sont souvent tombés en désuétude,
- ont été considérés comme non sécurisés par la communauté cryptographique, ou quelque chose de similaire.
- Ces algorithmes sont encore disponibles via le fournisseur d'algorithmes legacy
- (extras/ssl/legacy.dll) ; son utilisation est décrite dans la
- section configuration du fournisseur
- du manuel OpenSSL.
-
-
-
-
- &reftitle.changelog;
-
-
-
-
-
- &Version;
- &Description;
-
-
-
-
- 7.4.0
-
- L'option n'accepte plus
- d'argument de répertoire en faveur du réglage de la variable pkg-config
- PKG_CONFIG_PATH vers l'emplacement d'OpenSSL, ou en spécifiant les variables OPENSSL_LIBS et
- OPENSSL_CFLAGS.
-
-
-
- 7.4.0
-
- Le chemin de configuration par défaut d'OpenSSL a été modifié de C:\usr\local\ssl
- à C:\Program Files\Common Files\SSL et
- C:\Program Files (x86)\Common Files\SSL, respectivement.
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+ &reftitle.install;
+
+ Pour utiliser le support OpenSSL de PHP, vous devez aussi compiler PHP avec l'option
+ de configuration .
+
+
+ La bibliothèque OpenSSL possède aussi des dépendances à l'exécution. Par exemple,
+ OpenSSL a besoin d'accéder à un générateur de nombres pseudo-aléatoires; sur la
+ plupart des plateformes Unix (incluant donc Linux), elle doit avoir accès au
+ périphérique /dev/urandom ou /dev/random.
+
+
+ L'option de configuration
+ est disponible
+ qui fait que PHP utilise la liste de chiffrement système au lieu des valeurs
+ par défaut codé en dur.
+
+
+ Note aux utilisateurs Win32
+
+ &ext.windows.path.dll;
+ libeay32.dll,
+ ou, à partir de OpenSSL 1.1, libcrypto-*.dll
+
+
+ De plus, si vous avez prévu d'utiliser les fonctions relatives à la génération
+ de clés et aux certificats, vous devez installer un fichier
+ openssl.cnf valide sur votre système.
+ Un fichier de configuration de base est inclus dans les distributions de PHP
+ pour win32 dans le dossier extras/ssl.
+
+
+ PHP va rechercher le fichier openssl.cnf suivant la
+ tactique suivante :
+
+
+
+ La variable d'environnement OPENSSL_CONF, si elle est
+ définie, sera utilisée comme chemin (comprenant le fichier) vers le
+ fichier de configuration.
+
+
+
+
+ La variable d'environnement SSLEAY_CONF, si elle est
+ définie, sera utilisée comme chemin (comprenant le fichier) vers le
+ fichier de configuration.
+
+
+
+
+ Le fichier openssl.cnf sera supposé se trouver dans
+ le dossier des certificats, tel que configuré lors de la compilation
+ de la bibliothèque openssl. Cela signifie généralement C:\Program Files\Common Files\SSL\openssl.cnf (x64)
+ or C:\Program Files (x86)\Common Files\SSL\openssl.cnf (x86), ou,
+ avant PHP 7.4.0,
+ c:\usr\local\ssl\openssl.cnf.
+
+
+
+
+
+ Dans votre installation, vous devrez décider si vous allez installer le fichier
+ de configuration dans le chemin par défaut ou si vous allez
+ le faire ailleurs et configurer une variable d'environnement (possiblement
+ par site virtuel). Notez qu'il est possible de remplacer le chemin par
+ défaut en utilisant le paramètre options des fonctions
+ qui requièrent un fichier de configuration.
+
+
+
+ Veiller à ce que les utilisateurs non privilégiés ne soient pas autorisés à
+ modifier openssl.cnf.
+
+
+
+ À partir d'OpenSSL 3.0.0, qui est utilisé par défaut sur Windows depuis PHP 8.2.0, plusieurs
+ algorithmes ont été jugés obsolètes. Ces algorithmes sont souvent tombés en désuétude,
+ ont été considérés comme non sécurisés par la communauté cryptographique, ou quelque chose de similaire.
+ Ces algorithmes sont encore disponibles via le fournisseur d'algorithmes legacy
+ (extras/ssl/legacy.dll) ; son utilisation est décrite dans la
+ section configuration du fournisseur
+ du manuel OpenSSL.
+
+
+
+
+ &reftitle.changelog;
+
+
+
+
+
+ &Version;
+ &Description;
+
+
+
+
+ 7.4.0
+
+ L'option n'accepte plus
+ d'argument de répertoire en faveur du réglage de la variable pkg-config
+ PKG_CONFIG_PATH vers l'emplacement d'OpenSSL, ou en spécifiant les variables OPENSSL_LIBS et
+ OPENSSL_CFLAGS.
+
+
+
+ 7.4.0
+
+ Le chemin de configuration par défaut d'OpenSSL a été modifié de C:\usr\local\ssl
+ à C:\Program Files\Common Files\SSL et
+ C:\Program Files (x86)\Common Files\SSL, respectivement.
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reference/openssl/functions/openssl-digest.xml b/reference/openssl/functions/openssl-digest.xml
index 1874610c17..5cd2618b69 100644
--- a/reference/openssl/functions/openssl-digest.xml
+++ b/reference/openssl/functions/openssl-digest.xml
@@ -39,7 +39,7 @@
digest_algo
- La méthode digest à utiliser par exemple "SHA256", voir
+ La méthode digest à utiliser par exemple "SHA256", voir
openssl_get_md_methods pour obtenir la liste des
méthodes de digest disponibles.
diff --git a/reference/openssl/functions/openssl-x509-checkpurpose.xml b/reference/openssl/functions/openssl-x509-checkpurpose.xml
index c7e61737d2..318a3ccb0c 100644
--- a/reference/openssl/functions/openssl-x509-checkpurpose.xml
+++ b/reference/openssl/functions/openssl-x509-checkpurpose.xml
@@ -103,7 +103,7 @@
- Ces options ne sont pas des champs de bits : vous ne pouvez en
+ Ces options ne sont pas des champs de bits : vous ne pouvez en
passer qu'une seule à la fois.
diff --git a/reference/openssl/setup.xml b/reference/openssl/setup.xml
index ec5a055699..88cff1f5a8 100644
--- a/reference/openssl/setup.xml
+++ b/reference/openssl/setup.xml
@@ -1,72 +1,72 @@
-
-
-
-
-
- &reftitle.setup;
-
-
-
- &reftitle.required;
-
- Afin de pouvoir utiliser les fonctions OpenSSL, vous devez installer la librairie
- OpenSSL.
- PHP 7.0 nécessite OpenSSL >= 0.9.8, < 1.2. PHP 7.1-8.0 nécessitent
- OpenSSL >= 1.0.1, < 3.0. PHP >= 8.1 nécessite OpenSSL
- >= 1.0.2, < 4.0. PHP >= 8.4 nécessite OpenSSL
- >= 1.1.1, < 4.0.
-
-
-
- Vous êtes vivement encouragé à utiliser la version maintenue d'OpenSSL afin
- d'éviter certaines vulnérabilités sur votre serveur web.
-
-
-
-
-
-
- &reference.openssl.configure;
-
-
-
- &reference.openssl.ini;
-
-
-
-
- &reftitle.resources;
-
- Antérieur à PHP 8.0.0, il y avait 3 types de ressources définie dans le
- module OpenSSL :
-
- OpenSSL key
- OpenSSL X.509
- OpenSSL X.509 CSR
-
-
-
-
-
-
-
-
+
+
+
+
+
+ &reftitle.setup;
+
+
+
+ &reftitle.required;
+
+ Afin de pouvoir utiliser les fonctions OpenSSL, vous devez installer la bibliothèque
+ OpenSSL.
+ PHP 7.0 nécessite OpenSSL >= 0.9.8, < 1.2. PHP 7.1-8.0 nécessitent
+ OpenSSL >= 1.0.1, < 3.0. PHP >= 8.1 nécessite OpenSSL
+ >= 1.0.2, < 4.0. PHP >= 8.4 nécessite OpenSSL
+ >= 1.1.1, < 4.0.
+
+
+
+ Vous êtes vivement encouragé à utiliser la version maintenue d'OpenSSL afin
+ d'éviter certaines vulnérabilités sur votre serveur web.
+
+
+
+
+
+
+ &reference.openssl.configure;
+
+
+
+ &reference.openssl.ini;
+
+
+
+
+ &reftitle.resources;
+
+ Antérieur à PHP 8.0.0, il y avait 3 types de ressources définie dans le
+ module OpenSSL :
+
+ OpenSSL key
+ OpenSSL X.509
+ OpenSSL X.509 CSR
+
+
+
+
+
+
+
+
diff --git a/reference/parallel/parallel/runtime/construct.xml b/reference/parallel/parallel/runtime/construct.xml
index 022d95985f..c3c64937ac 100644
--- a/reference/parallel/parallel/runtime/construct.xml
+++ b/reference/parallel/parallel/runtime/construct.xml
@@ -9,6 +9,13 @@
&reftitle.description;
+
+ publicparallel\Runtime::__construct
+
+
+
+ Construit une nouvelle exécution sans amorçage.
+ publicparallel\Runtime::__constructstringbootstrap
diff --git a/reference/parle/book.xml b/reference/parle/book.xml
index a8c73b5f68..7fb1b19845 100644
--- a/reference/parle/book.xml
+++ b/reference/parle/book.xml
@@ -1,59 +1,59 @@
-
-
-
-
-
-
- Analyse lexicale et syntaxique
- Parle
-
-
- &reftitle.intro;
- &warn.experimental;
-
- L'extension parle apporte des facilités de lexing et de parsing à usage général. L'implémentation est basée sur les bibliothèques de ces librairies et nécessite un compilateur compatible avec C++14. L'analyse lexicale est basé sur la correspondance regex, l'analyse syntaxique est LALR(1). Les analyseurs sont générés à la volée et peuvent être utilisés immédiatement après avoir été finalisés. Parle traite l'analyse lexicale et syntaxique, la représentation et le traitement des structures de données appropriées sont la tâche de l'implémenteur. La sérialisation et la génération de code ne sont pas prises en charge par l'extension, pour l'instant.
-
-
- L'analyseur lexical est un processus de division d'une séquence de caractères en une liste de lexèmes. La liste de lexèmes peut ensuite être utilisée pour l'analyse syntaxique par rapport à une grammaire formelle. Ces opérations sont également connues sous le nom d'analyse lexicale (lexing) et d'analyse syntaxique (parsing). Cette documentation n'a pas pour but de fournir une information exhaustive sur le lexing et le parsing. De bonnes informations à ce sujet sont disponibles sur les nombreuses ressources sur le net. Plusieurs exemples d'utilisation sont inclus, pour montrer la fonctionnalité. L'extension est utile pour les développeurs PHP désireux d'apprendre ou d'utiliser l'analyse lexicale et syntaxique. Les machines à états et l'analyse de grammaire n'ont pas
-
-
- Les cas d'utilisation courants pour parle sont, quand un format de données est trop complexe pour être géré par la correspondance regex avec PCRE. L'application pratique est donc large. Que ce soit un format de données spécifique, une modification du comportement des fonctions existantes, voire un langage de programmation et au-delà. Les méthodes d'aide telles que Parle\Lexer::dump pour inspecter la machine à états générée, ou Parle\Parser::dump pour inspecter la grammaire générée, sont utiles. La méthode Parle\Parser::trace peut également être utilisée pour suivre l'opération d'analyse.
-
-
-
- &reference.parle.setup;
- &reference.parle.constants;
- &reference.parle.pattern.matching;
- &reference.parle.examples;
- &reference.parle.parle.lexer;
- &reference.parle.parle.rlexer;
- &reference.parle.parle.parser;
- &reference.parle.parle.rparser;
- &reference.parle.parle.stack;
- &reference.parle.parle.token;
- &reference.parle.parle.errorinfo;
- &reference.parle.parle.lexerexception;
- &reference.parle.parle.parserexception;
-
-
-
-
+
+
+
+
+
+
+ Analyse lexicale et syntaxique
+ Parle
+
+
+ &reftitle.intro;
+ &warn.experimental;
+
+ L'extension parle apporte des facilités de lexing et de parsing à usage général. L'implémentation est basée sur les bibliothèques de ces bibliothèques et nécessite un compilateur compatible avec C++14. L'analyse lexicale est basé sur la correspondance regex, l'analyse syntaxique est LALR(1). Les analyseurs sont générés à la volée et peuvent être utilisés immédiatement après avoir été finalisés. Parle traite l'analyse lexicale et syntaxique, la représentation et le traitement des structures de données appropriées sont la tâche de l'implémenteur. La sérialisation et la génération de code ne sont pas prises en charge par l'extension, pour l'instant.
+
+
+ L'analyseur lexical est un processus de division d'une séquence de caractères en une liste de lexèmes. La liste de lexèmes peut ensuite être utilisée pour l'analyse syntaxique par rapport à une grammaire formelle. Ces opérations sont également connues sous le nom d'analyse lexicale (lexing) et d'analyse syntaxique (parsing). Cette documentation n'a pas pour but de fournir une information exhaustive sur le lexing et le parsing. De bonnes informations à ce sujet sont disponibles sur les nombreuses ressources sur le net. Plusieurs exemples d'utilisation sont inclus, pour montrer la fonctionnalité. L'extension est utile pour les développeurs PHP désireux d'apprendre ou d'utiliser l'analyse lexicale et syntaxique. Les machines à états et l'analyse de grammaire n'ont pas
+
+
+ Les cas d'utilisation courants pour parle sont, quand un format de données est trop complexe pour être géré par la correspondance regex avec PCRE. L'application pratique est donc large. Que ce soit un format de données spécifique, une modification du comportement des fonctions existantes, voire un langage de programmation et au-delà. Les méthodes d'aide telles que Parle\Lexer::dump pour inspecter la machine à états générée, ou Parle\Parser::dump pour inspecter la grammaire générée, sont utiles. La méthode Parle\Parser::trace peut également être utilisée pour suivre l'opération d'analyse.
+
+
+
+ &reference.parle.setup;
+ &reference.parle.constants;
+ &reference.parle.pattern.matching;
+ &reference.parle.examples;
+ &reference.parle.parle.lexer;
+ &reference.parle.parle.rlexer;
+ &reference.parle.parle.parser;
+ &reference.parle.parle.rparser;
+ &reference.parle.parle.stack;
+ &reference.parle.parle.token;
+ &reference.parle.parle.errorinfo;
+ &reference.parle.parle.lexerexception;
+ &reference.parle.parle.parserexception;
+
+
+
+
diff --git a/reference/parle/parle/rlexer/push.xml b/reference/parle/parle/rlexer/push.xml
index 3a32efe6ea..0c8b06fa47 100644
--- a/reference/parle/parle/rlexer/push.xml
+++ b/reference/parle/parle/rlexer/push.xml
@@ -1,121 +1,121 @@
-
-
-
-
-
- Parle\RLexer::push
- Ajoute une règle d'analyse
-
-
-
- &reftitle.description;
-
- publicvoidParle\RLexer::push
- stringregex
- intid
-
-
-
- publicvoidParle\RLexer::push
- stringstate
- stringregex
- intid
- stringnewState
-
-
-
- publicvoidParle\RLexer::push
- stringstate
- stringregex
- stringnewState
-
-
- Ajoute un modèle pour la reconnaissance des lexèmes.
-
-
- Un 'état de début' (start state) et un 'état de sortie' (exit state) peuvent être spécifiés en utilisant une signature appropriée.
-
-
-
-
- &reftitle.parameters;
-
-
- regex
-
-
- Expression régulière utilisée pour la reconnaissance des lexèmes.
-
-
-
-
- id
-
-
- L'identifiant du jeton. Si l'instance de l'analyseur lexical est destinée à être utilisée seule, il peut s'agir d'un nombre arbitraire. Si l'instance de l'analyseur lexical doit être passée à l'analyseur, il doit s'agir d'un identifiant retourné par Parle\RParser::tokenid.
-
-
-
-
- state
-
-
- State name. If '*' is used as start state, then the rule is applied to all lexer states.
-
-
-
-
- newState
-
-
- Le nouveau nom de l'état, après l'application de la règle.
-
-
- Si '.' est spécifié comme état de sortie, alors l'état du lexer n'est pas modifié lorsque cette règle correspond. Un état de sortie avec '>' avant le nom signifie pousser. Utilisez la signature sans id pour soit la continuation ou pour commencer la correspondance, quand une continuation ou une récursion est requise.
-
-
- Si '<' est spécifié comme état de sortie, cela signifie pop. Dans ce cas, la signature contenant l'id peut être utilisée pour identifier la correspondance. Il est à noter que même dans le cas où un id est spécifié, la règle se terminera d'abord lorsque tous les poussées précédentes auront été enlevées.
-
-
-
-
-
-
-
-
- &reftitle.returnvalues;
-
- &return.void;
-
-
-
-
-
-
-
+
+
+
+
+
+ Parle\RLexer::push
+ Ajoute une règle d'analyse
+
+
+
+ &reftitle.description;
+
+ publicvoidParle\RLexer::push
+ stringregex
+ intid
+
+
+
+ publicvoidParle\RLexer::push
+ stringstate
+ stringregex
+ intid
+ stringnewState
+
+
+
+ publicvoidParle\RLexer::push
+ stringstate
+ stringregex
+ stringnewState
+
+
+ Ajoute un modèle pour la reconnaissance des lexèmes.
+
+
+ Un 'état de début' (start state) et un 'état de sortie' (exit state) peuvent être spécifiés en utilisant une signature appropriée.
+
+
+
+
+ &reftitle.parameters;
+
+
+ regex
+
+
+ Expression régulière utilisée pour la reconnaissance des lexèmes.
+
+
+
+
+ id
+
+
+ L'identifiant du jeton. Si l'instance de l'analyseur lexical est destinée à être utilisée seule, il peut s'agir d'un nombre arbitraire. Si l'instance de l'analyseur lexical doit être passée à l'analyseur, il doit s'agir d'un identifiant retourné par Parle\RParser::tokenid.
+
+
+
+
+ state
+
+
+ Nom de l'état. Si '*' est utilisé comme état de départ, alors la règle est appliquée à tous les états de l'analyseur lexical.
+
+
+
+
+ newState
+
+
+ Le nouveau nom de l'état, après l'application de la règle.
+
+
+ Si '.' est spécifié comme état de sortie, alors l'état du lexer n'est pas modifié lorsque cette règle correspond. Un état de sortie avec '>' avant le nom signifie pousser. Utilisez la signature sans id pour soit la continuation ou pour commencer la correspondance, quand une continuation ou une récursion est requise.
+
+
+ Si '<' est spécifié comme état de sortie, cela signifie pop. Dans ce cas, la signature contenant l'id peut être utilisée pour identifier la correspondance. Il est à noter que même dans le cas où un id est spécifié, la règle se terminera d'abord lorsque tous les poussées précédentes auront été enlevées.
+
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+
+ &return.void;
+
+
+
+
+
+
+
diff --git a/reference/password/constants.xml b/reference/password/constants.xml
index 3ecd00e18f..db5eb46a2c 100644
--- a/reference/password/constants.xml
+++ b/reference/password/constants.xml
@@ -1,260 +1,260 @@
-
-
-
-
- &reftitle.constants;
- &extension.constants.core;
-
-
-
-
-
- PASSWORD_BCRYPT
- (string)
-
-
-
- La constante PASSWORD_BCRYPT est utilisée pour
- créer une nouvelle table de hachage de mot de passe en utilisant
- l'algorithme CRYPT_BLOWFISH.
-
-
- Elle a toujours retourné le résultat de hachage en utilisant le format
- crypt "$2y$", qui sera toujours une chaîne de caractères de 60 caractères
- de long.
-
-
- Options supportées :
-
-
-
-
- salt (string) - permet de fournir manuellement un salt à utiliser
- pour le hachage du mot de passe. Notez que ceci va écraser tout salt généré
- automatiquement.
-
-
- Si omis, un salt aléatoire sera généré par la fonction
- password_hash pour chaque mot de passe haché.
- C'est bien le but de l'opération et à partir de PHP 7.0.0 l'option salt a été désapprouvée.
-
-
-
-
- cost (int) - le coût algorithmique à utiliser.
- Des exemples de ces valeurs peuvent être trouvés sur la page
- de la documentation de la fonction crypt.
-
-
- Si omis, une valeur par défaut de 12 sera utilisée.
- C'est une bonne base mais vous pourriez vouloir l'augmenter suivant
- votre architecture matérielle.
-
-
-
-
-
-
-
- PASSWORD_BCRYPT_DEFAULT_COST
- (int)
-
-
-
-
-
-
-
-
-
-
- PASSWORD_ARGON2I
- (string)
-
-
-
- PASSWORD_ARGON2I est utilisé pour créer de nouveaux
- hashs de mot de passe à l'aide de l'algorithme Argon2i.
-
-
- Options prises en charge :
-
-
-
-
- memory_cost (int) - Mémoire maximale
- (en kibioctets) pouvant être utilisée pour calculer le hachage Argon2. Par
- défaut à PASSWORD_ARGON2_DEFAULT_MEMORY_COST.
-
-
-
-
- time_cost (int) - Durée maximale de
- temps qu'il peut prendre pour calculer le hachage Argon2. Par
- défaut à PASSWORD_ARGON2_DEFAULT_TIME_COST.
-
-
-
-
- threads (int) - Nombre de threads à
- utiliser pour calculer le hachage Argon2. Par défaut à
- PASSWORD_ARGON2_DEFAULT_THREADS.
- Uniquement disponible avec libargon2, et non avec l'implémentation
- libsodium.
-
-
-
-
- &php.version.added; 7.2.0.
-
-
-
-
-
- PASSWORD_ARGON2ID
- (string)
-
-
-
- PASSWORD_ARGON2ID est utilisé pour créer de nouveaux
- hashs de mot de passe à l'aide de l'algorithme Argon2id. Supporte les mêmes options que
- PASSWORD_ARGON2I.
-
-
- &php.version.added; 7.3.0.
-
-
-
-
-
- PASSWORD_ARGON2_DEFAULT_MEMORY_COST
- (int)
-
-
-
- Quantité de mémoire par défaut (en octets) qui sera utilisé en
- essayant de calculer un hachage.
-
-
- &php.version.added; 7.2.0.
-
-
-
-
-
- PASSWORD_ARGON2_DEFAULT_TIME_COST
- (int)
-
-
-
- Durée de temps par défaut que sera passer pour essayer de calculer
- un hachage.
-
-
- &php.version.added; 7.2.0.
-
-
-
-
-
- PASSWORD_ARGON2_DEFAULT_THREADS
- (int)
-
-
-
- Nombre par défaut de threads que Argon2lib va utiliser.
- Pas disponible avec l'implémentation libsodium.
-
-
- &php.version.added; 7.2.0.
-
-
-
-
-
- PASSWORD_ARGON2_PROVIDER
- (string)
-
-
-
-
-
- Disponible à partir de PHP 7.4.0.
-
-
-
-
-
- PASSWORD_DEFAULT
- (string)
-
-
-
- L'algorithme par défaut à utiliser pour le hachage si aucun
- algorithme n'est fourni. Cette valeur peut changer dans les futures
- versions de PHP où il est probable que de meilleurs algorithmes
- de hachage soient supportés.
-
-
- Il est important de noter qu'au fil du temps, cette constante peut changer.
- Il est donc crucial d'être conscient que la longueur du hachage résultant peut varier.
- Par conséquent, lors de l'utilisation de PASSWORD_DEFAULT, le hachage résultant
- doit être stocké d'une manière capable d'accueillir des hachages arbitraires,
- la largeur recommandée est de 255 octets.
-
-
- Actuellement, c'est un alias de PASSWORD_BCRYPT.
-
-
-
-
-
-
-
- &reftitle.changelog;
-
-
-
-
-
- &Version;
- &Description;
-
-
-
-
- 7.4.0
-
- Les valeurs pour les constantes PASSWORD_BCRYPT,
- PASSWORD_ARGON2I, PASSWORD_ARGON2ID
- et PASSWORD_DEFAULT sont désormais des &string;s.
- Auparavant, elles étaient des &integer;s.
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ &reftitle.constants;
+ &extension.constants.core;
+
+
+
+
+
+ PASSWORD_BCRYPT
+ (string)
+
+
+
+ La constante PASSWORD_BCRYPT est utilisée pour
+ créer une nouvelle table de hachage de mot de passe en utilisant
+ l'algorithme CRYPT_BLOWFISH.
+
+
+ Elle a toujours retourné le résultat de hachage en utilisant le format
+ crypt "$2y$", qui sera toujours une chaîne de caractères de 60 caractères
+ de long.
+
+
+ Options supportées :
+
+
+
+
+ salt (string) - permet de fournir manuellement un salt à utiliser
+ pour le hachage du mot de passe. Notez que ceci va écraser tout salt généré
+ automatiquement.
+
+
+ Si omis, un salt aléatoire sera généré par la fonction
+ password_hash pour chaque mot de passe haché.
+ C'est bien le but de l'opération et à partir de PHP 7.0.0 l'option salt a été désapprouvée.
+
+
+
+
+ cost (int) - le coût algorithmique à utiliser.
+ Des exemples de ces valeurs peuvent être trouvés sur la page
+ de la documentation de la fonction crypt.
+
+
+ Si omis, une valeur par défaut de 12 sera utilisée.
+ C'est une bonne base mais vous pourriez vouloir l'augmenter suivant
+ votre architecture matérielle.
+
+
+
+
+
+
+
+ PASSWORD_BCRYPT_DEFAULT_COST
+ (int)
+
+
+
+
+
+
+
+
+
+
+ PASSWORD_ARGON2I
+ (string)
+
+
+
+ PASSWORD_ARGON2I est utilisé pour créer de nouveaux
+ hashs de mot de passe à l'aide de l'algorithme Argon2i.
+
+
+ Options prises en charge :
+
+
+
+
+ memory_cost (int) - Mémoire maximale
+ (en kibioctets) pouvant être utilisée pour calculer le hachage Argon2. Par
+ défaut à PASSWORD_ARGON2_DEFAULT_MEMORY_COST.
+
+
+
+
+ time_cost (int) - Durée maximale de
+ temps qu'il peut prendre pour calculer le hachage Argon2. Par
+ défaut à PASSWORD_ARGON2_DEFAULT_TIME_COST.
+
+
+
+
+ threads (int) - Nombre de threads à
+ utiliser pour calculer le hachage Argon2. Par défaut à
+ PASSWORD_ARGON2_DEFAULT_THREADS.
+ Uniquement disponible avec libargon2, et non avec l'implémentation
+ libsodium.
+
+
+
+
+ &php.version.added; 7.2.0.
+
+
+
+
+
+ PASSWORD_ARGON2ID
+ (string)
+
+
+
+ PASSWORD_ARGON2ID est utilisé pour créer de nouveaux
+ hashs de mot de passe à l'aide de l'algorithme Argon2id. Supporte les mêmes options que
+ PASSWORD_ARGON2I.
+
+
+ &php.version.added; 7.3.0.
+
+
+
+
+
+ PASSWORD_ARGON2_DEFAULT_MEMORY_COST
+ (int)
+
+
+
+ Quantité de mémoire par défaut (en octets) qui sera utilisé en
+ essayant de calculer un hachage.
+
+
+ &php.version.added; 7.2.0.
+
+
+
+
+
+ PASSWORD_ARGON2_DEFAULT_TIME_COST
+ (int)
+
+
+
+ Durée de temps par défaut que sera passer pour essayer de calculer
+ un hachage.
+
+
+ &php.version.added; 7.2.0.
+
+
+
+
+
+ PASSWORD_ARGON2_DEFAULT_THREADS
+ (int)
+
+
+
+ Nombre par défaut de threads que Argon2lib va utiliser.
+ Pas disponible avec l'implémentation libsodium.
+
+
+ &php.version.added; 7.2.0.
+
+
+
+
+
+ PASSWORD_ARGON2_PROVIDER
+ (string)
+
+
+
+
+
+ Disponible à partir de PHP 7.4.0.
+
+
+
+
+
+ PASSWORD_DEFAULT
+ (string)
+
+
+
+ L'algorithme par défaut à utiliser pour le hachage si aucun
+ algorithme n'est fourni. Cette valeur peut changer dans les futures
+ versions de PHP où il est probable que de meilleurs algorithmes
+ de hachage soient supportés.
+
+
+ Il est important de noter qu'au fil du temps, cette constante peut changer.
+ Il est donc crucial d'être conscient que la longueur du hachage résultant peut varier.
+ Par conséquent, lors de l'utilisation de PASSWORD_DEFAULT, le hachage résultant
+ doit être stocké d'une manière capable d'accueillir des hachages arbitraires,
+ la largeur recommandée est de 255 octets.
+
+
+ Actuellement, c'est un alias de PASSWORD_BCRYPT.
+
+
+
+
+
+
+
+ &reftitle.changelog;
+
+
+
+
+
+ &Version;
+ &Description;
+
+
+
+
+ 7.4.0
+
+ Les valeurs pour les constantes PASSWORD_BCRYPT,
+ PASSWORD_ARGON2I, PASSWORD_ARGON2ID
+ et PASSWORD_DEFAULT sont désormais des &string;s.
+ Auparavant, elles étaient des &integer;s.
+
+
+
+
+
+
+
+
+
+
diff --git a/reference/password/functions/password-hash.xml b/reference/password/functions/password-hash.xml
index d1ab38f838..7cd5ecd5e3 100644
--- a/reference/password/functions/password-hash.xml
+++ b/reference/password/functions/password-hash.xml
@@ -100,20 +100,20 @@
memory_cost (int) - Mémoire maximale
(en kilo octets binaire) pouvant être utilisée pour calculer le hachage Argon2. Par
- défaut à PASSWORD_ARGON2_DEFAULT_MEMORY_COST.
+ défaut à PASSWORD_ARGON2_DEFAULT_MEMORY_COST.
time_cost (int) - Durée maximale de
temps qu'il peut prendre pour calculer le hachage Argon2. Par
- défaut à PASSWORD_ARGON2_DEFAULT_TIME_COST.
+ défaut à PASSWORD_ARGON2_DEFAULT_TIME_COST.
threads (int) - Nombre de threads à
- utiliser pour calculer le hachage Argon2. Par défaut à PASSWORD_ARGON2_DEFAULT_THREADS.
+ utiliser pour calculer le hachage Argon2. Par défaut à PASSWORD_ARGON2_DEFAULT_THREADS.
diff --git a/reference/pcre/functions/preg-match.xml b/reference/pcre/functions/preg-match.xml
index ddaccbe824..1cac5b8e48 100644
--- a/reference/pcre/functions/preg-match.xml
+++ b/reference/pcre/functions/preg-match.xml
@@ -400,7 +400,7 @@ Array
&reftitle.notes;
- N'utilisez pas preg_match si vous voulez uniquement
+ N'utilisez pas preg_match si vous voulez uniquement
savoir si une chaîne est contenue dans une autre.
Utilisez strpos à la place car ça sera plus rapide.
diff --git a/reference/pcre/functions/preg-replace.xml b/reference/pcre/functions/preg-replace.xml
index 83a17a70f4..1a3bef9652 100644
--- a/reference/pcre/functions/preg-replace.xml
+++ b/reference/pcre/functions/preg-replace.xml
@@ -93,7 +93,7 @@
\ et NULL) dans la chaîne qui remplace les références arrières.
Ce comportement se justifie afin d'assurer qu'aucune erreur de syntaxe
ne survient lors de l'utilisation des références arrières avec des guillemets
- simples et doubles (e.g. 'strlen(\'$1\')+strlen("$2")').
+ simples et doubles (e.g. 'strlen(\'$1\')+strlen("$2")').
Assurez-vous d'être familier avec la syntaxe
des chaînes afin de savoir exactement à quoi la chaîne interprétée doit ressembler.
diff --git a/reference/pcre/pattern.syntax.xml b/reference/pcre/pattern.syntax.xml
index 3b96165fca..7f07e3ca9b 100644
--- a/reference/pcre/pattern.syntax.xml
+++ b/reference/pcre/pattern.syntax.xml
@@ -1,2647 +1,2647 @@
-
-
-
-
-
- Syntaxe des masques
- Fonctionnement des expressions régulières
-
-
- &reftitle.intro;
-
- La syntaxe et la sémantique des expressions régulières
- supportées par PCRE sont décrites dans cette section. Les expressions
- régulières sont aussi décrites dans la documentation
- Perl, et dans un grand nombre d'autres livres, avec de nombreux exemples.
- Le livre de Jeffrey Friedl "Mastering Regular Expressions", édité
- chez O'Reilly (ISBN 1-56592-257-3), les décrits en profondeur.
- Cette description est organisée comme une documentation de
- référence.
-
-
- Une expression rationnelle est un masque appliqué à
- une chaîne sujet, de gauche à droite. La plupart des
- caractères se représentent eux-mêmes. Un exemple
- trivial : un masque qui serait "Le rapide renard gris",
- pourra correspondre à une partie de la chaîne sujet qui sera
- identique au masque, par exemple
- "Le rapide renard gris court dans la forêt",
-
-
-
- Délimiteurs
-
- Lors de l'utilisation des fonctions PCRE, il est nécessaire que le motif soit encadré
- par des délimiteurs. Un délimiteur peut être n'importe quel caractère
- non alpha-numérique autre qu'un backslash ou qu'un espace.
- Les caractères d'espacement blanc avant un délimiteur valide sont silencieusement ignoré.
-
-
- Les délimiteurs les plus courants sont les slashes (/), dièses
- (#) et les tildes (~). Les exemples suivants ont
- tous des motifs encadrés avec des délimiteurs valides.
-
-
-
-
-
-
-
- Il est également possible d'utiliser les délimiteurs utilisant les crochets
- où les crochets ouvrants et fermants sont respectivement les délimiteurs de
- début et de fin. (), {},
- [] et <> sont tous des styles
- de crochets valides.
-
-
-
-]]>
-
-
- Les délimiteurs utilisant les crochets n'ont pas besoin d'être échappés lorsqu'ils
- sont utilisés comme caractères méta dans un masque, mais, comme tout autre opérateur,
- ils doivent être échappés s'ils sont utilisés comme caractères littéraux.
-
-
- Si le délimiteur doit être décrit dans le motif, il doit être échappé avec un backslash.
- Si le délimiteur apparait souvent dans le motif, choisir un autre délimiteur est une bonne
- idée pour en augmenter la lisibilité.
-
-
-
-
-
- La fonction preg_quote peut être utilisée pour échapper une chaîne
- et l'utiliser dans un motif. Son second paramètre optionnel sert à spécifier le délimiteur
- qui doit être échappé.
-
-
- Vous pouvez aussi utiliser des
- modificateurs de motif après le délimiteur final. L'exemple suivant montre
- une correspondance insensible à la casse.
-
-
-
-
-
-
-
-
- Métacaractères
-
- La puissance des expressions régulières provient de
- leur capacité à autoriser des alternatives et des quantificateurs
- de répétition dans le masque. Ils sont encodés
- dans le masque par des métacaractères, qui ne représentent
- pas ce qu'ils sont, mais sont interprétés d'une certaine
- manière.
-
-
- Il y a deux sortes de métacaractères : ceux qui sont
- reconnus n'importe où dans un masque, hormis entre crochets,
- et ceux qui sont reconnus entre crochets.
- À l'extérieur des crochets, les métacaractères sont :
-
-
- Métacaractère en dehors des crochets
-
-
-
- MétacaractèreDescription
-
-
-
-
- \Caractère d'échappement, avec de multiples usages
-
-
- ^Le début de la chaîne sujet (ou de ligne, en mode multilignes)
-
-
- $La fin de la chaîne sujet ou
- avant la fin d'une nouvelle ligne (ou fin de ligne, en mode multilignes)
-
-
- .Remplace n'importe quel caractère, hormis le caractère de nouvelle ligne (par défaut)
-
-
- [Caractère de début de définition de classe
-
-
- ]Caractère de fin de définition de classe
-
-
- |Caractère de début d'alternative
-
-
- (Caractère de début de sous-masque
-
-
- )Caractère de fin de sous-masque
-
-
- ?Étend le sens de (; quantificateur de 0 ou 1; quantificateur de minimisation
- (Voir les répétitions)
-
-
- *Quantificateur de 0 ou plus
-
-
- +Quantificateur de 1 ou plus
-
-
- {Caractère de début de quantificateur minimum/maximum
-
-
- }Caractère de fin de quantificateur minimum/maximum
-
-
-
-
-
- La partie du masque qui est entourée de crochets est appelée
- classe de caractères. Dans
- les classes de caractères,
- les seuls métacaractères autorisés sont :
-
-
- Meta-characters dans des crochets (classes de caractères)
-
-
-
- MétacaractèreDescription
-
-
-
-
- \Caractère de protection, avec de multiples usages
-
-
- ^Négation de la classe, mais uniquement si placé tout au début de la classe
-
-
- -Indique un intervalle de caractères
-
-
-
-
-
- La section suivante décrit l'utilisation de chaque
- métacaractère.
-
-
-
-
- Séquences d'échappement
-
- Le caractère antislash a de nombreuses utilisations.
- En premier lieu, s'il est suivi d'un caractère non
- alphanumérique, il ne prendra pas la signification
- spéciale qui y est rattachée. Cette utilisation de
- l'antislash comme caractère de protection s'applique
- à l'intérieur et à l'extérieur des
- classes de caractères.
-
-
- Par exemple, pour rechercher le
- caractère étoile "*", il faut
- écrire dans le masque : "\*". Cela
- s'applique dans tous les cas, que le caractère qui suive
- soit un métacaractère ou non. C'est un moyen sûr
- pour s'assurer qu'un caractère sera recherché
- pour sa valeur littérale, plutôt que pour sa valeur
- spéciale. En particulier, pour rechercher les antislashs,
- il faut écrire : "\\".
-
-
-
- La chaîne de caractères PHP
- simple ou double guillemet a une signification spéciale des antislashs. Donc,
- si \ doit être recherché avec une expression rationnelle \\, alors
- "\\\\" ou '\\\\' doit être utilisé dans le code PHP.
-
-
-
- Si un masque est utilisé avec l'option
- PCRE_EXTENDED,
- les espaces blancs du masque, mais qui ne sont pas dans une
- classe de caractères et les caractères entre dièse
- "#", ainsi que les nouvelles lignes sont ignorées.
- L'antislash peut être utilisé pour les protéger et ainsi
- rechercher un espace ou un dièse.
-
-
- La deuxième utilité de l'antislash est de pouvoir
- coder des caractères invisibles dans les masques. Il n'y
- a pas de restriction sur la place de ces caractères
- invisibles, hormis pour le caractère nul qui doit terminer
- le masque.
- Lors de la préparation du masque, il est souvent plus pratique
- d'utiliser les séquences d'échappement suivantes,
- plutôt que le caractère binaire qu'elles représentent :
-
-
-
-
- \a
-
-
- alarme, c'est-à-dire le caractère BEL (hex 07)
-
-
-
-
- \cx
-
-
- "contrôle-x", avec x qui peut être n'importe quel
- caractère.
-
-
-
-
- \e
-
-
- escape (hex 1B)
-
-
-
-
- \f
-
-
- formfeed (hex 0C)
-
-
-
-
- \n
-
-
- nouvelle ligne (hex 0A)
-
-
-
-
- \p{xx}
-
-
- un caractère avec une propriété xx, voir
- les propriétés unicode
- pour plus d'informations
-
-
-
-
- \P{xx}
-
-
- un caractère sans propriété xx, voir
- les propriétés unicode
- pour plus d'informations
-
-
-
-
- \r
-
-
- retour chariot (hex 0D)
-
-
-
-
- \R
-
- saut de ligne : satisfait par \n, \r et \r\n
-
-
-
- \t
-
-
- tabulation (hex 09)
-
-
-
-
- \xhh
-
-
- caractère en hexadécimal, de code hh
-
-
-
-
- \ddd
-
-
- caractère en octal, de code ddd, ou référence
- arrière
-
-
-
-
-
-
- Dans la séquence "\cx" si "x"
- est en minuscule, il est converti en majuscule. Puis, le bit 6 (hex 40)
- est inversé. Ainsi "\cz" devient hex 1A,
- mais "\c{" devient hex 3B, tandis que "\c;"
- devient hex 7B.
-
-
- Après "\x", deux caractères
- hexadécimaux sont lus (les lettres peuvent être en majuscule
- ou minuscule).
- En mode UTF-8, "\x{...}"
- est autorisée, où le contenu des accolades est une chaîne hexadécimale.
- Il sera interprété comme un caractère UTF-8 où le numéro de code est
- le numéro hexadécimal donné. La séquence d'échappement hexadécimale
- originale, \xhh, correspond à un caractère UTF-8
- sur 2 octets si la valeur est plus grande que 127.
-
-
- Après "\0", deux caractères octaux sont lus.
- Dans chacun des cas, le métacaractère tente de lire autant
- de caractères que possible. Ainsi, la séquence
- "\0\x\07" sera comprise comme deux caractères nuls,
- suivis d'un caractère alarme (BEL). Assurez-vous que vous fournissez
- suffisamment de chiffres après le métacaractère.
-
-
- L'antislash de fin suivi par un nombre autre que 0 est compliqué.
- À l'extérieur d'une classe de caractère, PCRE le lit, et tous les nombres
- qui suivent, en tant que nombres décimaux. Si le nombre est plus petit que
- 10 ou s'il y a eu au moins précédemment une parenthèse gauche capturante
- dans l'expression, la séquence entière est prise en tant que référence arrière.
- Une description sur le fonctionnement est donnée plus tard, suivez la discussion
- sur les parenthèses des sous masques.
-
-
- À l'intérieur d'un caractère de classe ou s'il est plus
- grand que 9, et qu'il n'y a pas eu assez de parenthèses ouvrantes
- auparavant, PCRE lit jusqu'à 3 chiffres octaux à la suite
- de l'antislash, et génère un octet unique, à partir
- des 8 bits de poids faible de la séquence. Tous les chiffres qui
- suivent ne sont pas interprétés, et se représentent
- eux-mêmes. Par exemple:
-
-
-
-
- \040
-
-
- une autre manière d'écrire un espace
-
-
-
-
- \40
-
-
- identique, dans la mesure où il n'y a pas 40
- parenthèses ouvrantes auparavant
-
-
-
-
- \7
-
-
- est toujours une référence arrière
-
-
-
-
- \11
-
-
- peut être une référence de retour,
- ou une tabulation
-
-
-
-
- \011
-
-
- toujours une tabulation
-
-
-
-
- \0113
-
-
- est une tabulation suivie du caractère "3"
-
-
-
-
- \113
-
-
- est le caractère 113 (étant donné qu'il ne
- peut y avoir plus de 99 références arrière)
-
-
-
-
- \377
-
-
- est un octet dont tous les bits sont à 1
-
-
-
-
- \81
-
-
- peut être soit une référence arrière,
- soit un zéro binaire suivi des caractères "8" et "1"
-
-
-
-
-
-
- Les valeurs octales supérieures ou égales à 100 ne
- doivent pas être introduites par un 0, car seuls les trois premiers
- octets seront lus.
-
-
- Toutes les séquences qui définissent une valeur d'un seul
- octet peuvent être utilisées dans les classes de caractères,
- et à l'extérieur. De plus, dans une classe de caractères,
- la séquence "\b" est interprétée
- comme un caractère effacer (hex 08). À l'extérieur,
- elle peut avoir d'autres significations
- (voir ci-dessous).
-
-
- On peut encore se servir de l'antislash pour préciser des types
- génériques de valeurs :
-
-
-
-
- \d
-
-
- tout caractère décimal
-
-
-
-
- \D
-
-
- tout caractère qui n'est pas un caractère décimal
-
-
-
-
- \h
-
-
- n'importe quel espace horizontal
-
-
-
-
- \H
-
-
- n'importe quel caractère qui n'est pas un espace horizontal
-
-
-
-
- \s
-
-
- tout caractère blanc
-
-
-
-
- \S
-
-
- tout caractère qui n'est pas un caractère blanc
-
-
-
-
- \v
-
-
- n'importe quel espace vertical
-
-
-
-
- \V
-
-
- n'importe quel caractère qui n'est pas un espace vertical
-
-
-
-
- \w
-
-
- tout caractère de "mot"
-
-
-
-
- \W
-
-
- tout caractère qui n'est pas un caractère de "mot"
-
-
-
-
-
-
- Chaque paire précédente définit une partition de
- la table des caractères : les deux ensembles sont disjoints.
- Un caractère satisfera soit un métacaractère,
- soit l'autre.
-
-
- Les caractères "blancs" sont HT (9), LF (10), FF (12), CR (13),
- et espace (32). Cependant, lors de l'utilisation d'une locale
- particulière, tous les caractères se trouvant dans l'intervalle
- 128-255 peuvent aussi être considérés comme caractère blanc, par exemple
- NBSP (A0).
-
-
- Un caractère de "mot" sera une lettre, un chiffre ou le
- caractère souligné, c'est-à-dire un
- caractère qui pourra être une partie d'un mot Perl. La
- définition des lettres et chiffres est définie par les
- tables de caractères de PCRE, et peut varier suivant la table
- locale de caractères. Par exemple, dans la configuration "français" ("fr"),
- certains caractères ont des codes supérieurs à
- 128, pour les caractères accentués, et ils seront compris
- par le métacaractère \w.
-
-
- Ces séquences de caractères peuvent apparaître à
- l'intérieur ou à l'extérieur des classes de
- caractères. Elles remplacent à chaque fois un
- caractère du type correspondant. Si cette séquence est
- placée en fin de masque, et qu'il n'y a plus de caractère à
- comparer dans la chaîne sujet, la recherche échoue.
-
-
- La quatrième utilisation de l'antislash intervient lors d'assertions
- simples. Une assertion impose une condition à un certain point,
- sans remplacer de caractère. L'utilisation de sous-masques pour
- réaliser des assertions plus complexes est décrite
- plus bas. Les assertions avec antislash sont les suivantes :
-
-
-
-
- \b
-
-
- limite de mot
-
-
-
-
- \B
-
-
- pas limite de mot
-
-
-
-
- \A
-
-
- début de la chaîne sujet
- (indépendant du mode multilignes)
-
-
-
-
- \Z
-
-
- fin de la chaîne sujet ou nouvelle ligne à
- la fin de la chaîne sujet
- (indépendant du mode multilignes)
-
-
-
-
- \G
-
-
- position de la première occurrence trouvée dans la chaîne sujet
-
-
-
-
- \z
-
-
- fin de la chaîne sujet
- (indépendant du mode multilignes)
-
-
-
-
-
-
- Ces assertions ne peuvent pas apparaître dans une classe de
- caractères (mais "\b" a une autre signification à
- l'intérieur d'une classe de caractères).
-
-
- Une limite de mot est un emplacement dans la chaîne sujet ou un
- caractère et son suivant ne sont pas en même temps des
- caractères de mot (\w), ou le contraire (\W)
- (on peut le voir comme \w\W ou \W\w), ou encore le
- premier ou le dernier caractère est un caractère mot (\w).
-
-
- Les assertions \A, \Z, et
- \z diffèrent des métacaractères
- ^ et $
- (décrit dans les ancres)
- dans la mesure où ils ne sont pas dépendants des options, notamment
- PCRE_MULTILINE
- ou PCRE_DOLLAR_ENDONLY.
- La différence entre \Z et
- \z tient au fait que \Z recherche
- les positions avant les nouvelles lignes et à la fin de la
- chaîne sujet, tandis que \z ne recherche
- que la fin de la chaîne.
-
-
- L'assertion \G est réalisée uniquement lorsque
- la position courante de l'occurrence trouvée est au début de l'occurrence,
- comme spécifié par l'argument offset de la
- fonction preg_match. Elle diffère de \A
- lorsque la valeur du paramètre offset est différente
- de zéro.
-
-
- \Q et \E peuvent être utilisés
- pour ignorer les métacaractères dans le masque.
- Par exemple : \w+\Q.$.\E$ recherchera un ou plusieurs
- caractères suivis par la chaîne littérale .$. et ancrés à la
- fin de la chaîne.
- Il est à noter que ceci ne change pas le comportement des délimiteurs ;
- par exemple le masque #\Q#\E#$ n'est pas valide, car
- le second # marque la fin du masque, et que
- \E# est interprété comme un modificateur invalide.
-
-
- \K peut être utilisé pour réinitialiser le résultat
- Par exemple, le masque foo\Kbar trouve
- "foobar", mais reporte qu'il a trouvé "bar". L'utilisation de
- \K n'interfère pas avec la configuration des sous-chaînes capturantes.
- Par exemple, lorsque le masque (foo)\Kbar
- trouve "foobar", la première sous-chaîne sera toujours "foo".
-
-
-
-
- Propriétés des caractères Unicode
-
- Trois nouvelles séquences d'échappement
- pour trouver des types de caractères sont disponibles lorsque
- le mode UTF-8 est sélectionné. Elles sont :
-
-
-
- \p{xx}
- un caractère avec les propriétés xx
-
-
- \P{xx}
- un caractère sans les propriétés xx
-
-
- \X
- une séquence étendue Unicode
-
-
-
- Les noms des propriétés représentés par xx ci-dessus
- sont limités aux catégories de propriétés générales Unicode. Chaque caractère
- a exactement une seule de ces propriétés, spécifié par une abréviation sur deux caractères.
- Pour des raisons de compatibilité avec Perl, la négation peut être spécifiée
- en incluant un accent circonflexe entre l'accolade ouvrante et le nom de la
- propriété. Par exemple, \p{^Lu} équivaut à la même chose que
- \P{Lu}.
-
-
- Si une seule lettre est spécifiée avec \p ou \P,
- il inclut toutes les propriétés qui commencent par cette lettre. Dans ce cas,
- en l'absence de négation, les accolades dans la séquence d'échappement sont
- optionnelles ; ceci revient à la même chose :
-
-
-
-
-
-
-
- Codes des propriétés supportées
-
-
-
- Propriétés
- Correspondance
- Notes
-
-
-
-
- C
- Autre
-
-
-
- Cc
- Contrôle
-
-
-
- Cf
- Format
-
-
-
- Cn
- Non affecté
-
-
-
- Co
- Utilisation privée
-
-
-
- Cs
- Substitut
-
-
-
- L
- Lettre
-
- Inclut les propriétés suivantes : Ll,
- Lm, Lo, Lt et
- Lu.
-
-
-
- Ll
- Lettre en minuscule
-
-
-
- Lm
- Lettre de modification
-
-
-
- Lo
- Autres lettres
-
-
-
- Lt
- Lettre titrée
-
-
-
- Lu
- Lettre en majuscule
-
-
-
- M
- Marque
-
-
-
- Mc
- Marque d'espacement
-
-
-
- Me
- Marque d'enfermement
-
-
-
- Mn
- Marque non espacée
-
-
-
- N
- Nombre
-
-
-
- Nd
- Nombre décimal
-
-
-
- Nl
- Nombre Lettre
-
-
-
- No
- Autres nombres
-
-
-
- P
- Ponctuation
-
-
-
- Pc
- Ponctuation de connecteur
-
-
-
- Pd
- Tiret de ponctuation
-
-
-
- Pe
- Ponctuation de fermeture
-
-
-
- Pf
- Ponctuation finale
-
-
-
- Pi
- Ponctuation initiale
-
-
-
- Po
- Autres ponctuations
-
-
-
- Ps
- Ponctuation ouvrante
-
-
-
- S
- Symbole
-
-
-
- Sc
- Symbole monétaire
-
-
-
- Sk
- Symbole de modification
-
-
-
- Sm
- Symbole mathématique
-
-
-
- So
- Autres symboles
- Inclut des émojis
-
-
- Z
- Séparateur
-
-
-
- Zl
- Séparateur de ligne
-
-
-
- Zp
- Séparateur de paragraphe
-
-
-
- Zs
- Séparateur d'espace
-
-
-
-
-
-
- Les propriétés étendues comme InMusicalSymbols ne sont pas supportées
- par PCRE.
-
-
- La sensibilité à la casse de la recherche n'affecte pas les
- séquences d'échappement. Par exemple, \p{Lu}
- cherche toujours et uniquement les lettres en majuscules
-
-
- Les jeux de caractères unicodes sont définis comme appartenant à certains scripts.
- Un caractère d'un de ces jeux peut être trouvé en utilisant un
- nom de script. Par exemple :
-
-
-
- \p{Greek}
-
-
- \P{Han}
-
-
-
- Ceux qui ne font pas partis d'un script identifié sont regroupés
- dans Common. Voici la liste courante des scripts :
-
-
-
- La séquence \X cherche n'importe quel groupe de
- graphème Unicode étendu. Un groupe de graphème est une chaîne
- composée d'un ou plusieurs caractères Unicode qui se combinent
- pour former un seul glyphe. Dans les faits, cela revient à utiliser
- le caractère . sachant qu'il va matcher un
- caractère composé, peu importe le nombre de caractères individuel
- nécessaire à l'afficher.
-
-
- Dans les versions PCRE inférieures à 8.32 (ce qui correspond aux
- versions de PHP antérieures à la version 5.4.14 lorsque la
- bibliothèque interne est utilisée), \X était
- équivalent à (?>\PM\pM*). Aussi, il matchait
- un caractère sans propriété "mark", suivi par aucun ou plusieurs
- caractères possédant la propriété "mark", et traitait la séquence
- comme un groupe atomique (voir ci-dessous). Les caractères
- avec la propriété "mark" sont typiquement les lettres accentuées
- qui affectent le caractère qui la précède.
-
-
- La recherche de caractères par les propriétés Unicode n'est pas la méthode
- la plus rapide, car PCRE doit chercher une structure qui contient les données
- dans plus de quinze mille caractères. C'est pour cela que les séquences
- traditionnelles comme \d et
- \w n'utilisent pas les propriétés Unicode dans PCRE.
-
-
-
-
- Ancres
-
- En dehors d'une classe de caractères, avec les options par
- défaut, ^ est une assertion qui n'est
- vraie que si elle est placée tout au début de la
- chaîne. À l'intérieur d'une classe de caractères,
- ^ a un tout autre sens (voir ci-dessous).
-
-
- ^ n'a pas besoin d'être le premier
- caractère du masque, si plusieurs alternatives sont
- proposées, mais il doit être placé en
- premier dans chaque alternative. Si toutes les alternatives
- commencent par ^, alors le masque est dit ancré
- (il y a une autre construction qui porte cette appellation).
-
-
- $ est une assertion qui n'est vraie que si elle
- est placée tout en fin de chaîne ou juste avant un
- caractère de nouvelle ligne qui serait le dernier
- caractère de la chaîne. À l'intérieur d'une
- classe de caractères, $ a un tout autre
- sens (voir ci-dessous).
- $ n'a pas besoin d'être le dernier
- caractère du masque, si plusieurs alternatives sont
- proposées, mais il doit être placé en dernier
- dans chaque alternative. Si toutes les alternatives finissent par
- $, alors le masque est dit ancré (il y
- a une autre construction qui porte cette appellation). $
- n'a pas de valeur particulière dans une classe de
- caractères.
-
-
- La signification de $ peut changer, de manière
- à l'amener à ce qu'il ne puisse se trouver qu'en toute
- fin de la chaîne sujet. Cela se fait en ajoutant l'option
- PCRE_DOLLAR_ENDONLY
- au moment de la compilation, ou de l'exécution.
- Cette option est inopérante sur \Z.
-
-
- La signification de ^ peut changer, de manière
- à l'amener à ce qu'il puisse se trouver immédiatement
- avant et immédiatement après un caractère de nouvelle
- ligne "\n". Cela se fait en ajoutant l'option
- PCRE_MULTILINE au moment de
- la compilation ou de l'exécution.
- Par exemple, le masque /^abc$/ accepte la chaîne
- "def\nabc" uniquement en mode multilignes. Par
- conséquent, toutes les parties du masque qui commencent par
- "^" ne sont pas ancrées, en mode multilignes.
- L'option PCRE_DOLLAR_ENDONLY
- est ignorée si l'option
- PCRE_MULTILINE est choisie.
-
-
- Notez que les métacaractères \A,
- \Z, et \z peuvent servir à
- repérer le début et la fin du sujet, et toutes les
- parties du masque qui commenceront par \A seront toujours
- ancrées, avec l'option
- PCRE_MULTILINE ou non.
-
-
-
-
- Point
-
- En dehors d'une classe de caractères, un point remplace n'importe
- quel caractère, même invisible et à l'exception du
- caractère de nouvelle ligne. Avec l'option
- PCRE_DOTALL le point
- remplace n'importe quel caractère, même le caractère de
- nouvelle ligne. La gestion des points et complètement
- indépendante de ^ et $.
- Le seul point commun est que les deux ont un comportement particulier vis-à-vis
- des caractères de nouvelle ligne.
- Le point n'a pas de comportement particulier dans une classe de
- caractères.
-
-
- \C peut être utilisé pour chercher un seul octet.
- Il prend tout son sens en mode UTF-8
- où le point correspond à un caractère entier qui peut être constitué de plusieurs
- octets.
-
-
-
-
- Classes de caractères
-
- Un crochet ouvrant [ introduit une classe de
- caractères, et le crochet fermant ]la
- conclut. Le crochet fermant n'a pas de signification en lui-même.
- Si le crochet fermant est nécessaire à l'intérieur
- d'une classe de caractères, il faut qu'il soit le premier
- caractère (après un ^ éventuel)
- ou protégé avec un antislash.
-
-
- Une classe de caractères remplace un seul caractère
- dans la chaîne sujet, à moins que le premier
- caractère de la classe soit un accent circonflexe
- ^, qui représente une négation :
- le caractère ne doit pas se trouver dans la classe. Si
- ^ est nécessaire dans la classe, il
- suffit qu'il ne soit pas le premier caractère, ou bien
- qu'il soit protégé par un antislash.
-
-
- Par exemple, le caractère [aeiou] remplace
- n'importe quelle voyelle minuscule, tandis que [^aeiou]
- remplace n'importe quel caractère qui n'est pas une voyelle
- minuscule. ^ est une notation pratique pour
- spécifier des caractères qui sont dans une classe,
- en ne citant que ceux qui n'y sont pas. Le comportement est inchangé.
-
-
- Avec l'option d'insensibilité à la casse, toutes les lettres
- d'une classe de caractères représentent en même temps
- la majuscule et la minuscule. Par exemple, [aeiou]
- représentera "A" ou "a", et
- [^aeiou] n'acceptera pas "A",
- tandis que sans l'option, elle l'accepterait.
-
-
- Le caractère de nouvelle ligne n'est pas traité de
- manière spéciale dans les classes de caractères,
- quelle que soit l'option PCRE_DOTALL
- ou PCRE_MULTILINE. Une classe
- telle que [^a] acceptera toujours une nouvelle ligne.
-
-
- Le signe moins (-) est utilisé pour
- spécifier un intervalle de caractères, dans
- une classe. Par exemple, [d-m] remplace toutes
- les lettres entre d et m inclus. Si le caractère moins est
- requis dans une classe, il faut le protéger avec un antislash,
- ou le faire apparaître à une position où il ne pourra
- pas être interprété comme une indication d'intervalle,
- c'est-à-dire au début ou à la fin de la classe.
-
-
- Il n'est pas possible d'avoir le caractère crochet fermant
- "]" comme fin d'intervalle. Un masque tel que
- [W-]46] est compris comme la classe de caractères
- contenant deux caractères ("W" et "-") suivie de la chaîne
- littérale "46]", ce qui fait qu'il va accepter
- "W46]" ou "-46]". Cependant, si
- "]" est protégé avec un antislash, le
- masque [W-\]46] est interprété comme
- une classe d'un seul caractère, contenant un intervalle de
- caractères. La valeur octale ou hexadécimale de
- "]" peut aussi être utilisée pour déterminer
- les limites de l'intervalle.
-
-
- Les intervalles travaillent sur des séquences ASCII.
- Ils peuvent aussi être précisés avec des valeurs numériques :
- par exemple "[\000-\037]".
- Si cet intervalle inclut des lettres utilisées avec une
- option d'insensibilité de casse, les majuscules ou minuscules
- correspondantes seront aussi incluses. Par exemple,
- "[W-c]" est équivalent à
- "[][\^_`wxyzabc]", avec l'option
- d'insensibilité de casse. Si la table locale de
- caractères est "fr", "[\xc8-\xcb]"
- correspond aux caractères accentués.
-
-
- Les types de caractères \d,
- \D, \S, \s,
- \w, \W peuvent aussi intervenir
- dans les classes de caractères. Par exemple,
- "[][\^_`wxyzabc][\dABCDEF]" acceptera n'importe
- quel caractère hexadécimal. Un accent circonflexe peut
- aussi être utilisé pour spécifier adroitement
- des ensembles de caractères plus restrictifs : par exemple
- [^\W_] accepte toutes les lettres et les chiffres,
- mais pas les soulignés.
-
-
- Tous les caractères non alphanumériques autres que
- \, -, ^ (placés en début de chaîne)
- et ] n'ont pas de signification
- particulière, mais ils ne perdront rien à être protégés.
- Le délimiteur de motif est toujours spécial, et doit être
- protégé lorsqu'il est utilisé à l'intérieur d'une expression.
-
-
- Perl supporte la notation POSIX pour les classes de caractères.
- Elles utilisent des noms entourés par [: et
- :]. PCRE supporte également cette notation. Par exemple,
- [01[:alpha:]%] trouve "0", "1", toute lettre,
- ou encore le caractère "%". Les noms de classe supportés sont :
-
- Classes de caractères
-
-
-
- alnum
- lettres et chiffres
-
- alpha
- lettres
-
- ascii
- codes caractères 0 - 127
-
- blank
- espace ou tabulation uniquement
-
- cntrl
- caractères de contrôle
-
- digit
- chiffres décimaux (identique à \d)
-
-
- graph
- caractères d'impression, excluant les espaces
-
-
- lower
- lettres en minuscule
-
-
- print
- caractères d'impression, incluant les espaces
-
-
- punct
- caractères d'impression, excluant les lettres et les chiffres
-
-
- space
- espace blanc (pas tout à fait identique à \s)
-
-
- upper
- lettres en majuscule
-
-
- word
- caractères composant un mot (identique à \w)
-
-
- xdigit
- chiffres hexadécimaux
-
-
-
-
- Les caractères d'espacement (space) sont HT (9), LF (10), VT (11), FF (12), CR (13),
- et l'espace (32). Notez que cette liste inclut le caractère VT (code 11). Ceci rend la classe
- "space" différente de \s, qui n'inclut pas ce caractère VT (pour une raison de compatibilité
- Perl).
-
-
- La classe word est une extension Perl, et blank
- est une extension GNU de Perl 5.8. La négation est une autre extension Perl ; elle est indiquée
- par le caractère ^ après un double-point. Par exemple,
- [12[:^digit:]] trouve "1", "2", mais aussi tout caractère qui n'est pas un chiffre.
-
-
- En mode UTF-8, les caractères dont les valeurs sont supérieures à 128 ne seront trouvés par
- aucune des classes de caractères POSIX.
- À partir de libpcre 8.10 certains caractères de classes ont été
- modifié pour utiliser des caractères de propriétés Unicode, dans ce cas les
- restrictions mentionnées ne s'applique pas.
- Référez-vous au manuel PCRE(3) pour plus de détails.
-
-
- Les propriétés des caractères Unicode peuvent apparaître à l'intérieur d'une
- classe de caractère. Ils ne peuvent pas faire partie d'une étendue.
- Le caractère moins (tiret) après une classe de caractère Unicode satisfera littéralement.
- Essayer de terminer une étendue avec une propriété de caractère Unicode résultera en un avertissement.
-
-
-
-
- Alternatives
-
- La barre verticale | sert à séparer des
- alternatives. Par exemple, dans le masque "/dupont|martin/"
- recherche soit "dupont", soit "martin".
- Le nombre d'alternatives n'est pas limité, et il est même possible
- d'utiliser la chaîne vide. Lors de la recherche, toutes les alternatives
- sont essayées, de gauche à droite, et la première qui est
- acceptée est utilisée.
- Si les alternatives sont dans un sous-masque, elles ne réussiront
- que si le masque principal réussit aussi.
-
-
- Il est possible d’enregistrer quelle alternative a été sélectionnée en utilisant
- (*MARK:NOM) ou (*:NOM).
- Un nombre quelconque de verbes (*MARK) peut apparaître, et leurs
- noms n’ont pas besoin d’être uniques. Lorsqu’une correspondance réussit, le nom du
- dernier (*MARK:NOM) rencontré sera placé parmi
- les correspondances comme s’il s’agissait d’un groupe de capture appelé MARK,
- de sorte qu’il puisse être lu à partir de matches dans
- preg_match et sera transmis au
- callback de preg_replace_callback etc.
-
-
-
-
- Options internes
-
- Les options PCRE_CASELESS,
- PCRE_MULTILINE,
- PCRE_DOTALL,
- PCRE_UNGREEDY,
- PCRE_EXTRA,
- PCRE_EXTENDED et
- PCRE_DUPNAMES peuvent être changées à l'intérieur du masque
- lui-même, avec des séquences mises entre
- "(?" et ")".
- Les options sont :
-
- Options internes
-
-
-
- i
- pour PCRE_CASELESS
-
-
- m
- pour PCRE_MULTILINE
-
-
- s
- pour PCRE_DOTALL
-
-
- x
- pour PCRE_EXTENDED
-
-
- U
- pour PCRE_UNGREEDY
-
-
- X
- Pour PCRE_EXTRA
- (plus supporté à partir de PHP 7.3.0)
-
-
- J
- Pour PCRE_INFO_JCHANGED
-
-
-
-
-
-
- Par exemple, (?im) rend le masque insensible à
- la casse, et multilignes. Il est possible d'annuler ces options en les
- faisant précéder par un signe - : par
- exemple (?im-sx), ajoutera les options
- PCRE_CASELESS
- et PCRE_MULTILINE,
- mais annulera les options
- PCRE_DOTALL
- et PCRE_EXTENDED.
- Si une option apparaît avant et après le signe moins, l'option
- sera annulée.
-
-
- Lorsqu'une modification d'option survient au degré le plus haut (et donc, pas dans
- les parenthèses du sous-masque), les modifications sont appliquées dans le reste
- du masque qui suit. Donc, /ab(?i)c/ valide uniquement
- "abc" et "abC".
-
-
- Si une option intervient dans un sous-masque, le comportement est différent.
- C'est un changement de comportement apparu en Perl 5.005. Une option à
- l'intérieur d'un sous-masque n'affecte que cette partie du masque, ce
- qui fait que (a(?i)b)c
- acceptera abc et aBc,
- mais aucune autre chaîne (en supposant que PCRE_CASELESS n'est pas
- utilisé). Cela signifie que les options permettent d'avoir
- différentes configurations de recherche pour différentes parties du masque.
- Une séquence d'options dans une alternative affecte toute l'alternative.
- Par exemple :
-
- (a(?i)b|c)
-
- accepte "ab", "aB", "c",
- et "C", même si, comme dans le cas de
- "C", la première alternative qui porte
- l'option n'est pas prise en compte. Sinon, cela risque d'introduire
- des comportements très étranges
-
-
- Les options spécifiques à PCRE telles
- PCRE_UNGREEDY et
- PCRE_EXTRA peuvent
- être modifiées de la même manière, en utilisant respectivement les caractères
- U et X. L'option (?X) est particulière,
- car elle doit toujours intervenir avant toutes les autres options,
- même au niveau du masque entier. Il vaut mieux l'activer au
- début du masque.
-
-
-
-
- Sous-masques
-
- Les sous-masques sont délimités par des parenthèses,
- et peuvent être imbriqués. Ajouter des sous-masques a deux
- utilités :
-
-
-
-
- Localiser un ensemble d'alternatives. Par exemple, le motif
- cat(aract|erpillar|) trouve un des mots "cat",
- "cataract", ou "caterpillar". Sans les parenthèses, cela trouverait
- "cataract", "erpillar" ou la chaîne vide.
-
-
-
-
- Cela configure le sous-masque comme capturant. Lorsque tout le motif
- correspond, la portion de la sous-chaîne qui correspond au sous-masque
- est passé à l'appelant grâce à l'argument ovector
- de pcre_exec. Les parenthèses ouvrantes sont comptées
- depuis la gauche vers la droite (commençant à 1) jusqu'à obtenir le nombre
- des sous-masques capturants.
-
-
-
-
- Par exemple, soit la chaîne sujet "le roi soleil"
- qui est utilisée avec le masque suivant :
- Le ((roi|prince) (soleil|charmant)), les sous-masques
- capturés sont "roi soleil", "roi",
- et "soleil", numérotés respectivement 1, 2, et 3.
-
-
- L'ubiquité des parenthèses n'est pas toujours simple
- d'emploi. Il y a des moments où regrouper des sous-masques
- est nécessaire, sans pour autant capturer la valeur trouvée.
- Si une parenthèse ouvrante est suivie de "?:",
- le sous-masque ne capture pas la chaîne assortie, et ne sera pas
- compté lors de la numérotation des captures. Par exemple,
- avec la chaîne "le prince charmant", utilisé
- avec le masque
-
- Le (( ?:roi|prince) (soleil|charmant))
-
- les chaînes capturées seront "prince charmant"
- et "charmant", numérotés respectivement 1
- et 2. Le nombre maximal de chaînes capturées est de 65535. Il se peut qu'il
- soit impossible de compiler un masque aussi large, toutefois, ceci dépend des
- options de configuration de libpcre.
-
-
- En guise de raccourci, si n'importe quelle option de configuration
- est requise au début des sous-masques non-capturants, les lettres
- d'option peuvent apparaître entre le signe "?"
- et le signe ":". Ainsi, les 2 masques
-
-
-
-
-
-
-
-
-
- captureront exactement les mêmes chaînes. Du fait que les branches
- alternatives sont testées de la gauche vers la droite, et que les
- options ne sont pas réinitialisées tant que le sous masque n'est pas
- atteint, une option de configuration d'une branche n'affecte pas
- les branches sous-jacentes ; ainsi, les 2 masques ci-dessus
- captureront "SAMEDI", mais aussi
- "Samedi".
-
-
- Il est possible de nommer un sous-masque en utilisant la syntaxe
- (?P<name>pattern). Ce sous-masque sera alors
- indexé dans le tableau de concordance par sa position, ainsi
- que par son nom. Il y a deux syntaxes alternatives :
- (?<name>pattern) et
- (?'name'pattern).
-
-
-
- Quelques fois, il est nécessaire d'avoir plusieurs correspondances en alternant
- les sous groupes dans une expression régulière. Normalement, chacun recevra son
- propre nombre de références arrière même si seulement un d'entre eux ne peut
- correspondre. Pour éviter cela, la syntaxe (?| permet d'autoriser
- les nombres dupliqués. Soit l'expression ci-après utilisée avec la chaîne
- Sunday:
-
-
-
-
-
-
-
-
-
- Ici, Sun est stocké dans la référence arrière 2, alors que la référence
- arrière 1 est vide. La recherche de correspondance de Saturday mène donc à
- Sat dans la référence arrière 1 alors que la référence arrière 2
- n'existe pas. Changer le masque en utilisant (?| résoud ce problème:
-
-
-
-
-
-
-
-
-
- Avec ce masque, à la fois Sun et Sat
- seront stockés dans la référence arrière 1.
-
-
-
-
- Répétitions
-
- Les répétitions sont spécifiées avec
- des quantificateurs, qui peuvent être placés à
- la suite des caractères suivants :
-
-
- Un caractère unique, même s'il s'agit d'un métacaractère
- Le métacaractère .
- Une classe de caractères
- Une référence de retour (voir section suivante)
- Un sous-masque avec parenthèses (à moins que ce ne soit
- une assertion, voir plus loin)
-
-
-
- Les quantificateurs généraux précisent un nombre
- minimum et maximum de répétitions possibles, donnés
- par deux nombres entre accolades, et séparés par une virgule.
- Ces nombres doivent être plus petits que 65536, et le premier nombre
- doit être égal ou inférieur au second. Par exemple
-
- z{2,4}
-
- accepte "zz",
- "zzz", ou "zzzz". L'accolade fermante
- n'a pas de signification par elle-même.
- Si le second nombre est omis, mais que la virgule est là, cela
- signifie qu'il n'y a pas de limite supérieure. Si le second nombre
- et la virgule sont omis, le quantificateur correspond au nombre exact de
- répétitions attendues. Par exemple :
-
- [aeiou]{3,}
-
- accepte n'importe quelle succession d'au moins 3 voyelles minuscules, tandis
- que
-
- \d{8}
-
- n'accepte que 8 chiffres exactement.
-
-
- Avant PHP 8.4.0, une accolade ouvrante apparaissant dans une position où un quantificateur n'est pas autorisé,
- ou qui ne correspond pas à la syntaxe d'un quantificateur, est considérée comme un caractère littéral.
- Par exemple, {,6} n'est pas un quantificateur, mais une chaîne littérale de quatre caractères.
-
- À partir de PHP 8.4.0, l'extension PCRE est livrée avec la version 10.44 de PCRE2,
- ce qui permet des motifs tels que \d{,8} qui sont interprétés comme \d{0,8}.
-
- De plus, à partir de PHP 8.4.0, les espaces autour des quantificateurs tels que
- \d{0 , 8} et \d{ 0 , 8 } sont autorisés.
-
-
- Le quantificateur {0} est autorisé, mais l'expression est alors
- ignorée.
-
-
- Par convenance (et pour la compatibilité ascendante), les trois
- quantificateurs les plus communs ont une abréviation d'un
- seul caractère :
-
- Quantificateurs sur un seul caractère
-
-
-
- *
- équivalent à {0,}
-
-
- +
- équivalent à {1,}
-
-
- ?
- équivalent à {0,1}
-
-
-
-
-
-
- Il est possible de constituer des boucles infinies en créant un sous-masque
- sans caractères, mais pourvu d'un quantificateur sans limite
- supérieure. Par exemple :
-
- (a?)*
-
-
-
- Les versions plus anciennes de Perl et PCRE généraient alors
- une erreur au moment de la compilation. Cependant, étant donné
- qu'il existe des situations où ces constructions peuvent être
- utiles, ces masques sont désormais autorisés. Toutefois, si
- la répétition du sous-masque ne trouve aucun caractère,
- la boucle est interrompue.
-
-
- Par défaut, les quantificateurs sont dits "gourmands", c'est-à-dire,
- qu'ils cherchent d'abord à trouver le nombre maximal de
- répétitions qui autorisent le succès de la recherche.
- L'exemple classique posé par cette gourmandise est la recherche de
- commentaires d'un programme en C. Les commentaires apparaissent entre les
- séquences /*....*/ et à l'intérieur
- de ces délimiteurs, les * et /
- sont autorisés. Appliquer le masque
-
- /\*.*\*/
-
- à la chaîne
-
- /* premier commentaire */ aucun commentaire /* second commentaire */
-
- ne peut réussir, car le masque travaille sur toute la chaîne,
- à cause de la gourmandise du caractère .*.
-
-
- Cependant, un quantificateur suivi d'un point d'interrogation cesse
- d'être gourmand, et au contraire, ne recherche que le nombre
- minimum de répétition. Dans ces conditions, le masque
-
- /\*.*?\*/
-
- trouvera bien les commentaires du code
- C. La signification des autres quantificateurs n'est pas changée.
- Attention à ne pas confondre l'utilisation du point d'interrogation
- ici avec son utilisation comme quantificateur lui-même.
- À cause de cette ambiguïté, il peut apparaître des situations
- où il faut le doubler :
-
- \d??\d
-
- Ce masque va tenter de lire un seul chiffre, mais le cas échéant,
- il acceptera 2 chiffres pour permettre à la recherche d'aboutir.
-
-
- Si l'option PCRE_UNGREEDY
- est activée, (une option qui n'est pas disponible avec Perl) alors
- les quantificateurs sont non gourmands par défaut, mais peuvent être
- rendu gourmands au cas par cas, en ajoutant un point d'interrogation
- après. En d'autres termes, cette option inverse le comportement par
- défaut.
-
-
- Les quantificateurs suivis par + sont "possessifs". Ils
- mangent autant de caractères que possible et ne retournent pas
- pour chercher le reste du masque. .*abc trouvera
- "abc", tandis que .*+abc ne le trouvera
- pas, car .*+ accapare totalement la chaîne.
- Les quantificateurs possessifs peuvent être utilisés pour
- accélérer le traitement.
-
-
- Lorsqu'un sous-masque est quantifié avec un nombre minimum
- de répétitions, qui soit plus grand que 1, ou avec
- un maximum de répétitions, le masque compilé aura
- besoin de plus de place de stockage, proportionnellement au minimum
- et au maximum.
-
-
- Si un masque commence par .* ou .{0,}
- et que l'option PCRE_DOTALL
- (équivalent en Perl à /s) est
- activée, c'est-à-dire en autorisant le remplacement des nouvelles
- lignes par un métacaractère, alors le masque est
- implicitement ancré, car tout ce qui suit va être
- mangé par la première séquence, et se comportera
- comme si le masque se terminait par le métacaractère
- \A. Dans le cas où on sait d'avance qu'il
- n'y aura pas de caractère de nouvelle ligne, activer l'option
- PCRE_DOTALL et commencer
- le masque par .* permet d'optimiser le masque.
- Alternativement, on peut utiliser ^ pour ancrer
- explicitement le masque.
-
-
- Lorsqu'un sous-masque capturant est répété, la valeur capturée est la
- dernière. Par exemple, après que
-
- (inter[net]{3}\s*)+
-
- ait été appliqué à "internet interne",
- la valeur de la chaîne capturée est "interne".
- Cependant, s'il y a des sous-masques imbriqués, la valeur
- capturée correspondante peut l'avoir été lors
- des précédentes itérations. Par exemple :
-
- /(a|(b))+/
-
- accepte "aba" et
- la deuxième valeur capturée est "b".
-
-
-
-
- Références arrières
-
- En dehors des classes de caractères, un antislash suivi
- d'un nombre plus grand que 0 (et possiblement plusieurs chiffres)
- est une référence arrière (c'est-à-dire vers la gauche) dans le masque,
- en supposant qu'il y ait
- suffisamment de sous-masques capturants précédents.
-
-
- Cependant, si le nombre décimal suivant l'antislash est
- plus petit que 10, il sera toujours considéré
- comme une référence arrière, et cela
- générera une erreur si le nombre de captures
- n'est pas suffisant. En d'autres termes, il faut qu'il existe
- suffisamment de parenthèses ouvrantes à gauche
- de la référence, surtout si la référence
- est inférieure à 10. Une "référence arrière vers l'avant" peut avoir du sens
- lorsqu'une répétition est isolée et que le sous masque à droite a participé
- à l'itération précédente. Voir la section sur les
- séquences d'échappements
- pour plus de détails à propos du nombre de chiffres qui suivent l'antislash.
-
-
- La référence arrière remplace ce qui a
- été capturé par un sous-masque dans le
- masque courant, plutôt que remplacer le sous-masque
- lui-même. Ainsi
-
- (calme|rapide) et \1ment
-
- trouvera "calme et calmement"
- et "rapide et rapidement", mais pas
- "calme et rapidement". Si la recherche tient
- compte de la casse, alors la casse de la chaîne
- capturée sera importante. Par exemple,
-
- ((?i)rah)\s+\1
-
- trouve "rah rah"
- et "RAH RAH", mais pas "RAH rah",
- même si le sous-masque capturant initial ne tenait pas compte
- de la casse.
-
-
- Il peut y avoir plusieurs références arrière dans
- le même sous-masque. Si un sous-masque n'a pas été
- utilisé dans une recherche, alors les références
- arrière échoueront. Par exemple
-
- (a|(bc))\2
-
- ne réussira jamais si la chaîne sujet commence par
- "a" plutôt que par "bc".
- Étant donné qu'il peut y avoir jusqu'à 99 références
- arrière, tous les chiffres après l'antislash sont
- considérés comment faisant potentiellement partie de
- la référence arrière. Si le masque recherche un
- chiffre après la référence, alors il faut
- impérativement utiliser des délimiteurs pour terminer
- la référence arrière.
- Si l'option PCRE_EXTENDED
- est activée, on peut utiliser un espace.
- Sinon, un commentaire vide fait l'affaire.
-
-
- Une référence arrière qui intervient à l'intérieur de
- parenthèses auxquelles elle fait référence
- échouera dès que le sous-masque sera utilisé. Par exemple,
-
- (a\1)
-
- échouera toujours. Cependant, ces
- références peuvent être utiles dans les
- sous-masques répétitifs. Par exemple, le masque
- "(a|b\1)+" pourra convenir pour "a",
- "aba", "ababba", etc.
- À chaque itération du sous-masque, la référence
- arrière utilise le résultat du dernier sous-masque.
- Pour que cela fonctionne, il faut que la première
- itération n'ait pas besoin d'utiliser la référence
- arrière. Cela arrive avec les alternatives, comme dans
- l'exemple ci-dessus, ou avec un quantificateur de minimum 0.
-
-
- La séquence d'échappement \g
- peut être utilisée pour le référencement absolu et relatif des
- sous-masques. Cette séquence doit être suivie par un nombre non signé
- ou négatif, entouré optionnellement par des accolades. La séquence
- \1, \g1 et \g{1}
- sont identiques. L'utilisation de ce masque avec un nombre non signé peut
- aider à ne pas le confondre lors de l'utilisation de nombre suivi d'un
- antislash. Cette séquence aide à distinguer les références arrière
- lors de l'utilisation de caractères octales et rend également plus facile
- d'avoir une référence arrière suivie par un nombre littéral, i.e.
- \g{2}1.
-
-
- L'utilisation de la séquence \g avec un nombre négatif
- indique une référence relative. Par exemple, (foo)(bar)\g{-1}
- trouvera la séquence "foobarbar" et (foo)(bar)\g{-2} trouvera
- la séquence "foobarfoo". Ceci peut être pratique dans ce gros masque
- comme alternative afin de conserver une trace du nombre de sous-masques
- afin de référencer un sous-masque précédant spécifique.
-
-
- Les références arrière du sous-masque nommé peuvent être
- utilisées sous la forme
- (?P=name),
- \k<name>, \k'name',
- \k{name}, \g{name},
- \g<name> ou \g'name'.
-
-
-
-
- Assertions
-
- Une assertion est un test sur les caractères suivants ou
- précédents celui qui est en cours d'étude. Ce
- test ne consomme pas de caractères (ie, on ne déplace
- pas le pointeur de caractères). Les assertions simples sont
- codées avec \b, \B,
- \A, \Z, \z,
- ^ et $, et sont décrites
- dans les séquences d'échappement.
- Il existe cependant des types d'assertions plus complexes, codées sous la forme
- de sous-masques. Il en existe deux types : celles qui travaillent
- au-delà de la position courante, et celles qui
- travaillent en-deçà.
-
-
- Une assertion se comporte comme un sous-masque, hormis le fait qu'elle
- ne déplace pas le pointeur de position. Les assertions avant
- commencent par (?= pour les assertions positives, et
- par (?!, pour les assertions négatives. Par exemple :
-
- \w+(?=;)
-
- s'assure qu'un mot est suivi d'un point-virgule,
- mais n'inclut pas le point virgule dans la capture et foo(?!bar)
- trouve toutes les occurrences de "foo" qui ne sont pas suivies par "bar".
- Notez que,
-
- (?!foo)bar
-
- en est proche, mais ne trouve pas une
- occurrence de "bar" qui soit précédée
- par quelque chose d'autre que "foo"; il
- trouve toutes les occurrences de "bar",
- quel que soit ce qui le précède, car l'assertion
-
- (?!foo)
-
- est toujours vraie quand les trois caractères suivants sont
- "bar". Une assertion arrière est ici
- nécessaire.
-
-
- Les assertions arrières commencent par (?<=
- pour les assertions positives, et (?<! pour les
- assertions négatives. Par exemple :
-
- (?<!foo)bar
-
- trouve les occurrences de "bar" qui ne sont pas
- précédées par "foo". Le contenu d'une référence
- arrière est limité de telle façon que les chaînes qu'il utilise
- soient toujours de la même taille. Cependant, lorsqu'il
- y a plusieurs alternatives, elles n'ont pas besoin d'être
- de la même taille. Par exemple,
-
- (?<=bullock|donkey)
-
- est autorisé, tandis que
-
- (?<!dogs?|cats?)
-
- provoque une erreur de compilation. Les alternatives qui ont des
- longueurs différentes ne sont autorisées qu'au niveau
- supérieur des assertions arrière. C'est une
- amélioration du fonctionnement de Perl 5.005, qui impose
- aux alternatives d'avoir toute la même taille. Une
- assertion telle que
-
- (?<=ab(c|de))
-
- n'est pas autorisée, car l'assertion de bas niveau (la deuxième,
- ici) a deux possibilités de longueurs différentes. Pour
- la rendre acceptable, il faut écrire
-
- (?<=abc|abde)
-
- L'implémentation des assertions arrière déplace
- temporairement le pointeur de position vers l'arrière, et cherche
- à vérifier l'assertion. Si le nombre de caractères
- est différent, la position ne sera pas correcte, et l'assertion
- échouera. La combinaison d'assertions arrière avec des
- sous-masques peut être particulièrement pratique à
- fin des chaînes. Un exemple est donné à la fin de
- cette section.
-
-
- Plusieurs assertions peuvent intervenir successivement. Par exemple,
- le masque
-
- (?<=\d{3})(?<!999)foo
-
- recherche les chaînes "foo" précédées
- par trois chiffres qui ne sont pas "999". Notez que chaque assertion
- est appliquée indépendamment, au même point de
- la chaîne à traiter. Tout d'abord, il est
- vérifié que les trois premiers caractères ont
- tous des chiffres, puis on s'assure que ces trois caractères
- ne sont pas "999". Le masque précédant
- n'accepte pas "foo" précédé de
- 6 caractères, les trois premiers étant des chiffres et
- les trois suivants étant différents de "999".
- Par exemple, ce masque n'acceptera pas la chaîne
- "123abcfoo". Pour ce faire, il faut utiliser le masque
- suivant :
-
- (?<=\d{3}...)(?<!999)foo.
-
-
-
- Dans ce masque, la première assertion vérifie les six premiers
- caractères, s'assure que les trois premiers sont des entiers,
- et la deuxième assertion s'assure que les trois derniers
- caractères ne sont pas "999".
-
-
- De plus, les assertions peuvent être imbriquées :
-
- (?<=(?<!foo)bar)baz
-
- recherche les occurrences de "baz" qui sont
- précédées par "bar", qui,
- à son tour, n'est pas précédé par
- "foo". Au contraire,
-
- (?<=\d{3}...(?<!999))foo
-
- est un autre masque, qui recherche les caractères "foo",
- précédés par trois chiffres, suivis de trois
- autres caractères qui ne forment pas "999".
-
-
- Les assertions ne sont pas capturantes, et ne peuvent pas être
- répétées. Si une assertion contient des sous-masques
- capturants en son sein, ils seront compris dans le nombre de sous-masques
- capturants du masque entier. La capture est réalisée pour
- les assertions positives, mais cela n'a pas de sens pour les
- assertions négatives.
-
-
- 200 assertions au maximum sont autorisées.
-
-
-
-
- Sous-masques uniques
-
- Avec les quantificateurs de répétitions, l'échec
- d'une recherche conduit normalement à une autre recherche, avec
- un nombre différent de répétitions, pour
- voir si le masque ne s'applique pas dans d'autres conditions.
- Parfois, il est pratique d'éviter ce comportement, soit
- pour changer la nature de la recherche, soit pour la faire abandonner
- plus tôt, si on pense qu'il n'est pas besoin d'aller plus loin.
-
-
- Considérons, par exemple, le masque \d+foo
- appliqué à la ligne
-
- 123456bar.
-
-
-
- Après avoir tenté d'utiliser les 6 chiffres suivis
- de "foo" qui font échouer, l'action habituelle
- sera de réessayer avec 5 chiffres, puis avec 4, et ainsi de
- suite jusqu'à l'échec final. Un sous-masque évalué une seule fois
- permettrait d'indiquer que lorsqu'une partie du masque est trouvée,
- elle n'a pas besoin d'être réévaluée à chaque tentative. Ceci
- conduirait à ce que la recherche échoue immédiatement après le
- premier test. Ces assertions ont leur propre notation, commençant avec
- (?> comme ceci :
-
- (?>\d+)bar
-
-
- Ce type de parenthèses verrouille le sous-masque qu'il contient
- une fois qu'il a été trouvé, et empêche un
- échec ultérieur d'y repasser, mais autorise à
- revenir plus loin en arrière.
-
-
- Une autre description est que les sous-masques de ce type
- recherchent les chaînes de caractères, et ancre le sous-masque
- à l'intérieur de la chaîne.
-
-
- Les sous-masques uniques ne sont pas capturants. Des cas simples comme
- ceux présentés ci-dessus peuvent être pris comme
- des situations maximales, qui réservent le maximum de
- caractères. En effet, alors que \d+ et
- \d+? ajustent le nombre de chiffres trouvés
- de manière à laisser la possibilité au masque de
- réussir, (?>\d+) ne peut retenir que la
- séquence entière de chiffres.
-
-
- Cette construction peut contenir un nombre arbitraire de sous-masques
- complexes, et ils peuvent être imbriqués.
-
-
- Les sous-masques uniques ne peuvent être utilisés qu'avec
- les assertions arrière, pour effectuer une recherche efficace
- en fin de chaîne. Considérons un masque simple tel
-
- abcd$
-
- appliqué à une très longue chaîne qui ne lui correspond pas.
- À cause du système de recherche de gauche à droite, PCRE va
- commencer par rechercher un "a" dans la
- chaîne sujet, puis vérifier si ce qui suit convient au reste
- du masque. Si le masque est spécifié sous la forme
-
- ^.*abcd$
-
- alors, la séquence .* remplace en premier
- lieu la chaîne entière, et échoue, repart en
- arrière, et remplace tous les caractères sauf le dernier,
- échoue, retourne en arrière, prend un caractère
- de moins, etc. et ainsi de suite. Encore une fois, la recherche du
- "a" passe en revue toute la chaîne de gauche
- à droite, ce qui n'est pas très efficace. Par contre,
- si le masque était écrit
-
- ^(?>.*)(?<=abcd)
-
- alors il n'y aurait pas de retour en arrière, pour satisfaire
- la séquence .*, car elle ne peut que remplacer
- toute la chaîne. L'assertion arrière consécutive
- va alors faire un test sur les 4 derniers caractères. Si elle
- échoue, la recherche est immédiatement interrompue.
- Pour les chaînes très longues, cette approche fait la
- différence en termes de performances et de temps de recherche.
-
-
- Lorsqu'un masque contient une répétition illimitée
- dans un sous-masque, qui contient lui-même un nombre
- illimité de répétiteurs, l'utilisation des
- sous-masques à utilisation unique est la seule façon
- d'éviter l'échec de la recherche après un
- temps de calcul trop long.
- Le masque
-
- (\D+|<\d+>)*[!?]
-
- recherche un nombre illimité de sous-chaînes, qui contiennent soit
- des non-chiffres, soit des chiffres inclus dans <>, suivi soit
- par ! ou par ?. Lorsqu'il trouve
- une solution, ce masque va très vite. Mais, lorsqu'il est
- appliqué à une chaîne telle :
-
- aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,
-
- il lui faut beaucoup de temps pour annoncer un échec. Cela est
- dû au fait que la chaîne peut être divisée en deux
- sous-chaînes d'un grand nombre de façons, et qu'elles
- ont toutes été essayées. (Cet exemple utilisait
- [!?] plutôt qu'un caractère simple, car
- PCRE et PHP utilise une optimisation qui leur permet de détecter
- rapidement l'échec lorsqu'un caractère unique est
- trouvé. Il se souvient du dernier caractère qui est
- attendu, et s'aperçoit rapidement qu'il n'y a pas ce caractère).
- Si le masque utilisé est
-
- ((?>\D+)|<\d+>)*[!?]
-
- les séquences de chiffres ne peuvent pas être
- trouvées, et l'échec intervient rapidement.
-
-
-
-
- Les sous-masques conditionnels
-
- Il est possible de lier un sous-masque à une condition, ou de
- choisir entre deux sous-masques alternatifs, en fonction du
- résultat d'une assertion, ou suivant les résultats
- de recherche précédents.
- Les deux formes possibles de sous-masques conditionnels sont
-
-
-
-
-
-
-
-
- Si les conditions sont satisfaites, le masque positif est utilisé,
- sinon, le masque négatif est utilisé, si présent.
- S'il y a plus de deux possibilités, une erreur est générée
- à la compilation.
-
-
- Il y a deux types de conditions : si le texte entre les parenthèses
- est une séquence de chiffres, alors la condition est satisfaite si
- le sous-masque correspondant à ce numéro a réussi.
- Considérons le masque suivant, qui contient des espaces non
- significatifs pour le rendre plus compréhensible (on supposera
- l'option PCRE_EXTENDED
- activée) et qui est divisée en trois parties
- pour simplifier les explications :
-
-
-
-
-
-
-
- La première partie recherche une parenthèse ouvrante
- optionnelle et, si elle existe, elle est capturée. La deuxième
- partie recherche une séquence de caractères qui ne contiennent
- pas de parenthèses. La troisième partie est
- conditionnée à la première, et s'assure que s'il
- y a une parenthèse ouvrante, il en existe une fermante.
- Si une parenthèse ouvrante a été trouvée,
- elle a été capturée, et donc la première capture
- existe, et la condition est exécutée. Sinon, elle est
- ignorée. Ce masque recherche donc une séquence de lettres,
- éventuellement placées entre parenthèse.
-
-
- Si la condition est la chaîne (R), elle sera
- satisfaite si un appel récursif au masque ou au sous-masque
- a été fait. Au premier appel, la condition n'est pas vérifiée.
-
-
- Si la condition n'est pas une séquence de chiffres, il faut que ce soit
- une assertion. Ce peut être une assertion positive ou négative,
- arrière ou avant. Considérons le masque suivant (mêmes conditions que
- le précédent) et avec deux possibilités en seconde ligne :
-
-
-
-
-
-
-
-
- La condition est une assertion avant positive, qui recherche une
- séquence optionnelle de caractères non-lettre. En d'autres
- termes, elle teste la présence d'au moins une lettre dans la chaîne
- sujet. Si une lettre est trouvée, la recherche se poursuit avec
- la première alternative, et sinon, avec la seconde. Ce masque
- recherche des chaînes de la forme dd-aaa-dd ou
- dd-dd-dd, avec "aaa" qui sont des
- lettres, et dd qui sont des chiffres.
-
-
-
-
- Commentaires
-
- La séquence (?# marque le début d'un commentaire,
- qui se termine à la prochaîne parenthèse fermante. Les
- parenthèses imbriquées ne sont pas autorisées. Les
- caractères entre ces délimiteurs ne jouent alors aucun rôle
- dans le masque.
-
-
- Si l'option PCRE_EXTENDED
- est activée, les caractères dièses
- # non protégés en dehors d'une classe de
- caractères introduisent un commentaire qui continuera jusqu'à
- la prochaîne ligne dans le masque.
-
-
-
- Usage de commentaire dans un masque PCRE
-
-
-
- &example.outputs;
-
-
-
-
-
-
-
-
- Masques récursifs
-
- Considérons le cas où il faut rechercher dans une
- chaîne avec un niveau d'imbrications infini de
- parenthèses. Sans l'aide de la récursivité, le
- mieux que nous puissions obtenir est de créer un masque avec un
- niveau fixé de profondeur d'imbrication. Il n'est pas possible
- de traiter des masques à niveau d'imbrication variable.
- PCRE fournit un nouvel outil expérimental qui permet
- d'utiliser la récursivité dans les masques (entre autres).
- L'option (?R) est fournie pour servir la cause de
- la récursivité. Le masque suivant résout le
- problème des parenthèses (l'option
- PCRE_EXTENDED est
- utilisée pour ignorer les espaces) :
-
- \( ( (?>[^()]+) | (?R) )* \)
-
-
- Tout d'abord, le masque recherche une parenthèse ouvrante. Puis,
- il recherche n'importe quel nombre de sous-chaînes qui sont soit
- des séquences de caractères non-parenthèses, ou
- bien une recherche récursive avec le même masque (i.e.
- une chaîne correctement incluse entre parenthèses).
- Finalement, il recherche une parenthèse fermante.
-
-
- Cet exemple particulier contient un nombre illimité de
- répétitions imbriquées, ce qui fait que
- l'utilisation de sous-chaînes à utilisation unique
- pour rechercher les séquences de caractères
- non-parenthèses est important, lorsqu'il s'applique à
- une chaîne qui n'est pas valide. Par exemple, si on l'applique
- à
-
- (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()
-
- la réponse arrive rapidement. Sinon, si les sous-chaînes
- à utilisation unique ne sont pas utilisées, la
- recherche peut prendre un temps très long, car il existe
- de très nombreuses combinaisons de + et
- * à tester avant de conclure à
- l'échec.
-
-
- Les valeurs utilisées pour capturer les sous-masques sont celles
- utilisées par les niveaux les plus hauts de
- récursivité, auxquels la valeur est fixée.
- Si le masque précédent est utilisé avec
-
- (ab(cd)ef)
-
- la valeur de la parenthèse capturante est "ef",
- qui est la dernière valeur lue au niveau supérieur. Si de nouvelles
- parenthèses sont ajoutées, par exemple :
-
- \( ( ( (?>[^()]+) | (?R) )* ) \)
-
- alors la chaîne capturée est "ab(cd)ef",
- c'est-à-dire le contenu de la parenthèse capturante
- de plus haut niveau. S'il y a plus de 15 parenthèses
- capturantes dans une chaîne, PCRE doit utiliser plus
- de mémoire pour stocker ces données. S'il ne
- peut obtenir cette mémoire supplémentaire, il ne fait
- que sauver les 15 premières, car il n'y a pas moyen de
- générer une erreur de mémoire dans le cadre d'une récursivité.
-
-
-
- (?1), (?2) et suivants
- peuvent être également utilisés pour les sous masques récursifs. Il est également
- possible d'utiliser les sous masques nommés : (?P>foo) ou
- (?&name).
-
-
- Si la syntaxe pour une référence de sous-masque récursif (soit par un
- nombre ou par un nom) est utilisée en dehors des parenthèses à laquelle
- elle fait référence, il opère comme une sous-routine dans un langage
- de programmation. Un exemple ci-dessus a montré que le masque
- (sens|respons)e and \1ibility
- trouvera "sense and sensibility" et
- "response and responsibility", mais pas
- "sense and responsibility". Si on utilise plutôt le masque
- (sens|respons)e and (?1)ibility
- alors, il trouvera "sense and responsibility"
- tout comme les deux autres chaînes.
- De telles références doivent, dépendant, suivre le sous-masque auquel
- elles se réfèrent.
-
-
-
- La longueur maximale d'un sujet correspond au plus grand nombre positif
- qu'une variable entière peut contenir. Cependant, PCRE utilise la récursivité
- pour gérer les sous-masques et les répétitions infinies. Ce qui signifie
- que l'espace disponible pour la pile peut limiter la taille du sujet qui peut
- être passé à certains masques.
-
-
-
-
- Performance
-
- Certaines séquences de recherches sont plus efficaces que d'autres.
- Ainsi, il est plus efficace d'utiliser une classe de caractères
- telle que [aeiou] plutôt qu'une alternative
- (a|e|i|o|u).
- En général, le masque le plus simple, qui permette
- la recherche désirée est le plus efficace. Le livre
- de Jeffrey Friedl's contient de nombreuses études à
- propos de l'optimisation des expressions régulières.
-
-
- Lorsqu'un masque commence par.* et que l'option
- PCRE_DOTALL est
- activée, le masque est implicitement ancré par PCRE,
- étant donné qu'il ne peut que rechercher au début
- de la chaîne. Cependant, si l'option
- PCRE_DOTALL n'est pas
- activée, PCRE ne peut faire aucune optimisation, car le
- métacaractère point "."
- ne remplace pas une nouvelle ligne, et si la chaîne
- sujet contient des nouvelles lignes, le masque peut trouver une
- solution qui serait située juste après une
- de ces nouvelles lignes, et non pas seulement au début
- de la chaîne sujet. Par exemple, le masque,
-
- (.*)second
-
- acceptera la chaîne "premier \net second"
- (avec "\n" qui remplace la nouvelle ligne),
- et la première chaîne capturée sera "et".
- Afin d'effectuer la recherche, PCRE va essayer d'appliquer le masque
- à partir de chaque début de ligne.
-
-
- Si vous utilisez un tel masque avec des chaînes qui ne contiennent
- pas de caractères de nouvelle ligne, les meilleures performances
- seront atteintes avec l'option
- PCRE_DOTALL, ou en ancrant le
- masque avec ^.*. Cela évite à PCRE
- de scanner toute la chaîne pour rechercher un caractère
- de nouvelle ligne et recommencer la recherche.
-
-
- Attention aux masques qui contiennent des quantificateurs infinis
- imbriqués. Ils peuvent demander un temps de calcul très
- long, lorsque appliqués à une chaîne qui ne
- correspond pas à ce masque. Par exemple,
-
- (a+)*
-
-
-
- Ce masque peut accepter "aaaa" de 33 manières
- différentes, et ce nombre croit rapidement avec la taille
- de la chaîne (le quantificateur * peut prendre
- les valeurs de 0, 1, 2, 3, ou 4, et pour chaque cas non nul, le
- quantificateur + peut prendre différentes
- valeurs). Lorsque le reste de la chaîne est tel que l'on s'achemine
- vers un échec, PCRE doit en principe vérifier
- toutes les possibilités, et cela prend un temps
- extrêmement long.
-
-
- Un optimiseur repère les cas les plus simples, tel que
-
- (a+)*b
-
- où un caractère simple suit les quantificateurs.
- Avant de partir dans les procédures standards de recherche, PCRE
- s'assure qu'il y a au moins un "b" dans la
- chaîne, et si ce n'est pas le cas, l'échec est
- annoncé immédiatement. Sinon, il n'y a pas
- d'optimisation dans la recherche. Vous pouvez voir la
- différence de comportement avec le masque suivant :
-
- (a+)*\d.
-
- Le premier retourne un échec quasi-immédiatement, s'il est appliqué à
- une ligne de "a", alors que le second masque
- prend un temps significatif pour une chaîne de plus de
- 20 caractères.
-
-
-
-
+
+
+
+
+
+ Syntaxe des masques
+ Fonctionnement des expressions régulières
+
+
+ &reftitle.intro;
+
+ La syntaxe et la sémantique des expressions régulières
+ supportées par PCRE sont décrites dans cette section. Les expressions
+ régulières sont aussi décrites dans la documentation
+ Perl, et dans un grand nombre d'autres livres, avec de nombreux exemples.
+ Le livre de Jeffrey Friedl "Mastering Regular Expressions", édité
+ chez O'Reilly (ISBN 1-56592-257-3), les décrits en profondeur.
+ Cette description est organisée comme une documentation de
+ référence.
+
+
+ Une expression rationnelle est un masque appliqué à
+ une chaîne sujet, de gauche à droite. La plupart des
+ caractères se représentent eux-mêmes. Un exemple
+ trivial : un masque qui serait "Le rapide renard gris",
+ pourra correspondre à une partie de la chaîne sujet qui sera
+ identique au masque, par exemple
+ "Le rapide renard gris court dans la forêt",
+
+
+
+ Délimiteurs
+
+ Lors de l'utilisation des fonctions PCRE, il est nécessaire que le motif soit encadré
+ par des délimiteurs. Un délimiteur peut être n'importe quel caractère
+ non alpha-numérique autre qu'un backslash ou qu'un espace.
+ Les caractères d'espacement blanc avant un délimiteur valide sont silencieusement ignoré.
+
+
+ Les délimiteurs les plus courants sont les slashes (/), dièses
+ (#) et les tildes (~). Les exemples suivants ont
+ tous des motifs encadrés avec des délimiteurs valides.
+
+
+
+
+
+
+
+ Il est également possible d'utiliser les délimiteurs utilisant les crochets
+ où les crochets ouvrants et fermants sont respectivement les délimiteurs de
+ début et de fin. (), {},
+ [] et <> sont tous des styles
+ de crochets valides.
+
+
+
+]]>
+
+
+ Les délimiteurs utilisant les crochets n'ont pas besoin d'être échappés lorsqu'ils
+ sont utilisés comme caractères méta dans un masque, mais, comme tout autre opérateur,
+ ils doivent être échappés s'ils sont utilisés comme caractères littéraux.
+
+
+ Si le délimiteur doit être décrit dans le motif, il doit être échappé avec un backslash.
+ Si le délimiteur apparait souvent dans le motif, choisir un autre délimiteur est une bonne
+ idée pour en augmenter la lisibilité.
+
+
+
+
+
+ La fonction preg_quote peut être utilisée pour échapper une chaîne
+ et l'utiliser dans un motif. Son second paramètre optionnel sert à spécifier le délimiteur
+ qui doit être échappé.
+
+
+ Vous pouvez aussi utiliser des
+ modificateurs de motif après le délimiteur final. L'exemple suivant montre
+ une correspondance insensible à la casse.
+
+
+
+
+
+
+
+
+ Métacaractères
+
+ La puissance des expressions régulières provient de
+ leur capacité à autoriser des alternatives et des quantificateurs
+ de répétition dans le masque. Ils sont encodés
+ dans le masque par des métacaractères, qui ne représentent
+ pas ce qu'ils sont, mais sont interprétés d'une certaine
+ manière.
+
+
+ Il y a deux sortes de métacaractères : ceux qui sont
+ reconnus n'importe où dans un masque, hormis entre crochets,
+ et ceux qui sont reconnus entre crochets.
+ À l'extérieur des crochets, les métacaractères sont :
+
+
+ Métacaractère en dehors des crochets
+
+
+
+ MétacaractèreDescription
+
+
+
+
+ \Caractère d'échappement, avec de multiples usages
+
+
+ ^Le début de la chaîne sujet (ou de ligne, en mode multilignes)
+
+
+ $La fin de la chaîne sujet ou
+ avant la fin d'une nouvelle ligne (ou fin de ligne, en mode multilignes)
+
+
+ .Remplace n'importe quel caractère, hormis le caractère de nouvelle ligne (par défaut)
+
+
+ [Caractère de début de définition de classe
+
+
+ ]Caractère de fin de définition de classe
+
+
+ |Caractère de début d'alternative
+
+
+ (Caractère de début de sous-masque
+
+
+ )Caractère de fin de sous-masque
+
+
+ ?Étend le sens de (; quantificateur de 0 ou 1; quantificateur de minimisation
+ (Voir les répétitions)
+
+
+ *Quantificateur de 0 ou plus
+
+
+ +Quantificateur de 1 ou plus
+
+
+ {Caractère de début de quantificateur minimum/maximum
+
+
+ }Caractère de fin de quantificateur minimum/maximum
+
+
+
+
+
+ La partie du masque qui est entourée de crochets est appelée
+ classe de caractères. Dans
+ les classes de caractères,
+ les seuls métacaractères autorisés sont :
+
+
+ Meta-characters dans des crochets (classes de caractères)
+
+
+
+ MétacaractèreDescription
+
+
+
+
+ \Caractère de protection, avec de multiples usages
+
+
+ ^Négation de la classe, mais uniquement si placé tout au début de la classe
+
+
+ -Indique un intervalle de caractères
+
+
+
+
+
+ La section suivante décrit l'utilisation de chaque
+ métacaractère.
+
+
+
+
+ Séquences d'échappement
+
+ Le caractère antislash a de nombreuses utilisations.
+ En premier lieu, s'il est suivi d'un caractère non
+ alphanumérique, il ne prendra pas la signification
+ spéciale qui y est rattachée. Cette utilisation de
+ l'antislash comme caractère de protection s'applique
+ à l'intérieur et à l'extérieur des
+ classes de caractères.
+
+
+ Par exemple, pour rechercher le
+ caractère étoile "*", il faut
+ écrire dans le masque : "\*". Cela
+ s'applique dans tous les cas, que le caractère qui suive
+ soit un métacaractère ou non. C'est un moyen sûr
+ pour s'assurer qu'un caractère sera recherché
+ pour sa valeur littérale, plutôt que pour sa valeur
+ spéciale. En particulier, pour rechercher les antislashs,
+ il faut écrire : "\\".
+
+
+
+ La chaîne de caractères PHP
+ simple ou double guillemet a une signification spéciale des antislashs. Donc,
+ si \ doit être recherché avec une expression rationnelle \\, alors
+ "\\\\" ou '\\\\' doit être utilisé dans le code PHP.
+
+
+
+ Si un masque est utilisé avec l'option
+ PCRE_EXTENDED,
+ les espaces blancs du masque, mais qui ne sont pas dans une
+ classe de caractères et les caractères entre dièse
+ "#", ainsi que les nouvelles lignes sont ignorées.
+ L'antislash peut être utilisé pour les protéger et ainsi
+ rechercher un espace ou un dièse.
+
+
+ La deuxième utilité de l'antislash est de pouvoir
+ coder des caractères invisibles dans les masques. Il n'y
+ a pas de restriction sur la place de ces caractères
+ invisibles, hormis pour le caractère nul qui doit terminer
+ le masque.
+ Lors de la préparation du masque, il est souvent plus pratique
+ d'utiliser les séquences d'échappement suivantes,
+ plutôt que le caractère binaire qu'elles représentent :
+
+
+
+
+ \a
+
+
+ alarme, c'est-à-dire le caractère BEL (hex 07)
+
+
+
+
+ \cx
+
+
+ "contrôle-x", avec x qui peut être n'importe quel
+ caractère.
+
+
+
+
+ \e
+
+
+ escape (hex 1B)
+
+
+
+
+ \f
+
+
+ formfeed (hex 0C)
+
+
+
+
+ \n
+
+
+ nouvelle ligne (hex 0A)
+
+
+
+
+ \p{xx}
+
+
+ un caractère avec une propriété xx, voir
+ les propriétés unicode
+ pour plus d'informations
+
+
+
+
+ \P{xx}
+
+
+ un caractère sans propriété xx, voir
+ les propriétés unicode
+ pour plus d'informations
+
+
+
+
+ \r
+
+
+ retour chariot (hex 0D)
+
+
+
+
+ \R
+
+ saut de ligne : satisfait par \n, \r et \r\n
+
+
+
+ \t
+
+
+ tabulation (hex 09)
+
+
+
+
+ \xhh
+
+
+ caractère en hexadécimal, de code hh
+
+
+
+
+ \ddd
+
+
+ caractère en octal, de code ddd, ou référence
+ arrière
+
+
+
+
+
+
+ Dans la séquence "\cx" si "x"
+ est en minuscule, il est converti en majuscule. Puis, le bit 6 (hex 40)
+ est inversé. Ainsi "\cz" devient hex 1A,
+ mais "\c{" devient hex 3B, tandis que "\c;"
+ devient hex 7B.
+
+
+ Après "\x", deux caractères
+ hexadécimaux sont lus (les lettres peuvent être en majuscule
+ ou minuscule).
+ En mode UTF-8, "\x{...}"
+ est autorisée, où le contenu des accolades est une chaîne hexadécimale.
+ Il sera interprété comme un caractère UTF-8 où le numéro de code est
+ le numéro hexadécimal donné. La séquence d'échappement hexadécimale
+ originale, \xhh, correspond à un caractère UTF-8
+ sur 2 octets si la valeur est plus grande que 127.
+
+
+ Après "\0", deux caractères octaux sont lus.
+ Dans chacun des cas, le métacaractère tente de lire autant
+ de caractères que possible. Ainsi, la séquence
+ "\0\x\07" sera comprise comme deux caractères nuls,
+ suivis d'un caractère alarme (BEL). Assurez-vous que vous fournissez
+ suffisamment de chiffres après le métacaractère.
+
+
+ L'antislash de fin suivi par un nombre autre que 0 est compliqué.
+ À l'extérieur d'une classe de caractère, PCRE le lit, et tous les nombres
+ qui suivent, en tant que nombres décimaux. Si le nombre est plus petit que
+ 10 ou s'il y a eu au moins précédemment une parenthèse gauche capturante
+ dans l'expression, la séquence entière est prise en tant que référence arrière.
+ Une description sur le fonctionnement est donnée plus tard, suivez la discussion
+ sur les parenthèses des sous masques.
+
+
+ À l'intérieur d'un caractère de classe ou s'il est plus
+ grand que 9, et qu'il n'y a pas eu assez de parenthèses ouvrantes
+ auparavant, PCRE lit jusqu'à 3 chiffres octaux à la suite
+ de l'antislash, et génère un octet unique, à partir
+ des 8 bits de poids faible de la séquence. Tous les chiffres qui
+ suivent ne sont pas interprétés, et se représentent
+ eux-mêmes. Par exemple:
+
+
+
+
+ \040
+
+
+ une autre manière d'écrire un espace
+
+
+
+
+ \40
+
+
+ identique, dans la mesure où il n'y a pas 40
+ parenthèses ouvrantes auparavant
+
+
+
+
+ \7
+
+
+ est toujours une référence arrière
+
+
+
+
+ \11
+
+
+ peut être une référence de retour,
+ ou une tabulation
+
+
+
+
+ \011
+
+
+ toujours une tabulation
+
+
+
+
+ \0113
+
+
+ est une tabulation suivie du caractère "3"
+
+
+
+
+ \113
+
+
+ est le caractère 113 (étant donné qu'il ne
+ peut y avoir plus de 99 références arrière)
+
+
+
+
+ \377
+
+
+ est un octet dont tous les bits sont à 1
+
+
+
+
+ \81
+
+
+ peut être soit une référence arrière,
+ soit un zéro binaire suivi des caractères "8" et "1"
+
+
+
+
+
+
+ Les valeurs octales supérieures ou égales à 100 ne
+ doivent pas être introduites par un 0, car seuls les trois premiers
+ octets seront lus.
+
+
+ Toutes les séquences qui définissent une valeur d'un seul
+ octet peuvent être utilisées dans les classes de caractères,
+ et à l'extérieur. De plus, dans une classe de caractères,
+ la séquence "\b" est interprétée
+ comme un caractère effacer (hex 08). À l'extérieur,
+ elle peut avoir d'autres significations
+ (voir ci-dessous).
+
+
+ On peut encore se servir de l'antislash pour préciser des types
+ génériques de valeurs :
+
+
+
+
+ \d
+
+
+ tout caractère décimal
+
+
+
+
+ \D
+
+
+ tout caractère qui n'est pas un caractère décimal
+
+
+
+
+ \h
+
+
+ n'importe quel espace horizontal
+
+
+
+
+ \H
+
+
+ n'importe quel caractère qui n'est pas un espace horizontal
+
+
+
+
+ \s
+
+
+ tout caractère blanc
+
+
+
+
+ \S
+
+
+ tout caractère qui n'est pas un caractère blanc
+
+
+
+
+ \v
+
+
+ n'importe quel espace vertical
+
+
+
+
+ \V
+
+
+ n'importe quel caractère qui n'est pas un espace vertical
+
+
+
+
+ \w
+
+
+ tout caractère de "mot"
+
+
+
+
+ \W
+
+
+ tout caractère qui n'est pas un caractère de "mot"
+
+
+
+
+
+
+ Chaque paire précédente définit une partition de
+ la table des caractères : les deux ensembles sont disjoints.
+ Un caractère satisfera soit un métacaractère,
+ soit l'autre.
+
+
+ Les caractères "blancs" sont HT (9), LF (10), FF (12), CR (13),
+ et espace (32). Cependant, lors de l'utilisation d'une locale
+ particulière, tous les caractères se trouvant dans l'intervalle
+ 128-255 peuvent aussi être considérés comme caractère blanc, par exemple
+ NBSP (A0).
+
+
+ Un caractère de "mot" sera une lettre, un chiffre ou le
+ caractère souligné, c'est-à-dire un
+ caractère qui pourra être une partie d'un mot Perl. La
+ définition des lettres et chiffres est définie par les
+ tables de caractères de PCRE, et peut varier suivant la table
+ locale de caractères. Par exemple, dans la configuration "français" ("fr"),
+ certains caractères ont des codes supérieurs à
+ 128, pour les caractères accentués, et ils seront compris
+ par le métacaractère \w.
+
+
+ Ces séquences de caractères peuvent apparaître à
+ l'intérieur ou à l'extérieur des classes de
+ caractères. Elles remplacent à chaque fois un
+ caractère du type correspondant. Si cette séquence est
+ placée en fin de masque, et qu'il n'y a plus de caractère à
+ comparer dans la chaîne sujet, la recherche échoue.
+
+
+ La quatrième utilisation de l'antislash intervient lors d'assertions
+ simples. Une assertion impose une condition à un certain point,
+ sans remplacer de caractère. L'utilisation de sous-masques pour
+ réaliser des assertions plus complexes est décrite
+ plus bas. Les assertions avec antislash sont les suivantes :
+
+
+
+
+ \b
+
+
+ limite de mot
+
+
+
+
+ \B
+
+
+ pas limite de mot
+
+
+
+
+ \A
+
+
+ début de la chaîne sujet
+ (indépendant du mode multilignes)
+
+
+
+
+ \Z
+
+
+ fin de la chaîne sujet ou nouvelle ligne à
+ la fin de la chaîne sujet
+ (indépendant du mode multilignes)
+
+
+
+
+ \G
+
+
+ position de la première occurrence trouvée dans la chaîne sujet
+
+
+
+
+ \z
+
+
+ fin de la chaîne sujet
+ (indépendant du mode multilignes)
+
+
+
+
+
+
+ Ces assertions ne peuvent pas apparaître dans une classe de
+ caractères (mais "\b" a une autre signification à
+ l'intérieur d'une classe de caractères).
+
+
+ Une limite de mot est un emplacement dans la chaîne sujet ou un
+ caractère et son suivant ne sont pas en même temps des
+ caractères de mot (\w), ou le contraire (\W)
+ (on peut le voir comme \w\W ou \W\w), ou encore le
+ premier ou le dernier caractère est un caractère mot (\w).
+
+
+ Les assertions \A, \Z, et
+ \z diffèrent des métacaractères
+ ^ et $
+ (décrit dans les ancres)
+ dans la mesure où ils ne sont pas dépendants des options, notamment
+ PCRE_MULTILINE
+ ou PCRE_DOLLAR_ENDONLY.
+ La différence entre \Z et
+ \z tient au fait que \Z recherche
+ les positions avant les nouvelles lignes et à la fin de la
+ chaîne sujet, tandis que \z ne recherche
+ que la fin de la chaîne.
+
+
+ L'assertion \G est réalisée uniquement lorsque
+ la position courante de l'occurrence trouvée est au début de l'occurrence,
+ comme spécifié par l'argument offset de la
+ fonction preg_match. Elle diffère de \A
+ lorsque la valeur du paramètre offset est différente
+ de zéro.
+
+
+ \Q et \E peuvent être utilisés
+ pour ignorer les métacaractères dans le masque.
+ Par exemple : \w+\Q.$.\E$ recherchera un ou plusieurs
+ caractères suivis par la chaîne littérale .$. et ancrés à la
+ fin de la chaîne.
+ Il est à noter que ceci ne change pas le comportement des délimiteurs ;
+ par exemple le masque #\Q#\E#$ n'est pas valide, car
+ le second # marque la fin du masque, et que
+ \E# est interprété comme un modificateur invalide.
+
+
+ \K peut être utilisé pour réinitialiser le résultat
+ Par exemple, le masque foo\Kbar trouve
+ "foobar", mais reporte qu'il a trouvé "bar". L'utilisation de
+ \K n'interfère pas avec la configuration des sous-chaînes capturantes.
+ Par exemple, lorsque le masque (foo)\Kbar
+ trouve "foobar", la première sous-chaîne sera toujours "foo".
+
+
+
+
+ Propriétés des caractères Unicode
+
+ Trois nouvelles séquences d'échappement
+ pour trouver des types de caractères sont disponibles lorsque
+ le mode UTF-8 est sélectionné. Elles sont :
+
+
+
+ \p{xx}
+ un caractère avec les propriétés xx
+
+
+ \P{xx}
+ un caractère sans les propriétés xx
+
+
+ \X
+ une séquence étendue Unicode
+
+
+
+ Les noms des propriétés représentés par xx ci-dessus
+ sont limités aux catégories de propriétés générales Unicode. Chaque caractère
+ a exactement une seule de ces propriétés, spécifié par une abréviation sur deux caractères.
+ Pour des raisons de compatibilité avec Perl, la négation peut être spécifiée
+ en incluant un accent circonflexe entre l'accolade ouvrante et le nom de la
+ propriété. Par exemple, \p{^Lu} équivaut à la même chose que
+ \P{Lu}.
+
+
+ Si une seule lettre est spécifiée avec \p ou \P,
+ il inclut toutes les propriétés qui commencent par cette lettre. Dans ce cas,
+ en l'absence de négation, les accolades dans la séquence d'échappement sont
+ optionnelles ; ceci revient à la même chose :
+
+
+
+
+
+
+
+ Codes des propriétés supportées
+
+
+
+ Propriétés
+ Correspondance
+ Notes
+
+
+
+
+ C
+ Autre
+
+
+
+ Cc
+ Contrôle
+
+
+
+ Cf
+ Format
+
+
+
+ Cn
+ Non affecté
+
+
+
+ Co
+ Utilisation privée
+
+
+
+ Cs
+ Substitut
+
+
+
+ L
+ Lettre
+
+ Inclut les propriétés suivantes : Ll,
+ Lm, Lo, Lt et
+ Lu.
+
+
+
+ Ll
+ Lettre en minuscule
+
+
+
+ Lm
+ Lettre de modification
+
+
+
+ Lo
+ Autres lettres
+
+
+
+ Lt
+ Lettre titrée
+
+
+
+ Lu
+ Lettre en majuscule
+
+
+
+ M
+ Marque
+
+
+
+ Mc
+ Marque d'espacement
+
+
+
+ Me
+ Marque d'enfermement
+
+
+
+ Mn
+ Marque non espacée
+
+
+
+ N
+ Nombre
+
+
+
+ Nd
+ Nombre décimal
+
+
+
+ Nl
+ Nombre Lettre
+
+
+
+ No
+ Autres nombres
+
+
+
+ P
+ Ponctuation
+
+
+
+ Pc
+ Ponctuation de connecteur
+
+
+
+ Pd
+ Tiret de ponctuation
+
+
+
+ Pe
+ Ponctuation de fermeture
+
+
+
+ Pf
+ Ponctuation finale
+
+
+
+ Pi
+ Ponctuation initiale
+
+
+
+ Po
+ Autres ponctuations
+
+
+
+ Ps
+ Ponctuation ouvrante
+
+
+
+ S
+ Symbole
+
+
+
+ Sc
+ Symbole monétaire
+
+
+
+ Sk
+ Symbole de modification
+
+
+
+ Sm
+ Symbole mathématique
+
+
+
+ So
+ Autres symboles
+ Inclut des émojis
+
+
+ Z
+ Séparateur
+
+
+
+ Zl
+ Séparateur de ligne
+
+
+
+ Zp
+ Séparateur de paragraphe
+
+
+
+ Zs
+ Séparateur d'espace
+
+
+
+
+
+
+ Les propriétés étendues comme InMusicalSymbols ne sont pas supportées
+ par PCRE.
+
+
+ La sensibilité à la casse de la recherche n'affecte pas les
+ séquences d'échappement. Par exemple, \p{Lu}
+ cherche toujours et uniquement les lettres en majuscules
+
+
+ Les jeux de caractères unicodes sont définis comme appartenant à certains scripts.
+ Un caractère d'un de ces jeux peut être trouvé en utilisant un
+ nom de script. Par exemple :
+
+
+
+ \p{Greek}
+
+
+ \P{Han}
+
+
+
+ Ceux qui ne font pas partis d'un script identifié sont regroupés
+ dans Common. Voici la liste courante des scripts :
+
+
+
+ La séquence \X cherche n'importe quel groupe de
+ graphème Unicode étendu. Un groupe de graphème est une chaîne
+ composée d'un ou plusieurs caractères Unicode qui se combinent
+ pour former un seul glyphe. Dans les faits, cela revient à utiliser
+ le caractère . sachant qu'il va matcher un
+ caractère composé, peu importe le nombre de caractères individuel
+ nécessaire à l'afficher.
+
+
+ Dans les versions PCRE inférieures à 8.32 (ce qui correspond aux
+ versions de PHP antérieures à la version 5.4.14 lorsque la
+ bibliothèque interne est utilisée), \X était
+ équivalent à (?>\PM\pM*). Aussi, il matchait
+ un caractère sans propriété "mark", suivi par aucun ou plusieurs
+ caractères possédant la propriété "mark", et traitait la séquence
+ comme un groupe atomique (voir ci-dessous). Les caractères
+ avec la propriété "mark" sont typiquement les lettres accentuées
+ qui affectent le caractère qui la précède.
+
+
+ La recherche de caractères par les propriétés Unicode n'est pas la méthode
+ la plus rapide, car PCRE doit chercher une structure qui contient les données
+ dans plus de quinze mille caractères. C'est pour cela que les séquences
+ traditionnelles comme \d et
+ \w n'utilisent pas les propriétés Unicode dans PCRE.
+
+
+
+
+ Ancres
+
+ En dehors d'une classe de caractères, avec les options par
+ défaut, ^ est une assertion qui n'est
+ vraie que si elle est placée tout au début de la
+ chaîne. À l'intérieur d'une classe de caractères,
+ ^ a un tout autre sens (voir ci-dessous).
+
+
+ ^ n'a pas besoin d'être le premier
+ caractère du masque, si plusieurs alternatives sont
+ proposées, mais il doit être placé en
+ premier dans chaque alternative. Si toutes les alternatives
+ commencent par ^, alors le masque est dit ancré
+ (il y a une autre construction qui porte cette appellation).
+
+
+ $ est une assertion qui n'est vraie que si elle
+ est placée tout en fin de chaîne ou juste avant un
+ caractère de nouvelle ligne qui serait le dernier
+ caractère de la chaîne. À l'intérieur d'une
+ classe de caractères, $ a un tout autre
+ sens (voir ci-dessous).
+ $ n'a pas besoin d'être le dernier
+ caractère du masque, si plusieurs alternatives sont
+ proposées, mais il doit être placé en dernier
+ dans chaque alternative. Si toutes les alternatives finissent par
+ $, alors le masque est dit ancré (il y
+ a une autre construction qui porte cette appellation). $
+ n'a pas de valeur particulière dans une classe de
+ caractères.
+
+
+ La signification de $ peut changer, de manière
+ à l'amener à ce qu'il ne puisse se trouver qu'en toute
+ fin de la chaîne sujet. Cela se fait en ajoutant l'option
+ PCRE_DOLLAR_ENDONLY
+ au moment de la compilation, ou de l'exécution.
+ Cette option est inopérante sur \Z.
+
+
+ La signification de ^ peut changer, de manière
+ à l'amener à ce qu'il puisse se trouver immédiatement
+ avant et immédiatement après un caractère de nouvelle
+ ligne "\n". Cela se fait en ajoutant l'option
+ PCRE_MULTILINE au moment de
+ la compilation ou de l'exécution.
+ Par exemple, le masque /^abc$/ accepte la chaîne
+ "def\nabc" uniquement en mode multilignes. Par
+ conséquent, toutes les parties du masque qui commencent par
+ "^" ne sont pas ancrées, en mode multilignes.
+ L'option PCRE_DOLLAR_ENDONLY
+ est ignorée si l'option
+ PCRE_MULTILINE est choisie.
+
+
+ Notez que les métacaractères \A,
+ \Z, et \z peuvent servir à
+ repérer le début et la fin du sujet, et toutes les
+ parties du masque qui commenceront par \A seront toujours
+ ancrées, avec l'option
+ PCRE_MULTILINE ou non.
+
+
+
+
+ Point
+
+ En dehors d'une classe de caractères, un point remplace n'importe
+ quel caractère, même invisible et à l'exception du
+ caractère de nouvelle ligne. Avec l'option
+ PCRE_DOTALL le point
+ remplace n'importe quel caractère, même le caractère de
+ nouvelle ligne. La gestion des points et complètement
+ indépendante de ^ et $.
+ Le seul point commun est que les deux ont un comportement particulier vis-à-vis
+ des caractères de nouvelle ligne.
+ Le point n'a pas de comportement particulier dans une classe de
+ caractères.
+
+
+ \C peut être utilisé pour chercher un seul octet.
+ Il prend tout son sens en mode UTF-8
+ où le point correspond à un caractère entier qui peut être constitué de plusieurs
+ octets.
+
+
+
+
+ Classes de caractères
+
+ Un crochet ouvrant [ introduit une classe de
+ caractères, et le crochet fermant ]la
+ conclut. Le crochet fermant n'a pas de signification en lui-même.
+ Si le crochet fermant est nécessaire à l'intérieur
+ d'une classe de caractères, il faut qu'il soit le premier
+ caractère (après un ^ éventuel)
+ ou protégé avec un antislash.
+
+
+ Une classe de caractères remplace un seul caractère
+ dans la chaîne sujet, à moins que le premier
+ caractère de la classe soit un accent circonflexe
+ ^, qui représente une négation :
+ le caractère ne doit pas se trouver dans la classe. Si
+ ^ est nécessaire dans la classe, il
+ suffit qu'il ne soit pas le premier caractère, ou bien
+ qu'il soit protégé par un antislash.
+
+
+ Par exemple, le caractère [aeiou] remplace
+ n'importe quelle voyelle minuscule, tandis que [^aeiou]
+ remplace n'importe quel caractère qui n'est pas une voyelle
+ minuscule. ^ est une notation pratique pour
+ spécifier des caractères qui sont dans une classe,
+ en ne citant que ceux qui n'y sont pas. Le comportement est inchangé.
+
+
+ Avec l'option d'insensibilité à la casse, toutes les lettres
+ d'une classe de caractères représentent en même temps
+ la majuscule et la minuscule. Par exemple, [aeiou]
+ représentera "A" ou "a", et
+ [^aeiou] n'acceptera pas "A",
+ tandis que sans l'option, elle l'accepterait.
+
+
+ Le caractère de nouvelle ligne n'est pas traité de
+ manière spéciale dans les classes de caractères,
+ quelle que soit l'option PCRE_DOTALL
+ ou PCRE_MULTILINE. Une classe
+ telle que [^a] acceptera toujours une nouvelle ligne.
+
+
+ Le signe moins (-) est utilisé pour
+ spécifier un intervalle de caractères, dans
+ une classe. Par exemple, [d-m] remplace toutes
+ les lettres entre d et m inclus. Si le caractère moins est
+ requis dans une classe, il faut le protéger avec un antislash,
+ ou le faire apparaître à une position où il ne pourra
+ pas être interprété comme une indication d'intervalle,
+ c'est-à-dire au début ou à la fin de la classe.
+
+
+ Il n'est pas possible d'avoir le caractère crochet fermant
+ "]" comme fin d'intervalle. Un masque tel que
+ [W-]46] est compris comme la classe de caractères
+ contenant deux caractères ("W" et "-") suivie de la chaîne
+ littérale "46]", ce qui fait qu'il va accepter
+ "W46]" ou "-46]". Cependant, si
+ "]" est protégé avec un antislash, le
+ masque [W-\]46] est interprété comme
+ une classe d'un seul caractère, contenant un intervalle de
+ caractères. La valeur octale ou hexadécimale de
+ "]" peut aussi être utilisée pour déterminer
+ les limites de l'intervalle.
+
+
+ Les intervalles travaillent sur des séquences ASCII.
+ Ils peuvent aussi être précisés avec des valeurs numériques :
+ par exemple "[\000-\037]".
+ Si cet intervalle inclut des lettres utilisées avec une
+ option d'insensibilité de casse, les majuscules ou minuscules
+ correspondantes seront aussi incluses. Par exemple,
+ "[W-c]" est équivalent à
+ "[][\^_`wxyzabc]", avec l'option
+ d'insensibilité de casse. Si la table locale de
+ caractères est "fr", "[\xc8-\xcb]"
+ correspond aux caractères accentués.
+
+
+ Les types de caractères \d,
+ \D, \S, \s,
+ \w, \W peuvent aussi intervenir
+ dans les classes de caractères. Par exemple,
+ "[][\^_`wxyzabc][\dABCDEF]" acceptera n'importe
+ quel caractère hexadécimal. Un accent circonflexe peut
+ aussi être utilisé pour spécifier adroitement
+ des ensembles de caractères plus restrictifs : par exemple
+ [^\W_] accepte toutes les lettres et les chiffres,
+ mais pas les soulignés.
+
+
+ Tous les caractères non alphanumériques autres que
+ \, -, ^ (placés en début de chaîne)
+ et ] n'ont pas de signification
+ particulière, mais ils ne perdront rien à être protégés.
+ Le délimiteur de motif est toujours spécial, et doit être
+ protégé lorsqu'il est utilisé à l'intérieur d'une expression.
+
+
+ Perl supporte la notation POSIX pour les classes de caractères.
+ Elles utilisent des noms entourés par [: et
+ :]. PCRE supporte également cette notation. Par exemple,
+ [01[:alpha:]%] trouve "0", "1", toute lettre,
+ ou encore le caractère "%". Les noms de classe supportés sont :
+
+ Classes de caractères
+
+
+
+ alnum
+ lettres et chiffres
+
+ alpha
+ lettres
+
+ ascii
+ codes caractères 0 - 127
+
+ blank
+ espace ou tabulation uniquement
+
+ cntrl
+ caractères de contrôle
+
+ digit
+ chiffres décimaux (identique à \d)
+
+
+ graph
+ caractères d'impression, excluant les espaces
+
+
+ lower
+ lettres en minuscule
+
+
+ print
+ caractères d'impression, incluant les espaces
+
+
+ punct
+ caractères d'impression, excluant les lettres et les chiffres
+
+
+ space
+ espace blanc (pas tout à fait identique à \s)
+
+
+ upper
+ lettres en majuscule
+
+
+ word
+ caractères composant un mot (identique à \w)
+
+
+ xdigit
+ chiffres hexadécimaux
+
+
+
+
+ Les caractères d'espacement (space) sont HT (9), LF (10), VT (11), FF (12), CR (13),
+ et l'espace (32). Notez que cette liste inclut le caractère VT (code 11). Ceci rend la classe
+ "space" différente de \s, qui n'inclut pas ce caractère VT (pour une raison de compatibilité
+ Perl).
+
+
+ La classe word est une extension Perl, et blank
+ est une extension GNU de Perl 5.8. La négation est une autre extension Perl ; elle est indiquée
+ par le caractère ^ après un double-point. Par exemple,
+ [12[:^digit:]] trouve "1", "2", mais aussi tout caractère qui n'est pas un chiffre.
+
+
+ En mode UTF-8, les caractères dont les valeurs sont supérieures à 128 ne seront trouvés par
+ aucune des classes de caractères POSIX.
+ À partir de libpcre 8.10 certains caractères de classes ont été
+ modifié pour utiliser des caractères de propriétés Unicode, dans ce cas les
+ restrictions mentionnées ne s'applique pas.
+ Référez-vous au manuel PCRE(3) pour plus de détails.
+
+
+ Les propriétés des caractères Unicode peuvent apparaître à l'intérieur d'une
+ classe de caractère. Ils ne peuvent pas faire partie d'une étendue.
+ Le caractère moins (tiret) après une classe de caractère Unicode satisfera littéralement.
+ Essayer de terminer une étendue avec une propriété de caractère Unicode résultera en un avertissement.
+
+
+
+
+ Alternatives
+
+ La barre verticale | sert à séparer des
+ alternatives. Par exemple, dans le masque "/dupont|martin/"
+ recherche soit "dupont", soit "martin".
+ Le nombre d'alternatives n'est pas limité, et il est même possible
+ d'utiliser la chaîne vide. Lors de la recherche, toutes les alternatives
+ sont essayées, de gauche à droite, et la première qui est
+ acceptée est utilisée.
+ Si les alternatives sont dans un sous-masque, elles ne réussiront
+ que si le masque principal réussit aussi.
+
+
+ Il est possible d’enregistrer quelle alternative a été sélectionnée en utilisant
+ (*MARK:NOM) ou (*:NOM).
+ Un nombre quelconque de verbes (*MARK) peut apparaître, et leurs
+ noms n’ont pas besoin d’être uniques. Lorsqu’une correspondance réussit, le nom du
+ dernier (*MARK:NOM) rencontré sera placé parmi
+ les correspondances comme s’il s’agissait d’un groupe de capture appelé MARK,
+ de sorte qu’il puisse être lu à partir de matches dans
+ preg_match et sera transmis au
+ callback de preg_replace_callback etc.
+
+
+
+
+ Options internes
+
+ Les options PCRE_CASELESS,
+ PCRE_MULTILINE,
+ PCRE_DOTALL,
+ PCRE_UNGREEDY,
+ PCRE_EXTRA,
+ PCRE_EXTENDED et
+ PCRE_DUPNAMES peuvent être changées à l'intérieur du masque
+ lui-même, avec des séquences mises entre
+ "(?" et ")".
+ Les options sont :
+
+ Options internes
+
+
+
+ i
+ pour PCRE_CASELESS
+
+
+ m
+ pour PCRE_MULTILINE
+
+
+ s
+ pour PCRE_DOTALL
+
+
+ x
+ pour PCRE_EXTENDED
+
+
+ U
+ pour PCRE_UNGREEDY
+
+
+ X
+ Pour PCRE_EXTRA
+ (plus supporté à partir de PHP 7.3.0)
+
+
+ J
+ Pour PCRE_INFO_JCHANGED
+
+
+
+
+
+
+ Par exemple, (?im) rend le masque insensible à
+ la casse, et multilignes. Il est possible d'annuler ces options en les
+ faisant précéder par un signe - : par
+ exemple (?im-sx), ajoutera les options
+ PCRE_CASELESS
+ et PCRE_MULTILINE,
+ mais annulera les options
+ PCRE_DOTALL
+ et PCRE_EXTENDED.
+ Si une option apparaît avant et après le signe moins, l'option
+ sera annulée.
+
+
+ Lorsqu'une modification d'option survient au degré le plus haut (et donc, pas dans
+ les parenthèses du sous-masque), les modifications sont appliquées dans le reste
+ du masque qui suit. Donc, /ab(?i)c/ valide uniquement
+ "abc" et "abC".
+
+
+ Si une option intervient dans un sous-masque, le comportement est différent.
+ C'est un changement de comportement apparu en Perl 5.005. Une option à
+ l'intérieur d'un sous-masque n'affecte que cette partie du masque, ce
+ qui fait que (a(?i)b)c
+ acceptera abc et aBc,
+ mais aucune autre chaîne (en supposant que PCRE_CASELESS n'est pas
+ utilisé). Cela signifie que les options permettent d'avoir
+ différentes configurations de recherche pour différentes parties du masque.
+ Une séquence d'options dans une alternative affecte toute l'alternative.
+ Par exemple :
+
+ (a(?i)b|c)
+
+ accepte "ab", "aB", "c",
+ et "C", même si, comme dans le cas de
+ "C", la première alternative qui porte
+ l'option n'est pas prise en compte. Sinon, cela risque d'introduire
+ des comportements très étranges
+
+
+ Les options spécifiques à PCRE telles
+ PCRE_UNGREEDY et
+ PCRE_EXTRA peuvent
+ être modifiées de la même manière, en utilisant respectivement les caractères
+ U et X. L'option (?X) est particulière,
+ car elle doit toujours intervenir avant toutes les autres options,
+ même au niveau du masque entier. Il vaut mieux l'activer au
+ début du masque.
+
+
+
+
+ Sous-masques
+
+ Les sous-masques sont délimités par des parenthèses,
+ et peuvent être imbriqués. Ajouter des sous-masques a deux
+ utilités :
+
+
+
+
+ Localiser un ensemble d'alternatives. Par exemple, le motif
+ cat(aract|erpillar|) trouve un des mots "cat",
+ "cataract", ou "caterpillar". Sans les parenthèses, cela trouverait
+ "cataract", "erpillar" ou la chaîne vide.
+
+
+
+
+ Cela configure le sous-masque comme capturant. Lorsque tout le motif
+ correspond, la portion de la sous-chaîne qui correspond au sous-masque
+ est passé à l'appelant grâce à l'argument ovector
+ de pcre_exec. Les parenthèses ouvrantes sont comptées
+ depuis la gauche vers la droite (commençant à 1) jusqu'à obtenir le nombre
+ des sous-masques capturants.
+
+
+
+
+ Par exemple, soit la chaîne sujet "le roi soleil"
+ qui est utilisée avec le masque suivant :
+ Le ((roi|prince) (soleil|charmant)), les sous-masques
+ capturés sont "roi soleil", "roi",
+ et "soleil", numérotés respectivement 1, 2, et 3.
+
+
+ L'ubiquité des parenthèses n'est pas toujours simple
+ d'emploi. Il y a des moments où regrouper des sous-masques
+ est nécessaire, sans pour autant capturer la valeur trouvée.
+ Si une parenthèse ouvrante est suivie de "?:",
+ le sous-masque ne capture pas la chaîne assortie, et ne sera pas
+ compté lors de la numérotation des captures. Par exemple,
+ avec la chaîne "le prince charmant", utilisé
+ avec le masque
+
+ Le (( ?:roi|prince) (soleil|charmant))
+
+ les chaînes capturées seront "prince charmant"
+ et "charmant", numérotés respectivement 1
+ et 2. Le nombre maximal de chaînes capturées est de 65535. Il se peut qu'il
+ soit impossible de compiler un masque aussi large, toutefois, ceci dépend des
+ options de configuration de libpcre.
+
+
+ En guise de raccourci, si n'importe quelle option de configuration
+ est requise au début des sous-masques non-capturants, les lettres
+ d'option peuvent apparaître entre le signe "?"
+ et le signe ":". Ainsi, les 2 masques
+
+
+
+
+
+
+
+
+
+ captureront exactement les mêmes chaînes. Du fait que les branches
+ alternatives sont testées de la gauche vers la droite, et que les
+ options ne sont pas réinitialisées tant que le sous masque n'est pas
+ atteint, une option de configuration d'une branche n'affecte pas
+ les branches sous-jacentes ; ainsi, les 2 masques ci-dessus
+ captureront "SAMEDI", mais aussi
+ "Samedi".
+
+
+ Il est possible de nommer un sous-masque en utilisant la syntaxe
+ (?P<name>pattern). Ce sous-masque sera alors
+ indexé dans le tableau de concordance par sa position, ainsi
+ que par son nom. Il y a deux syntaxes alternatives :
+ (?<name>pattern) et
+ (?'name'pattern).
+
+
+
+ Quelques fois, il est nécessaire d'avoir plusieurs correspondances en alternant
+ les sous groupes dans une expression régulière. Normalement, chacun recevra son
+ propre nombre de références arrière même si seulement un d'entre eux ne peut
+ correspondre. Pour éviter cela, la syntaxe (?| permet d'autoriser
+ les nombres dupliqués. Soit l'expression ci-après utilisée avec la chaîne
+ Sunday:
+
+
+
+
+
+
+
+
+
+ Ici, Sun est stocké dans la référence arrière 2, alors que la référence
+ arrière 1 est vide. La recherche de correspondance de Saturday mène donc à
+ Sat dans la référence arrière 1 alors que la référence arrière 2
+ n'existe pas. Changer le masque en utilisant (?| résoud ce problème:
+
+
+
+
+
+
+
+
+
+ Avec ce masque, à la fois Sun et Sat
+ seront stockés dans la référence arrière 1.
+
+
+
+
+ Répétitions
+
+ Les répétitions sont spécifiées avec
+ des quantificateurs, qui peuvent être placés à
+ la suite des caractères suivants :
+
+
+ Un caractère unique, même s'il s'agit d'un métacaractère
+ Le métacaractère .
+ Une classe de caractères
+ Une référence de retour (voir section suivante)
+ Un sous-masque avec parenthèses (à moins que ce ne soit
+ une assertion, voir plus loin)
+
+
+
+ Les quantificateurs généraux précisent un nombre
+ minimum et maximum de répétitions possibles, donnés
+ par deux nombres entre accolades, et séparés par une virgule.
+ Ces nombres doivent être plus petits que 65536, et le premier nombre
+ doit être égal ou inférieur au second. Par exemple
+
+ z{2,4}
+
+ accepte "zz",
+ "zzz", ou "zzzz". L'accolade fermante
+ n'a pas de signification par elle-même.
+ Si le second nombre est omis, mais que la virgule est là, cela
+ signifie qu'il n'y a pas de limite supérieure. Si le second nombre
+ et la virgule sont omis, le quantificateur correspond au nombre exact de
+ répétitions attendues. Par exemple :
+
+ [aeiou]{3,}
+
+ accepte n'importe quelle succession d'au moins 3 voyelles minuscules, tandis
+ que
+
+ \d{8}
+
+ n'accepte que 8 chiffres exactement.
+
+
+ Avant PHP 8.4.0, une accolade ouvrante apparaissant dans une position où un quantificateur n'est pas autorisé,
+ ou qui ne correspond pas à la syntaxe d'un quantificateur, est considérée comme un caractère littéral.
+ Par exemple, {,6} n'est pas un quantificateur, mais une chaîne littérale de quatre caractères.
+
+ À partir de PHP 8.4.0, l'extension PCRE est livrée avec la version 10.44 de PCRE2,
+ ce qui permet des motifs tels que \d{,8} qui sont interprétés comme \d{0,8}.
+
+ De plus, à partir de PHP 8.4.0, les espaces autour des quantificateurs tels que
+ \d{0 , 8} et \d{ 0 , 8 } sont autorisés.
+
+
+ Le quantificateur {0} est autorisé, mais l'expression est alors
+ ignorée.
+
+
+ Par convenance (et pour la compatibilité ascendante), les trois
+ quantificateurs les plus communs ont une abréviation d'un
+ seul caractère :
+
+ Quantificateurs sur un seul caractère
+
+
+
+ *
+ équivalent à {0,}
+
+
+ +
+ équivalent à {1,}
+
+
+ ?
+ équivalent à {0,1}
+
+
+
+
+
+
+ Il est possible de constituer des boucles infinies en créant un sous-masque
+ sans caractères, mais pourvu d'un quantificateur sans limite
+ supérieure. Par exemple :
+
+ (a?)*
+
+
+
+ Les versions plus anciennes de Perl et PCRE généraient alors
+ une erreur au moment de la compilation. Cependant, étant donné
+ qu'il existe des situations où ces constructions peuvent être
+ utiles, ces masques sont désormais autorisés. Toutefois, si
+ la répétition du sous-masque ne trouve aucun caractère,
+ la boucle est interrompue.
+
+
+ Par défaut, les quantificateurs sont dits "gourmands", c'est-à-dire,
+ qu'ils cherchent d'abord à trouver le nombre maximal de
+ répétitions qui autorisent le succès de la recherche.
+ L'exemple classique posé par cette gourmandise est la recherche de
+ commentaires d'un programme en C. Les commentaires apparaissent entre les
+ séquences /*....*/ et à l'intérieur
+ de ces délimiteurs, les * et /
+ sont autorisés. Appliquer le masque
+
+ /\*.*\*/
+
+ à la chaîne
+
+ /* premier commentaire */ aucun commentaire /* second commentaire */
+
+ ne peut réussir, car le masque travaille sur toute la chaîne,
+ à cause de la gourmandise du caractère .*.
+
+
+ Cependant, un quantificateur suivi d'un point d'interrogation cesse
+ d'être gourmand, et au contraire, ne recherche que le nombre
+ minimum de répétition. Dans ces conditions, le masque
+
+ /\*.*?\*/
+
+ trouvera bien les commentaires du code
+ C. La signification des autres quantificateurs n'est pas changée.
+ Attention à ne pas confondre l'utilisation du point d'interrogation
+ ici avec son utilisation comme quantificateur lui-même.
+ À cause de cette ambiguïté, il peut apparaître des situations
+ où il faut le doubler :
+
+ \d??\d
+
+ Ce masque va tenter de lire un seul chiffre, mais le cas échéant,
+ il acceptera 2 chiffres pour permettre à la recherche d'aboutir.
+
+
+ Si l'option PCRE_UNGREEDY
+ est activée, (une option qui n'est pas disponible avec Perl) alors
+ les quantificateurs sont non gourmands par défaut, mais peuvent être
+ rendu gourmands au cas par cas, en ajoutant un point d'interrogation
+ après. En d'autres termes, cette option inverse le comportement par
+ défaut.
+
+
+ Les quantificateurs suivis par + sont "possessifs". Ils
+ mangent autant de caractères que possible et ne retournent pas
+ pour chercher le reste du masque. .*abc trouvera
+ "abc", tandis que .*+abc ne le trouvera
+ pas, car .*+ accapare totalement la chaîne.
+ Les quantificateurs possessifs peuvent être utilisés pour
+ accélérer le traitement.
+
+
+ Lorsqu'un sous-masque est quantifié avec un nombre minimum
+ de répétitions, qui soit plus grand que 1, ou avec
+ un maximum de répétitions, le masque compilé aura
+ besoin de plus de place de stockage, proportionnellement au minimum
+ et au maximum.
+
+
+ Si un masque commence par .* ou .{0,}
+ et que l'option PCRE_DOTALL
+ (équivalent en Perl à /s) est
+ activée, c'est-à-dire en autorisant le remplacement des nouvelles
+ lignes par un métacaractère, alors le masque est
+ implicitement ancré, car tout ce qui suit va être
+ mangé par la première séquence, et se comportera
+ comme si le masque se terminait par le métacaractère
+ \A. Dans le cas où on sait d'avance qu'il
+ n'y aura pas de caractère de nouvelle ligne, activer l'option
+ PCRE_DOTALL et commencer
+ le masque par .* permet d'optimiser le masque.
+ Alternativement, on peut utiliser ^ pour ancrer
+ explicitement le masque.
+
+
+ Lorsqu'un sous-masque capturant est répété, la valeur capturée est la
+ dernière. Par exemple, après que
+
+ (inter[net]{3}\s*)+
+
+ ait été appliqué à "internet interne",
+ la valeur de la chaîne capturée est "interne".
+ Cependant, s'il y a des sous-masques imbriqués, la valeur
+ capturée correspondante peut l'avoir été lors
+ des précédentes itérations. Par exemple :
+
+ /(a|(b))+/
+
+ accepte "aba" et
+ la deuxième valeur capturée est "b".
+
+
+
+
+ Références arrières
+
+ En dehors des classes de caractères, un antislash suivi
+ d'un nombre plus grand que 0 (et possiblement plusieurs chiffres)
+ est une référence arrière (c'est-à-dire vers la gauche) dans le masque,
+ en supposant qu'il y ait
+ suffisamment de sous-masques capturants précédents.
+
+
+ Cependant, si le nombre décimal suivant l'antislash est
+ plus petit que 10, il sera toujours considéré
+ comme une référence arrière, et cela
+ générera une erreur si le nombre de captures
+ n'est pas suffisant. En d'autres termes, il faut qu'il existe
+ suffisamment de parenthèses ouvrantes à gauche
+ de la référence, surtout si la référence
+ est inférieure à 10. Une "référence arrière vers l'avant" peut avoir du sens
+ lorsqu'une répétition est isolée et que le sous masque à droite a participé
+ à l'itération précédente. Voir la section sur les
+ séquences d'échappements
+ pour plus de détails à propos du nombre de chiffres qui suivent l'antislash.
+
+
+ La référence arrière remplace ce qui a
+ été capturé par un sous-masque dans le
+ masque courant, plutôt que remplacer le sous-masque
+ lui-même. Ainsi
+
+ (calme|rapide) et \1ment
+
+ trouvera "calme et calmement"
+ et "rapide et rapidement", mais pas
+ "calme et rapidement". Si la recherche tient
+ compte de la casse, alors la casse de la chaîne
+ capturée sera importante. Par exemple,
+
+ ((?i)rah)\s+\1
+
+ trouve "rah rah"
+ et "RAH RAH", mais pas "RAH rah",
+ même si le sous-masque capturant initial ne tenait pas compte
+ de la casse.
+
+
+ Il peut y avoir plusieurs références arrière dans
+ le même sous-masque. Si un sous-masque n'a pas été
+ utilisé dans une recherche, alors les références
+ arrière échoueront. Par exemple
+
+ (a|(bc))\2
+
+ ne réussira jamais si la chaîne sujet commence par
+ "a" plutôt que par "bc".
+ Étant donné qu'il peut y avoir jusqu'à 99 références
+ arrière, tous les chiffres après l'antislash sont
+ considérés comment faisant potentiellement partie de
+ la référence arrière. Si le masque recherche un
+ chiffre après la référence, alors il faut
+ impérativement utiliser des délimiteurs pour terminer
+ la référence arrière.
+ Si l'option PCRE_EXTENDED
+ est activée, on peut utiliser un espace.
+ Sinon, un commentaire vide fait l'affaire.
+
+
+ Une référence arrière qui intervient à l'intérieur de
+ parenthèses auxquelles elle fait référence
+ échouera dès que le sous-masque sera utilisé. Par exemple,
+
+ (a\1)
+
+ échouera toujours. Cependant, ces
+ références peuvent être utiles dans les
+ sous-masques répétitifs. Par exemple, le masque
+ "(a|b\1)+" pourra convenir pour "a",
+ "aba", "ababba", etc.
+ À chaque itération du sous-masque, la référence
+ arrière utilise le résultat du dernier sous-masque.
+ Pour que cela fonctionne, il faut que la première
+ itération n'ait pas besoin d'utiliser la référence
+ arrière. Cela arrive avec les alternatives, comme dans
+ l'exemple ci-dessus, ou avec un quantificateur de minimum 0.
+
+
+ La séquence d'échappement \g
+ peut être utilisée pour le référencement absolu et relatif des
+ sous-masques. Cette séquence doit être suivie par un nombre non signé
+ ou négatif, entouré optionnellement par des accolades. La séquence
+ \1, \g1 et \g{1}
+ sont identiques. L'utilisation de ce masque avec un nombre non signé peut
+ aider à ne pas le confondre lors de l'utilisation de nombre suivi d'un
+ antislash. Cette séquence aide à distinguer les références arrière
+ lors de l'utilisation de caractères octales et rend également plus facile
+ d'avoir une référence arrière suivie par un nombre littéral, i.e.
+ \g{2}1.
+
+
+ L'utilisation de la séquence \g avec un nombre négatif
+ indique une référence relative. Par exemple, (foo)(bar)\g{-1}
+ trouvera la séquence "foobarbar" et (foo)(bar)\g{-2} trouvera
+ la séquence "foobarfoo". Ceci peut être pratique dans ce gros masque
+ comme alternative afin de conserver une trace du nombre de sous-masques
+ afin de référencer un sous-masque précédant spécifique.
+
+
+ Les références arrière du sous-masque nommé peuvent être
+ utilisées sous la forme
+ (?P=name),
+ \k<name>, \k'name',
+ \k{name}, \g{name},
+ \g<name> ou \g'name'.
+
+
+
+
+ Assertions
+
+ Une assertion est un test sur les caractères suivants ou
+ précédents celui qui est en cours d'étude. Ce
+ test ne consomme pas de caractères (ie, on ne déplace
+ pas le pointeur de caractères). Les assertions simples sont
+ codées avec \b, \B,
+ \A, \Z, \z,
+ ^ et $, et sont décrites
+ dans les séquences d'échappement.
+ Il existe cependant des types d'assertions plus complexes, codées sous la forme
+ de sous-masques. Il en existe deux types : celles qui travaillent
+ au-delà de la position courante, et celles qui
+ travaillent en-deçà.
+
+
+ Une assertion se comporte comme un sous-masque, hormis le fait qu'elle
+ ne déplace pas le pointeur de position. Les assertions avant
+ commencent par (?= pour les assertions positives, et
+ par (?!, pour les assertions négatives. Par exemple :
+
+ \w+(?=;)
+
+ s'assure qu'un mot est suivi d'un point-virgule,
+ mais n'inclut pas le point virgule dans la capture et foo(?!bar)
+ trouve toutes les occurrences de "foo" qui ne sont pas suivies par "bar".
+ Notez que,
+
+ (?!foo)bar
+
+ en est proche, mais ne trouve pas une
+ occurrence de "bar" qui soit précédée
+ par quelque chose d'autre que "foo"; il
+ trouve toutes les occurrences de "bar",
+ quel que soit ce qui le précède, car l'assertion
+
+ (?!foo)
+
+ est toujours vraie quand les trois caractères suivants sont
+ "bar". Une assertion arrière est ici
+ nécessaire.
+
+
+ Les assertions arrières commencent par (?<=
+ pour les assertions positives, et (?<! pour les
+ assertions négatives. Par exemple :
+
+ (?<!foo)bar
+
+ trouve les occurrences de "bar" qui ne sont pas
+ précédées par "foo". Le contenu d'une référence
+ arrière est limité de telle façon que les chaînes qu'il utilise
+ soient toujours de la même taille. Cependant, lorsqu'il
+ y a plusieurs alternatives, elles n'ont pas besoin d'être
+ de la même taille. Par exemple,
+
+ (?<=bullock|donkey)
+
+ est autorisé, tandis que
+
+ (?<!dogs?|cats?)
+
+ provoque une erreur de compilation. Les alternatives qui ont des
+ longueurs différentes ne sont autorisées qu'au niveau
+ supérieur des assertions arrière. C'est une
+ amélioration du fonctionnement de Perl 5.005, qui impose
+ aux alternatives d'avoir toute la même taille. Une
+ assertion telle que
+
+ (?<=ab(c|de))
+
+ n'est pas autorisée, car l'assertion de bas niveau (la deuxième,
+ ici) a deux possibilités de longueurs différentes. Pour
+ la rendre acceptable, il faut écrire
+
+ (?<=abc|abde)
+
+ L'implémentation des assertions arrière déplace
+ temporairement le pointeur de position vers l'arrière, et cherche
+ à vérifier l'assertion. Si le nombre de caractères
+ est différent, la position ne sera pas correcte, et l'assertion
+ échouera. La combinaison d'assertions arrière avec des
+ sous-masques peut être particulièrement pratique à
+ fin des chaînes. Un exemple est donné à la fin de
+ cette section.
+
+
+ Plusieurs assertions peuvent intervenir successivement. Par exemple,
+ le masque
+
+ (?<=\d{3})(?<!999)foo
+
+ recherche les chaînes "foo" précédées
+ par trois chiffres qui ne sont pas "999". Notez que chaque assertion
+ est appliquée indépendamment, au même point de
+ la chaîne à traiter. Tout d'abord, il est
+ vérifié que les trois premiers caractères ont
+ tous des chiffres, puis on s'assure que ces trois caractères
+ ne sont pas "999". Le masque précédant
+ n'accepte pas "foo" précédé de
+ 6 caractères, les trois premiers étant des chiffres et
+ les trois suivants étant différents de "999".
+ Par exemple, ce masque n'acceptera pas la chaîne
+ "123abcfoo". Pour ce faire, il faut utiliser le masque
+ suivant :
+
+ (?<=\d{3}...)(?<!999)foo.
+
+
+
+ Dans ce masque, la première assertion vérifie les six premiers
+ caractères, s'assure que les trois premiers sont des entiers,
+ et la deuxième assertion s'assure que les trois derniers
+ caractères ne sont pas "999".
+
+
+ De plus, les assertions peuvent être imbriquées :
+
+ (?<=(?<!foo)bar)baz
+
+ recherche les occurrences de "baz" qui sont
+ précédées par "bar", qui,
+ à son tour, n'est pas précédé par
+ "foo". Au contraire,
+
+ (?<=\d{3}...(?<!999))foo
+
+ est un autre masque, qui recherche les caractères "foo",
+ précédés par trois chiffres, suivis de trois
+ autres caractères qui ne forment pas "999".
+
+
+ Les assertions ne sont pas capturantes, et ne peuvent pas être
+ répétées. Si une assertion contient des sous-masques
+ capturants en son sein, ils seront compris dans le nombre de sous-masques
+ capturants du masque entier. La capture est réalisée pour
+ les assertions positives, mais cela n'a pas de sens pour les
+ assertions négatives.
+
+
+ 200 assertions au maximum sont autorisées.
+
+
+
+
+ Sous-masques uniques
+
+ Avec les quantificateurs de répétitions, l'échec
+ d'une recherche conduit normalement à une autre recherche, avec
+ un nombre différent de répétitions, pour
+ voir si le masque ne s'applique pas dans d'autres conditions.
+ Parfois, il est pratique d'éviter ce comportement, soit
+ pour changer la nature de la recherche, soit pour la faire abandonner
+ plus tôt, si on pense qu'il n'est pas besoin d'aller plus loin.
+
+
+ Considérons, par exemple, le masque \d+foo
+ appliqué à la ligne
+
+ 123456bar.
+
+
+
+ Après avoir tenté d'utiliser les 6 chiffres suivis
+ de "foo" qui font échouer, l'action habituelle
+ sera de réessayer avec 5 chiffres, puis avec 4, et ainsi de
+ suite jusqu'à l'échec final. Un sous-masque évalué une seule fois
+ permettrait d'indiquer que lorsqu'une partie du masque est trouvée,
+ elle n'a pas besoin d'être réévaluée à chaque tentative. Ceci
+ conduirait à ce que la recherche échoue immédiatement après le
+ premier test. Ces assertions ont leur propre notation, commençant avec
+ (?> comme ceci :
+
+ (?>\d+)bar
+
+
+ Ce type de parenthèses verrouille le sous-masque qu'il contient
+ une fois qu'il a été trouvé, et empêche un
+ échec ultérieur d'y repasser, mais autorise à
+ revenir plus loin en arrière.
+
+
+ Une autre description est que les sous-masques de ce type
+ recherchent les chaînes de caractères, et ancre le sous-masque
+ à l'intérieur de la chaîne.
+
+
+ Les sous-masques uniques ne sont pas capturants. Des cas simples comme
+ ceux présentés ci-dessus peuvent être pris comme
+ des situations maximales, qui réservent le maximum de
+ caractères. En effet, alors que \d+ et
+ \d+? ajustent le nombre de chiffres trouvés
+ de manière à laisser la possibilité au masque de
+ réussir, (?>\d+) ne peut retenir que la
+ séquence entière de chiffres.
+
+
+ Cette construction peut contenir un nombre arbitraire de sous-masques
+ complexes, et ils peuvent être imbriqués.
+
+
+ Les sous-masques uniques ne peuvent être utilisés qu'avec
+ les assertions arrière, pour effectuer une recherche efficace
+ en fin de chaîne. Considérons un masque simple tel
+
+ abcd$
+
+ appliqué à une très longue chaîne qui ne lui correspond pas.
+ À cause du système de recherche de gauche à droite, PCRE va
+ commencer par rechercher un "a" dans la
+ chaîne sujet, puis vérifier si ce qui suit convient au reste
+ du masque. Si le masque est spécifié sous la forme
+
+ ^.*abcd$
+
+ alors, la séquence .* remplace en premier
+ lieu la chaîne entière, et échoue, repart en
+ arrière, et remplace tous les caractères sauf le dernier,
+ échoue, retourne en arrière, prend un caractère
+ de moins, etc. et ainsi de suite. Encore une fois, la recherche du
+ "a" passe en revue toute la chaîne de gauche
+ à droite, ce qui n'est pas très efficace. Par contre,
+ si le masque était écrit
+
+ ^(?>.*)(?<=abcd)
+
+ alors il n'y aurait pas de retour en arrière, pour satisfaire
+ la séquence .*, car elle ne peut que remplacer
+ toute la chaîne. L'assertion arrière consécutive
+ va alors faire un test sur les 4 derniers caractères. Si elle
+ échoue, la recherche est immédiatement interrompue.
+ Pour les chaînes très longues, cette approche fait la
+ différence en termes de performances et de temps de recherche.
+
+
+ Lorsqu'un masque contient une répétition illimitée
+ dans un sous-masque, qui contient lui-même un nombre
+ illimité de répétiteurs, l'utilisation des
+ sous-masques à utilisation unique est la seule façon
+ d'éviter l'échec de la recherche après un
+ temps de calcul trop long.
+ Le masque
+
+ (\D+|<\d+>)*[!?]
+
+ recherche un nombre illimité de sous-chaînes, qui contiennent soit
+ des non-chiffres, soit des chiffres inclus dans <>, suivi soit
+ par ! ou par ?. Lorsqu'il trouve
+ une solution, ce masque va très vite. Mais, lorsqu'il est
+ appliqué à une chaîne telle :
+
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,
+
+ il lui faut beaucoup de temps pour annoncer un échec. Cela est
+ dû au fait que la chaîne peut être divisée en deux
+ sous-chaînes d'un grand nombre de façons, et qu'elles
+ ont toutes été essayées. (Cet exemple utilisait
+ [!?] plutôt qu'un caractère simple, car
+ PCRE et PHP utilise une optimisation qui leur permet de détecter
+ rapidement l'échec lorsqu'un caractère unique est
+ trouvé. Il se souvient du dernier caractère qui est
+ attendu, et s'aperçoit rapidement qu'il n'y a pas ce caractère).
+ Si le masque utilisé est
+
+ ((?>\D+)|<\d+>)*[!?]
+
+ les séquences de chiffres ne peuvent pas être
+ trouvées, et l'échec intervient rapidement.
+
+
+
+
+ Les sous-masques conditionnels
+
+ Il est possible de lier un sous-masque à une condition, ou de
+ choisir entre deux sous-masques alternatifs, en fonction du
+ résultat d'une assertion, ou suivant les résultats
+ de recherche précédents.
+ Les deux formes possibles de sous-masques conditionnels sont
+
+
+
+
+
+
+
+
+ Si les conditions sont satisfaites, le masque positif est utilisé,
+ sinon, le masque négatif est utilisé, si présent.
+ S'il y a plus de deux possibilités, une erreur est générée
+ à la compilation.
+
+
+ Il y a deux types de conditions : si le texte entre les parenthèses
+ est une séquence de chiffres, alors la condition est satisfaite si
+ le sous-masque correspondant à ce numéro a réussi.
+ Considérons le masque suivant, qui contient des espaces non
+ significatifs pour le rendre plus compréhensible (on supposera
+ l'option PCRE_EXTENDED
+ activée) et qui est divisée en trois parties
+ pour simplifier les explications :
+
+
+
+
+
+
+
+ La première partie recherche une parenthèse ouvrante
+ optionnelle et, si elle existe, elle est capturée. La deuxième
+ partie recherche une séquence de caractères qui ne contiennent
+ pas de parenthèses. La troisième partie est
+ conditionnée à la première, et s'assure que s'il
+ y a une parenthèse ouvrante, il en existe une fermante.
+ Si une parenthèse ouvrante a été trouvée,
+ elle a été capturée, et donc la première capture
+ existe, et la condition est exécutée. Sinon, elle est
+ ignorée. Ce masque recherche donc une séquence de lettres,
+ éventuellement placées entre parenthèse.
+
+
+ Si la condition est la chaîne (R), elle sera
+ satisfaite si un appel récursif au masque ou au sous-masque
+ a été fait. Au premier appel, la condition n'est pas vérifiée.
+
+
+ Si la condition n'est pas une séquence de chiffres, il faut que ce soit
+ une assertion. Ce peut être une assertion positive ou négative,
+ arrière ou avant. Considérons le masque suivant (mêmes conditions que
+ le précédent) et avec deux possibilités en seconde ligne :
+
+
+
+
+
+
+
+
+ La condition est une assertion avant positive, qui recherche une
+ séquence optionnelle de caractères non-lettre. En d'autres
+ termes, elle teste la présence d'au moins une lettre dans la chaîne
+ sujet. Si une lettre est trouvée, la recherche se poursuit avec
+ la première alternative, et sinon, avec la seconde. Ce masque
+ recherche des chaînes de la forme dd-aaa-dd ou
+ dd-dd-dd, avec "aaa" qui sont des
+ lettres, et dd qui sont des chiffres.
+
+
+
+
+ Commentaires
+
+ La séquence (?# marque le début d'un commentaire,
+ qui se termine à la prochaîne parenthèse fermante. Les
+ parenthèses imbriquées ne sont pas autorisées. Les
+ caractères entre ces délimiteurs ne jouent alors aucun rôle
+ dans le masque.
+
+
+ Si l'option PCRE_EXTENDED
+ est activée, les caractères dièses
+ # non protégés en dehors d'une classe de
+ caractères introduisent un commentaire qui continuera jusqu'à
+ la prochaîne ligne dans le masque.
+
+
+
+ Usage de commentaire dans un masque PCRE
+
+
+
+ &example.outputs;
+
+
+
+
+
+
+
+
+ Masques récursifs
+
+ Considérons le cas où il faut rechercher dans une
+ chaîne avec un niveau d'imbrications infini de
+ parenthèses. Sans l'aide de la récursivité, le
+ mieux que nous puissions obtenir est de créer un masque avec un
+ niveau fixé de profondeur d'imbrication. Il n'est pas possible
+ de traiter des masques à niveau d'imbrication variable.
+ PCRE fournit un nouvel outil expérimental qui permet
+ d'utiliser la récursivité dans les masques (entre autres).
+ L'option (?R) est fournie pour servir la cause de
+ la récursivité. Le masque suivant résout le
+ problème des parenthèses (l'option
+ PCRE_EXTENDED est
+ utilisée pour ignorer les espaces) :
+
+ \( ( (?>[^()]+) | (?R) )* \)
+
+
+ Tout d'abord, le masque recherche une parenthèse ouvrante. Puis,
+ il recherche n'importe quel nombre de sous-chaînes qui sont soit
+ des séquences de caractères non-parenthèses, ou
+ bien une recherche récursive avec le même masque (i.e.
+ une chaîne correctement incluse entre parenthèses).
+ Finalement, il recherche une parenthèse fermante.
+
+
+ Cet exemple particulier contient un nombre illimité de
+ répétitions imbriquées, ce qui fait que
+ l'utilisation de sous-chaînes à utilisation unique
+ pour rechercher les séquences de caractères
+ non-parenthèses est important, lorsqu'il s'applique à
+ une chaîne qui n'est pas valide. Par exemple, si on l'applique
+ à
+
+ (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()
+
+ la réponse arrive rapidement. Sinon, si les sous-chaînes
+ à utilisation unique ne sont pas utilisées, la
+ recherche peut prendre un temps très long, car il existe
+ de très nombreuses combinaisons de + et
+ * à tester avant de conclure à
+ l'échec.
+
+
+ Les valeurs utilisées pour capturer les sous-masques sont celles
+ utilisées par les niveaux les plus hauts de
+ récursivité, auxquels la valeur est fixée.
+ Si le masque précédent est utilisé avec
+
+ (ab(cd)ef)
+
+ la valeur de la parenthèse capturante est "ef",
+ qui est la dernière valeur lue au niveau supérieur. Si de nouvelles
+ parenthèses sont ajoutées, par exemple :
+
+ \( ( ( (?>[^()]+) | (?R) )* ) \)
+
+ alors la chaîne capturée est "ab(cd)ef",
+ c'est-à-dire le contenu de la parenthèse capturante
+ de plus haut niveau. S'il y a plus de 15 parenthèses
+ capturantes dans une chaîne, PCRE doit utiliser plus
+ de mémoire pour stocker ces données. S'il ne
+ peut obtenir cette mémoire supplémentaire, il ne fait
+ que sauver les 15 premières, car il n'y a pas moyen de
+ générer une erreur de mémoire dans le cadre d'une récursivité.
+
+
+
+ (?1), (?2) et suivants
+ peuvent être également utilisés pour les sous masques récursifs. Il est également
+ possible d'utiliser les sous masques nommés : (?P>foo) ou
+ (?&name).
+
+
+ Si la syntaxe pour une référence de sous-masque récursif (soit par un
+ nombre ou par un nom) est utilisée en dehors des parenthèses à laquelle
+ elle fait référence, il opère comme une sous-routine dans un langage
+ de programmation. Un exemple ci-dessus a montré que le masque
+ (sens|respons)e and \1ibility
+ trouvera "sense and sensibility" et
+ "response and responsibility", mais pas
+ "sense and responsibility". Si on utilise plutôt le masque
+ (sens|respons)e and (?1)ibility
+ alors, il trouvera "sense and responsibility"
+ tout comme les deux autres chaînes.
+ De telles références doivent, dépendant, suivre le sous-masque auquel
+ elles se réfèrent.
+
+
+
+ La longueur maximale d'un sujet correspond au plus grand nombre positif
+ qu'une variable entière peut contenir. Cependant, PCRE utilise la récursivité
+ pour gérer les sous-masques et les répétitions infinies. Ce qui signifie
+ que l'espace disponible pour la pile peut limiter la taille du sujet qui peut
+ être passé à certains masques.
+
+
+
+
+ Performance
+
+ Certaines séquences de recherches sont plus efficaces que d'autres.
+ Ainsi, il est plus efficace d'utiliser une classe de caractères
+ telle que [aeiou] plutôt qu'une alternative
+ (a|e|i|o|u).
+ En général, le masque le plus simple, qui permette
+ la recherche désirée est le plus efficace. Le livre
+ de Jeffrey Friedl's contient de nombreuses études à
+ propos de l'optimisation des expressions régulières.
+
+
+ Lorsqu'un masque commence par.* et que l'option
+ PCRE_DOTALL est
+ activée, le masque est implicitement ancré par PCRE,
+ étant donné qu'il ne peut que rechercher au début
+ de la chaîne. Cependant, si l'option
+ PCRE_DOTALL n'est pas
+ activée, PCRE ne peut faire aucune optimisation, car le
+ métacaractère point "."
+ ne remplace pas une nouvelle ligne, et si la chaîne
+ sujet contient des nouvelles lignes, le masque peut trouver une
+ solution qui serait située juste après une
+ de ces nouvelles lignes, et non pas seulement au début
+ de la chaîne sujet. Par exemple, le masque,
+
+ (.*)second
+
+ acceptera la chaîne "premier \net second"
+ (avec "\n" qui remplace la nouvelle ligne),
+ et la première chaîne capturée sera "et".
+ Afin d'effectuer la recherche, PCRE va essayer d'appliquer le masque
+ à partir de chaque début de ligne.
+
+
+ Si vous utilisez un tel masque avec des chaînes qui ne contiennent
+ pas de caractères de nouvelle ligne, les meilleures performances
+ seront atteintes avec l'option
+ PCRE_DOTALL, ou en ancrant le
+ masque avec ^.*. Cela évite à PCRE
+ de scanner toute la chaîne pour rechercher un caractère
+ de nouvelle ligne et recommencer la recherche.
+
+
+ Attention aux masques qui contiennent des quantificateurs infinis
+ imbriqués. Ils peuvent demander un temps de calcul très
+ long, lorsque appliqués à une chaîne qui ne
+ correspond pas à ce masque. Par exemple,
+
+ (a+)*
+
+
+
+ Ce masque peut accepter "aaaa" de 33 manières
+ différentes, et ce nombre croit rapidement avec la taille
+ de la chaîne (le quantificateur * peut prendre
+ les valeurs de 0, 1, 2, 3, ou 4, et pour chaque cas non nul, le
+ quantificateur + peut prendre différentes
+ valeurs). Lorsque le reste de la chaîne est tel que l'on s'achemine
+ vers un échec, PCRE doit en principe vérifier
+ toutes les possibilités, et cela prend un temps
+ extrêmement long.
+
+
+ Un optimiseur repère les cas les plus simples, tel que
+
+ (a+)*b
+
+ où un caractère simple suit les quantificateurs.
+ Avant de partir dans les procédures standards de recherche, PCRE
+ s'assure qu'il y a au moins un "b" dans la
+ chaîne, et si ce n'est pas le cas, l'échec est
+ annoncé immédiatement. Sinon, il n'y a pas
+ d'optimisation dans la recherche. Vous pouvez voir la
+ différence de comportement avec le masque suivant :
+
+ (a+)*\d.
+
+ Le premier retourne un échec quasi-immédiatement, s'il est appliqué à
+ une ligne de "a", alors que le second masque
+ prend un temps significatif pour une chaîne de plus de
+ 20 caractères.
+
+
+
+
diff --git a/reference/pdo/configure.xml b/reference/pdo/configure.xml
index d5956f8672..86e8435041 100644
--- a/reference/pdo/configure.xml
+++ b/reference/pdo/configure.xml
@@ -1,101 +1,101 @@
-
-
-
-
-
- &reftitle.install;
-
- &installation.enabled.disable;
-
-
-
- Installer PDO sur les systèmes Unix
-
-
- PDO et le pilote PDO_SQLITE
- sont activés par défaut. Vous devez activer
- le pilote PDO de la base de données de votre choix ; consultez
- la documentation pour les
- pilotes spécifiques à votre base
- de données pour plus d'informations.
-
-
-
- Notez que lors de la compilation de PDO comme extension partagée
- (non recommandé), alors tous les pilotes PDO
- doivent être chargés après
- le chargement de PDO.
-
-
-
-
-
- Lors de l'installation de PDO comme module partagé, le fichier &php.ini;
- doit être mis à jour afin de charger l'extension PDO automatiquement
- lorsque PHP entre en fonctionnement. Vous devez également y activer
- les pilotes spécifiques à votre base de données ; assurez-vous que
- ces pilotes seront listés après la ligne extension=pdo, vu que PDO doit
- être initialisé avant le chargement des extensions spécifiques aux
- bases de données. Si vous compilez PDO et les extensions relatives
- aux bases de données de façon statique, vous pouvez ignorer cette étape.
-
-
-
-
-
-
-
- Utilisateurs de Windows
-
-
- PDO est activé par défaut.
- Choisissez les autres fichiers DLL spécifiques à votre base de données
- et utilisez soit la fonction dl pour les charger
- au moment de l'exécution ou activez-les dans le fichier &php.ini;.
- Par exemple, ceci charge le pilote
- PDO_SQLITE mais
- laisse le pilote PDO_ODBC commenté:
-
-
-
-
-
- Ces librairies DDLs doivent exister dans le dossier système
- extension_dir.
-
-
-
-
-
- Gardez à l'esprit qu'après modification de votre &php.ini;, vous
- devez redémarrer PHP pour que vos nouvelles directives de configuration
- prennent effet.
-
-
-
-
-
+
+
+
+
+
+ &reftitle.install;
+
+ &installation.enabled.disable;
+
+
+
+ Installer PDO sur les systèmes Unix
+
+
+ PDO et le pilote PDO_SQLITE
+ sont activés par défaut. Vous devez activer
+ le pilote PDO de la base de données de votre choix ; consultez
+ la documentation pour les
+ pilotes spécifiques à votre base
+ de données pour plus d'informations.
+
+
+
+ Notez que lors de la compilation de PDO comme extension partagée
+ (non recommandé), alors tous les pilotes PDO
+ doivent être chargés après
+ le chargement de PDO.
+
+
+
+
+
+ Lors de l'installation de PDO comme module partagé, le fichier &php.ini;
+ doit être mis à jour afin de charger l'extension PDO automatiquement
+ lorsque PHP entre en fonctionnement. Vous devez également y activer
+ les pilotes spécifiques à votre base de données ; assurez-vous que
+ ces pilotes seront listés après la ligne extension=pdo, vu que PDO doit
+ être initialisé avant le chargement des extensions spécifiques aux
+ bases de données. Si vous compilez PDO et les extensions relatives
+ aux bases de données de façon statique, vous pouvez ignorer cette étape.
+
+
+
+
+
+
+
+ Utilisateurs de Windows
+
+
+ PDO est activé par défaut.
+ Choisissez les autres fichiers DLL spécifiques à votre base de données
+ et utilisez soit la fonction dl pour les charger
+ au moment de l'exécution ou activez-les dans le fichier &php.ini;.
+ Par exemple, ceci charge le pilote
+ PDO_SQLITE mais
+ laisse le pilote PDO_ODBC commenté:
+
+
+
+
+
+ Ces bibliothèques DDLs doivent exister dans le dossier système
+ extension_dir.
+
+
+
+
+
+ Gardez à l'esprit qu'après modification de votre &php.ini;, vous
+ devez redémarrer PHP pour que vos nouvelles directives de configuration
+ prennent effet.
+
+
+
+
+
diff --git a/reference/pdo/connections.xml b/reference/pdo/connections.xml
index 57f244e86d..4ac92aa27b 100644
--- a/reference/pdo/connections.xml
+++ b/reference/pdo/connections.xml
@@ -1,175 +1,175 @@
-
-
-
-
-
- Connexions et gestionnaire de connexion
-
- Les connexions sont établies en créant des instances de la classe de base de PDO.
- Peu importe quel pilote vous voulez utiliser ; vous utilisez toujours le nom
- de la classe PDO. Le constructeur accepte des paramètres pour spécifier
- la source de la base de données (connue en tant que DSN) et optionnellement,
- le nom d'utilisateur et le mot de passe (s'il y en a un).
-
-
-
- Connexion à MySQL
-
-
-]]>
-
-
-
-
- S'il y a des erreurs de connexion, un objet PDOException
- est lancé. Vous pouvez attraper cette exception si vous voulez gérer
- cette erreur, ou laisser le gestionnaire global d'exception défini
- via la fonction set_exception_handler la traiter.
-
-
-
- Gestion des erreurs de connexion
-
-
-
-
-
-
-
- Comme toutes les autres exception,
- PDOException peut être capturée soit explicitement, par
- une instruction &catch;, soit implicitement via set_exception_handler.
- Sinon, le comportement par défaut consistant à convertir une exception non capturée en une
- E_FATAL_ERROR se produira.
- L'erreur fatale contiendra un backtrace qui peut laisser échapper des détails sur la connexion.
- Ainsi, l'option &php.ini; display_errors
- doit être définie à 0 sur un serveur de production.
-
-
-
- Lorsque la connexion à la base de données a réussi, une instance de la classe
- PDO est retournée à votre script. La connexion est active tant que l'objet PDO
- l'est. Pour clore la connexion, vous devez détruire l'objet en vous assurant que
- toutes ses références sont effacées. Vous pouvez faire cela en assignant &null;
- à la variable gérant l'objet. Si vous ne le faites pas explicitement, PHP fermera
- automatiquement la connexion lorsque le script arrivera à la fin.
-
-
-
- S'il existe encore d'autres références à cette instance PDO (par exemple, à
- partir d'une instance PDOStatement ou d'autres variables référençant la
- même instance PDO), celles-ci doivent également être supprimées (par
- exemple, en affectant &null; à la variable qui référence le PDOStatement).
-
-
-
-
- Fermeture d'une connexion
-
-query('SELECT * FROM foo');
-
-// et maintenant, fermez-la !
-$sth = null;
-$dbh = null;
-?>
-]]>
-
-
-
-
- Beaucoup d'applications web utilisent des connexions persistantes aux serveurs
- de base de données. Les connexions persistantes ne sont pas fermées à la fin du
- script, mais sont mises en cache et réutilisées lorsqu'un autre script demande une connexion
- en utilisant les mêmes paramètres. Le cache des connexions persistantes
- vous permet d'éviter d'établir une nouvelle connexion à chaque fois qu'un
- script doit accéder à une base de données, rendant l'application web plus rapide.
-
-
-
- Connexions persistantes
-
- true
-));
-?>
-]]>
-
-
-
-
- La valeur de l'option PDO::ATTR_PERSISTENT est convertie
- en &boolean; (activer/désactiver les connexions persistantes), sauf si c'est
- une &string; non-numérique, auquel cas ceci autorise l'utilisation de
- plusieurs pools de connexions persistantes.
- Ceci est utile si les connexions différentes utilisent des paramètres
- incompatibles, par exemple, des valeurs différentes de
- PDO::MYSQL_ATTR_USE_BUFFERED_QUERY.
-
-
-
- Si vous souhaitez utiliser des connexions persistantes, vous devez
- utiliser la valeur PDO::ATTR_PERSISTENT dans le
- tableau des options du pilote passé au constructeur PDO. Si vous
- définissez cet attribut avec la méthode PDO::setAttribute
- après l'instanciation de l'objet, le pilote n'utilisera pas les connexions
- persistantes.
-
-
-
-
- PDO ne fait aucun nettoyage des connexions persistantes. Les tables temporaires, verrou, et transactions et autres
- changements d'état peuvent rester de l'utilisation précédente de la connexion, causant des problèmes inattendus. Voir la
- section Connexions de base de données persistantes pour plus d'informations.
-
-
-
-
- Si vous utilisez le pilote PDO ODBC et que votre librairie ODBC prend en charge
- le bassin de connexion ODBC (unixODBC et Windows le supportent tous les deux ;
- peut être plus), alors il est recommandé de ne pas utiliser les connexions persistantes
- PDO, mais plutôt laisser le bassin de connexion ODBC mettre en cache les connexions.
- Le bassin de connexion ODBC est partagé avec les autres modules dans le processus ;
- si PDO met en cache la connexion, alors cette connexion ne sera jamais retournée
- par le bassin de connexion ODBC, faisant que plusieurs connexions sont créées pour
- les autres modules.
-
-
-
-
-
-
+
+
+
+
+
+ Connexions et gestionnaire de connexion
+
+ Les connexions sont établies en créant des instances de la classe de base de PDO.
+ Peu importe quel pilote vous voulez utiliser ; vous utilisez toujours le nom
+ de la classe PDO. Le constructeur accepte des paramètres pour spécifier
+ la source de la base de données (connue en tant que DSN) et optionnellement,
+ le nom d'utilisateur et le mot de passe (s'il y en a un).
+
+
+
+ Connexion à MySQL
+
+
+]]>
+
+
+
+
+ S'il y a des erreurs de connexion, un objet PDOException
+ est lancé. Vous pouvez attraper cette exception si vous voulez gérer
+ cette erreur, ou laisser le gestionnaire global d'exception défini
+ via la fonction set_exception_handler la traiter.
+
+
+
+ Gestion des erreurs de connexion
+
+
+
+
+
+
+
+ Comme toutes les autres exception,
+ PDOException peut être capturée soit explicitement, par
+ une instruction &catch;, soit implicitement via set_exception_handler.
+ Sinon, le comportement par défaut consistant à convertir une exception non capturée en une
+ E_FATAL_ERROR se produira.
+ L'erreur fatale contiendra un backtrace qui peut laisser échapper des détails sur la connexion.
+ Ainsi, l'option &php.ini; display_errors
+ doit être définie à 0 sur un serveur de production.
+
+
+
+ Lorsque la connexion à la base de données a réussi, une instance de la classe
+ PDO est retournée à votre script. La connexion est active tant que l'objet PDO
+ l'est. Pour clore la connexion, vous devez détruire l'objet en vous assurant que
+ toutes ses références sont effacées. Vous pouvez faire cela en assignant &null;
+ à la variable gérant l'objet. Si vous ne le faites pas explicitement, PHP fermera
+ automatiquement la connexion lorsque le script arrivera à la fin.
+
+
+
+ S'il existe encore d'autres références à cette instance PDO (par exemple, à
+ partir d'une instance PDOStatement ou d'autres variables référençant la
+ même instance PDO), celles-ci doivent également être supprimées (par
+ exemple, en affectant &null; à la variable qui référence le PDOStatement).
+
+
+
+
+ Fermeture d'une connexion
+
+query('SELECT * FROM foo');
+
+// et maintenant, fermez-la !
+$sth = null;
+$dbh = null;
+?>
+]]>
+
+
+
+
+ Beaucoup d'applications web utilisent des connexions persistantes aux serveurs
+ de base de données. Les connexions persistantes ne sont pas fermées à la fin du
+ script, mais sont mises en cache et réutilisées lorsqu'un autre script demande une connexion
+ en utilisant les mêmes paramètres. Le cache des connexions persistantes
+ vous permet d'éviter d'établir une nouvelle connexion à chaque fois qu'un
+ script doit accéder à une base de données, rendant l'application web plus rapide.
+
+
+
+ Connexions persistantes
+
+ true
+));
+?>
+]]>
+
+
+
+
+ La valeur de l'option PDO::ATTR_PERSISTENT est convertie
+ en &boolean; (activer/désactiver les connexions persistantes), sauf si c'est
+ une &string; non-numérique, auquel cas ceci autorise l'utilisation de
+ plusieurs pools de connexions persistantes.
+ Ceci est utile si les connexions différentes utilisent des paramètres
+ incompatibles, par exemple, des valeurs différentes de
+ PDO::MYSQL_ATTR_USE_BUFFERED_QUERY.
+
+
+
+ Si vous souhaitez utiliser des connexions persistantes, vous devez
+ utiliser la valeur PDO::ATTR_PERSISTENT dans le
+ tableau des options du pilote passé au constructeur PDO. Si vous
+ définissez cet attribut avec la méthode PDO::setAttribute
+ après l'instanciation de l'objet, le pilote n'utilisera pas les connexions
+ persistantes.
+
+
+
+
+ PDO ne fait aucun nettoyage des connexions persistantes. Les tables temporaires, verrou, et transactions et autres
+ changements d'état peuvent rester de l'utilisation précédente de la connexion, causant des problèmes inattendus. Voir la
+ section Connexions de base de données persistantes pour plus d'informations.
+
+
+
+
+ Si vous utilisez le pilote PDO ODBC et que votre bibliothèque ODBC prend en charge
+ le bassin de connexion ODBC (unixODBC et Windows le supportent tous les deux ;
+ peut être plus), alors il est recommandé de ne pas utiliser les connexions persistantes
+ PDO, mais plutôt laisser le bassin de connexion ODBC mettre en cache les connexions.
+ Le bassin de connexion ODBC est partagé avec les autres modules dans le processus ;
+ si PDO met en cache la connexion, alors cette connexion ne sera jamais retournée
+ par le bassin de connexion ODBC, faisant que plusieurs connexions sont créées pour
+ les autres modules.
+
+
+
+
+
+
diff --git a/reference/pdo/constants.xml b/reference/pdo/constants.xml
index 01c74c0dad..a281c1073f 100644
--- a/reference/pdo/constants.xml
+++ b/reference/pdo/constants.xml
@@ -1,747 +1,747 @@
-
-
-
-
- &reftitle.constants;
- &extension.constants;
-
- &reference.pdo.constants.fetch-modes;
-
-
- Curseur
-
-
- Voir aussi PDO::ATTR_CURSOR_NAME.
-
-
-
-
-
- PDO::FETCH_ORI_NEXT
- (int)
-
-
-
- Récupère la ligne suivante dans le jeu de résultats. Valide uniquement pour les curseurs défilables.
-
-
-
-
-
- PDO::FETCH_ORI_PRIOR
- (int)
-
-
-
- Récupère la ligne précédente dans le jeu de résultats. Valide uniquement pour les
- curseurs défilables.
-
-
-
-
-
- PDO::FETCH_ORI_FIRST
- (int)
-
-
-
- Récupère la première ligne dans le jeu de résultats. Valide uniquement pour les curseurs défilables.
-
-
-
-
-
- PDO::FETCH_ORI_LAST
- (int)
-
-
-
- Récupère la dernière ligne dans le jeu de résultats. Valide uniquement pour les curseurs défilables.
-
-
-
-
-
- PDO::FETCH_ORI_ABS
- (int)
-
-
-
- Récupère la ligne demandée par numéro de ligne dans le jeu de résultats. Valide uniquement
- pour les curseurs défilables.
-
-
-
-
-
- PDO::FETCH_ORI_REL
- (int)
-
-
-
- Récupère la ligne demandée par position relative par rapport à la position actuelle
- du curseur dans le jeu de résultats. Valide uniquement pour les curseurs défilables.
-
-
-
-
-
- PDO::CURSOR_FWDONLY
- (int)
-
-
-
- Crée un objet PDOStatement avec un curseur à sens unique. C'est le
- choix de curseur par défaut, car c'est le modèle d'accès aux données le plus rapide et le plus courant
- en PHP.
-
-
-
-
-
- PDO::CURSOR_SCROLL
- (int)
-
-
-
- Crée un objet PDOStatement avec un curseur défilable.
- Passez les constantes PDO::FETCH_ORI_*
- pour contrôler les lignes récupérées du jeu de résultats.
-
-
-
-
-
-
-
- Autre constante
-
-
-
- PDO::PARAM_BOOL
- (int)
-
-
-
- Représente un type de données booléen.
-
-
-
-
-
- PDO::PARAM_NULL
- (int)
-
-
-
- Représente le type de données SQL NULL.
-
-
-
-
-
- PDO::PARAM_INT
- (int)
-
-
-
- Représente le type de données SQL INTEGER.
-
-
-
-
-
- PDO::PARAM_STR
- (int)
-
-
-
- Représente le type de données SQL CHAR, VARCHAR ou tout autre type de données de chaîne de caractères.
-
-
-
-
-
- PDO::PARAM_STR_NATL
- (int)
-
-
-
- Drapeau pour indiquer qu'une chaîne utilise le jeu de caractères national.
-
-
- Disponible depuis PHP 7.2.0
-
-
-
-
-
- PDO::PARAM_STR_CHAR
- (int)
-
-
-
- Drapeau pour indiquer qu'une chaîne utilise le jeu de caractères régulier.
-
-
- Disponible depuis PHP 7.2.0
-
-
-
-
-
- PDO::PARAM_LOB
- (int)
-
-
-
- Représente le type de données SQL large object.
-
-
-
-
-
- PDO::PARAM_STMT
- (int)
-
-
-
- Représente un type de jeu d'enregistrements (recordset). Actuellement, aucun pilote ne prend en charge ce type.
-
-
-
-
-
- PDO::PARAM_INPUT_OUTPUT
- (int)
-
-
-
- Spécifie que le paramètre est un paramètre INOUT pour une procédure stockée.
- Cette constante doit être utilisée avec un opérateur OU bit à bit avec
- des constantes PDO::PARAM_*.
-
-
-
-
-
- PDO::ATTR_AUTOCOMMIT
- (int)
-
-
-
- Si cette valeur est &false;, PDO tente de désactiver l'autocommit afin que la
- connexion commence une transaction.
-
-
-
-
-
- PDO::ATTR_PREFETCH
- (int)
-
-
-
- Définit la taille de prélecture permet de trouver un équilibre entre la vitesse et l'utilisation
- de la mémoire pour votre application. Toutes les combinaisons de bases de données/pilotes ne prennent pas
- en charge la définition de la taille de prélecture. Une taille de prélecture plus grande entraîne une
- augmentation des performances au prix d'une utilisation de la mémoire plus élevée.
-
-
-
-
-
- PDO::ATTR_TIMEOUT
- (int)
-
-
-
- Définit la valeur du délai d'attente en secondes pour les communications avec la base de données.
-
-
-
-
-
- PDO::ATTR_ERRMODE
- (int)
-
-
-
- Voir la section sur les erreurs et la gestion
- des erreurs pour plus d'informations sur cet attribut.
-
-
-
-
-
- PDO::ATTR_SERVER_VERSION
- (int)
-
-
-
- Cette valeur est en lecture seule ; elle renverra des informations sur la
- version du serveur de base de données auquel PDO est connecté.
-
-
-
-
-
- PDO::ATTR_CLIENT_VERSION
- (int)
-
-
-
- Cette valeur est en lecture seule ; elle renverra des informations sur la
- version des bibliothèques clientes utilisées par le pilote PDO.
-
-
-
-
-
- PDO::ATTR_SERVER_INFO
- (int)
-
-
-
- Cette valeur est en lecture seule ; elle renverra des informations sur la
- version du serveur de base de données auquel PDO est connecté.
-
-
-
-
-
- PDO::ATTR_CONNECTION_STATUS
- (int)
-
-
-
-
-
-
-
-
-
- PDO::ATTR_CASE
- (int)
-
-
-
- Force les noms de colonnes à une casse spécifique, comme spécifié par les constantes
- PDO::CASE_*.
-
-
-
-
-
- PDO::ATTR_CURSOR_NAME
- (int)
-
-
-
- Obtenir ou définir le nom à utiliser pour un curseur. Le plus utile lors de l'utilisation de
- curseurs défilables et de mises à jour positionnées.
-
-
-
-
-
- PDO::ATTR_CURSOR
- (int)
-
-
-
- Sélectionne le type de curseur. PDO prend actuellement en charge soit
- PDO::CURSOR_FWDONLY soit
- PDO::CURSOR_SCROLL.
- À moins d'avoir besoin de curseurs défilables, il convient d'utiliser le
- mode de curseur PDO::CURSOR_FWDONLY.
-
-
-
-
-
-
- PDO::ATTR_DRIVER_NAME
- (int)
-
-
-
- Renvoie le nom du pilote.
-
-
- Utilisation PDO::ATTR_DRIVER_NAME
-
- getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql') {
- echo "Running on mysql; doing something mysql specific here\n";
- }
- ?>
- ]]>
-
-
-
-
-
-
- PDO::ATTR_ORACLE_NULLS
- (int)
-
-
-
- Convertit les chaînes vides en valeurs NULL SQL lors des récupérations de données.
-
-
-
-
-
- PDO::ATTR_PERSISTENT
- (int)
-
-
-
- Demande une connexion persistante, plutôt que de créer une nouvelle connexion.
- Voir connections et gestion
- des connexions pour plus d'informations sur cet attribut.
-
-
-
-
-
- PDO::ATTR_STATEMENT_CLASS
- (int)
-
-
-
- Définit le nom de la classe des déclarations retournées.
-
-
-
-
-
- PDO::ATTR_FETCH_CATALOG_NAMES
- (int)
-
-
-
- Ajoute le nom du catalogue contenant chaque nom de colonne renvoyé dans le
- jeu de résultats. Le nom du catalogue et le nom de la colonne sont séparés par
- un caractère décimal (.). La prise en charge de cet attribut se fait au niveau
- du pilote ; il peut ne pas être pris en charge par votre pilote.
-
-
-
-
-
- PDO::ATTR_FETCH_TABLE_NAMES
- (int)
-
-
-
- Ajoute le nom de la table contenant chaque nom de colonne renvoyé dans le
- jeu de résultats. Le nom de la table et le nom de la colonne sont séparés par
- un caractère décimal (.). La prise en charge de cet attribut se fait au niveau
- du pilote ; il peut ne pas être pris en charge par le pilote utilisé.
-
-
-
-
-
- PDO::ATTR_STRINGIFY_FETCHES
- (int)
-
-
-
- Force tous les valeurs récupérées (sauf &null;) à être traitées comme des chaînes.
- Les valeurs &null; restent inchangées à moins que PDO::ATTR_ORACLE_NULLS
- ne soit défini sur PDO::NULL_TO_STRING.
-
-
-
-
-
- PDO::ATTR_MAX_COLUMN_LEN
- (int)
-
-
-
- Définit la longueur maximale des noms de colonnes.
-
-
-
-
-
- PDO::ATTR_DEFAULT_FETCH_MODE
- (int)
-
-
-
-
-
-
-
-
-
- PDO::ATTR_EMULATE_PREPARES
- (int)
-
-
-
-
-
-
-
-
-
- PDO::ATTR_DEFAULT_STR_PARAM
- (int)
-
-
-
- Définit le type de paramètre de chaîne par défaut, cela peut être l'un de PDO::PARAM_STR_NATL
- et PDO::PARAM_STR_CHAR.
-
-
- Disponible depuis PHP 7.2.0.
-
-
-
-
-
- PDO::ERRMODE_SILENT
- (int)
-
-
-
- Ne pas lever d'erreur ou d'exception si une erreur se produit.
- Le développeur est censé vérifier explicitement les erreurs.
- Auparavant à PHP 8.0.0, ceci est le mode par défaut.
- Voir erreur et gestion des erreurs
- pour plus d'informations sur cet attribut.
-
-
-
-
-
- PDO::ERRMODE_WARNING
- (int)
-
-
-
- Émet un message PHP E_WARNING si une erreur se produit.
- Voir erreur et gestion des erreurs
- pour plus d'informations sur cet attribut.
-
-
-
-
-
- PDO::ERRMODE_EXCEPTION
- (int)
-
-
-
- Lève une PDOException si une erreur se produit.
- Ceci est le mode par défaut à partir de PHP 8.0.0.
- Voir erreur et gestion des erreurs
- pour plus d'informations sur cet attribut.
-
-
-
-
-
- PDO::CASE_NATURAL
- (int)
-
-
-
- Laisser les noms de colonnes tels que retournés par le pilote de base de données.
-
-
-
-
-
- PDO::CASE_LOWER
- (int)
-
-
-
- Force les noms de colonnes à être en minuscules.
-
-
-
-
-
- PDO::CASE_UPPER
- (int)
-
-
-
- Force les noms de colonnes à être en majuscules.
-
-
-
-
-
- PDO::NULL_NATURAL
- (int)
-
-
-
-
-
-
-
-
-
- PDO::NULL_EMPTY_STRING
- (int)
-
-
-
-
-
-
-
-
-
- PDO::NULL_TO_STRING
- (int)
-
-
-
-
-
-
-
-
-
- PDO::ERR_NONE
- (string)
-
-
-
- Correspond à SQLSTATE '00000', ce qui signifie que l'instruction SQL a été
- émise avec succès sans erreurs ni avertissements.
- Cette constante est pour votre commodité lors de la vérification de PDO::errorCode ou
- PDOStatement::errorCode pour déterminer si une erreur
- s'est produite.
- Vous saurez généralement si c'est le cas en examinant le
- code de retour de la méthode qui a déclenché la condition d'erreur de toute façon.
-
-
-
-
-
- PDO::PARAM_EVT_ALLOC
- (int)
-
-
-
- Événement d'allocation.
-
-
-
-
-
- PDO::PARAM_EVT_FREE
- (int)
-
-
-
- Événement de désallocation.
-
-
-
-
-
- PDO::PARAM_EVT_EXEC_PRE
- (int)
-
-
-
- Événement déclenché avant l'exécution d'une instruction préparée.
-
-
-
-
-
- PDO::PARAM_EVT_EXEC_POST
- (int)
-
-
-
- Événement déclenché après l'exécution d'une instruction préparée.
-
-
-
-
-
- PDO::PARAM_EVT_FETCH_PRE
- (int)
-
-
-
- Événement déclenché avant la récupération d'un résultat d'un ensemble de résultats.
-
-
-
-
-
- PDO::PARAM_EVT_FETCH_POST
- (int)
-
-
-
- Événement déclenché après la récupération d'un résultat d'un ensemble de résultats.
-
-
-
-
-
- PDO::PARAM_EVT_NORMALIZE
- (int)
-
-
-
- Événement déclenché lors de l'enregistrement d'un paramètre lié
- permettant au pilote de normaliser le nom du paramètre.
-
-
-
-
-
- PDO::SQLITE_DETERMINISTIC
- (int)
-
-
-
- Spécifie qu'une fonction créée avec PDO::sqliteCreateFunction
- est déterministe, c'est-à-dire qu'elle renvoie toujours le même résultat donné les mêmes entrées dans
- une seule instruction SQL. (Disponible depuis PHP 7.1.4.)
-
-
-
-
-
-
-
+
+
+
+
+ &reftitle.constants;
+ &extension.constants;
+
+ &reference.pdo.constants.fetch-modes;
+
+
+ Curseur
+
+
+ Voir aussi PDO::ATTR_CURSOR_NAME.
+
+
+
+
+
+ PDO::FETCH_ORI_NEXT
+ (int)
+
+
+
+ Récupère la ligne suivante dans le jeu de résultats. Valide uniquement pour les curseurs défilables.
+
+
+
+
+
+ PDO::FETCH_ORI_PRIOR
+ (int)
+
+
+
+ Récupère la ligne précédente dans le jeu de résultats. Valide uniquement pour les
+ curseurs défilables.
+
+
+
+
+
+ PDO::FETCH_ORI_FIRST
+ (int)
+
+
+
+ Récupère la première ligne dans le jeu de résultats. Valide uniquement pour les curseurs défilables.
+
+
+
+
+
+ PDO::FETCH_ORI_LAST
+ (int)
+
+
+
+ Récupère la dernière ligne dans le jeu de résultats. Valide uniquement pour les curseurs défilables.
+
+
+
+
+
+ PDO::FETCH_ORI_ABS
+ (int)
+
+
+
+ Récupère la ligne demandée par numéro de ligne dans le jeu de résultats. Valide uniquement
+ pour les curseurs défilables.
+
+
+
+
+
+ PDO::FETCH_ORI_REL
+ (int)
+
+
+
+ Récupère la ligne demandée par position relative par rapport à la position actuelle
+ du curseur dans le jeu de résultats. Valide uniquement pour les curseurs défilables.
+
+
+
+
+
+ PDO::CURSOR_FWDONLY
+ (int)
+
+
+
+ Crée un objet PDOStatement avec un curseur à sens unique. C'est le
+ choix de curseur par défaut, car c'est le modèle d'accès aux données le plus rapide et le plus courant
+ en PHP.
+
+
+
+
+
+ PDO::CURSOR_SCROLL
+ (int)
+
+
+
+ Crée un objet PDOStatement avec un curseur défilable.
+ Passez les constantes PDO::FETCH_ORI_*
+ pour contrôler les lignes récupérées du jeu de résultats.
+
+
+
+
+
+
+
+ Autre constante
+
+
+
+ PDO::PARAM_BOOL
+ (int)
+
+
+
+ Représente un type de données booléen.
+
+
+
+
+
+ PDO::PARAM_NULL
+ (int)
+
+
+
+ Représente le type de données SQL NULL.
+
+
+
+
+
+ PDO::PARAM_INT
+ (int)
+
+
+
+ Représente le type de données SQL INTEGER.
+
+
+
+
+
+ PDO::PARAM_STR
+ (int)
+
+
+
+ Représente le type de données SQL CHAR, VARCHAR ou tout autre type de données de chaîne de caractères.
+
+
+
+
+
+ PDO::PARAM_STR_NATL
+ (int)
+
+
+
+ Drapeau pour indiquer qu'une chaîne utilise le jeu de caractères national.
+
+
+ Disponible depuis PHP 7.2.0
+
+
+
+
+
+ PDO::PARAM_STR_CHAR
+ (int)
+
+
+
+ Drapeau pour indiquer qu'une chaîne utilise le jeu de caractères régulier.
+
+
+ Disponible depuis PHP 7.2.0
+
+
+
+
+
+ PDO::PARAM_LOB
+ (int)
+
+
+
+ Représente le type de données SQL large object.
+
+
+
+
+
+ PDO::PARAM_STMT
+ (int)
+
+
+
+ Représente un type de jeu d'enregistrements (recordset). Actuellement, aucun pilote ne prend en charge ce type.
+
+
+
+
+
+ PDO::PARAM_INPUT_OUTPUT
+ (int)
+
+
+
+ Spécifie que le paramètre est un paramètre INOUT pour une procédure stockée.
+ Cette constante doit être utilisée avec un opérateur OU bit à bit avec
+ des constantes PDO::PARAM_*.
+
+
+
+
+
+ PDO::ATTR_AUTOCOMMIT
+ (int)
+
+
+
+ Si cette valeur est &false;, PDO tente de désactiver l'autocommit afin que la
+ connexion commence une transaction.
+
+
+
+
+
+ PDO::ATTR_PREFETCH
+ (int)
+
+
+
+ Définit la taille de prélecture permet de trouver un équilibre entre la vitesse et l'utilisation
+ de la mémoire pour votre application. Toutes les combinaisons de bases de données/pilotes ne prennent pas
+ en charge la définition de la taille de prélecture. Une taille de prélecture plus grande entraîne une
+ augmentation des performances au prix d'une utilisation de la mémoire plus élevée.
+
+
+
+
+
+ PDO::ATTR_TIMEOUT
+ (int)
+
+
+
+ Définit la valeur du délai d'attente en secondes pour les communications avec la base de données.
+
+
+
+
+
+ PDO::ATTR_ERRMODE
+ (int)
+
+
+
+ Voir la section sur les erreurs et la gestion
+ des erreurs pour plus d'informations sur cet attribut.
+
+
+
+
+
+ PDO::ATTR_SERVER_VERSION
+ (int)
+
+
+
+ Cette valeur est en lecture seule ; elle renverra des informations sur la
+ version du serveur de base de données auquel PDO est connecté.
+
+
+
+
+
+ PDO::ATTR_CLIENT_VERSION
+ (int)
+
+
+
+ Cette valeur est en lecture seule ; elle renverra des informations sur la
+ version des bibliothèques clientes utilisées par le pilote PDO.
+
+
+
+
+
+ PDO::ATTR_SERVER_INFO
+ (int)
+
+
+
+ Cette valeur est en lecture seule ; elle renverra des informations sur la
+ version du serveur de base de données auquel PDO est connecté.
+
+
+
+
+
+ PDO::ATTR_CONNECTION_STATUS
+ (int)
+
+
+
+
+
+
+
+
+
+ PDO::ATTR_CASE
+ (int)
+
+
+
+ Force les noms de colonnes à une casse spécifique, comme spécifié par les constantes
+ PDO::CASE_*.
+
+
+
+
+
+ PDO::ATTR_CURSOR_NAME
+ (int)
+
+
+
+ Obtenir ou définir le nom à utiliser pour un curseur. Le plus utile lors de l'utilisation de
+ curseurs défilables et de mises à jour positionnées.
+
+
+
+
+
+ PDO::ATTR_CURSOR
+ (int)
+
+
+
+ Sélectionne le type de curseur. PDO prend actuellement en charge soit
+ PDO::CURSOR_FWDONLY soit
+ PDO::CURSOR_SCROLL.
+ À moins d'avoir besoin de curseurs défilables, il convient d'utiliser le
+ mode de curseur PDO::CURSOR_FWDONLY.
+
+
+
+
+
+
+ PDO::ATTR_DRIVER_NAME
+ (int)
+
+
+
+ Renvoie le nom du pilote.
+
+
+ Utilisation PDO::ATTR_DRIVER_NAME
+
+ getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql') {
+ echo "Running on mysql; doing something mysql specific here\n";
+ }
+ ?>
+ ]]>
+
+
+
+
+
+
+ PDO::ATTR_ORACLE_NULLS
+ (int)
+
+
+
+ Convertit les chaînes vides en valeurs NULL SQL lors des récupérations de données.
+
+
+
+
+
+ PDO::ATTR_PERSISTENT
+ (int)
+
+
+
+ Demande une connexion persistante, plutôt que de créer une nouvelle connexion.
+ Voir connections et gestion
+ des connexions pour plus d'informations sur cet attribut.
+
+
+
+
+
+ PDO::ATTR_STATEMENT_CLASS
+ (int)
+
+
+
+ Définit le nom de la classe des déclarations retournées.
+
+
+
+
+
+ PDO::ATTR_FETCH_CATALOG_NAMES
+ (int)
+
+
+
+ Ajoute le nom du catalogue contenant chaque nom de colonne renvoyé dans le
+ jeu de résultats. Le nom du catalogue et le nom de la colonne sont séparés par
+ un caractère décimal (.). La prise en charge de cet attribut se fait au niveau
+ du pilote ; il peut ne pas être pris en charge par votre pilote.
+
+
+
+
+
+ PDO::ATTR_FETCH_TABLE_NAMES
+ (int)
+
+
+
+ Ajoute le nom de la table contenant chaque nom de colonne renvoyé dans le
+ jeu de résultats. Le nom de la table et le nom de la colonne sont séparés par
+ un caractère décimal (.). La prise en charge de cet attribut se fait au niveau
+ du pilote ; il peut ne pas être pris en charge par le pilote utilisé.
+
+
+
+
+
+ PDO::ATTR_STRINGIFY_FETCHES
+ (int)
+
+
+
+ Force tous les valeurs récupérées (sauf &null;) à être traitées comme des chaînes.
+ Les valeurs &null; restent inchangées à moins que PDO::ATTR_ORACLE_NULLS
+ ne soit défini sur PDO::NULL_TO_STRING.
+
+
+
+
+
+ PDO::ATTR_MAX_COLUMN_LEN
+ (int)
+
+
+
+ Définit la longueur maximale des noms de colonnes.
+
+
+
+
+
+ PDO::ATTR_DEFAULT_FETCH_MODE
+ (int)
+
+
+
+
+
+
+
+
+
+ PDO::ATTR_EMULATE_PREPARES
+ (int)
+
+
+
+
+
+
+
+
+
+ PDO::ATTR_DEFAULT_STR_PARAM
+ (int)
+
+
+
+ Définit le type de paramètre de chaîne par défaut, cela peut être l'un de PDO::PARAM_STR_NATL
+ et PDO::PARAM_STR_CHAR.
+
+
+ Disponible depuis PHP 7.2.0.
+
+
+
+
+
+ PDO::ERRMODE_SILENT
+ (int)
+
+
+
+ Ne pas lever d'erreur ou d'exception si une erreur se produit.
+ Le développeur est censé vérifier explicitement les erreurs.
+ Auparavant à PHP 8.0.0, ceci est le mode par défaut.
+ Voir erreur et gestion des erreurs
+ pour plus d'informations sur cet attribut.
+
+
+
+
+
+ PDO::ERRMODE_WARNING
+ (int)
+
+
+
+ Émet un message PHP E_WARNING si une erreur se produit.
+ Voir erreur et gestion des erreurs
+ pour plus d'informations sur cet attribut.
+
+
+
+
+
+ PDO::ERRMODE_EXCEPTION
+ (int)
+
+
+
+ Lève une PDOException si une erreur se produit.
+ Ceci est le mode par défaut à partir de PHP 8.0.0.
+ Voir erreur et gestion des erreurs
+ pour plus d'informations sur cet attribut.
+
+
+
+
+
+ PDO::CASE_NATURAL
+ (int)
+
+
+
+ Laisser les noms de colonnes tels que retournés par le pilote de base de données.
+
+
+
+
+
+ PDO::CASE_LOWER
+ (int)
+
+
+
+ Force les noms de colonnes à être en minuscules.
+
+
+
+
+
+ PDO::CASE_UPPER
+ (int)
+
+
+
+ Force les noms de colonnes à être en majuscules.
+
+
+
+
+
+ PDO::NULL_NATURAL
+ (int)
+
+
+
+
+
+
+
+
+
+ PDO::NULL_EMPTY_STRING
+ (int)
+
+
+
+
+
+
+
+
+
+ PDO::NULL_TO_STRING
+ (int)
+
+
+
+
+
+
+
+
+
+ PDO::ERR_NONE
+ (string)
+
+
+
+ Correspond à SQLSTATE '00000', ce qui signifie que l'instruction SQL a été
+ émise avec succès sans erreurs ni avertissements.
+ Cette constante est pour votre commodité lors de la vérification de PDO::errorCode ou
+ PDOStatement::errorCode pour déterminer si une erreur
+ s'est produite.
+ Vous saurez généralement si c'est le cas en examinant le
+ code de retour de la méthode qui a déclenché la condition d'erreur de toute façon.
+
+
+
+
+
+ PDO::PARAM_EVT_ALLOC
+ (int)
+
+
+
+ Événement d'allocation.
+
+
+
+
+
+ PDO::PARAM_EVT_FREE
+ (int)
+
+
+
+ Événement de désallocation.
+
+
+
+
+
+ PDO::PARAM_EVT_EXEC_PRE
+ (int)
+
+
+
+ Événement déclenché avant l'exécution d'une instruction préparée.
+
+
+
+
+
+ PDO::PARAM_EVT_EXEC_POST
+ (int)
+
+
+
+ Événement déclenché après l'exécution d'une instruction préparée.
+
+
+
+
+
+ PDO::PARAM_EVT_FETCH_PRE
+ (int)
+
+
+
+ Événement déclenché avant la récupération d'un résultat d'un ensemble de résultats.
+
+
+
+
+
+ PDO::PARAM_EVT_FETCH_POST
+ (int)
+
+
+
+ Événement déclenché après la récupération d'un résultat d'un ensemble de résultats.
+
+
+
+
+
+ PDO::PARAM_EVT_NORMALIZE
+ (int)
+
+
+
+ Événement déclenché lors de l'enregistrement d'un paramètre lié
+ permettant au pilote de normaliser le nom du paramètre.
+
+
+
+
+
+ PDO::SQLITE_DETERMINISTIC
+ (int)
+
+
+
+ Spécifie qu'une fonction créée avec PDO::sqliteCreateFunction
+ est déterministe, c'est-à-dire qu'elle renvoie toujours le même résultat donné les mêmes entrées dans
+ une seule instruction SQL. (Disponible depuis PHP 7.1.4.)
+
+
+
+
+
+
+
diff --git a/reference/pgsql/constants.xml b/reference/pgsql/constants.xml
index 9e2aa95fb9..0fe38c6499 100644
--- a/reference/pgsql/constants.xml
+++ b/reference/pgsql/constants.xml
@@ -1,1013 +1,1013 @@
-
-
-
-
-
-
- &reftitle.constants;
- &extension.constants;
-
-
-
-
- PGSQL_LIBPQ_VERSION
- (string)
-
-
-
- Version courte de libpq qui ne contient que des
- nombres et des points.
-
-
-
-
-
- PGSQL_LIBPQ_VERSION_STR
- (string)
-
-
-
- Antérieur à PHP 8.0.0, la version longue de libpq qui inclut les informations du compilateur.
- À partir de PHP 8.0.0, la valeur est identique à PGSQL_LIBPQ_VERSION,
- et l'utilisation de PGSQL_LIBPQ_VERSION_STR est obsolète.
-
-
-
-
-
- PGSQL_ASSOC
- (int)
-
-
-
- Passée à pg_fetch_array. Retourne un tableau
- associatif des noms et valeurs des champs.
-
-
-
-
-
- PGSQL_NUM
- (int)
-
-
-
- Passée à pg_fetch_array. Retourne un tableau à index
- numérique des numéros et valeurs des champs.
-
-
-
-
-
- PGSQL_BOTH
- (int)
-
-
-
- Passée à pg_fetch_array. Retourne un tableau des
- valeurs des champs qui est indexés numériquement (par le numéro des
- champs) et indexés littéralement (par le nom des champs).
-
-
-
-
-
- PGSQL_CONNECT_FORCE_NEW
- (int)
-
-
-
- Passée à pg_connect pour forcer la création d'une
- nouvelle connexion, plutôt que de réutiliser une connexion identique
- existante.
-
-
-
-
-
- PGSQL_CONNECT_ASYNC
- (int)
-
-
-
- Passé à la fonction pg_connect pour créer une
- connexion asynchrone.
-
-
-
-
-
- PGSQL_CONNECTION_AUTH_OK
- (int)
-
-
-
-
-
-
-
-
-
- PGSQL_CONNECTION_AWAITING_RESPONSE
- (int)
-
-
-
-
-
-
-
-
-
- PGSQL_CONNECTION_BAD
- (int)
-
-
-
- Retournée par pg_connection_status indiquant que la
- connexion à la base de données est invalide.
-
-
-
-
-
- PGSQL_CONNECTION_MADE
- (int)
-
-
-
-
-
-
-
-
-
- PGSQL_CONNECTION_OK
- (int)
-
-
-
- Retournée par pg_connection_status indiquant que la
- connexion à la base de données est valide.
-
-
-
-
-
- PGSQL_CONNECTION_SETENV
- (int)
-
-
-
-
-
-
-
-
-
- PGSQL_CONNECTION_SSL_STARTUP
- (int)
-
-
-
-
-
-
-
-
-
- PGSQL_CONNECTION_STARTED
- (int)
-
-
-
-
-
-
-
-
-
- PGSQL_SEEK_SET
- (int)
-
-
-
- Passée à pg_lo_seek. Le positionnement commencera au
- début de l'objet.
-
-
-
-
-
- PGSQL_SEEK_CUR
- (int)
-
-
-
- Passée à pg_lo_seek. Le positionnement commencera à
- la position courante.
-
-
-
-
-
- PGSQL_SEEK_END
- (int)
-
-
-
- Passée à pg_lo_seek. Le positionnement commencera à
- la fin de l'objet.
-
-
-
-
-
- PGSQL_EMPTY_QUERY
- (int)
-
-
-
- Retournée par pg_result_status. La chaîne de
- caractères envoyée au serveur était vide.
-
-
-
-
-
- PGSQL_COMMAND_OK
- (int)
-
-
-
- Retournée par pg_result_status. Commande correctement
- complétée ne retournant aucune donnée.
-
-
-
-
-
- PGSQL_TUPLES_OK
- (int)
-
-
-
- Retournée par pg_result_status. Commande
- correctement complétée retournant des données (comme
- SELECT ou SHOW).
-
-
-
-
-
- PGSQL_TUPLES_CHUNK
- (int)
-
-
-
- Retourné par pg_result_status.
- Indique la réussite de l'exécution d'une commande retournant des données en mode par blocs.
- Retourné pour les commandes SELECT lorsque
- pg_set_chunked_rows_size est défini.
- L'ensemble des résultats est divisé en plusieurs blocs, chacun contenant un nombre prédéfini de lignes.
- Disponible à partir de PHP 8.4.0 et libpq 17.
-
-
-
-
-
- PGSQL_COPY_OUT
- (int)
-
-
-
- Retournée par pg_result_status. Copie (à partir du
- serveur) de transfert de données commencée.
-
-
-
-
-
- PGSQL_COPY_IN
- (int)
-
-
-
- Retournée par pg_result_status. Copie (vers le
- serveur) de transfert de données commencée.
-
-
-
-
-
- PGSQL_BAD_RESPONSE
- (int)
-
-
-
- Retournée par pg_result_status. La réponse du
- serveur n'a pas été comprise.
-
-
-
-
-
- PGSQL_NONFATAL_ERROR
- (int)
-
-
-
- Retournée par pg_result_status. Une erreur non
- fatale (de niveau notice ou warning) s'est produite.
-
-
-
-
-
- PGSQL_FATAL_ERROR
- (int)
-
-
-
- Retournée par pg_result_status. Une erreur fatale
- s'est produite.
-
-
-
-
-
- PGSQL_TRANSACTION_IDLE
- (int)
-
-
-
- Retournée par pg_transaction_Status. La connexion
- est actuellement libre, aucune transaction en cours.
-
-
-
-
-
- PGSQL_TRANSACTION_ACTIVE
- (int)
-
-
-
- Retournée par pg_transaction_status. Une commande
- est en cours sur la connexion. Une requête a été envoyée sur la connexion
- et n'a toujours pas été complétée.
-
-
-
-
-
- PGSQL_TRANSACTION_INTRANS
- (int)
-
-
-
- Retournée par pg_transaction_status. La connexion
- est libre, dans un bloc de transaction.
-
-
-
-
-
- PGSQL_TRANSACTION_INERROR
- (int)
-
-
-
- Retournée par pg_transaction_status. La connexion
- est libre, dans un bloc de transaction échoué.
-
-
-
-
-
- PGSQL_TRANSACTION_UNKNOWN
- (int)
-
-
-
- Retournée par pg_transaction_status. La connexion
- est mauvaise.
-
-
-
-
-
- PGSQL_DIAG_SEVERITY
- (int)
-
-
-
- Passée à pg_result_error_field.
- La sévérité; le contenu du champ est ERROR,
- FATAL ou PANIC (dans un message
- d'erreur) ou WARNING, NOTICE, DEBUG,
- INFO ou LOG (dans un message
- d'avertissement) ou une traduction localisée parmi celles-ci. Toujours
- présent.
-
-
-
-
-
- PGSQL_DIAG_SQLSTATE
- (int)
-
-
-
- Passée à pg_result_error_field.
- Le code SQLSTATE pour cette erreur. Le code SQLSTATE identifie le type
- d'erreur qui s'est produite; cela peut être utilisé par des applications
- d'entrée pour effectuer des opérations spécifiques (comme la gestion
- d'erreur) en réponse à une erreur de base de données particulière.
- Ce champ ne peut être localisé et est toujours présent.
-
-
-
-
-
- PGSQL_DIAG_MESSAGE_PRIMARY
- (int)
-
-
-
- Passée à pg_result_error_field.
- Le champ d'erreur primaire interprétable pour l'utilisateur (normalement
- une ligne). Toujours présent.
-
-
-
-
-
- PGSQL_DIAG_MESSAGE_DETAIL
- (int)
-
-
-
- Passée à pg_result_error_field.
- Détail : un second optionnel message d'erreur apportant plus de détails à
- propos du problème. Peut être sur plusieurs lignes.
-
-
-
-
-
- PGSQL_DIAG_MESSAGE_HINT
- (int)
-
-
-
- Passée à pg_result_error_field.
- Conseil : une suggestion optionnelle qui indique que faire à propos du
- problème. Ceci est prévu d'être différent de l'erreur puisqu'elle offre
- un conseil (potentiellement inadéquat) plutôt que les faits véridiques.
- Peut être sur plusieurs lignes.
-
-
-
-
-
- PGSQL_DIAG_STATEMENT_POSITION
- (int)
-
-
-
- Passée à pg_result_error_field.
- Une chaîne de caractères contenant une valeur entière décimale indiquant
- une erreur de position du curseur en tant qu'index dans la requête
- originale. Le premier caractère a l'index 1 et les positions sont
- mesurées en caractères, non en octets.
-
-
-
-
-
- PGSQL_DIAG_INTERNAL_POSITION
- (int)
-
-
-
- Passée à pg_result_error_field.
- Ceci est défini étant la même chose que le champ
- PG_DIAG_STATEMENT_POSITION, mais cela est utilisé
- lorsque la position du curseur réfère à une commande générée internement
- plutôt que d'une envoyée par le client. Le champ
- PG_DIAG_INTERNAL_QUERY apparaîtra toujours lorsque
- ce champ apparaît.
-
-
-
-
-
- PGSQL_DIAG_INTERNAL_QUERY
- (int)
-
-
-
- Passée à pg_result_error_field.
- Le texte d'une commande générée internement échouée. Cela peut être, par
- exemple, une requête SQL envoyée par une fonction PL/pgSQL.
-
-
-
-
-
- PGSQL_DIAG_CONTEXT
- (int)
-
-
-
- Passée à pg_result_error_field.
- Une indication du contexte dans lequel l'erreur s'est produite.
- Présentement, ceci inclut une pile d'appel des traceback des fonctions
- procédurales actives ainsi que des requêtes générées à l'interne. Le
- traçage est une entrée par ligne, les plus récentes en premier.
-
-
-
-
-
- PGSQL_DIAG_SOURCE_FILE
- (int)
-
-
-
- Passée à pg_result_error_field.
- Le nom du fichier de l'emplacement du code source PostgreSQL où l'erreur
- a été reportée.
-
-
-
-
-
- PGSQL_DIAG_SOURCE_LINE
- (int)
-
-
-
- Passée à pg_result_error_field.
- Le nombre de ligne de l'emplacement du code source PostgreSQL où l'erreur
- a été reportée.
-
-
-
-
-
- PGSQL_DIAG_SOURCE_FUNCTION
- (int)
-
-
-
- Passée à pg_result_error_field.
- Le nom de la fonction de source code PostgreSQL reportant l'erreur.
-
-
-
-
-
- PGSQL_DIAG_SCHEMA_NAME
- (int)
-
-
-
- Disponible depuis PHP 7.3.0.
-
-
-
-
-
- PGSQL_DIAG_TABLE_NAME
- (int)
-
-
-
- Disponible depuis PHP 7.3.0.
-
-
-
-
-
- PGSQL_DIAG_COLUMN_NAME
- (int)
-
-
-
- Disponible depuis PHP 7.3.0.
-
-
-
-
-
- PGSQL_DIAG_DATATYPE_NAME
- (int)
-
-
-
- Disponible depuis PHP 7.3.0.
-
-
-
-
-
- PGSQL_DIAG_CONSTRAINT_NAME
- (int)
-
-
-
- Disponible depuis PHP 7.3.0.
-
-
-
-
-
- PGSQL_ERRORS_TERSE
- (int)
-
-
-
- Passée à pg_set_error_verbosity.
- Spécifie que les messages retournés incluent la sévérité, le texte
- primaire ainsi que la position seulement; ceci devrait entrer sur une
- seule ligne.
-
-
-
-
-
- PGSQL_ERRORS_DEFAULT
- (int)
-
-
-
- Passée à pg_set_error_verbosity.
- Le mode par défaut produit des messages qui incluent ce qui est plus haut
- et des détails en plus, conseil ou des champs contextes (ceci peut être
- sur plusieurs lignes).
-
-
-
-
-
- PGSQL_ERRORS_VERBOSE
- (int)
-
-
-
- Passée à pg_set_error_verbosity.
- Le mode verbeux inclut tous les champs disponibles.
-
-
-
-
-
- PGSQL_ERRORS_SQLSTATE
- (int)
-
-
-
- Passé à pg_set_error_verbosity.
- Inclut uniquement la gravité de l'erreur et le code d'erreur SQLSTATE.
- Si aucun code d'erreur n'est disponible, la sortie est similaire au mode
- PGSQL_ERRORS_TERSE.
- Avant PostgreSQL 11.1, la sortie est toujours la même que dans le mode PGSQL_ERRORS_TERSE.
-
-
-
-
-
-
- PGSQL_NOTICE_LAST
- (int)
-
-
-
- Utilisé par pg_last_notice.
- Disponible à partir de PHP 7.1.0.
-
-
-
-
-
- PGSQL_NOTICE_ALL
- (int)
-
-
-
- Utilisé par pg_last_notice.
- Disponible à partir de PHP 7.1.0.
-
-
-
-
-
- PGSQL_NOTICE_CLEAR
- (int)
-
-
-
- Utilisé par pg_last_notice.
- Disponible à partir de PHP 7.1.0.
-
-
-
-
-
-
- PGSQL_STATUS_LONG
- (int)
-
-
-
- Passée à pg_result_status. Indique que le code
- résultat est désiré numérique.
-
-
-
-
-
- PGSQL_STATUS_STRING
- (int)
-
-
-
- Passée à pg_result_status. Indique que le tag de
- résultat de commande est désiré textuel.
-
-
-
-
-
- PGSQL_CONV_IGNORE_DEFAULT
- (int)
-
-
-
- Passée à pg_convert.
- Ignore les valeurs par défaut dans la table pendant la conversion.
-
-
-
-
-
- PGSQL_CONV_FORCE_NULL
- (int)
-
-
-
- Passée à pg_convert.
- Utilise &null; à la place d'une chaîne de caractères vide.
-
-
-
-
-
- PGSQL_CONV_IGNORE_NOT_NULL
- (int)
-
-
-
- Passée à pg_convert.
- Ignore la conversion de &null; à l'intérieur des colonnes NOT
- NULL.
-
-
-
-
-
-
- PGSQL_DML_NO_CONV
- (int)
-
-
-
- Passée aux fonctions pg_insert, pg_select,
- pg_update et pg_delete.
- Tous les paramètres passés tel que. Un échappement manuel est nécessaire
- si les paramètres contiennent des données fournies par l'utilisateur.
- Utilisez la fonction pg_escape_string pour cela.
-
-
-
-
-
- PGSQL_DML_EXEC
- (int)
-
-
-
- Passée aux fonction pg_insert, pg_select,
- pg_update et pg_delete.
- Exécution de la requête par ces fonctions.
-
-
-
-
-
- PGSQL_DML_ASYNC
- (int)
-
-
-
- Passée aux fonctions pg_insert, pg_select,
- pg_update et pg_delete.
- Exécution asynchrone de la requête par ces fonctions.
-
-
-
-
-
- PGSQL_DML_STRING
- (int)
-
-
-
- Passée aux fonctions pg_insert, pg_select,
- pg_update et pg_delete.
- Retourne la chaîne de requête exécutée.
-
-
-
-
-
- PGSQL_DML_ESCAPE
- (int)
-
-
-
- Passée aux fonctions pg_insert, pg_select,
- pg_update et pg_delete.
- Applique un échappement interne à tous les paramètres plutôt que d'appeler la fonction
- pg_convert. Cette option ne gère pas les méta-données.
- La requête doit être aussi rapide qu'avec les fonctions
- pg_query et pg_send_query.
-
-
-
-
-
- PGSQL_POLLING_FAILED
- (int)
-
-
-
- Retournée par la fonction pg_connect_poll pour
- indiquer que la tentative de connexion a échoué.
-
-
-
-
-
- PGSQL_POLLING_READING
- (int)
-
-
-
- Retournée par la fonction pg_connect_poll pour
- indiquer que la connexion attend que le socket PostgreSQL ne soit
- accessible en lecture.
-
-
-
-
-
- PGSQL_POLLING_WRITING
- (int)
-
-
-
- Retournée par la fonction pg_connect_poll pour
- indiquer que la connexion attend que le socket PostgreSQL ne soit
- accessible en écriture.
-
-
-
-
-
- PGSQL_POLLING_OK
- (int)
-
-
-
- Retournée par la fonction pg_connect_poll
- pour indiquer que la connexion est prête à être utilisée.
-
-
-
-
-
- PGSQL_POLLING_ACTIVE
- (int)
-
-
-
- Retournée par la fonction pg_connect_poll
- pour indiquer que la connexion est actuellement active.
-
-
-
-
-
- PGSQL_DIAG_SEVERITY_NONLOCALIZED
- (int)
-
-
-
- La sévérité ; les contenus du champ sont ERROR, FATAL, ou PANIC (dans un message d'erreur), ou WARNING, NOTICE, DEBUG, INFO, ou LOG (dans un message de remarque).
- Ceci est identique au champ PG_DIAG_SEVERITY à l'exception que les contenus ne sont jamais localisé. Ceci est présent seulement dans les versions 9.6 et ultérieures / PHP 7.3.0 ou supérieure.
-
-
-
-
-
- PGSQL_SHOW_CONTEXT_NEVER
- (int)
-
-
-
- À utiliser avec pg_set_error_context_visibility,
- le contexte n'est jamais affiché.
- Disponible à partir de PHP 8.3.0.
-
-
-
-
-
- PGSQL_SHOW_CONTEXT_ERRORS
- (int)
-
-
-
- À utiliser avec pg_set_error_context_visibility,
- les champs du contexte sont inclus uniquement dans les messages d'erreur.
- C'est le comportement par défaut.
- Disponible à partir de PHP 8.3.0.
-
-
-
-
-
- PGSQL_SHOW_CONTEXT_ALWAYS
- (int)
-
-
-
- À utiliser avec pg_set_error_context_visibility,
- les champs du contexte sont inclus dans les messages d'erreur, d'avis et
- d'avertissement.
- Disponible à partir de PHP 8.3.0.
-
-
-
-
-
- PGSQL_TRACE_SUPPRESS_TIMESTAMPS
- (int)
-
-
-
- À utiliser avec pg_trace,
- l'horodatage n'est pas inclus dans les messages de trace.
- Disponible à partir de PHP 8.3.0.
-
-
-
-
-
- PGSQL_TRACE_REGRESS_MODE
- (int)
-
-
-
- À utiliser avec pg_trace,
- des champs tels que les OIDs sont inclus dans les messages de trace.
- Disponible à partir de PHP 8.3.0.
-
-
-
-
-
-
-
+
+
+
+
+
+
+ &reftitle.constants;
+ &extension.constants;
+
+
+
+
+ PGSQL_LIBPQ_VERSION
+ (string)
+
+
+
+ Version courte de libpq qui ne contient que des
+ nombres et des points.
+
+
+
+
+
+ PGSQL_LIBPQ_VERSION_STR
+ (string)
+
+
+
+ Antérieur à PHP 8.0.0, la version longue de libpq qui inclut les informations du compilateur.
+ À partir de PHP 8.0.0, la valeur est identique à PGSQL_LIBPQ_VERSION,
+ et l'utilisation de PGSQL_LIBPQ_VERSION_STR est obsolète.
+
+
+
+
+
+ PGSQL_ASSOC
+ (int)
+
+
+
+ Passée à pg_fetch_array. Retourne un tableau
+ associatif des noms et valeurs des champs.
+
+
+
+
+
+ PGSQL_NUM
+ (int)
+
+
+
+ Passée à pg_fetch_array. Retourne un tableau à index
+ numérique des numéros et valeurs des champs.
+
+
+
+
+
+ PGSQL_BOTH
+ (int)
+
+
+
+ Passée à pg_fetch_array. Retourne un tableau des
+ valeurs des champs qui est indexés numériquement (par le numéro des
+ champs) et indexés littéralement (par le nom des champs).
+
+
+
+
+
+ PGSQL_CONNECT_FORCE_NEW
+ (int)
+
+
+
+ Passée à pg_connect pour forcer la création d'une
+ nouvelle connexion, plutôt que de réutiliser une connexion identique
+ existante.
+
+
+
+
+
+ PGSQL_CONNECT_ASYNC
+ (int)
+
+
+
+ Passé à la fonction pg_connect pour créer une
+ connexion asynchrone.
+
+
+
+
+
+ PGSQL_CONNECTION_AUTH_OK
+ (int)
+
+
+
+
+
+
+
+
+
+ PGSQL_CONNECTION_AWAITING_RESPONSE
+ (int)
+
+
+
+
+
+
+
+
+
+ PGSQL_CONNECTION_BAD
+ (int)
+
+
+
+ Retournée par pg_connection_status indiquant que la
+ connexion à la base de données est invalide.
+
+
+
+
+
+ PGSQL_CONNECTION_MADE
+ (int)
+
+
+
+
+
+
+
+
+
+ PGSQL_CONNECTION_OK
+ (int)
+
+
+
+ Retournée par pg_connection_status indiquant que la
+ connexion à la base de données est valide.
+
+
+
+
+
+ PGSQL_CONNECTION_SETENV
+ (int)
+
+
+
+
+
+
+
+
+
+ PGSQL_CONNECTION_SSL_STARTUP
+ (int)
+
+
+
+
+
+
+
+
+
+ PGSQL_CONNECTION_STARTED
+ (int)
+
+
+
+
+
+
+
+
+
+ PGSQL_SEEK_SET
+ (int)
+
+
+
+ Passée à pg_lo_seek. Le positionnement commencera au
+ début de l'objet.
+
+
+
+
+
+ PGSQL_SEEK_CUR
+ (int)
+
+
+
+ Passée à pg_lo_seek. Le positionnement commencera à
+ la position courante.
+
+
+
+
+
+ PGSQL_SEEK_END
+ (int)
+
+
+
+ Passée à pg_lo_seek. Le positionnement commencera à
+ la fin de l'objet.
+
+
+
+
+
+ PGSQL_EMPTY_QUERY
+ (int)
+
+
+
+ Retournée par pg_result_status. La chaîne de
+ caractères envoyée au serveur était vide.
+
+
+
+
+
+ PGSQL_COMMAND_OK
+ (int)
+
+
+
+ Retournée par pg_result_status. Commande correctement
+ complétée ne retournant aucune donnée.
+
+
+
+
+
+ PGSQL_TUPLES_OK
+ (int)
+
+
+
+ Retournée par pg_result_status. Commande
+ correctement complétée retournant des données (comme
+ SELECT ou SHOW).
+
+
+
+
+
+ PGSQL_TUPLES_CHUNK
+ (int)
+
+
+
+ Retourné par pg_result_status.
+ Indique la réussite de l'exécution d'une commande retournant des données en mode par blocs.
+ Retourné pour les commandes SELECT lorsque
+ pg_set_chunked_rows_size est défini.
+ L'ensemble des résultats est divisé en plusieurs blocs, chacun contenant un nombre prédéfini de lignes.
+ Disponible à partir de PHP 8.4.0 et libpq 17.
+
+
+
+
+
+ PGSQL_COPY_OUT
+ (int)
+
+
+
+ Retournée par pg_result_status. Copie (à partir du
+ serveur) de transfert de données commencée.
+
+
+
+
+
+ PGSQL_COPY_IN
+ (int)
+
+
+
+ Retournée par pg_result_status. Copie (vers le
+ serveur) de transfert de données commencée.
+
+
+
+
+
+ PGSQL_BAD_RESPONSE
+ (int)
+
+
+
+ Retournée par pg_result_status. La réponse du
+ serveur n'a pas été comprise.
+
+
+
+
+
+ PGSQL_NONFATAL_ERROR
+ (int)
+
+
+
+ Retournée par pg_result_status. Une erreur non
+ fatale (de niveau notice ou warning) s'est produite.
+
+
+
+
+
+ PGSQL_FATAL_ERROR
+ (int)
+
+
+
+ Retournée par pg_result_status. Une erreur fatale
+ s'est produite.
+
+
+
+
+
+ PGSQL_TRANSACTION_IDLE
+ (int)
+
+
+
+ Retournée par pg_transaction_Status. La connexion
+ est actuellement libre, aucune transaction en cours.
+
+
+
+
+
+ PGSQL_TRANSACTION_ACTIVE
+ (int)
+
+
+
+ Retournée par pg_transaction_status. Une commande
+ est en cours sur la connexion. Une requête a été envoyée sur la connexion
+ et n'a toujours pas été complétée.
+
+
+
+
+
+ PGSQL_TRANSACTION_INTRANS
+ (int)
+
+
+
+ Retournée par pg_transaction_status. La connexion
+ est libre, dans un bloc de transaction.
+
+
+
+
+
+ PGSQL_TRANSACTION_INERROR
+ (int)
+
+
+
+ Retournée par pg_transaction_status. La connexion
+ est libre, dans un bloc de transaction échoué.
+
+
+
+
+
+ PGSQL_TRANSACTION_UNKNOWN
+ (int)
+
+
+
+ Retournée par pg_transaction_status. La connexion
+ est mauvaise.
+
+
+
+
+
+ PGSQL_DIAG_SEVERITY
+ (int)
+
+
+
+ Passée à pg_result_error_field.
+ La sévérité; le contenu du champ est ERROR,
+ FATAL ou PANIC (dans un message
+ d'erreur) ou WARNING, NOTICE, DEBUG,
+ INFO ou LOG (dans un message
+ d'avertissement) ou une traduction localisée parmi celles-ci. Toujours
+ présent.
+
+
+
+
+
+ PGSQL_DIAG_SQLSTATE
+ (int)
+
+
+
+ Passée à pg_result_error_field.
+ Le code SQLSTATE pour cette erreur. Le code SQLSTATE identifie le type
+ d'erreur qui s'est produite; cela peut être utilisé par des applications
+ d'entrée pour effectuer des opérations spécifiques (comme la gestion
+ d'erreur) en réponse à une erreur de base de données particulière.
+ Ce champ ne peut être localisé et est toujours présent.
+
+
+
+
+
+ PGSQL_DIAG_MESSAGE_PRIMARY
+ (int)
+
+
+
+ Passée à pg_result_error_field.
+ Le champ d'erreur primaire interprétable pour l'utilisateur (normalement
+ une ligne). Toujours présent.
+
+
+
+
+
+ PGSQL_DIAG_MESSAGE_DETAIL
+ (int)
+
+
+
+ Passée à pg_result_error_field.
+ Détail : un second optionnel message d'erreur apportant plus de détails à
+ propos du problème. Peut être sur plusieurs lignes.
+
+
+
+
+
+ PGSQL_DIAG_MESSAGE_HINT
+ (int)
+
+
+
+ Passée à pg_result_error_field.
+ Conseil : une suggestion optionnelle qui indique que faire à propos du
+ problème. Ceci est prévu d'être différent de l'erreur puisqu'elle offre
+ un conseil (potentiellement inadéquat) plutôt que les faits véridiques.
+ Peut être sur plusieurs lignes.
+
+
+
+
+
+ PGSQL_DIAG_STATEMENT_POSITION
+ (int)
+
+
+
+ Passée à pg_result_error_field.
+ Une chaîne de caractères contenant une valeur entière décimale indiquant
+ une erreur de position du curseur en tant qu'index dans la requête
+ originale. Le premier caractère a l'index 1 et les positions sont
+ mesurées en caractères, non en octets.
+
+
+
+
+
+ PGSQL_DIAG_INTERNAL_POSITION
+ (int)
+
+
+
+ Passée à pg_result_error_field.
+ Ceci est défini étant la même chose que le champ
+ PG_DIAG_STATEMENT_POSITION, mais cela est utilisé
+ lorsque la position du curseur réfère à une commande générée internement
+ plutôt que d'une envoyée par le client. Le champ
+ PG_DIAG_INTERNAL_QUERY apparaîtra toujours lorsque
+ ce champ apparaît.
+
+
+
+
+
+ PGSQL_DIAG_INTERNAL_QUERY
+ (int)
+
+
+
+ Passée à pg_result_error_field.
+ Le texte d'une commande générée internement échouée. Cela peut être, par
+ exemple, une requête SQL envoyée par une fonction PL/pgSQL.
+
+
+
+
+
+ PGSQL_DIAG_CONTEXT
+ (int)
+
+
+
+ Passée à pg_result_error_field.
+ Une indication du contexte dans lequel l'erreur s'est produite.
+ Présentement, ceci inclut une pile d'appel des traceback des fonctions
+ procédurales actives ainsi que des requêtes générées à l'interne. Le
+ traçage est une entrée par ligne, les plus récentes en premier.
+
+
+
+
+
+ PGSQL_DIAG_SOURCE_FILE
+ (int)
+
+
+
+ Passée à pg_result_error_field.
+ Le nom du fichier de l'emplacement du code source PostgreSQL où l'erreur
+ a été reportée.
+
+
+
+
+
+ PGSQL_DIAG_SOURCE_LINE
+ (int)
+
+
+
+ Passée à pg_result_error_field.
+ Le nombre de ligne de l'emplacement du code source PostgreSQL où l'erreur
+ a été reportée.
+
+
+
+
+
+ PGSQL_DIAG_SOURCE_FUNCTION
+ (int)
+
+
+
+ Passée à pg_result_error_field.
+ Le nom de la fonction de source code PostgreSQL reportant l'erreur.
+
+
+
+
+
+ PGSQL_DIAG_SCHEMA_NAME
+ (int)
+
+
+
+ Disponible depuis PHP 7.3.0.
+
+
+
+
+
+ PGSQL_DIAG_TABLE_NAME
+ (int)
+
+
+
+ Disponible depuis PHP 7.3.0.
+
+
+
+
+
+ PGSQL_DIAG_COLUMN_NAME
+ (int)
+
+
+
+ Disponible depuis PHP 7.3.0.
+
+
+
+
+
+ PGSQL_DIAG_DATATYPE_NAME
+ (int)
+
+
+
+ Disponible depuis PHP 7.3.0.
+
+
+
+
+
+ PGSQL_DIAG_CONSTRAINT_NAME
+ (int)
+
+
+
+ Disponible depuis PHP 7.3.0.
+
+
+
+
+
+ PGSQL_ERRORS_TERSE
+ (int)
+
+
+
+ Passée à pg_set_error_verbosity.
+ Spécifie que les messages retournés incluent la sévérité, le texte
+ primaire ainsi que la position seulement; ceci devrait entrer sur une
+ seule ligne.
+
+
+
+
+
+ PGSQL_ERRORS_DEFAULT
+ (int)
+
+
+
+ Passée à pg_set_error_verbosity.
+ Le mode par défaut produit des messages qui incluent ce qui est plus haut
+ et des détails en plus, conseil ou des champs contextes (ceci peut être
+ sur plusieurs lignes).
+
+
+
+
+
+ PGSQL_ERRORS_VERBOSE
+ (int)
+
+
+
+ Passée à pg_set_error_verbosity.
+ Le mode verbeux inclut tous les champs disponibles.
+
+
+
+
+
+ PGSQL_ERRORS_SQLSTATE
+ (int)
+
+
+
+ Passé à pg_set_error_verbosity.
+ Inclut uniquement la gravité de l'erreur et le code d'erreur SQLSTATE.
+ Si aucun code d'erreur n'est disponible, la sortie est similaire au mode
+ PGSQL_ERRORS_TERSE.
+ Avant PostgreSQL 11.1, la sortie est toujours la même que dans le mode PGSQL_ERRORS_TERSE.
+
+
+
+
+
+
+ PGSQL_NOTICE_LAST
+ (int)
+
+
+
+ Utilisé par pg_last_notice.
+ Disponible à partir de PHP 7.1.0.
+
+
+
+
+
+ PGSQL_NOTICE_ALL
+ (int)
+
+
+
+ Utilisé par pg_last_notice.
+ Disponible à partir de PHP 7.1.0.
+
+
+
+
+
+ PGSQL_NOTICE_CLEAR
+ (int)
+
+
+
+ Utilisé par pg_last_notice.
+ Disponible à partir de PHP 7.1.0.
+
+
+
+
+
+
+ PGSQL_STATUS_LONG
+ (int)
+
+
+
+ Passée à pg_result_status. Indique que le code
+ résultat est désiré numérique.
+
+
+
+
+
+ PGSQL_STATUS_STRING
+ (int)
+
+
+
+ Passée à pg_result_status. Indique que le tag de
+ résultat de commande est désiré textuel.
+
+
+
+
+
+ PGSQL_CONV_IGNORE_DEFAULT
+ (int)
+
+
+
+ Passée à pg_convert.
+ Ignore les valeurs par défaut dans la table pendant la conversion.
+
+
+
+
+
+ PGSQL_CONV_FORCE_NULL
+ (int)
+
+
+
+ Passée à pg_convert.
+ Utilise &null; à la place d'une chaîne de caractères vide.
+
+
+
+
+
+ PGSQL_CONV_IGNORE_NOT_NULL
+ (int)
+
+
+
+ Passée à pg_convert.
+ Ignore la conversion de &null; à l'intérieur des colonnes NOT
+ NULL.
+
+
+
+
+
+
+ PGSQL_DML_NO_CONV
+ (int)
+
+
+
+ Passée aux fonctions pg_insert, pg_select,
+ pg_update et pg_delete.
+ Tous les paramètres passés tel que. Un échappement manuel est nécessaire
+ si les paramètres contiennent des données fournies par l'utilisateur.
+ Utilisez la fonction pg_escape_string pour cela.
+
+
+
+
+
+ PGSQL_DML_EXEC
+ (int)
+
+
+
+ Passée aux fonction pg_insert, pg_select,
+ pg_update et pg_delete.
+ Exécution de la requête par ces fonctions.
+
+
+
+
+
+ PGSQL_DML_ASYNC
+ (int)
+
+
+
+ Passée aux fonctions pg_insert, pg_select,
+ pg_update et pg_delete.
+ Exécution asynchrone de la requête par ces fonctions.
+
+
+
+
+
+ PGSQL_DML_STRING
+ (int)
+
+
+
+ Passée aux fonctions pg_insert, pg_select,
+ pg_update et pg_delete.
+ Retourne la chaîne de requête exécutée.
+
+
+
+
+
+ PGSQL_DML_ESCAPE
+ (int)
+
+
+
+ Passée aux fonctions pg_insert, pg_select,
+ pg_update et pg_delete.
+ Applique un échappement interne à tous les paramètres plutôt que d'appeler la fonction
+ pg_convert. Cette option ne gère pas les méta-données.
+ La requête doit être aussi rapide qu'avec les fonctions
+ pg_query et pg_send_query.
+
+
+
+
+
+ PGSQL_POLLING_FAILED
+ (int)
+
+
+
+ Retournée par la fonction pg_connect_poll pour
+ indiquer que la tentative de connexion a échoué.
+
+
+
+
+
+ PGSQL_POLLING_READING
+ (int)
+
+
+
+ Retournée par la fonction pg_connect_poll pour
+ indiquer que la connexion attend que le socket PostgreSQL ne soit
+ accessible en lecture.
+
+
+
+
+
+ PGSQL_POLLING_WRITING
+ (int)
+
+
+
+ Retournée par la fonction pg_connect_poll pour
+ indiquer que la connexion attend que le socket PostgreSQL ne soit
+ accessible en écriture.
+
+
+
+
+
+ PGSQL_POLLING_OK
+ (int)
+
+
+
+ Retournée par la fonction pg_connect_poll
+ pour indiquer que la connexion est prête à être utilisée.
+
+
+
+
+
+ PGSQL_POLLING_ACTIVE
+ (int)
+
+
+
+ Retournée par la fonction pg_connect_poll
+ pour indiquer que la connexion est actuellement active.
+
+
+
+
+
+ PGSQL_DIAG_SEVERITY_NONLOCALIZED
+ (int)
+
+
+
+ La sévérité ; les contenus du champ sont ERROR, FATAL, ou PANIC (dans un message d'erreur), ou WARNING, NOTICE, DEBUG, INFO, ou LOG (dans un message de remarque).
+ Ceci est identique au champ PG_DIAG_SEVERITY à l'exception que les contenus ne sont jamais localisé. Ceci est présent seulement dans les versions 9.6 et ultérieures / PHP 7.3.0 ou supérieure.
+
+
+
+
+
+ PGSQL_SHOW_CONTEXT_NEVER
+ (int)
+
+
+
+ À utiliser avec pg_set_error_context_visibility,
+ le contexte n'est jamais affiché.
+ Disponible à partir de PHP 8.3.0.
+
+
+
+
+
+ PGSQL_SHOW_CONTEXT_ERRORS
+ (int)
+
+
+
+ À utiliser avec pg_set_error_context_visibility,
+ les champs du contexte sont inclus uniquement dans les messages d'erreur.
+ C'est le comportement par défaut.
+ Disponible à partir de PHP 8.3.0.
+
+
+
+
+
+ PGSQL_SHOW_CONTEXT_ALWAYS
+ (int)
+
+
+
+ À utiliser avec pg_set_error_context_visibility,
+ les champs du contexte sont inclus dans les messages d'erreur, d'avis et
+ d'avertissement.
+ Disponible à partir de PHP 8.3.0.
+
+
+
+
+
+ PGSQL_TRACE_SUPPRESS_TIMESTAMPS
+ (int)
+
+
+
+ À utiliser avec pg_trace,
+ l'horodatage n'est pas inclus dans les messages de trace.
+ Disponible à partir de PHP 8.3.0.
+
+
+
+
+
+ PGSQL_TRACE_REGRESS_MODE
+ (int)
+
+
+
+ À utiliser avec pg_trace,
+ des champs tels que les OIDs sont inclus dans les messages de trace.
+ Disponible à partir de PHP 8.3.0.
+
+
+
+
+
+
+
diff --git a/reference/pgsql/functions/pg-delete.xml b/reference/pgsql/functions/pg-delete.xml
index b932928df6..091a418546 100644
--- a/reference/pgsql/functions/pg-delete.xml
+++ b/reference/pgsql/functions/pg-delete.xml
@@ -95,7 +95,7 @@
&reftitle.returnvalues;
- &return.success; Retourne une &string; si PGSQL_DML_STRING
+ &return.success; Retourne une &string; si PGSQL_DML_STRING
est passé dans le paramètre flags.
diff --git a/reference/pgsql/functions/pg-escape-literal.xml b/reference/pgsql/functions/pg-escape-literal.xml
index 52ac0e0ef7..1f72edf6cc 100644
--- a/reference/pgsql/functions/pg-escape-literal.xml
+++ b/reference/pgsql/functions/pg-escape-literal.xml
@@ -22,7 +22,7 @@
PostgreSQL. pg_escape_literal ajoute des simples
quotes avant et après les données. Les utilisateurs ne doivent donc pas ajouter des simples quotes.
L'utilisation de cette fonction est recommandée à la place
- de pg_escape_string. Si la
+ de pg_escape_string. Si la
colonne est de type bytea, il convient d'utiliser à la place la fonctionpg_escape_bytea.
Pour protéger les identifiants (par exemple les noms de table, nom de champs), il convient d'utiliser la fonction
pg_escape_identifier.
diff --git a/reference/pgsql/functions/pg-result-status.xml b/reference/pgsql/functions/pg-result-status.xml
index 1d57ddbe36..8e905e2922 100644
--- a/reference/pgsql/functions/pg-result-status.xml
+++ b/reference/pgsql/functions/pg-result-status.xml
@@ -51,7 +51,7 @@
&reftitle.returnvalues;
- Les valeurs de retour possibles sont PGSQL_EMPTY_QUERY,
+ Les valeurs de retour possibles sont PGSQL_EMPTY_QUERY,
PGSQL_COMMAND_OK, PGSQL_TUPLES_OK,
PGSQL_TUPLES_CHUNK, PGSQL_COPY_OUT,
PGSQL_COPY_IN, PGSQL_BAD_RESPONSE,
diff --git a/reference/pgsql/functions/pg-unescape-bytea.xml b/reference/pgsql/functions/pg-unescape-bytea.xml
index f351400ccf..87cf4ddee0 100644
--- a/reference/pgsql/functions/pg-unescape-bytea.xml
+++ b/reference/pgsql/functions/pg-unescape-bytea.xml
@@ -23,7 +23,7 @@
Lorsque vous utilisez une commande SELECT
- avec des données de type bytea, PostgreSQL retourne des valeurs
+ avec des données de type bytea, PostgreSQL retourne des valeurs
octales, préfixées avec des antislashs \ (e.g. \032). Les utilisateurs
doivent effectuer la conversion en format binaire eux-mêmes.
diff --git a/reference/pgsql/functions/pg-update.xml b/reference/pgsql/functions/pg-update.xml
index 884dbf81c2..73c5a85a78 100644
--- a/reference/pgsql/functions/pg-update.xml
+++ b/reference/pgsql/functions/pg-update.xml
@@ -107,7 +107,7 @@
&reftitle.returnvalues;
- &return.success; Retourne une &string; si PGSQL_DML_STRING est passé
+ &return.success; Retourne une &string; si PGSQL_DML_STRING est passé
via le paramètre flags.
diff --git a/reference/phar/Phar/buildFromIterator.xml b/reference/phar/Phar/buildFromIterator.xml
index 3cefb26251..904f5ea60f 100644
--- a/reference/phar/Phar/buildFromIterator.xml
+++ b/reference/phar/Phar/buildFromIterator.xml
@@ -113,7 +113,7 @@
Pour la plupart des archives phar, l'archive reflète l'arborescence
d'un répertoire, et le second style est le plus utile. Par exemple,
pour créer une archive phar contenant les fichiers de l'arborescence
- du répertoire :
+ du répertoire :
diff --git a/reference/phar/Phar/convertToExecutable.xml b/reference/phar/Phar/convertToExecutable.xml
index a9bf5d02db..f01b69b871 100644
--- a/reference/phar/Phar/convertToExecutable.xml
+++ b/reference/phar/Phar/convertToExecutable.xml
@@ -41,7 +41,7 @@
Ce doit être l'un des formats Phar::PHAR, Phar::TAR,
- ou Phar::ZIP. Si ce paramètre est &null;, le format de fichier actuel sera
+ ou Phar::ZIP. Si ce paramètre est &null;, le format de fichier actuel sera
conservé.
@@ -69,7 +69,7 @@
.phar, .phar.gz, ou .phar.bz2
selon la compression spécifiée. Pour les archives phar basées sur tar, les extensions
par défaut sont .phar.tar, .phar.tar.gz,
- et .phar.tar.bz2. Pour les archives phar basées sur zip, l'extension par
+ et .phar.tar.bz2. Pour les archives phar basées sur zip, l'extension par
défaut est .phar.zip.
diff --git a/reference/phar/Phar/isCompressed.xml b/reference/phar/Phar/isCompressed.xml
index 83a95505ce..b77bca7ed2 100644
--- a/reference/phar/Phar/isCompressed.xml
+++ b/reference/phar/Phar/isCompressed.xml
@@ -17,9 +17,9 @@
Retourne Phar::GZ ou PHAR::BZ2 si l'archive entière est compressée
- (.tar.gz/tar.bz, etc). Les archives phar basées sur Zip ne peuvent
+ (.tar.gz/tar.bz, etc). Les archives phar basées sur Zip ne peuvent
pas être compressées en tant que fichier, et cette méthode retournera
- toujours &false; si une archive phar basée sur Zip est interrogée.
+ toujours &false; si une archive phar basée sur Zip est interrogée.
diff --git a/reference/phar/Phar/running.xml b/reference/phar/Phar/running.xml
index 574e3c9ced..6fbb528485 100644
--- a/reference/phar/Phar/running.xml
+++ b/reference/phar/Phar/running.xml
@@ -21,7 +21,7 @@
Dans le conteneur de chargement d'une archive, Phar::running retourne
- "". Utilisez simplement __FILE__
+ "". Utilisez simplement __FILE__
pour accéder au phar courant au sein d'un conteneur de chargement.
diff --git a/reference/phar/Phar/stopBuffering.xml b/reference/phar/Phar/stopBuffering.xml
index e4427c1c00..72ed583539 100644
--- a/reference/phar/Phar/stopBuffering.xml
+++ b/reference/phar/Phar/stopBuffering.xml
@@ -15,7 +15,7 @@
Phar::stopBuffering est utilisée en conjonction avec la méthode
- Phar::startBuffering. Phar::startBuffering
+ Phar::startBuffering. Phar::startBuffering
peut fournir un gain de performance lors de la création ou la modification d'une archive
Phar avec un grand nombre de fichiers. D'ordinaire, chaque fois qu'un fichier au sein de
l'archive Phar est créé ou modifié, l'archive Phar entière est recréée en incluant les
diff --git a/reference/phar/PharData/compressFiles.xml b/reference/phar/PharData/compressFiles.xml
index bb6c6b1294..6e02be4d6d 100644
--- a/reference/phar/PharData/compressFiles.xml
+++ b/reference/phar/PharData/compressFiles.xml
@@ -23,7 +23,7 @@
Pour les archives basées sur Zip, cette méthode compresse tous les fichiers de l'archive
en utilisant la compression spécifiée.
- Les extensions zlib ou bzip2
+ Les extensions zlib ou bzip2
doivent être activées pour tirer parti de cette fonctionnalité. De plus, si au moins un fichier
est déjà compressé en utilisant la compression bzip2/zlib, l'extension adéquate doit être activée
pour décompresser les fichiers avant de les re-compresser.
diff --git a/reference/phar/PharData/decompressFiles.xml b/reference/phar/PharData/decompressFiles.xml
index a1da884a4c..d77a588c13 100644
--- a/reference/phar/PharData/decompressFiles.xml
+++ b/reference/phar/PharData/decompressFiles.xml
@@ -23,7 +23,7 @@
Pour les archives basées sur Zip, cette méthode décompresse tous les fichiers de l'archive.
- Les extensions zlib ou bzip2
+ Les extensions zlib ou bzip2
doivent être activées pour tirer parti de cette fonctionnalité si au moins un des fichiers
est compressé avec bzip2/zlib.
diff --git a/reference/phar/PharData/setSignatureAlgorithm.xml b/reference/phar/PharData/setSignatureAlgorithm.xml
index a89bc8811f..6514f295e2 100644
--- a/reference/phar/PharData/setSignatureAlgorithm.xml
+++ b/reference/phar/PharData/setSignatureAlgorithm.xml
@@ -18,7 +18,7 @@
Assigne l'algorithme de signature d'un phar et l'applique. L'algorithme
- de signature doit être Phar::MD5,
+ de signature doit être Phar::MD5,
Phar::SHA1, Phar::SHA256,
Phar::SHA512, ou Phar::OPENSSL.
diff --git a/reference/phar/book.xml b/reference/phar/book.xml
index 24b5c655fa..8f48fc1a0c 100644
--- a/reference/phar/book.xml
+++ b/reference/phar/book.xml
@@ -1,189 +1,189 @@
-
-
-
-
-
-
-
- Phar
-
-
-
- &reftitle.intro;
-
- L'extension phar fournit un moyen de mettre une application PHP complète dans un fichier unique
- appelé un "phar" (PHP Archive) pour une installation et une configuration aisées.
- En plus de ce service, l'extension fournit aussi une classe d'abstraction de format de fichier
- pour créer et manipuler des fichiers tar et zip à travers la classe
- PharData, tout comme
- PDO fournit une interface unifiée pour accéder à des bases de données différentes. Mais à l'inverse de PDO,
- qui ne peut pas transposer les données d'une base à l'autre, Phar a la possibilité de convertir des fichiers tar,
- zip et phar avec une simple ligne de code. Regardez
- Phar::convertToExecutable pour avoir un exemple.
-
-
- Qu'est-ce que phar? Les archives phar sont en fait un moyen pratique de grouper
- plusieurs fichiers en un seul. Ainsi, une archive phar permet de distribuer une
- application PHP complète dans un fichier unique et de l'exécuter à partir de ce fichier
- sans pour autant l'extraire sur le disque. De plus, des archives phar peuvent être exécutées
- par PHP aussi facilement que n'importe quel autre fichier, aussi bien en ligne de commande que via
- un serveur web. Phar est une sorte de clé USB pour les applications PHP.
-
-
- Phar implémente cette fonctionnalité via un
- flux. Normalement, pour utiliser un fichier externe à partir d'un script PHP, vous
- devez utiliser la fonction include:
-
-
-
- Utiliser un fichier externe
-
-
- ]]>
-
-
-
-
- On peut considérer que PHP traduit en fait
- /chemin/vers/le/fichier/externe.php en un
- flux file:///chemin/vers/le/fichier/externe.php, et qu'il
- utilise de façon cachée les fonctions de flux de fichiers plats pour accéder
- à des fichiers locaux.
-
-
- Pour utiliser un fichier nommé fichier.php contenu dans une archive phar
- /chemin/vers/monphar.phar,
- la syntaxe est quasi similaire à la syntaxe file:// ci-dessus.
-
-
-
- Utilier un fichier contenu dans une archive phar
-
-
- ]]>
-
-
-
-
- En fait, on peut traiter une archive phar comme s'il s'agissait d'un disque externe, en utilisant
- n'importe laquelle des fonctions relatives à fopen, opendir et
- mkdir pour lire, changer ou créer des nouveaux fichiers ou répertoires au sein de
- l'archive phar. Cela permet à des applications PHP complètes d'être distribuées dans un seul fichier
- et d'être exécutées à partir de celui-ci
-
-
- L'utilisation la plus courant d'une archive phar est de distribuer une application complète
- en un seul fichier. Par exemple, l'installeur PEAR qui est inclus avec les versions de PHP
- est distribué grâce à une archive phar. pour utiliser l'archive phar ainsi distribuée, celle-ci
- peut-être exécutée via la ligne de commande ou via un navigateur web.
-
-
- Les archives phar peuvent être distribuées sous forme de fichiers tar,
- de fichiers zip ou de fichiers phar spécialement conçus
- pour l'extension phar. Chaque format de fichier a ses avantages et ses inconvénients. Les fichiers
- zip et tar peuvent être extraits par n'importe quel outil tiers qui peut lire le format, mais
- requièrent l'extension phar pour être exécutés par PHP. Le format de fichier phar est unique et dédié
- à l'extension phar et peut être créé uniquement par celle-ci ou par le paquet PEAR
- PHP_Archive, mais a l'avantage de ne pas
- nécessiter l'installation de l'extension phar pour que l'application empaquetée puisse être exécutée.
-
-
- En d'autres mots, même avec l'extension phar désactivée, il est possible d'exécuter ou d'inclure
- une archive basée sur phar. Accéder à des fichiers individuels au sein d'une archive phar n'est
- possible qu'avec l'extension phar à moins que l'archive phar n'ait été créée par PHP_Archive.
-
-
- L'extension phar est aussi capable de convertir une archive phar à partir d'un tar vers un fichier zip
- ou phar en une seule commande :
-
-
-
- Convertir une archive phar au format tar
-
- convertToExecutable(Phar::TAR, Phar::GZ); // produit monphar.phar.tar.gz
- ?>
- ]]>
-
-
-
-
- Phar peut compresser des fichiers individuels ou une archive entière en
- utilisant la compression gzip ou
- bzip2, et peut vérifier l'intégrité de l'archive
- automatiquement en utilisant des fonctions de signature MD5, SHA-1, SHA-256 ou SHA-512.
-
-
- Enfin, l'extension phar est orientée sécurité, elle désactive par défaut les accès
- en écriture sur les archives phar exécutables et requiert la désactivation au niveau système
- du paramètre phar.readonly du php.ini pour créer ou modifier des archives phar.
- Des archives tar et zip sans le marqueur exécutable peuvent toujours être créées ou modifiées
- en utilisant la classe PharData.
-
-
- Si vous créez des applications dans le but de les distribuer, vous devriez lire
- Comment créer des archives Phar. Si vous voulez
- davantage d'informations sur les différences entre les formats de fichier que phar supporte,
- vous devriez lire Phar, Tar et Zip.
-
-
- Si vous utilisez des applications phar, il y a des astuces très utiles dans
- Comment utiliser des archives Phar.
-
-
- Le mot phar est la contraction de PHP et de
- Archive et est grandement inspiré
- du mot jar (Java Archive) familier aux développeurs Java.
-
-
- L'implémentation des archives Phar est basée sur le paquet PEAR
- PHP_Archive, et
- les détails d'implémentations sont les mêmes, bien que l'extension Phar
- soit plus puissante. En plus, celle-ci permet à la plupart des applications
- PHP d'être exécutées sans modification alors que les archives basées sur PHP_Archive
- requièrent souvent beaucoup de modifications pour fonctionner.
-
-
-
-
- &reference.phar.setup;
- &reference.phar.constants;
- &reference.phar.using;
- &reference.phar.creating;
- &reference.phar.fileformat;
- &reference.phar.Phar;
- &reference.phar.PharData;
- &reference.phar.PharFileInfo;
- &reference.phar.PharException;
-
-
-
-
-
+
+
+
+
+
+
+
+ Phar
+
+
+
+ &reftitle.intro;
+
+ L'extension phar fournit un moyen de mettre une application PHP complète dans un fichier unique
+ appelé un "phar" (PHP Archive) pour une installation et une configuration aisées.
+ En plus de ce service, l'extension fournit aussi une classe d'abstraction de format de fichier
+ pour créer et manipuler des fichiers tar et zip à travers la classe
+ PharData, tout comme
+ PDO fournit une interface unifiée pour accéder à des bases de données différentes. Mais à l'inverse de PDO,
+ qui ne peut pas transposer les données d'une base à l'autre, Phar a la possibilité de convertir des fichiers tar,
+ zip et phar avec une simple ligne de code. Regardez
+ Phar::convertToExecutable pour avoir un exemple.
+
+
+ Qu'est-ce que phar? Les archives phar sont en fait un moyen pratique de grouper
+ plusieurs fichiers en un seul. Ainsi, une archive phar permet de distribuer une
+ application PHP complète dans un fichier unique et de l'exécuter à partir de ce fichier
+ sans pour autant l'extraire sur le disque. De plus, des archives phar peuvent être exécutées
+ par PHP aussi facilement que n'importe quel autre fichier, aussi bien en ligne de commande que via
+ un serveur web. Phar est une sorte de clé USB pour les applications PHP.
+
+
+ Phar implémente cette fonctionnalité via un
+ flux. Normalement, pour utiliser un fichier externe à partir d'un script PHP, vous
+ devez utiliser la fonction include:
+
+
+
+ Utiliser un fichier externe
+
+
+ ]]>
+
+
+
+
+ On peut considérer que PHP traduit en fait
+ /chemin/vers/le/fichier/externe.php en un
+ flux file:///chemin/vers/le/fichier/externe.php, et qu'il
+ utilise de façon cachée les fonctions de flux de fichiers plats pour accéder
+ à des fichiers locaux.
+
+
+ Pour utiliser un fichier nommé fichier.php contenu dans une archive phar
+ /chemin/vers/monphar.phar,
+ la syntaxe est quasi similaire à la syntaxe file:// ci-dessus.
+
+
+
+ Utilier un fichier contenu dans une archive phar
+
+
+ ]]>
+
+
+
+
+ En fait, on peut traiter une archive phar comme s'il s'agissait d'un disque externe, en utilisant
+ n'importe laquelle des fonctions relatives à fopen, opendir et
+ mkdir pour lire, changer ou créer des nouveaux fichiers ou répertoires au sein de
+ l'archive phar. Cela permet à des applications PHP complètes d'être distribuées dans un seul fichier
+ et d'être exécutées à partir de celui-ci
+
+
+ L'utilisation la plus courant d'une archive phar est de distribuer une application complète
+ en un seul fichier. Par exemple, l'installeur PEAR qui est inclus avec les versions de PHP
+ est distribué grâce à une archive phar. pour utiliser l'archive phar ainsi distribuée, celle-ci
+ peut-être exécutée via la ligne de commande ou via un navigateur web.
+
+
+ Les archives phar peuvent être distribuées sous forme de fichiers tar,
+ de fichiers zip ou de fichiers phar spécialement conçus
+ pour l'extension phar. Chaque format de fichier a ses avantages et ses inconvénients. Les fichiers
+ zip et tar peuvent être extraits par n'importe quel outil tiers qui peut lire le format, mais
+ requièrent l'extension phar pour être exécutés par PHP. Le format de fichier phar est unique et dédié
+ à l'extension phar et peut être créé uniquement par celle-ci ou par le paquet PEAR
+ PHP_Archive, mais a l'avantage de ne pas
+ nécessiter l'installation de l'extension phar pour que l'application empaquetée puisse être exécutée.
+
+
+ En d'autres mots, même avec l'extension phar désactivée, il est possible d'exécuter ou d'inclure
+ une archive basée sur phar. Accéder à des fichiers individuels au sein d'une archive phar n'est
+ possible qu'avec l'extension phar à moins que l'archive phar n'ait été créée par PHP_Archive.
+
+
+ L'extension phar est aussi capable de convertir une archive phar à partir d'un tar vers un fichier zip
+ ou phar en une seule commande :
+
+
+
+ Convertir une archive phar au format tar
+
+ convertToExecutable(Phar::TAR, Phar::GZ); // produit monphar.phar.tar.gz
+ ?>
+ ]]>
+
+
+
+
+ Phar peut compresser des fichiers individuels ou une archive entière en
+ utilisant la compression gzip ou
+ bzip2, et peut vérifier l'intégrité de l'archive
+ automatiquement en utilisant des fonctions de signature MD5, SHA-1, SHA-256 ou SHA-512.
+
+
+ Enfin, l'extension phar est orientée sécurité, elle désactive par défaut les accès
+ en écriture sur les archives phar exécutables et requiert la désactivation au niveau système
+ du paramètre phar.readonly du php.ini pour créer ou modifier des archives phar.
+ Des archives tar et zip sans le marqueur exécutable peuvent toujours être créées ou modifiées
+ en utilisant la classe PharData.
+
+
+ Si vous créez des applications dans le but de les distribuer, vous devriez lire
+ Comment créer des archives Phar. Si vous voulez
+ davantage d'informations sur les différences entre les formats de fichier que phar supporte,
+ vous devriez lire Phar, Tar et Zip.
+
+
+ Si vous utilisez des applications phar, il y a des astuces très utiles dans
+ Comment utiliser des archives Phar.
+
+
+ Le mot phar est la contraction de PHP et de
+ Archive et est grandement inspiré
+ du mot jar (Java Archive) familier aux développeurs Java.
+
+
+ L'implémentation des archives Phar est basée sur le paquet PEAR
+ PHP_Archive, et
+ les détails d'implémentations sont les mêmes, bien que l'extension Phar
+ soit plus puissante. En plus, celle-ci permet à la plupart des applications
+ PHP d'être exécutées sans modification alors que les archives basées sur PHP_Archive
+ requièrent souvent beaucoup de modifications pour fonctionner.
+
+
+
+
+ &reference.phar.setup;
+ &reference.phar.constants;
+ &reference.phar.using;
+ &reference.phar.creating;
+ &reference.phar.fileformat;
+ &reference.phar.Phar;
+ &reference.phar.PharData;
+ &reference.phar.PharFileInfo;
+ &reference.phar.PharException;
+
+
+
+
+
diff --git a/reference/phar/fileformat.xml b/reference/phar/fileformat.xml
index 1e16b8df11..9d84bf45d7 100644
--- a/reference/phar/fileformat.xml
+++ b/reference/phar/fileformat.xml
@@ -1,522 +1,522 @@
-
-
-
-
-
- Qu'est-ce qui fait d'un phar un phar et pas un tar ou un zip ?
-
- Les constituants de toutes les archives Phar, indépendamment du format de fichier
-
- Toutes les archives Phar contiennent de trois à quatre sections:
-
-
-
- Un conteneur
-
-
-
-
- Un manifeste décrivant le contenu
-
-
-
-
- Le contenu du fichier
-
-
-
-
- Une signature (facultative) pour vérifier l'intégrité
- (uniquement avec le format de fichier phar)
-
-
-
-
-
-
- Le conteneur de fichier Phar
-
- Un conteneur Phar est un simple fichier PHP. Le conteneur minimal contient :
-
-
-
-
-
-
-
- Un conteneur doit contenir au moins le jeton __HALT_COMPILER();
- en guise de conclusion. Typiquement, un conteneur comportera les fonctionnalités
- de chargement suivantes :
-
-
-
-
-
-
-
- Il n'y a aucune restriction sur le contenu d'un conteneur Phar, si ce n'est le besoin d'être conclu
- par __HALT_COMPILER();. Le tag fermant PHP ]]> peut être
- inclus ou omis, mais il ne peut y avoir plus d'un espace entre le ; et le tag fermant
- ]]> sans quoi l'extension phar ne sera pas capable de lire le
- manifeste de l'archive.
-
-
- Dans une archive phar basée sur tar ou zip, le conteneur est stocké dans le fichier
- .phar/stub.php. Le conteneur par défaut des archives Phar basées sur
- phar contient approximativement 7ko de code pour extraire le contenu du phar et l'exécuter.
- Regardez la fonction Phar::createDefaultStub pour davantage de détails.
-
-
- L'alias phar est stocké, dans le cas d'une archive phar basée sur tar ou zip, dans le fichier
- .phar/alias.txt en tant que texte plein.
-
-
-
- Comparaison entre Phar, Tar et Zip
-
- Quels sont les avantages et les inconvénients de chacun des trois formats supportés
- par l'extension phar ? Ce tableau tente de répondre à cette question.
-
- Tableau comparatif : Phar, Tar et Zip
-
-
-
- Fonctionnalité
- Phar
- Tar
- Zip
-
-
-
-
- Format de fichier standard
- Non
- Oui
- Oui
-
-
- Peut être exécuté sans l'extension Phar
- [1]
-
- Oui
- Non
- Non
-
-
- Compression par fichier
- Oui
- Non
- Oui
-
-
- Compression pour toute l'archive
- Oui
- Oui
- Non
-
-
- Validation par signature de toute l'archive
- Oui
- Oui
- Oui
-
-
- Support d'applications spécifiquement Web
- Oui
- Oui
- Oui
-
-
- Métadonnées par fichier
- Oui
- Oui
- Oui
-
-
- Métadonnées pour toute l'archive
- Oui
- Oui
- Oui
-
-
- Création/modification d'archive
- [2]
-
- Oui
- Oui
- Oui
-
-
- Support complet de toutes les fonctions de flux
- Oui
- Oui
- Oui
-
-
- Peut être créée/modifiée même si phar.readonly=1
- [3]
-
- Non
- Oui
- Oui
-
-
-
-
-
-
-
-
- [1] PHP ne peut accéder directement au contenu d'une archive Phar sans que l'extension
- Phar soit installée si elle utilise un conteneur
- qui extrait le contenu de l'archive phar. Le conteneur
- créé par Phar::createDefaultStub extrait
- l'archive phar et exécute son contenu à partir d'un répertoire temporaire si
- aucune extension phar n'est trouvée.
-
-
-
-
-
-
- [2] Tous les accès en écriture nécessitent que phar.readonly soit
- désactivé dans le php.ini ou directement via la ligne de commande.
-
-
-
-
-
-
- [3] Seules les archives tar ou zip sans .phar dans leur
- nom et sans conteneur exécutable .phar/stub.php
- peuvent être créées si phar.readonly=1.
-
-
-
-
-
- Les phars basés sur Tar
-
- Les archives basées sur le format de fichier tar sont conformes au format moderne
- USTAR. Le design des en-têtes du fichier tar le rend plus efficace que le format de fichier zip
- et aussi efficace que le format de fichier phar quand il s'agit d'accéder aux données.
- Les noms de fichiers sont limités à 255 octets, y compris le chemin complet au sein de l'archive phar
- basée sur tar. Ces archives peuvent être intégralement compressées au format gzip ou bzip2 tout
- en restant exécutables par l'extension Phar.
-
-
- Il y a un support limité pour lire les tarballs dans le format pax interchange,
- mais tous les en-têtes pax reconnues (actuellement, typeflag x
- et g) sont silencieusement ignorés.
- Il y a aussi un support limité pour les GNU Tar Archives;
- actuellement, les en-têtes ././@LongLink sont résolus.
-
-
- Pour compresser une archive entière, utilisez Phar::compress.
- Pour décompresser une archive entière, utilisez Phar::decompress.
-
-
-
- Les phars basés sur Zip
-
- Les archives basées sur le format de fichier zip supportent de nombreuses fonctionnalités
- incluses dans le format zip. Les métadonnées par fichier ou sur toute l'archive sont stockées
- dans les commentaires du fichier zip et de l'archive zip en tant que chaîne de caractères sérialisée.
- Les commentaires zip déjà existants seront lus sans problème en tant que chaîne. Les lectures/écritures
- compressées sont supportées par la compression zlib DEFLATE, et uniquement les lectures compressées par
- la compression bzip2. Il n'y a pas de limite sur le nombre de fichiers au sein d'une archive phar
- basée sur zip. Les répertoires vides sont stockés dans l'archive zip comme des fichiers avec un slash final,
- comme mon/repertoire/
-
-
-
- Le format de fichier Phar
-
- Le format de fichier phar est composé de conteneur/manifeste/contenu/signature, et stocke
- les informations cruciales de ce qui est contenu dans l'archive phar dans son
- manifeste.
-
-
- Le manifeste Phar est un format hautement optimisé qui permet la spécification fichier par fichier
- de la compression, des permissions et même des métadonnées utilisateur tels que l'utilisateur ou le
- groupe propriétaire. Toutes les valeurs de plus d'un octet sont stockées sous forme petit-boutiste,
- A l'exception de la version de l'API qui est stockée pour des raisons historiques en 3 morceaux
- grand-boutistes.
-
-
- Tous les drapeaux non utilisés sont réservés pour un usage futur et ne doivent pas être utilisés
- pour stocker des informations personnalisées. Utilisez les métadonnées par fichier pour stocker
- des métadonnées personnalisées sur des fichiers particuliers.
-
-
- Le format de fichier basique du manifeste d'une archive Phar est le suivant :
-
-
-
- Format global du manifeste Phar
-
-
-
- Taille en octets
- Description
-
-
-
-
- 4 octets
- Longueur du manifeste en octets (limitée à 1 Mo)
-
-
- 4 octets
- Nombre de fichiers dans le Phar
-
-
- 2 octets
- Version de l'API du manifeste Phar (à ce jour 1.0.0)
-
-
- 4 octets
- Drapeaux "bitmappés" globaux du Phar
-
-
- 4 octets
- Longueur de l'alias Phar
-
-
- ??
- L'alias Phar (longueur basée sur la valeur précédente)
-
-
- 4 octets
- Longueur des métadonnées Phar (0 si aucune)
-
-
- ??
- métadonnées Phar sérialisées, stockées dans un format serialize
-
-
- au moins 24 * nombre d'octets des entrées
- Entrées pour chaque fichier
-
-
-
-
-
-
-
- Drapeaux "bitmappés" globaux du Phar
-
- Voici les drapeaux "bitmappés" actuellement reconnus par l'extension Phar
- pour le bitmap plein global de Phar :
-
-
-
- Valeurs de bitmap reconnues
-
-
-
- Valeur
- Description
-
-
-
-
- 0x00010000
- Si présent, le Phar contient une signature de vérification
-
-
- 0x00001000
-
- Si présent, le Phar contient au moins 1 fichier qui est
- compressé grâce à zlib DEFLATE
-
-
-
- 0x00002000
-
- Si présent, le Phar contient au moins 1 fichier qui est
- compressé grâce à bzip2
-
-
-
-
-
-
-
-
- Définition des entrées du manifeste Phar
-
- Chaque fichier du manifeste contient les informations suivantes :
-
-
-
- Entrée du manifeste Phar
-
-
-
- Taille en octets
- Description
-
-
-
-
- 4 octets
- Longueur du nom de fichier en octets
-
-
- ??
- Nom de fichier (longueur basée sur la valeur précédente)
-
-
- 4 octets
- Taille du fichier décompressé en octets
-
-
- 4 octets
- Timestamp Unix du fichier
-
-
- 4 octets
- Taille du fichier compressé en octets
-
-
- 4 octets
- Somme de contrôle CRC32 du contenu décompressé du fichier
-
-
- 4 octets
- Drapeaux bitmappés spécifiques au fichier
-
-
- 4 octets
- Longueur des métadonnées du fichier sérialisées (0 si aucune)
-
-
- ??
- métadonnées du fichier sérialisées, stockées dans un format serialize
-
-
-
-
-
-
- À noter qu'à partir de l'API 1.1.1, les répertoires vides sont stockés comme des noms de fichier
- avec un slash final comme mon/repertoire/
-
-
- Les valeurs reconnues de drapeaux bitmappés spécifiques au fichier sont :
-
-
-
- Valeurs reconnues de bitmap
-
-
-
- Valeur
- Description
-
-
-
-
- 0x000001FF
-
- Ces bits sont réservés pour définir des permissions spécifiques au fichier.
- Celles-ci sont utilisées pour fstat
- et peuvent être utilisées pour recréer les permissions souhaitées en cas d'extraction.
-
-
-
- 0x00001000
-
- Si présent, le fichier est compressé grâce à zlib DEFLATE
-
-
-
- 0x00002000
-
- Si présent, le fichier est compressé grâce à bzip2
-
-
-
-
-
-
-
-
- Phar Signature format
-
- Les Phar qui contiennent une signature ont toujours la signature ajoutée à la fin du Phar,
- après le chargeur, le manifeste et le contenu.
- Les types de signature supportés à ce jour sont MD5, SHA1, SHA256, SHA512,
- et OPENSSL.
-
-
-
- Format de signature
-
-
-
- Longueur en octets
- Description
-
-
-
-
- variant
-
- La signature actuelle, 20 octets pour une SHA1,
- 16 octets pour une MD5, 32 octets pour une SHA256,
- et 64 octets pour une SHA512. La longueur d'une signature
- OPENSSL dépend de la taille de la clé privée.
-
-
-
- 4 octets
-
- Les drapeaux de signature. 0x0001 est utilisé pour
- définir une signature MD5, 0x0002 pour une SHA1,
- 0x0003 pour une SHA256 et 0x0004
- pour une SHA512. Le support des signatures SHA256 et SHA512 est disponible
- à partir de la version 1.1.0 de l'API.
- 0x0010 est utilisé pour définir une signature OPENSSL,
- qui est disponible à partir de la version 1.1.1 de l'API, si OpenSSL est disponible.
-
-
-
- 4 octets
-
- GBMB magique utilisé pour définir la présence d'une signature.
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+ Qu'est-ce qui fait d'un phar un phar et pas un tar ou un zip ?
+
+ Les constituants de toutes les archives Phar, indépendamment du format de fichier
+
+ Toutes les archives Phar contiennent de trois à quatre sections:
+
+
+
+ Un conteneur
+
+
+
+
+ Un manifeste décrivant le contenu
+
+
+
+
+ Le contenu du fichier
+
+
+
+
+ Une signature (facultative) pour vérifier l'intégrité
+ (uniquement avec le format de fichier phar)
+
+
+
+
+
+
+ Le conteneur de fichier Phar
+
+ Un conteneur Phar est un simple fichier PHP. Le conteneur minimal contient :
+
+
+
+
+
+
+
+ Un conteneur doit contenir au moins le jeton __HALT_COMPILER();
+ en guise de conclusion. Typiquement, un conteneur comportera les fonctionnalités
+ de chargement suivantes :
+
+
+
+
+
+
+
+ Il n'y a aucune restriction sur le contenu d'un conteneur Phar, si ce n'est le besoin d'être conclu
+ par __HALT_COMPILER();. Le tag fermant PHP ]]> peut être
+ inclus ou omis, mais il ne peut y avoir plus d'un espace entre le ; et le tag fermant
+ ]]> sans quoi l'extension phar ne sera pas capable de lire le
+ manifeste de l'archive.
+
+
+ Dans une archive phar basée sur tar ou zip, le conteneur est stocké dans le fichier
+ .phar/stub.php. Le conteneur par défaut des archives Phar basées sur
+ phar contient approximativement 7ko de code pour extraire le contenu du phar et l'exécuter.
+ Regardez la fonction Phar::createDefaultStub pour davantage de détails.
+
+
+ L'alias phar est stocké, dans le cas d'une archive phar basée sur tar ou zip, dans le fichier
+ .phar/alias.txt en tant que texte plein.
+
+
+
+ Comparaison entre Phar, Tar et Zip
+
+ Quels sont les avantages et les inconvénients de chacun des trois formats supportés
+ par l'extension phar ? Ce tableau tente de répondre à cette question.
+
+ Tableau comparatif : Phar, Tar et Zip
+
+
+
+ Fonctionnalité
+ Phar
+ Tar
+ Zip
+
+
+
+
+ Format de fichier standard
+ Non
+ Oui
+ Oui
+
+
+ Peut être exécuté sans l'extension Phar
+ [1]
+
+ Oui
+ Non
+ Non
+
+
+ Compression par fichier
+ Oui
+ Non
+ Oui
+
+
+ Compression pour toute l'archive
+ Oui
+ Oui
+ Non
+
+
+ Validation par signature de toute l'archive
+ Oui
+ Oui
+ Oui
+
+
+ Support d'applications spécifiquement Web
+ Oui
+ Oui
+ Oui
+
+
+ Métadonnées par fichier
+ Oui
+ Oui
+ Oui
+
+
+ Métadonnées pour toute l'archive
+ Oui
+ Oui
+ Oui
+
+
+ Création/modification d'archive
+ [2]
+
+ Oui
+ Oui
+ Oui
+
+
+ Support complet de toutes les fonctions de flux
+ Oui
+ Oui
+ Oui
+
+
+ Peut être créée/modifiée même si phar.readonly=1
+ [3]
+
+ Non
+ Oui
+ Oui
+
+
+
+
+
+
+
+
+ [1] PHP ne peut accéder directement au contenu d'une archive Phar sans que l'extension
+ Phar soit installée si elle utilise un conteneur
+ qui extrait le contenu de l'archive phar. Le conteneur
+ créé par Phar::createDefaultStub extrait
+ l'archive phar et exécute son contenu à partir d'un répertoire temporaire si
+ aucune extension phar n'est trouvée.
+
+
+
+
+
+
+ [2] Tous les accès en écriture nécessitent que phar.readonly soit
+ désactivé dans le php.ini ou directement via la ligne de commande.
+
+
+
+
+
+
+ [3] Seules les archives tar ou zip sans .phar dans leur
+ nom et sans conteneur exécutable .phar/stub.php
+ peuvent être créées si phar.readonly=1.
+
+
+
+
+
+ Les phars basés sur Tar
+
+ Les archives basées sur le format de fichier tar sont conformes au format moderne
+ USTAR. Le design des en-têtes du fichier tar le rend plus efficace que le format de fichier zip
+ et aussi efficace que le format de fichier phar quand il s'agit d'accéder aux données.
+ Les noms de fichiers sont limités à 255 octets, y compris le chemin complet au sein de l'archive phar
+ basée sur tar. Ces archives peuvent être intégralement compressées au format gzip ou bzip2 tout
+ en restant exécutables par l'extension Phar.
+
+
+ Il y a un support limité pour lire les tarballs dans le format pax interchange,
+ mais tous les en-têtes pax reconnues (actuellement, typeflag x
+ et g) sont silencieusement ignorés.
+ Il y a aussi un support limité pour les GNU Tar Archives;
+ actuellement, les en-têtes ././@LongLink sont résolus.
+
+
+ Pour compresser une archive entière, utilisez Phar::compress.
+ Pour décompresser une archive entière, utilisez Phar::decompress.
+
+
+
+ Les phars basés sur Zip
+
+ Les archives basées sur le format de fichier zip supportent de nombreuses fonctionnalités
+ incluses dans le format zip. Les métadonnées par fichier ou sur toute l'archive sont stockées
+ dans les commentaires du fichier zip et de l'archive zip en tant que chaîne de caractères sérialisée.
+ Les commentaires zip déjà existants seront lus sans problème en tant que chaîne. Les lectures/écritures
+ compressées sont supportées par la compression zlib DEFLATE, et uniquement les lectures compressées par
+ la compression bzip2. Il n'y a pas de limite sur le nombre de fichiers au sein d'une archive phar
+ basée sur zip. Les répertoires vides sont stockés dans l'archive zip comme des fichiers avec un slash final,
+ comme mon/repertoire/
+
+
+
+ Le format de fichier Phar
+
+ Le format de fichier phar est composé de conteneur/manifeste/contenu/signature, et stocke
+ les informations cruciales de ce qui est contenu dans l'archive phar dans son
+ manifeste.
+
+
+ Le manifeste Phar est un format hautement optimisé qui permet la spécification fichier par fichier
+ de la compression, des permissions et même des métadonnées utilisateur tels que l'utilisateur ou le
+ groupe propriétaire. Toutes les valeurs de plus d'un octet sont stockées sous forme petit-boutiste,
+ A l'exception de la version de l'API qui est stockée pour des raisons historiques en 3 morceaux
+ grand-boutistes.
+
+
+ Tous les drapeaux non utilisés sont réservés pour un usage futur et ne doivent pas être utilisés
+ pour stocker des informations personnalisées. Utilisez les métadonnées par fichier pour stocker
+ des métadonnées personnalisées sur des fichiers particuliers.
+
+
+ Le format de fichier basique du manifeste d'une archive Phar est le suivant :
+
+
+
+ Format global du manifeste Phar
+
+
+
+ Taille en octets
+ Description
+
+
+
+
+ 4 octets
+ Longueur du manifeste en octets (limitée à 1 Mo)
+
+
+ 4 octets
+ Nombre de fichiers dans le Phar
+
+
+ 2 octets
+ Version de l'API du manifeste Phar (à ce jour 1.0.0)
+
+
+ 4 octets
+ Drapeaux "bitmappés" globaux du Phar
+
+
+ 4 octets
+ Longueur de l'alias Phar
+
+
+ ??
+ L'alias Phar (longueur basée sur la valeur précédente)
+
+
+ 4 octets
+ Longueur des métadonnées Phar (0 si aucune)
+
+
+ ??
+ métadonnées Phar sérialisées, stockées dans un format serialize
+
+
+ au moins 24 * nombre d'octets des entrées
+ Entrées pour chaque fichier
+
+
+
+
+
+
+
+ Drapeaux "bitmappés" globaux du Phar
+
+ Voici les drapeaux "bitmappés" actuellement reconnus par l'extension Phar
+ pour le bitmap plein global de Phar :
+
+
+
+ Valeurs de bitmap reconnues
+
+
+
+ Valeur
+ Description
+
+
+
+
+ 0x00010000
+ Si présent, le Phar contient une signature de vérification
+
+
+ 0x00001000
+
+ Si présent, le Phar contient au moins 1 fichier qui est
+ compressé grâce à zlib DEFLATE
+
+
+
+ 0x00002000
+
+ Si présent, le Phar contient au moins 1 fichier qui est
+ compressé grâce à bzip2
+
+
+
+
+
+
+
+
+ Définition des entrées du manifeste Phar
+
+ Chaque fichier du manifeste contient les informations suivantes :
+
+
+
+ Entrée du manifeste Phar
+
+
+
+ Taille en octets
+ Description
+
+
+
+
+ 4 octets
+ Longueur du nom de fichier en octets
+
+
+ ??
+ Nom de fichier (longueur basée sur la valeur précédente)
+
+
+ 4 octets
+ Taille du fichier décompressé en octets
+
+
+ 4 octets
+ Timestamp Unix du fichier
+
+
+ 4 octets
+ Taille du fichier compressé en octets
+
+
+ 4 octets
+ Somme de contrôle CRC32 du contenu décompressé du fichier
+
+
+ 4 octets
+ Drapeaux bitmappés spécifiques au fichier
+
+
+ 4 octets
+ Longueur des métadonnées du fichier sérialisées (0 si aucune)
+
+
+ ??
+ métadonnées du fichier sérialisées, stockées dans un format serialize
+
+
+
+
+
+
+ À noter qu'à partir de l'API 1.1.1, les répertoires vides sont stockés comme des noms de fichier
+ avec un slash final comme mon/repertoire/
+
+
+ Les valeurs reconnues de drapeaux bitmappés spécifiques au fichier sont :
+
+
+
+ Valeurs reconnues de bitmap
+
+
+
+ Valeur
+ Description
+
+
+
+
+ 0x000001FF
+
+ Ces bits sont réservés pour définir des permissions spécifiques au fichier.
+ Celles-ci sont utilisées pour fstat
+ et peuvent être utilisées pour recréer les permissions souhaitées en cas d'extraction.
+
+
+
+ 0x00001000
+
+ Si présent, le fichier est compressé grâce à zlib DEFLATE
+
+
+
+ 0x00002000
+
+ Si présent, le fichier est compressé grâce à bzip2
+
+
+
+
+
+
+
+
+ Phar Signature format
+
+ Les Phar qui contiennent une signature ont toujours la signature ajoutée à la fin du Phar,
+ après le chargeur, le manifeste et le contenu.
+ Les types de signature supportés à ce jour sont MD5, SHA1, SHA256, SHA512,
+ et OPENSSL.
+
+
+
+ Format de signature
+
+
+
+ Longueur en octets
+ Description
+
+
+
+
+ variant
+
+ La signature actuelle, 20 octets pour une SHA1,
+ 16 octets pour une MD5, 32 octets pour une SHA256,
+ et 64 octets pour une SHA512. La longueur d'une signature
+ OPENSSL dépend de la taille de la clé privée.
+
+
+
+ 4 octets
+
+ Les drapeaux de signature. 0x0001 est utilisé pour
+ définir une signature MD5, 0x0002 pour une SHA1,
+ 0x0003 pour une SHA256 et 0x0004
+ pour une SHA512. Le support des signatures SHA256 et SHA512 est disponible
+ à partir de la version 1.1.0 de l'API.
+ 0x0010 est utilisé pour définir une signature OPENSSL,
+ qui est disponible à partir de la version 1.1.1 de l'API, si OpenSSL est disponible.
+
+
+
+ 4 octets
+
+ GBMB magique utilisé pour définir la présence d'une signature.
+
+
+
+
+
-
-
- &ini.descriptions.title;
-
-
-
-
-
- phar.readonly
- bool
-
-
-
- Cette option désactive la création ou la modification des
- archives Phar en utilisant le flux phar
- ou le support en écriture sur les objets Phar.
- Ce paramètre devrait toujours être activé sur des machines
- de production, car le support en écriture sur les archives
- phar pourrait mener à la création de virus basés sur PHP en
- cas d'utilisation conjuguée avec des vulnérabilités communes.
-
-
-
- Ce paramètre ne peut être désactivé que dans &php.ini;
- pour des raisons de sécurité. Si phar.readonly
- est désactivé dans php.ini, l'utilisateur peut
- activer phar.readonly dans un script
- ou le désactiver plus tard. Si phar.readonly est
- activé dans &php.ini;, un script pourrait "réactiver"
- sans danger la variable INI, mais ne pourrait pas la désactiver.
-
-
-
-
-
-
-
- phar.require_hash
- bool
-
-
-
- Cette option forcera toutes les archives Phar ouvertes à contenir
- un type de signature (à ce jour MD5, SHA1, SHA256, SHA512 et OpenSSL sont
- supportés), et toute archive Phar ne contenant
- pas de signature sera rejetée.
-
-
-
- Ce paramètre ne peut être désactivé que dans &php.ini;.
- Si phar.require_hash
- est désactivé dans &php.ini;, l'utilisateur peut
- activer phar.require_hash dans un script
- ou le désactiver plus tard. Si phar.require_hash est
- activé dans &php.ini;, un script pourrait "réactiver"
- sans danger la variable INI, mais ne pourrait pas la désactiver.
-
-
- Ce paramètre n'affecte pas la lecture des fichiers tar avec la classe
- PharData.
-
-
-
-
- phar.require_hash ne fournis pas de sécurité en soi,
- c'est uniquement une mesure contre exécuter accidentellement des archives
- Phar corrompu, car n'importe qui peut trafiquer avec le Phar peut
- facilement corriger la signature après.
-
-
-
-
-
-
-
- phar.cache_list
- string
-
-
-
- Permet aux correspondances d'archives phar d'être traitées au
- démarrage du serveur web, augmentant de ce fait les performance
- d'accès aux fichiers contenus dans une archive phar et les rendant
- très proche d'un accès à des fichiers d'une installation classique
- sur disque.
-
- Exemple d'utilisation de phar.cache_list
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+ &reftitle.runtime;
+ &extension.runtime;
+
+
+
+
+ &ini.descriptions.title;
+
+
+
+
+
+ phar.readonly
+ bool
+
+
+
+ Cette option désactive la création ou la modification des
+ archives Phar en utilisant le flux phar
+ ou le support en écriture sur les objets Phar.
+ Ce paramètre devrait toujours être activé sur des machines
+ de production, car le support en écriture sur les archives
+ phar pourrait mener à la création de virus basés sur PHP en
+ cas d'utilisation conjuguée avec des vulnérabilités communes.
+
+
+
+ Ce paramètre ne peut être désactivé que dans &php.ini;
+ pour des raisons de sécurité. Si phar.readonly
+ est désactivé dans php.ini, l'utilisateur peut
+ activer phar.readonly dans un script
+ ou le désactiver plus tard. Si phar.readonly est
+ activé dans &php.ini;, un script pourrait "réactiver"
+ sans danger la variable INI, mais ne pourrait pas la désactiver.
+
+
+
+
+
+
+
+ phar.require_hash
+ bool
+
+
+
+ Cette option forcera toutes les archives Phar ouvertes à contenir
+ un type de signature (à ce jour MD5, SHA1, SHA256, SHA512 et OpenSSL sont
+ supportés), et toute archive Phar ne contenant
+ pas de signature sera rejetée.
+
+
+
+ Ce paramètre ne peut être désactivé que dans &php.ini;.
+ Si phar.require_hash
+ est désactivé dans &php.ini;, l'utilisateur peut
+ activer phar.require_hash dans un script
+ ou le désactiver plus tard. Si phar.require_hash est
+ activé dans &php.ini;, un script pourrait "réactiver"
+ sans danger la variable INI, mais ne pourrait pas la désactiver.
+
+
+ Ce paramètre n'affecte pas la lecture des fichiers tar avec la classe
+ PharData.
+
+
+
+
+ phar.require_hash ne fournis pas de sécurité en soi,
+ c'est uniquement une mesure contre exécuter accidentellement des archives
+ Phar corrompu, car n'importe qui peut trafiquer avec le Phar peut
+ facilement corriger la signature après.
+
+
+
+
+
+
+
+ phar.cache_list
+ string
+
+
+
+ Permet aux correspondances d'archives phar d'être traitées au
+ démarrage du serveur web, augmentant de ce fait les performance
+ d'accès aux fichiers contenus dans une archive phar et les rendant
+ très proche d'un accès à des fichiers d'une installation classique
+ sur disque.
+
+ Exemple d'utilisation de phar.cache_list
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reference/phar/using.xml b/reference/phar/using.xml
index b41a42eebf..013ab63c24 100644
--- a/reference/phar/using.xml
+++ b/reference/phar/using.xml
@@ -1,392 +1,392 @@
-
-
-
-
-
- Utiliser les archives Phar
-
-
- Utiliser les archives Phar : Introduction
-
- Les archives Phar sont identiques dans le concept aux archives JAR
- de Java, mais sont conçues plus spécifiquement pour les besoins et
- la flexibilité des applications PHP. Une archive Phar est utilisée
- pour distribuer une application PHP complète ou une bibliothèque
- sous forme d'un fichier unique.
- Une application sous forme d'archive Phar est utilisée exactement de
- la même façon que n'importe quelle autre application PHP :
-
-
-
-
-
- L'utilisation d'une bibliothèque sous forme d'archive Phar est la
- même que n'importe quelle autre bibliothèque PHP :
-
-
-
-
-
-]]>
-
-
-
-
- Le flux phar fournit le cœur de l'extension phar, et
- est décrit en détails ici.
- Le flux phar permet l'accès aux fichiers contenus dans une archive phar via les
- fonctions standards de fichier fopen, opendir, et
- toute autre fonctionnant sur des fichiers normaux. Le flux phar supporte toutes
- les opérations de lecture/écriture à la fois sur les fichiers et sur les répertoires.
-
-
-
-
-
-]]>
-
-
-
-
- La classe Phar implémente des fonctionnalités
- avancées pour accéder aux fichiers et créer des archives phar. La
- classe Phar est décrite en détails ici.
-
-
-
-
-getFileName() . "\n";
- echo file_get_contents($file->getPathName()) . "\n"; // affiche le contenu;
- }
- if (isset($p['fichier/interne.php'])) {
- var_dump($p['fichier/interne.php']->getMetadata());
- }
-
- // crée un nouveau phar - phar.readonly doit être à 0 dans php.ini
- // phar.readonly est activé par défaut pour des raisons de sécurité.
- // Sur des serveurs de production, les Phars n'ont pas besoin d'être créés,
- // juste d'être exécutés.
- if (Phar::canWrite()) {
- $p = new Phar('nouveauphar.tar.phar', 0, 'nouveauphar.tar.phar');
- // On crée une archive Phar basée sur tar, compressée par gzip (.tar.gz)
- $p = $p->convertToExecutable(Phar::TAR, Phar::GZ);
-
- // crée une transaction - rien n'est écrit dans nouveauphar.phar
- // jusqu'à ce que stopBuffering() ne soit appelé, bien qu'un stockage temporaire soit requis
- $p->startBuffering();
- // ajoute tous les fichiers de /chemin/vers/leprojet dans le phar avec le préfixe "projet"
- $p->buildFromIterator(new RecursiveIteratorIterator(new RecursiveDirectoryIterator('/chemin/vers/leprojet')), '/chemin/vers/');
-
- // ajoute un nouveau fichier en utilisant l'API d'accès par tableau
- $p['fichier1.txt'] = 'Information';
- $fp = fopen('grosfichier.dat', 'rb');
- // copie toutes les données du flux
- $p['data/grosfichier.dat'] = $fp;
-
- if (Phar::canCompress(Phar::GZ)) {
- $p['data/grosfichier.dat']->compress(Phar::GZ);
- }
-
- $p['images/wow.jpg'] = file_get_contents('images/wow.jpg');
- // toute valeur peut être sauvegardée comme métadonnée spécifique au fichier
- $p['images/wow.jpg']->setMetadata(array('mime-type' => 'image/jpeg'));
- $p['index.php'] = file_get_contents('index.php');
- $p->setMetadata(array('bootstrap' => 'index.php'));
-
- // sauvegarde l'archive phar sur le disque
- $p->stopBuffering();
- }
-} catch (Exception $e) {
- echo 'N\'a pas pu ouvrir le Phar: ', $e;
-}
-?>
-]]>
-
-
-
-
- D'autre part, la vérification du contenu du fichier phar peut être faite en utilisant un des
- algorithme de signature symétrique (MD5, SHA1, SHA256 et SHA512 si ext/hash est activée) et
- en utilisant la signature asymétrique par clé publique/privée de OpenSSL.
- Pour tirer parti de la signature OpenSSL, vous devez générer une paire de clés publique/privée et
- utiliser la clé privée pour signer avec Phar::setSignatureAlgorithm. En plus, la
- clé publique, extraite en utilisant ce code :
-
-
- ]]>
-
- doit être sauvegardée à part de l'archive phar qu'elle vérifie. Si l'archive phar est sauvegardée
- en tant que /chemin/vers/mon.phar, la clé publique doit être sauvegardée en tant
- que /chemin/vers/mon.phar.pubkey, sans quoi phar ne sera pas capable de vérifier
- la signature OpenSSL.
-
-
- La classe Phar fournit aussi trois méthodes statiques, Phar::webPhar,
- Phar::mungServer et Phar::interceptFileFuncs qui sont cruciales
- pour empaqueter des applications PHP visant à être utilisée sur un système de fichiers classique ou en tant qu'application web.
- Phar::webPhar implémente un contrôleur qui route les appels HTTP vers le bon endroit de l'archive phar.
- Phar::mungServer est utilisé pour modifier les valeurs du tableau $_SERVER pour
- dire aux applications d'utiliser ces valeurs. Phar::interceptFileFuncs dit à Phar d'intercepter les appels à
- fopen, file_get_contents, opendir, et
- à toutes les fonctions basées sur stat (file_exists, is_readable, etc) et
- route tous les chemins relatif vers les bons endroits de l'archive phar.
-
-
- Par exemple, empaqueter une version de la célèbre application phpMyAdmin dans une archive phar nécessite
- juste ce simple script et, dès lors, phpMyAdmin.phar.tar.php peut être accédé comme un fichier
- classique à partir de votre serveur web, après avoir modifié le couple utilisateur/motdepasse :
-
-
-
-
- startBuffering();
-$a["phpMyAdmin-2.11.3-english/config.inc.php"] = 'setStub('stopBuffering();
-?>
- ]]>
-
-
-
-
-
- Utiliser les archives Phar : le flux phar
-
- Le flux Phar supporte totalement fopen pour les
- lectures/écritures (pas les concaténations), unlink, stat,
- fstat, fseek, rename,
- et les opérations de flux sur les répertoires opendir, et rmdir
- et mkdir.
-
-
- La compression et les métadonnées individuelles par fichier peuvent aussi être manipulées
- au sein de l'archive Phar en utilisant les contextes de flux :
-
-
-
-
-
- array('compress' => Phar::GZ)),
- array('metadata' => array('user' => 'cellog')));
-file_put_contents('phar://mon.phar/unfichier.php', 0, $context);
-?>
-]]>
-
-
-
-
- Le flux phar n'agit pas sur les fichiers distants et ne peut pas
- considérer les fichiers distants, etc... même si les options INI
- allow_url_fopen et
- allow_url_include sont
- désactivées.
-
-
- Bien qu'il soit possible de créer des archives phar de zéro en utilisant juste les
- opérations sur les flux, il est préférable d'utiliser la fonctionnalité incluse dans
- la classe Phar. Le flux est mieux utilisé pour les opérations de lecture.
-
-
-
- Utiliser les archives Phar : les classes Phar et PharData
-
- La classe Phar supporte la lecture et la manipulation des
- archives Phar, ainsi que l'itération à travers la fonctionnalité héritée de la classe
- RecursiveDirectoryIterator.
- Avec le support de l'interface ArrayAccess,
- les fichiers contenus dans une archive Phar peuvent être accédés
- comme s'ils étaient membres d'un tableau associatif.
-
-
- La classe PharData étend la classe Phar, et
- permet la création et la modification d'archives tar et zip non exécutables (données) même si
- phar.readonly=1 dans php.ini. Ainsi,
- PharData::setAlias et PharData::setStub
- sont toutes deux désactivées car les concepts d'alias et de conteneur sont restreints aux
- archives phar exécutables.
-
-
- Il est important de noter que quand une archive Phar est créée, le chemin complet
- doit être passé au constructeur de l'objet Phar.
- Un chemin relatif empêcherait l'initialisation.
-
-
- En supposant que $p est un objet initialisé de cette façon :
-
-
-
-
-
-]]>
-
-
-
-
- Une archive Phar vide sera créée en tant que /chemin/vers/monphar.phar,
- ou si /chemin/vers/monphar.phar existe déjà, il sera ouvert
- de nouveau. Le terme monphar.phar démontre le concept d'un alias
- qui peut être utilisé pour référencer /chemin/vers/monphar.phar dans des URL comme ceci :
-
-
-
-
-
-]]>
-
-
-
-
- Avec l'objet Phar$p nouvellement créé,
- les choses suivantes sont possibles :
-
-
-
- $a = $p['fichier.php'] crée une PharFileInfo
- qui réfère au contenu de phar://monphar.phar/fichier.php
-
-
-
-
- $p['fichier.php'] = $v crée un nouveau fichier
- (phar://monphar.phar/fichier.php), ou écrase
- un fichier existant au sein de monphar.phar. $v
- peut être soit une chaîne ou un pointeur vers un fichier ouvert, dans quel cas
- le contenu du fichier sera utilisé pour créer le nouveau fichier. Notez que
- $p->addFromString('fichier.php', $v) est équivalent en termes de
- fonctionnalité au cas ci-dessus. Il est aussi possible d'ajouter le contenu d'un fichier
- avec $p->addFile('/chemin/vers/fichier.php', 'fichier.php').
- Enfin, un répertoire vide peut être créé avec
- $p->addEmptyDir('vide').
-
-
-
-
- isset($p['fichier.php']) peut être utilisé pour déterminer
- si phar://monphar.phar/fichier.php existe au sein de
- monphar.phar.
-
-
-
-
- unset($p['fichier.php']) efface
- phar://monphar.phar/fichier.php de
- monphar.phar.
-
-
-
-
-
- De plus, l'objet Phar est le seul moyen
- d'accéder aux métadonnées spécifiques de Phar, via
- Phar::getMetadata,
- et c'est aussi le seul moyen de régler ou de récupérer le
- conteneur du chargeur de l'archive Phar via
- Phar::getStub et
- Phar::setStub.
- De plus, la compression pour l'archive Phar entière peut
- être manipulée seulement via la classe Phar.
-
-
- La liste complète des fonctionnalités de l'objet
- Phar est documentée ci-dessous.
-
-
- La classe PharFileInfo étend la classe
- SplFileInfo
- et ajoute plusieurs méthodes pour manipuler les métadonnées
- spécifiques à Phar d'un fichier contenu dans un Phar,
- telles que manipuler la compression ou les métadonnées.
-
-
-
-
-
+
+
+
+
+
+ Utiliser les archives Phar
+
+
+ Utiliser les archives Phar : Introduction
+
+ Les archives Phar sont identiques dans le concept aux archives JAR
+ de Java, mais sont conçues plus spécifiquement pour les besoins et
+ la flexibilité des applications PHP. Une archive Phar est utilisée
+ pour distribuer une application PHP complète ou une bibliothèque
+ sous forme d'un fichier unique.
+ Une application sous forme d'archive Phar est utilisée exactement de
+ la même façon que n'importe quelle autre application PHP :
+
+
+
+
+
+ L'utilisation d'une bibliothèque sous forme d'archive Phar est la
+ même que n'importe quelle autre bibliothèque PHP :
+
+
+
+
+
+]]>
+
+
+
+
+ Le flux phar fournit le cœur de l'extension phar, et
+ est décrit en détails ici.
+ Le flux phar permet l'accès aux fichiers contenus dans une archive phar via les
+ fonctions standards de fichier fopen, opendir, et
+ toute autre fonctionnant sur des fichiers normaux. Le flux phar supporte toutes
+ les opérations de lecture/écriture à la fois sur les fichiers et sur les répertoires.
+
+
+
+
+
+]]>
+
+
+
+
+ La classe Phar implémente des fonctionnalités
+ avancées pour accéder aux fichiers et créer des archives phar. La
+ classe Phar est décrite en détails ici.
+
+
+
+
+getFileName() . "\n";
+ echo file_get_contents($file->getPathName()) . "\n"; // affiche le contenu;
+ }
+ if (isset($p['fichier/interne.php'])) {
+ var_dump($p['fichier/interne.php']->getMetadata());
+ }
+
+ // crée un nouveau phar - phar.readonly doit être à 0 dans php.ini
+ // phar.readonly est activé par défaut pour des raisons de sécurité.
+ // Sur des serveurs de production, les Phars n'ont pas besoin d'être créés,
+ // juste d'être exécutés.
+ if (Phar::canWrite()) {
+ $p = new Phar('nouveauphar.tar.phar', 0, 'nouveauphar.tar.phar');
+ // On crée une archive Phar basée sur tar, compressée par gzip (.tar.gz)
+ $p = $p->convertToExecutable(Phar::TAR, Phar::GZ);
+
+ // crée une transaction - rien n'est écrit dans nouveauphar.phar
+ // jusqu'à ce que stopBuffering() ne soit appelé, bien qu'un stockage temporaire soit requis
+ $p->startBuffering();
+ // ajoute tous les fichiers de /chemin/vers/leprojet dans le phar avec le préfixe "projet"
+ $p->buildFromIterator(new RecursiveIteratorIterator(new RecursiveDirectoryIterator('/chemin/vers/leprojet')), '/chemin/vers/');
+
+ // ajoute un nouveau fichier en utilisant l'API d'accès par tableau
+ $p['fichier1.txt'] = 'Information';
+ $fp = fopen('grosfichier.dat', 'rb');
+ // copie toutes les données du flux
+ $p['data/grosfichier.dat'] = $fp;
+
+ if (Phar::canCompress(Phar::GZ)) {
+ $p['data/grosfichier.dat']->compress(Phar::GZ);
+ }
+
+ $p['images/wow.jpg'] = file_get_contents('images/wow.jpg');
+ // toute valeur peut être sauvegardée comme métadonnée spécifique au fichier
+ $p['images/wow.jpg']->setMetadata(array('mime-type' => 'image/jpeg'));
+ $p['index.php'] = file_get_contents('index.php');
+ $p->setMetadata(array('bootstrap' => 'index.php'));
+
+ // sauvegarde l'archive phar sur le disque
+ $p->stopBuffering();
+ }
+} catch (Exception $e) {
+ echo 'N\'a pas pu ouvrir le Phar: ', $e;
+}
+?>
+]]>
+
+
+
+
+ D'autre part, la vérification du contenu du fichier phar peut être faite en utilisant un des
+ algorithme de signature symétrique (MD5, SHA1, SHA256 et SHA512 si ext/hash est activée) et
+ en utilisant la signature asymétrique par clé publique/privée de OpenSSL.
+ Pour tirer parti de la signature OpenSSL, vous devez générer une paire de clés publique/privée et
+ utiliser la clé privée pour signer avec Phar::setSignatureAlgorithm. En plus, la
+ clé publique, extraite en utilisant ce code :
+
+
+ ]]>
+
+ doit être sauvegardée à part de l'archive phar qu'elle vérifie. Si l'archive phar est sauvegardée
+ en tant que /chemin/vers/mon.phar, la clé publique doit être sauvegardée en tant
+ que /chemin/vers/mon.phar.pubkey, sans quoi phar ne sera pas capable de vérifier
+ la signature OpenSSL.
+
+
+ La classe Phar fournit aussi trois méthodes statiques, Phar::webPhar,
+ Phar::mungServer et Phar::interceptFileFuncs qui sont cruciales
+ pour empaqueter des applications PHP visant à être utilisée sur un système de fichiers classique ou en tant qu'application web.
+ Phar::webPhar implémente un contrôleur qui route les appels HTTP vers le bon endroit de l'archive phar.
+ Phar::mungServer est utilisé pour modifier les valeurs du tableau $_SERVER pour
+ dire aux applications d'utiliser ces valeurs. Phar::interceptFileFuncs dit à Phar d'intercepter les appels à
+ fopen, file_get_contents, opendir, et
+ à toutes les fonctions basées sur stat (file_exists, is_readable, etc) et
+ route tous les chemins relatif vers les bons endroits de l'archive phar.
+
+
+ Par exemple, empaqueter une version de la célèbre application phpMyAdmin dans une archive phar nécessite
+ juste ce simple script et, dès lors, phpMyAdmin.phar.tar.php peut être accédé comme un fichier
+ classique à partir de votre serveur web, après avoir modifié le couple utilisateur/motdepasse :
+
+
+
+
+ startBuffering();
+$a["phpMyAdmin-2.11.3-english/config.inc.php"] = 'setStub('stopBuffering();
+?>
+ ]]>
+
+
+
+
+
+ Utiliser les archives Phar : le flux phar
+
+ Le flux Phar supporte totalement fopen pour les
+ lectures/écritures (pas les concaténations), unlink, stat,
+ fstat, fseek, rename,
+ et les opérations de flux sur les répertoires opendir, et rmdir
+ et mkdir.
+
+
+ La compression et les métadonnées individuelles par fichier peuvent aussi être manipulées
+ au sein de l'archive Phar en utilisant les contextes de flux :
+
+
+
+
+
+ array('compress' => Phar::GZ)),
+ array('metadata' => array('user' => 'cellog')));
+file_put_contents('phar://mon.phar/unfichier.php', 0, $context);
+?>
+]]>
+
+
+
+
+ Le flux phar n'agit pas sur les fichiers distants et ne peut pas
+ considérer les fichiers distants, etc... même si les options INI
+ allow_url_fopen et
+ allow_url_include sont
+ désactivées.
+
+
+ Bien qu'il soit possible de créer des archives phar de zéro en utilisant juste les
+ opérations sur les flux, il est préférable d'utiliser la fonctionnalité incluse dans
+ la classe Phar. Le flux est mieux utilisé pour les opérations de lecture.
+
+
+
+ Utiliser les archives Phar : les classes Phar et PharData
+
+ La classe Phar supporte la lecture et la manipulation des
+ archives Phar, ainsi que l'itération à travers la fonctionnalité héritée de la classe
+ RecursiveDirectoryIterator.
+ Avec le support de l'interface ArrayAccess,
+ les fichiers contenus dans une archive Phar peuvent être accédés
+ comme s'ils étaient membres d'un tableau associatif.
+
+
+ La classe PharData étend la classe Phar, et
+ permet la création et la modification d'archives tar et zip non exécutables (données) même si
+ phar.readonly=1 dans php.ini. Ainsi,
+ PharData::setAlias et PharData::setStub
+ sont toutes deux désactivées car les concepts d'alias et de conteneur sont restreints aux
+ archives phar exécutables.
+
+
+ Il est important de noter que quand une archive Phar est créée, le chemin complet
+ doit être passé au constructeur de l'objet Phar.
+ Un chemin relatif empêcherait l'initialisation.
+
+
+ En supposant que $p est un objet initialisé de cette façon :
+
+
+
+
+
+]]>
+
+
+
+
+ Une archive Phar vide sera créée en tant que /chemin/vers/monphar.phar,
+ ou si /chemin/vers/monphar.phar existe déjà, il sera ouvert
+ de nouveau. Le terme monphar.phar démontre le concept d'un alias
+ qui peut être utilisé pour référencer /chemin/vers/monphar.phar dans des URL comme ceci :
+
+
+
+
+
+]]>
+
+
+
+
+ Avec l'objet Phar$p nouvellement créé,
+ les choses suivantes sont possibles :
+
+
+
+ $a = $p['fichier.php'] crée une PharFileInfo
+ qui réfère au contenu de phar://monphar.phar/fichier.php
+
+
+
+
+ $p['fichier.php'] = $v crée un nouveau fichier
+ (phar://monphar.phar/fichier.php), ou écrase
+ un fichier existant au sein de monphar.phar. $v
+ peut être soit une chaîne ou un pointeur vers un fichier ouvert, dans quel cas
+ le contenu du fichier sera utilisé pour créer le nouveau fichier. Notez que
+ $p->addFromString('fichier.php', $v) est équivalent en termes de
+ fonctionnalité au cas ci-dessus. Il est aussi possible d'ajouter le contenu d'un fichier
+ avec $p->addFile('/chemin/vers/fichier.php', 'fichier.php').
+ Enfin, un répertoire vide peut être créé avec
+ $p->addEmptyDir('vide').
+
+
+
+
+ isset($p['fichier.php']) peut être utilisé pour déterminer
+ si phar://monphar.phar/fichier.php existe au sein de
+ monphar.phar.
+
+
+
+
+ unset($p['fichier.php']) efface
+ phar://monphar.phar/fichier.php de
+ monphar.phar.
+
+
+
+
+
+ De plus, l'objet Phar est le seul moyen
+ d'accéder aux métadonnées spécifiques de Phar, via
+ Phar::getMetadata,
+ et c'est aussi le seul moyen de régler ou de récupérer le
+ conteneur du chargeur de l'archive Phar via
+ Phar::getStub et
+ Phar::setStub.
+ De plus, la compression pour l'archive Phar entière peut
+ être manipulée seulement via la classe Phar.
+
+
+ La liste complète des fonctionnalités de l'objet
+ Phar est documentée ci-dessous.
+
+
+ La classe PharFileInfo étend la classe
+ SplFileInfo
+ et ajoute plusieurs méthodes pour manipuler les métadonnées
+ spécifiques à Phar d'un fichier contenu dans un Phar,
+ telles que manipuler la compression ou les métadonnées.
+
+
+
+
+
diff --git a/reference/pspell/functions/pspell-config-save-repl.xml b/reference/pspell/functions/pspell-config-save-repl.xml
index 3c4aea6082..df95217468 100644
--- a/reference/pspell/functions/pspell-config-save-repl.xml
+++ b/reference/pspell/functions/pspell-config-save-repl.xml
@@ -17,7 +17,7 @@
pspell_config_save_repl détermine si
- pspell_save_wordlist doit sauver les paires de remplacement
+ pspell_save_wordlist doit sauver les paires de remplacement
avec le dictionnaire. Généralement, il n'y a pas besoin d'utiliser cette fonction car,
si pspell_config_repl est utilisée, les
paires de remplacement seront sauvées de toute façon par
diff --git a/reference/pspell/functions/pspell-new-personal.xml b/reference/pspell/functions/pspell-new-personal.xml
index 062daa63ec..cd539d2b3d 100644
--- a/reference/pspell/functions/pspell-new-personal.xml
+++ b/reference/pspell/functions/pspell-new-personal.xml
@@ -111,7 +111,7 @@
- PSPELL_BAD_SPELLERS - Mode lent (beaucoup plus de
+ PSPELL_BAD_SPELLERS - Mode lent (beaucoup plus de
suggestions)
diff --git a/reference/pthreads/configure.xml b/reference/pthreads/configure.xml
index b3e7f263f2..87b84117b5 100644
--- a/reference/pthreads/configure.xml
+++ b/reference/pthreads/configure.xml
@@ -1,47 +1,47 @@
-
-
-
-
-
- &reftitle.install;
-
-
- Utiliser lors de la
- compilation de PHP.
-
-
-
- Les utilisateurs Windows doivent inclure php_pthreads.dll
- dans le &php.ini;
-
-
-
-
- Les utilisateurs de Windows doivent également s'assurer que
- pthreadVC2.dll (inclus dans la distribution)
- est présent dans un des dossiers spécifiés dans la variable d'environnement
- PATH.
-
-
-
-
-
+
+
+
+
+
+ &reftitle.install;
+
+
+ Utiliser lors de la
+ compilation de PHP.
+
+
+
+ Les utilisateurs Windows doivent inclure php_pthreads.dll
+ dans le &php.ini;
+
+
+
+
+ Les utilisateurs de Windows doivent également s'assurer que
+ pthreadVC2.dll (inclus dans la distribution)
+ est présent dans un des dossiers spécifiés dans la variable d'environnement
+ PATH.
+
+
+
+
+
diff --git a/reference/radius/constants.xml b/reference/radius/constants.xml
index 3a902c5fa0..f3e6cb92f3 100644
--- a/reference/radius/constants.xml
+++ b/reference/radius/constants.xml
@@ -1,2004 +1,2004 @@
-
-
-
-
-
- &reftitle.constants;
- &extension.constants;
-
-
-
-
- RADIUS_MPPE_KEY_LEN
- (int)
-
-
-
- La longueur maximale des clés MPPE.
-
-
-
-
-
-
- RADIUS Options
-
-
- Plusieurs fonctions RADIUS acceptent des options sous forme de masque d'octets.
- Les constantes représentant ces options sont listées ci-dessous.
-
-
-
-
-
- RADIUS_OPTION_SALT
- (int)
-
-
-
- Lorsque définie, cette option fera que la valeur de l'attribut
- sera chiffré salt.
-
-
-
-
-
- RADIUS_OPTION_TAGGED
- (int)
-
-
-
- Lorsque définie, cette option fera que la valeur de l'attribut
- proviendra qu paramètre tag.
-
-
-
-
-
-
-
- Types de paquets RADIUS
-
-
- Les paquets RADIUS, qu'ils soient démandés ou obtenus en réponse, incluent
- toujours un type. Cette constante est fournie pour rendre plus simple
- la spécification d'un type lors de l'utilisation de la fonction
- radius_create_request, et lors d'une comparaison
- du résultat avec la fonction radius_send_request.
-
-
-
-
-
- RADIUS_ACCESS_REQUEST
- (int)
-
-
-
- Un Access-Request, utilisé pour authentifier un utilisateur
- sur un serveur RADIUS. Les paquets Access-Request doivent inclure
- un attribut RADIUS_NAS_IP_ADDRESS,
- ou un attribut RADIUS_NAS_IDENTIFIER
- mais aussi inclure un attribut RADIUS_USER_PASSWORD,
- et un attribut RADIUS_CHAP_PASSWORD
- ou bien un attribut RADIUS_STATE,
- et doivent inclure un attribut RADIUS_USER_NAME.
-
-
-
-
-
- RADIUS_ACCESS_ACCEPT
- (int)
-
-
-
- Une réponse Access-Accept à un paquet Access-Request indique que le serveur RADIUS
- a authentifié l'utilisateur avec succès.
-
-
-
-
-
- RADIUS_ACCESS_REJECT
- (int)
-
-
-
- Une réponse Access-Reject à un paquet Access-Request indique que le serveur RADIUS
- n'a pas réussi à authentifié l'utilisateur.
-
-
-
-
-
- RADIUS_ACCESS_CHALLENGE
- (int)
-
-
-
- Une réponse Access-Challenge à un paquet Access-Request indique que le serveur RADIUS
- requiert plus d'informations d'un autre paquet Access-Request avant d'authentifier
- l'utilisateur.
-
-
-
-
-
- RADIUS_ACCOUNTING_REQUEST
- (int)
-
-
-
- Une paquet Accounting-Request, utilisé pour transmettre des informations de
- comptabilité pour un service du serveur RADIUS.
-
-
-
-
-
- RADIUS_ACCOUNTING_RESPONSE
- (int)
-
-
-
- Une réponse Accounting-Response à un paquet Accounting-Request.
-
-
-
-
-
- RADIUS_COA_REQUEST
- (int)
-
-
-
- Un paquet CoA-Request, envoyé depuis un serveur RADIUS pour
- indiquer que les autorisations ont changé dans la session utilisateur.
- Une réponse doit être émise sous la forme d'un CoA-ACK ou d'un CoA-NAK.
-
-
- Cette constante est disponible depuis PECL radius 1.3.0 et suivants.
-
-
-
-
-
- RADIUS_COA_ACK
- (int)
-
-
-
- Un paquet CoA-ACK, envoyé au serveur RADIUS pour indiquer
- que les autorisations utilisateurs ont été mises à jour.
-
-
- Cette constante est disponible depuis PECL radius 1.3.0 et suivants.
-
-
-
-
-
- RADIUS_COA_NAK
- (int)
-
-
-
- Un paquet CoA-NAK, envoyé au serveur RADIUS pour indiquer que les autorisations
- utilisateurs n'ont pas pû être mises à jour.
-
-
- Cette constante est disponible depuis PECL radius 1.3.0 et suivants.
-
-
-
-
-
- RADIUS_DISCONNECT_REQUEST
- (int)
-
-
-
- Un paquet Disconnect-Request, envoyé depuis le serveur RADIUS pour indiquer
- que la session utilisateur doit être close.
-
-
- Cette constante est disponible depuis PECL radius 1.3.0 et suivants.
-
-
-
-
-
- RADIUS_DISCONNECT_ACK
- (int)
-
-
-
- Un paquet Disconnect-ACK, envoyé au serveur RADIUS pour indiquer que
- la session utilisateur s'est terminée.
-
-
- Cette constante est disponible depuis PECL radius 1.3.0 et suivants.
-
-
-
-
-
- RADIUS_DISCONNECT_NAK
- (int)
-
-
-
- Un paquet Disconnect-NAK, envoyé au serveur RADIUS pour indiquer
- que la session utilisateur n'a pas pu se terminer.
-
-
- Cette constante est disponible depuis PECL radius 1.3.0 et suivants.
-
-
-
-
-
-
-
- Types d'attribut RADIUS
-
-
- Ces constantes définissent des types d'attribut RADIUS qui peuvent être utilisées
- avec les fonctions radius_put_addr, radius_put_attr,
- radius_put_int et radius_put_string.
-
-
-
-
-
- RADIUS_USER_NAME
- (int)
-
-
-
- L'attribut User-Name. La valeur de l'attribut doit être une chaîne de
- caractères contenant le nom de l'utilisateur désirant s'authentifier,
- et peut être définie en utilisant la fonction radius_put_attr.
-
-
-
-
-
- RADIUS_USER_PASSWORD
- (int)
-
-
-
- L'attribut User-Password. La valeur de l'attribut doit être une chaîne
- de caractères contenant le mot de passe de l'utilisateur, et peut être
- définie en utilisant la fonction radius_put_attr.
- Cette valeur sera brouillée pendant la transmission tel que décrit à
- la section 5.2 de la RFC 2865.
-
-
-
-
-
- RADIUS_CHAP_PASSWORD
- (int)
-
-
-
- L'attribut Chap-Password. La valeur de l'attribut doit être une chaîne
- contenant le premier octet (qui est l'identifiant CHAP), puis la
- sous une sous-séquence de 16 octets contenant le hash MD5 de l'identifiant
- CHAP, le mot de passe en clair, et la valeur du challenge CHAP,
- le tout, concaténés. Notez que la valeur du challenge CHAP doit
- aussi être envoyé séparément dans l'attribut
- RADIUS_CHAP_CHALLENGE.
-
-
- Utilisation des mots de passe CHAP
-
-
-]]>
-
-
-
-
-
-
- RADIUS_NAS_IP_ADDRESS
- (int)
-
-
-
- L'attribut NAS-IP-Address. La valeur de l'attribut attendue est l'adresse
- IP du client RADIUS encodé sous la forme d'un entier, qui peut
- être définie en utilisant la fonction radius_put_addr.
-
-
-
-
-
- RADIUS_NAS_PORT
- (int)
-
-
-
- L'attribut NAS-Port. La valeur de l'attribut attendue est le port
- physique de l'utilisateur sur le client RADIUS, encodé sous la
- forme d'un entier, qui peut être définie en utilisant la fonction
- radius_put_int.
-
-
-
-
-
- RADIUS_SERVICE_TYPE
- (int)
-
-
-
- L'attribut Service-Type. La valeur de l'attribut indique le type
- de service que l'utilisateur requète, et doit être un entier,
- qui peut être défini en utilisant la fonction
- radius_put_int.
-
-
- Des constantes sont fournies pour représenter les valeurs possibles
- de cet attribut. Les voici :
-
- RADIUS_LOGIN
- RADIUS_FRAMED
- RADIUS_CALLBACK_LOGIN
- RADIUS_CALLBACK_FRAMED
- RADIUS_OUTBOUND
- RADIUS_ADMINISTRATIVE
- RADIUS_NAS_PROMPT
- RADIUS_AUTHENTICATE_ONLY
- RADIUS_CALLBACK_NAS_PROMPT
-
-
-
-
-
-
- RADIUS_FRAMED_PROTOCOL
- (int)
-
-
-
- L'attribut Framed-Protocol. La valeur de l'attribut attendue est
- un entier, indiquant le framing à utiliser pour l'accès, et peut être
- définie en utilisant la fonction radius_put_int.
- Les valeurs possibles pour cet attribut sont :
-
- RADIUS_PPP
- RADIUS_SLIP
- RADIUS_ARAP
- RADIUS_GANDALF
- RADIUS_XYLOGICS
-
-
-
-
-
-
- RADIUS_FRAMED_IP_ADDRESS
- (int)
-
-
-
- L'attribut Framed-IP-Address. La valeur attendue est une adresse
- du réseau utilisateur encodé sous la forme d'un entier,
- qui peut être définie en utilisant la fonction radius_put_addr
- et récupérée en utilisant la fonction radius_cvt_addr.
-
-
-
-
-
- RADIUS_FRAMED_IP_NETMASK
- (int)
-
-
-
- L'attribut Framed-IP-Netmask. La valeur attendue est un netmask
- du réseau utilisateur, encodé sous la forme d'un entier, qui
- peut être définie en utilisant la fonction radius_put_addr
- et récupérée en utilisant la fonction radius_cvt_addr.
-
-
-
-
-
- RADIUS_FRAMED_ROUTING
- (int)
-
-
-
- L'attribut Framed-Routing. La valeur attendue est un entier
- indiquant la méthode de routage pour l'utilisateur, qui peut
- être définie en utilisant la fonction radius_put_int.
-
-
- Valeurs possibles :
-
- 0 : Aucun routage
- 1 : Envoi des paquets de routage
- 2 : Ecoute des paquets de routage
- 3 : Envoi et écoute
-
-
-
-
-
-
- RADIUS_FILTER_ID
- (int)
-
-
-
- L'attribut Filter-ID. La valeur attendue est une implémentation
- spécifique, humainement lisible, de chaînes de filtres, qui
- peuvent être définies en utilisant la fonction
- radius_put_attr.
-
-
-
-
-
- RADIUS_FRAMED_MTU
- (int)
-
-
-
- L'attribut Framed-MTU. La valeur attendue est un entier, indiquant
- le MTU à configurer pour l'utilisateur, et peut être
- définie en utilisant la fonction radius_put_int.
-
-
-
-
-
- RADIUS_FRAMED_COMPRESSION
- (int)
-
-
-
- L'attribut Framed-Compression. La valeur attendue est un entier,
- indiquant le protocole de compression à utiliser, et peut être
- définie en utilisant la fonction radius_put_int.
- Valeurs possibles :
-
- RADIUS_COMP_NONE : Aucune compression
- RADIUS_COMP_VJ : Compression de l'en-tête VJ TCP/IP
- RADIUS_COMP_IPXHDR : Compression de l'en-tête IPX
-
- RADIUS_COMP_STAC_LZS : Compression Stac-LZS (ajouté en PECL radius 1.3.0b2)
-
-
-
-
-
-
-
- RADIUS_LOGIN_IP_HOST
- (int)
-
-
-
- L'attribut Login-IP-Host. La valeur attendue est l'adresse IP
- de connexion de l'utilisateur, encodée sous la forme d'un entier,
- qui peut être défini en utilisant la fonction
- radius_put_addr.
-
-
-
-
-
- RADIUS_LOGIN_SERVICE
- (int)
-
-
-
- L'attribut Login-Service. La valeur attendue est un entier indiquant
- le service sur lequel l'utilisateur se connecte sur l'hôte d'identification.
- La valeur peut être convertie en un entier PHP via la fonction
- radius_cvt_int.
-
-
-
-
-
- RADIUS_LOGIN_TCP_PORT
- (int)
-
-
-
- L'attribut Login-TCP-Port. La valeur attendue est un entier indiquant
- le port sur lequel l'utilisateur se connecte sur l'hôte d'identification.
- La valeur peut être convertie en un entier PHP via la fonction
- radius_cvt_int.
-
-
-
-
-
- RADIUS_REPLY_MESSAGE
- (int)
-
-
-
- L'attribut Reply-Message. La valeur attendue est une chaîne de caractères
- contenant un texte qui peut être affiché à l'utilisateur en réponse
- à une requête d'accès.
-
-
-
-
-
- RADIUS_CALLBACK_NUMBER
- (int)
-
-
-
- L'attribut Callback-Number. La valeur attendue est une chaîne de
- caractères contenant la chaîne de numérotation à utiliser pour
- la fonction de rappel.
-
-
-
-
-
- RADIUS_CALLBACK_ID
- (int)
-
-
-
- L'attribut Callback-Id. La valeur attendue est une chaîne contenant
- le nom de l'implémentation spécifique de la place à appeler.
-
-
-
-
-
- RADIUS_FRAMED_ROUTE
- (int)
-
-
-
- L'attribut Framed-Route. La valeur attendue est une chaîne
- contenant un jeu de routes d'implémentation spécifique à configurer
- pour l'utilisateur.
-
-
-
-
-
- RADIUS_FRAMED_IPX_NETWORK
- (int)
-
-
-
- L'attribut Framed-IPX-Network. La valeur attendue est un entier
- contenant le réseau IPX à configurer pour l'utilisateur, ou
- 0xFFFFFFFE pour indiquer que le client RADIUS doit sélectionner
- le réseau, et peut être accédé via la fonction
- radius_cvt_int.
-
-
-
-
-
- RADIUS_STATE
- (int)
-
-
-
- L'attribut State. La valeur attendue est une chaîne contenant
- l'implémentation définie incluse dans un Access-Challenge depuis
- un serveur qui doit être inclus dans la sous-séquence Access-Request,
- et peut être défini en utilisant la fonction
- radius_put_attr.
-
-
-
-
-
- RADIUS_CLASS
- (int)
-
-
-
- L'attribut Class. La valeur attendue est une chaîne arbitraire incluant
- le message d'un Access-Accept qui doit être envoyé au serveur de comptes
- dans les messages Accounting-Request, et peut être défini via la fonction
- radius_put_attr.
-
-
-
-
-
- RADIUS_VENDOR_SPECIFIC
- (int)
-
-
-
- L'attribut Vendor-Specific. En général, les valeurs de l'attribut du vendeur
- doivent être définies en utilisant les fonctions
- radius_put_vendor_addr,
- radius_put_vendor_attr,
- radius_put_vendor_int et
- radius_put_vendor_string, plutôt que directement.
-
-
- Cette constante est utile lors de l'interprétation des attributs
- spécifiques du vendeur dans les réponses d'un serveur RADIUS ; lorsqu'un
- attribut spécifique du vendeur est reçu, la fonction
- radius_get_vendor_attr doit être utilisée pour
- accéder à l'identifiant du vendeur, le type d'attribut et la valeur de l'attribut.
-
-
-
-
-
- RADIUS_SESSION_TIMEOUT
- (int)
-
-
-
- Timeout de la session
-
-
-
-
-
- RADIUS_IDLE_TIMEOUT
- (int)
-
-
-
- Durée d'expiration
-
-
-
-
-
- RADIUS_TERMINATION_ACTION
- (int)
-
-
-
- Action de termination
-
-
-
-
-
- RADIUS_CALLED_STATION_ID
- (int)
-
-
-
- Identifiant de la station appelée
-
-
-
-
-
- RADIUS_CALLING_STATION_ID
- (int)
-
-
-
- Identifiant de la station appelant
-
-
-
-
-
- RADIUS_NAS_IDENTIFIER
- (int)
-
-
-
- Identifiant NAS
-
-
-
-
-
- RADIUS_PROXY_STATE
- (int)
-
-
-
- Statut du Proxy
-
-
-
-
-
- RADIUS_LOGIN_LAT_SERVICE
- (int)
-
-
-
- Service d'identification LAT
-
-
-
-
-
- RADIUS_LOGIN_LAT_NODE
- (int)
-
-
-
- Noeud d'identification LAT
-
-
-
-
-
- RADIUS_LOGIN_LAT_GROUP
- (int)
-
-
-
- Groupe d'identification LAT
-
-
-
-
-
- RADIUS_FRAMED_APPLETALK_LINK
- (int)
-
-
-
- Lien framé Appletalk
-
-
-
-
-
- RADIUS_FRAMED_APPLETALK_NETWORK
- (int)
-
-
-
- Réseau framé Appletalk
-
-
-
-
-
- RADIUS_FRAMED_APPLETALK_ZONE
- (int)
-
-
-
- Zone framé Appletalk
-
-
-
-
-
- RADIUS_CHAP_CHALLENGE
- (int)
-
-
-
- Challenge
-
-
-
-
-
- RADIUS_NAS_PORT_TYPE
- (int)
-
-
-
- Type du port NAS :
-
- RADIUS_ASYNC
- RADIUS_SYNC
- RADIUS_ISDN_SYNC
- RADIUS_ISDN_ASYNC_V120
- RADIUS_ISDN_ASYNC_V110
- RADIUS_VIRTUAL
- RADIUS_PIAFS
- RADIUS_HDLC_CLEAR_CHANNEL
- RADIUS_X_25
- RADIUS_X_75
- RADIUS_G_3_FAX
- RADIUS_SDSL
- RADIUS_ADSL_CAP
- RADIUS_ADSL_DMT
- RADIUS_IDSL
- RADIUS_ETHERNET
- RADIUS_XDSL
- RADIUS_CABLE
- RADIUS_WIRELESS_OTHER
- RADIUS_WIRELESS_IEEE_802_11
-
-
-
-
-
-
- RADIUS_PORT_LIMIT
- (int)
-
-
-
- Limite du port
-
-
-
-
-
- RADIUS_LOGIN_LAT_PORT
- (int)
-
-
-
- Port d'identification LAT
-
-
-
-
-
- RADIUS_CONNECT_INFO
- (int)
-
-
-
- Information de connexion
-
-
-
-
-
- RADIUS_ACCT_STATUS_TYPE
- (int)
-
-
-
- Type de statut du compte :
-
- RADIUS_START
- RADIUS_STOP
- RADIUS_ACCOUNTING_ON
- RADIUS_ACCOUNTING_OFF
-
-
-
-
-
-
- RADIUS_ACCT_DELAY_TIME
- (int)
-
-
-
- Délai maximal d'identification
-
-
-
-
-
- RADIUS_ACCT_INPUT_OCTETS
- (int)
-
-
-
- Octets d'entrée d'identification
-
-
-
-
-
- RADIUS_ACCT_OUTPUT_OCTETS
- (int)
-
-
-
- Octets de sortie d'identification
-
-
-
-
-
- RADIUS_ACCT_SESSION_ID
- (int)
-
-
-
- Identifiant de session d'identification
-
-
-
-
-
- RADIUS_ACCT_AUTHENTIC
- (int)
-
-
-
- Identification authentique, un parmi :
-
- RADIUS_AUTH_RADIUS
- RADIUS_AUTH_LOCAL
- RADIUS_AUTH_REMOTE
-
-
-
-
-
-
- RADIUS_ACCT_SESSION_TIME
- (int)
-
-
-
- Durée de la session d'identification
-
-
-
-
-
- RADIUS_ACCT_INPUT_PACKETS
- (int)
-
-
-
- Paquets d'entrée d'identification
-
-
-
-
-
- RADIUS_ACCT_OUTPUT_PACKETS
- (int)
-
-
-
- Paquets de sortie d'identification
-
-
-
-
-
- RADIUS_ACCT_TERMINATE_CAUSE
- (int)
-
-
-
- Cause de la fin de l'identification, un parmi :
-
- RADIUS_TERM_USER_REQUEST
- RADIUS_TERM_LOST_CARRIER
- RADIUS_TERM_LOST_SERVICE
- RADIUS_TERM_IDLE_TIMEOUT
- RADIUS_TERM_SESSION_TIMEOUT
- RADIUS_TERM_ADMIN_RESET
- RADIUS_TERM_ADMIN_REBOOT
- RADIUS_TERM_PORT_ERROR
- RADIUS_TERM_NAS_ERROR
- RADIUS_TERM_NAS_REQUEST
- RADIUS_TERM_NAS_REBOOT
- RADIUS_TERM_PORT_UNNEEDED
- RADIUS_TERM_PORT_PREEMPTED
- RADIUS_TERM_PORT_SUSPENDED
- RADIUS_TERM_SERVICE_UNAVAILABLE
- RADIUS_TERM_CALLBACK
- RADIUS_TERM_USER_ERROR
- RADIUS_TERM_HOST_REQUEST
-
-
-
-
-
-
- RADIUS_ACCT_MULTI_SESSION_ID
- (int)
-
-
-
- Identifiant d'une session multiple d'identification
-
-
-
-
-
- RADIUS_ACCT_LINK_COUNT
- (int)
-
-
-
- Nombre de liens d'identification
-
-
-
-
-
- Constantes de type de service
-
-
- RADIUS_LOGIN
-
-
-
-
-
-
-
-
- RADIUS_FRAMED
-
-
-
-
-
-
-
-
- RADIUS_CALLBACK_LOGIN
-
-
-
-
-
-
-
-
- RADIUS_CALLBACK_FRAMED
-
-
-
-
-
-
-
-
- RADIUS_OUTBOUND
-
-
-
-
-
-
-
-
- RADIUS_ADMINISTRATIVE
-
-
-
-
-
-
-
-
- RADIUS_NAS_PROMPT
-
-
-
-
-
-
-
-
- RADIUS_AUTHENTICATE_ONLY
-
-
-
-
-
-
-
-
- RADIUS_CALLBACK_NAS_PROMPT
-
-
-
-
-
-
-
-
-
- Framed-Protocol Constants
-
-
- RADIUS_PPP
-
-
-
-
-
-
-
-
- RADIUS_SLIP
-
-
-
-
-
-
-
-
- RADIUS_ARAP
-
-
-
-
-
-
-
-
- RADIUS_GANDALF
-
-
-
-
-
-
-
-
- RADIUS_XYLOGICS
-
-
-
-
-
-
-
-
-
- Framed-Compression Constants
-
-
- RADIUS_COMP_NONE
-
-
-
-
-
-
-
-
- RADIUS_COMP_VJ
-
-
-
-
-
-
-
-
- RADIUS_COMP_IPXHDR
-
-
-
-
-
-
-
-
- RADIUS_COMP_STAC_LZS
-
-
-
-
-
-
-
-
-
- NAS Port Type Constants
-
-
- RADIUS_ASYNC
-
-
-
-
-
-
-
-
- RADIUS_SYNC
-
-
-
-
-
-
-
-
- RADIUS_ISDN_SYNC
-
-
-
-
-
-
-
-
- RADIUS_ISDN_ASYNC_V120
-
-
-
-
-
-
-
-
- RADIUS_ISDN_ASYNC_V110
-
-
-
-
-
-
-
-
- RADIUS_VIRTUAL
-
-
-
-
-
-
-
-
- RADIUS_PIAFS
-
-
-
-
-
-
-
-
- RADIUS_HDLC_CLEAR_CHANNEL
-
-
-
-
-
-
-
-
- RADIUS_X_25
-
-
-
-
-
-
-
-
- RADIUS_X_75
-
-
-
-
-
-
-
-
- RADIUS_G_3_FAX
-
-
-
-
-
-
-
-
- RADIUS_SDSL
-
-
-
-
-
-
-
-
- RADIUS_ADSL_CAP
-
-
-
-
-
-
-
-
- RADIUS_ADSL_DMT
-
-
-
-
-
-
-
-
- RADIUS_IDSL
-
-
-
-
-
-
-
-
- RADIUS_ETHERNET
-
-
-
-
-
-
-
-
- RADIUS_XDSL
-
-
-
-
-
-
-
-
- RADIUS_CABLE
-
-
-
-
-
-
-
-
- RADIUS_WIRELESS_OTHER
-
-
-
-
-
-
-
-
- RADIUS_WIRELESS_IEEE_802_11
-
-
-
-
-
-
-
-
-
- Accounting Status Type Constants
-
-
- RADIUS_START
-
-
-
-
-
-
-
-
- RADIUS_STOP
-
-
-
-
-
-
-
-
- RADIUS_ACCOUNTING_ON
-
-
-
-
-
-
-
-
- RADIUS_ACCOUNTING_OFF
-
-
-
-
-
-
-
-
-
- Accounting Authentic Constants
-
-
- RADIUS_AUTH_RADIUS
-
-
-
-
-
-
-
-
- RADIUS_AUTH_LOCAL
-
-
-
-
-
-
-
-
- RADIUS_AUTH_REMOTE
-
-
-
-
-
-
-
-
-
- Accounting Terminate Cause Constants
-
-
- RADIUS_TERM_USER_REQUEST
-
-
-
-
-
-
-
-
- RADIUS_TERM_LOST_CARRIER
-
-
-
-
-
-
-
-
- RADIUS_TERM_LOST_SERVICE
-
-
-
-
-
-
-
-
- RADIUS_TERM_IDLE_TIMEOUT
-
-
-
-
-
-
-
-
- RADIUS_TERM_SESSION_TIMEOUT
-
-
-
-
-
-
-
-
- RADIUS_TERM_ADMIN_RESET
-
-
-
-
-
-
-
-
- RADIUS_TERM_ADMIN_REBOOT
-
-
-
-
-
-
-
-
- RADIUS_TERM_PORT_ERROR
-
-
-
-
-
-
-
-
- RADIUS_TERM_NAS_ERROR
-
-
-
-
-
-
-
-
- RADIUS_TERM_NAS_REQUEST
-
-
-
-
-
-
-
-
- RADIUS_TERM_NAS_REBOOT
-
-
-
-
-
-
-
-
- RADIUS_TERM_PORT_UNNEEDED
-
-
-
-
-
-
-
-
- RADIUS_TERM_PORT_PREEMPTED
-
-
-
-
-
-
-
-
- RADIUS_TERM_PORT_SUSPENDED
-
-
-
-
-
-
-
-
- RADIUS_TERM_SERVICE_UNAVAILABLE
-
-
-
-
-
-
-
-
- RADIUS_TERM_CALLBACK
-
-
-
-
-
-
-
-
- RADIUS_TERM_USER_ERROR
-
-
-
-
-
-
-
-
- RADIUS_TERM_HOST_REQUEST
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_CHAP_RESPONSE
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_CHAP_ERROR
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_CHAP_PW_1
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_CHAP_PW_2
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_CHAP_LM_ENC_PW
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_CHAP_NT_ENC_PW
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_MPPE_ENCRYPTION_POLICY
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_MPPE_ENCRYPTION_TYPES
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_RAS_VENDOR
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_CHAP_DOMAIN
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_CHAP_CHALLENGE
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_CHAP_MPPE_KEYS
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_BAP_USAGE
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_LINK_UTILIZATION_THRESHOLD
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_LINK_DROP_TIME_LIMIT
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_MPPE_SEND_KEY
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_MPPE_RECV_KEY
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_RAS_VERSION
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_OLD_ARAP_PASSWORD
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_NEW_ARAP_PASSWORD
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_ARAP_PASSWORD_CHANGE_REASON
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_FILTER
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_ACCT_AUTH_TYPE
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_ACCT_EAP_TYPE
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_CHAP2_RESPONSE
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_CHAP2_SUCCESS
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_CHAP2_PW
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_PRIMARY_DNS_SERVER
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_SECONDARY_DNS_SERVER
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_PRIMARY_NBNS_SERVER
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_SECONDARY_NBNS_SERVER
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_ARAP_CHALLENGE
-
-
-
-
-
-
-
-
-
-
- Types d'attribut RADIUS spécifique au vendeur
-
-
-
-
- RADIUS_VENDOR_MICROSOFT
- (int)
-
-
-
- Attributs spécifiques à Microsoft (RFC 2548) :
-
- RADIUS_MICROSOFT_MS_CHAP_RESPONSE
- RADIUS_MICROSOFT_MS_CHAP_ERROR
- RADIUS_MICROSOFT_MS_CHAP_PW_1
- RADIUS_MICROSOFT_MS_CHAP_PW_2
- RADIUS_MICROSOFT_MS_CHAP_LM_ENC_PW
- RADIUS_MICROSOFT_MS_CHAP_NT_ENC_PW
- RADIUS_MICROSOFT_MS_MPPE_ENCRYPTION_POLICY
- RADIUS_MICROSOFT_MS_MPPE_ENCRYPTION_TYPES
- RADIUS_MICROSOFT_MS_RAS_VENDOR
- RADIUS_MICROSOFT_MS_CHAP_DOMAIN
- RADIUS_MICROSOFT_MS_CHAP_CHALLENGE
- RADIUS_MICROSOFT_MS_CHAP_MPPE_KEYS
- RADIUS_MICROSOFT_MS_BAP_USAGE
- RADIUS_MICROSOFT_MS_LINK_UTILIZATION_THRESHOLD
- RADIUS_MICROSOFT_MS_LINK_DROP_TIME_LIMIT
- RADIUS_MICROSOFT_MS_MPPE_SEND_KEY
- RADIUS_MICROSOFT_MS_MPPE_RECV_KEY
- RADIUS_MICROSOFT_MS_RAS_VERSION
- RADIUS_MICROSOFT_MS_OLD_ARAP_PASSWORD
- RADIUS_MICROSOFT_MS_NEW_ARAP_PASSWORD
- RADIUS_MICROSOFT_MS_ARAP_PASSWORD_CHANGE_REASON
- RADIUS_MICROSOFT_MS_FILTER
- RADIUS_MICROSOFT_MS_ACCT_AUTH_TYPE
- RADIUS_MICROSOFT_MS_ACCT_EAP_TYPE
- RADIUS_MICROSOFT_MS_CHAP2_RESPONSE
- RADIUS_MICROSOFT_MS_CHAP2_SUCCESS
- RADIUS_MICROSOFT_MS_CHAP2_PW
- RADIUS_MICROSOFT_MS_PRIMARY_DNS_SERVER
- RADIUS_MICROSOFT_MS_SECONDARY_DNS_SERVER
- RADIUS_MICROSOFT_MS_PRIMARY_NBNS_SERVER
- RADIUS_MICROSOFT_MS_SECONDARY_NBNS_SERVER
- RADIUS_MICROSOFT_MS_ARAP_CHALLENGE
-
-
-
-
-
-
-
-
+
+
+
+
+
+ &reftitle.constants;
+ &extension.constants;
+
+
+
+
+ RADIUS_MPPE_KEY_LEN
+ (int)
+
+
+
+ La longueur maximale des clés MPPE.
+
+
+
+
+
+
+ RADIUS Options
+
+
+ Plusieurs fonctions RADIUS acceptent des options sous forme de masque d'octets.
+ Les constantes représentant ces options sont listées ci-dessous.
+
+
+
+
+
+ RADIUS_OPTION_SALT
+ (int)
+
+
+
+ Lorsque définie, cette option fera que la valeur de l'attribut
+ sera chiffré salt.
+
+
+
+
+
+ RADIUS_OPTION_TAGGED
+ (int)
+
+
+
+ Lorsque définie, cette option fera que la valeur de l'attribut
+ proviendra qu paramètre tag.
+
+
+
+
+
+
+
+ Types de paquets RADIUS
+
+
+ Les paquets RADIUS, qu'ils soient démandés ou obtenus en réponse, incluent
+ toujours un type. Cette constante est fournie pour rendre plus simple
+ la spécification d'un type lors de l'utilisation de la fonction
+ radius_create_request, et lors d'une comparaison
+ du résultat avec la fonction radius_send_request.
+
+
+
+
+
+ RADIUS_ACCESS_REQUEST
+ (int)
+
+
+
+ Un Access-Request, utilisé pour authentifier un utilisateur
+ sur un serveur RADIUS. Les paquets Access-Request doivent inclure
+ un attribut RADIUS_NAS_IP_ADDRESS,
+ ou un attribut RADIUS_NAS_IDENTIFIER
+ mais aussi inclure un attribut RADIUS_USER_PASSWORD,
+ et un attribut RADIUS_CHAP_PASSWORD
+ ou bien un attribut RADIUS_STATE,
+ et doivent inclure un attribut RADIUS_USER_NAME.
+
+
+
+
+
+ RADIUS_ACCESS_ACCEPT
+ (int)
+
+
+
+ Une réponse Access-Accept à un paquet Access-Request indique que le serveur RADIUS
+ a authentifié l'utilisateur avec succès.
+
+
+
+
+
+ RADIUS_ACCESS_REJECT
+ (int)
+
+
+
+ Une réponse Access-Reject à un paquet Access-Request indique que le serveur RADIUS
+ n'a pas réussi à authentifié l'utilisateur.
+
+
+
+
+
+ RADIUS_ACCESS_CHALLENGE
+ (int)
+
+
+
+ Une réponse Access-Challenge à un paquet Access-Request indique que le serveur RADIUS
+ requiert plus d'informations d'un autre paquet Access-Request avant d'authentifier
+ l'utilisateur.
+
+
+
+
+
+ RADIUS_ACCOUNTING_REQUEST
+ (int)
+
+
+
+ Une paquet Accounting-Request, utilisé pour transmettre des informations de
+ comptabilité pour un service du serveur RADIUS.
+
+
+
+
+
+ RADIUS_ACCOUNTING_RESPONSE
+ (int)
+
+
+
+ Une réponse Accounting-Response à un paquet Accounting-Request.
+
+
+
+
+
+ RADIUS_COA_REQUEST
+ (int)
+
+
+
+ Un paquet CoA-Request, envoyé depuis un serveur RADIUS pour
+ indiquer que les autorisations ont changé dans la session utilisateur.
+ Une réponse doit être émise sous la forme d'un CoA-ACK ou d'un CoA-NAK.
+
+
+ Cette constante est disponible depuis PECL radius 1.3.0 et suivants.
+
+
+
+
+
+ RADIUS_COA_ACK
+ (int)
+
+
+
+ Un paquet CoA-ACK, envoyé au serveur RADIUS pour indiquer
+ que les autorisations utilisateurs ont été mises à jour.
+
+
+ Cette constante est disponible depuis PECL radius 1.3.0 et suivants.
+
+
+
+
+
+ RADIUS_COA_NAK
+ (int)
+
+
+
+ Un paquet CoA-NAK, envoyé au serveur RADIUS pour indiquer que les autorisations
+ utilisateurs n'ont pas pû être mises à jour.
+
+
+ Cette constante est disponible depuis PECL radius 1.3.0 et suivants.
+
+
+
+
+
+ RADIUS_DISCONNECT_REQUEST
+ (int)
+
+
+
+ Un paquet Disconnect-Request, envoyé depuis le serveur RADIUS pour indiquer
+ que la session utilisateur doit être close.
+
+
+ Cette constante est disponible depuis PECL radius 1.3.0 et suivants.
+
+
+
+
+
+ RADIUS_DISCONNECT_ACK
+ (int)
+
+
+
+ Un paquet Disconnect-ACK, envoyé au serveur RADIUS pour indiquer que
+ la session utilisateur s'est terminée.
+
+
+ Cette constante est disponible depuis PECL radius 1.3.0 et suivants.
+
+
+
+
+
+ RADIUS_DISCONNECT_NAK
+ (int)
+
+
+
+ Un paquet Disconnect-NAK, envoyé au serveur RADIUS pour indiquer
+ que la session utilisateur n'a pas pu se terminer.
+
+
+ Cette constante est disponible depuis PECL radius 1.3.0 et suivants.
+
+
+
+
+
+
+
+ Types d'attribut RADIUS
+
+
+ Ces constantes définissent des types d'attribut RADIUS qui peuvent être utilisées
+ avec les fonctions radius_put_addr, radius_put_attr,
+ radius_put_int et radius_put_string.
+
+
+
+
+
+ RADIUS_USER_NAME
+ (int)
+
+
+
+ L'attribut User-Name. La valeur de l'attribut doit être une chaîne de
+ caractères contenant le nom de l'utilisateur désirant s'authentifier,
+ et peut être définie en utilisant la fonction radius_put_attr.
+
+
+
+
+
+ RADIUS_USER_PASSWORD
+ (int)
+
+
+
+ L'attribut User-Password. La valeur de l'attribut doit être une chaîne
+ de caractères contenant le mot de passe de l'utilisateur, et peut être
+ définie en utilisant la fonction radius_put_attr.
+ Cette valeur sera brouillée pendant la transmission tel que décrit à
+ la section 5.2 de la RFC 2865.
+
+
+
+
+
+ RADIUS_CHAP_PASSWORD
+ (int)
+
+
+
+ L'attribut Chap-Password. La valeur de l'attribut doit être une chaîne
+ contenant le premier octet (qui est l'identifiant CHAP), puis la
+ sous une sous-séquence de 16 octets contenant le hash MD5 de l'identifiant
+ CHAP, le mot de passe en clair, et la valeur du challenge CHAP,
+ le tout, concaténés. Notez que la valeur du challenge CHAP doit
+ aussi être envoyé séparément dans l'attribut
+ RADIUS_CHAP_CHALLENGE.
+
+
+ Utilisation des mots de passe CHAP
+
+
+]]>
+
+
+
+
+
+
+ RADIUS_NAS_IP_ADDRESS
+ (int)
+
+
+
+ L'attribut NAS-IP-Address. La valeur de l'attribut attendue est l'adresse
+ IP du client RADIUS encodé sous la forme d'un entier, qui peut
+ être définie en utilisant la fonction radius_put_addr.
+
+
+
+
+
+ RADIUS_NAS_PORT
+ (int)
+
+
+
+ L'attribut NAS-Port. La valeur de l'attribut attendue est le port
+ physique de l'utilisateur sur le client RADIUS, encodé sous la
+ forme d'un entier, qui peut être définie en utilisant la fonction
+ radius_put_int.
+
+
+
+
+
+ RADIUS_SERVICE_TYPE
+ (int)
+
+
+
+ L'attribut Service-Type. La valeur de l'attribut indique le type
+ de service que l'utilisateur requète, et doit être un entier,
+ qui peut être défini en utilisant la fonction
+ radius_put_int.
+
+
+ Des constantes sont fournies pour représenter les valeurs possibles
+ de cet attribut. Les voici :
+
+ RADIUS_LOGIN
+ RADIUS_FRAMED
+ RADIUS_CALLBACK_LOGIN
+ RADIUS_CALLBACK_FRAMED
+ RADIUS_OUTBOUND
+ RADIUS_ADMINISTRATIVE
+ RADIUS_NAS_PROMPT
+ RADIUS_AUTHENTICATE_ONLY
+ RADIUS_CALLBACK_NAS_PROMPT
+
+
+
+
+
+
+ RADIUS_FRAMED_PROTOCOL
+ (int)
+
+
+
+ L'attribut Framed-Protocol. La valeur de l'attribut attendue est
+ un entier, indiquant le framing à utiliser pour l'accès, et peut être
+ définie en utilisant la fonction radius_put_int.
+ Les valeurs possibles pour cet attribut sont :
+
+ RADIUS_PPP
+ RADIUS_SLIP
+ RADIUS_ARAP
+ RADIUS_GANDALF
+ RADIUS_XYLOGICS
+
+
+
+
+
+
+ RADIUS_FRAMED_IP_ADDRESS
+ (int)
+
+
+
+ L'attribut Framed-IP-Address. La valeur attendue est une adresse
+ du réseau utilisateur encodé sous la forme d'un entier,
+ qui peut être définie en utilisant la fonction radius_put_addr
+ et récupérée en utilisant la fonction radius_cvt_addr.
+
+
+
+
+
+ RADIUS_FRAMED_IP_NETMASK
+ (int)
+
+
+
+ L'attribut Framed-IP-Netmask. La valeur attendue est un netmask
+ du réseau utilisateur, encodé sous la forme d'un entier, qui
+ peut être définie en utilisant la fonction radius_put_addr
+ et récupérée en utilisant la fonction radius_cvt_addr.
+
+
+
+
+
+ RADIUS_FRAMED_ROUTING
+ (int)
+
+
+
+ L'attribut Framed-Routing. La valeur attendue est un entier
+ indiquant la méthode de routage pour l'utilisateur, qui peut
+ être définie en utilisant la fonction radius_put_int.
+
+
+ Valeurs possibles :
+
+ 0 : Aucun routage
+ 1 : Envoi des paquets de routage
+ 2 : Ecoute des paquets de routage
+ 3 : Envoi et écoute
+
+
+
+
+
+
+ RADIUS_FILTER_ID
+ (int)
+
+
+
+ L'attribut Filter-ID. La valeur attendue est une implémentation
+ spécifique, humainement lisible, de chaînes de filtres, qui
+ peuvent être définies en utilisant la fonction
+ radius_put_attr.
+
+
+
+
+
+ RADIUS_FRAMED_MTU
+ (int)
+
+
+
+ L'attribut Framed-MTU. La valeur attendue est un entier, indiquant
+ le MTU à configurer pour l'utilisateur, et peut être
+ définie en utilisant la fonction radius_put_int.
+
+
+
+
+
+ RADIUS_FRAMED_COMPRESSION
+ (int)
+
+
+
+ L'attribut Framed-Compression. La valeur attendue est un entier,
+ indiquant le protocole de compression à utiliser, et peut être
+ définie en utilisant la fonction radius_put_int.
+ Valeurs possibles :
+
+ RADIUS_COMP_NONE : Aucune compression
+ RADIUS_COMP_VJ : Compression de l'en-tête VJ TCP/IP
+ RADIUS_COMP_IPXHDR : Compression de l'en-tête IPX
+
+ RADIUS_COMP_STAC_LZS : Compression Stac-LZS (ajouté en PECL radius 1.3.0b2)
+
+
+
+
+
+
+
+ RADIUS_LOGIN_IP_HOST
+ (int)
+
+
+
+ L'attribut Login-IP-Host. La valeur attendue est l'adresse IP
+ de connexion de l'utilisateur, encodée sous la forme d'un entier,
+ qui peut être défini en utilisant la fonction
+ radius_put_addr.
+
+
+
+
+
+ RADIUS_LOGIN_SERVICE
+ (int)
+
+
+
+ L'attribut Login-Service. La valeur attendue est un entier indiquant
+ le service sur lequel l'utilisateur se connecte sur l'hôte d'identification.
+ La valeur peut être convertie en un entier PHP via la fonction
+ radius_cvt_int.
+
+
+
+
+
+ RADIUS_LOGIN_TCP_PORT
+ (int)
+
+
+
+ L'attribut Login-TCP-Port. La valeur attendue est un entier indiquant
+ le port sur lequel l'utilisateur se connecte sur l'hôte d'identification.
+ La valeur peut être convertie en un entier PHP via la fonction
+ radius_cvt_int.
+
+
+
+
+
+ RADIUS_REPLY_MESSAGE
+ (int)
+
+
+
+ L'attribut Reply-Message. La valeur attendue est une chaîne de caractères
+ contenant un texte qui peut être affiché à l'utilisateur en réponse
+ à une requête d'accès.
+
+
+
+
+
+ RADIUS_CALLBACK_NUMBER
+ (int)
+
+
+
+ L'attribut Callback-Number. La valeur attendue est une chaîne de
+ caractères contenant la chaîne de numérotation à utiliser pour
+ la fonction de rappel.
+
+
+
+
+
+ RADIUS_CALLBACK_ID
+ (int)
+
+
+
+ L'attribut Callback-Id. La valeur attendue est une chaîne contenant
+ le nom de l'implémentation spécifique de la place à appeler.
+
+
+
+
+
+ RADIUS_FRAMED_ROUTE
+ (int)
+
+
+
+ L'attribut Framed-Route. La valeur attendue est une chaîne
+ contenant un jeu de routes d'implémentation spécifique à configurer
+ pour l'utilisateur.
+
+
+
+
+
+ RADIUS_FRAMED_IPX_NETWORK
+ (int)
+
+
+
+ L'attribut Framed-IPX-Network. La valeur attendue est un entier
+ contenant le réseau IPX à configurer pour l'utilisateur, ou
+ 0xFFFFFFFE pour indiquer que le client RADIUS doit sélectionner
+ le réseau, et peut être accédé via la fonction
+ radius_cvt_int.
+
+
+
+
+
+ RADIUS_STATE
+ (int)
+
+
+
+ L'attribut State. La valeur attendue est une chaîne contenant
+ l'implémentation définie incluse dans un Access-Challenge depuis
+ un serveur qui doit être inclus dans la sous-séquence Access-Request,
+ et peut être défini en utilisant la fonction
+ radius_put_attr.
+
+
+
+
+
+ RADIUS_CLASS
+ (int)
+
+
+
+ L'attribut Class. La valeur attendue est une chaîne arbitraire incluant
+ le message d'un Access-Accept qui doit être envoyé au serveur de comptes
+ dans les messages Accounting-Request, et peut être défini via la fonction
+ radius_put_attr.
+
+
+
+
+
+ RADIUS_VENDOR_SPECIFIC
+ (int)
+
+
+
+ L'attribut Vendor-Specific. En général, les valeurs de l'attribut du vendeur
+ doivent être définies en utilisant les fonctions
+ radius_put_vendor_addr,
+ radius_put_vendor_attr,
+ radius_put_vendor_int et
+ radius_put_vendor_string, plutôt que directement.
+
+
+ Cette constante est utile lors de l'interprétation des attributs
+ spécifiques du vendeur dans les réponses d'un serveur RADIUS ; lorsqu'un
+ attribut spécifique du vendeur est reçu, la fonction
+ radius_get_vendor_attr doit être utilisée pour
+ accéder à l'identifiant du vendeur, le type d'attribut et la valeur de l'attribut.
+
+
+
+
+
+ RADIUS_SESSION_TIMEOUT
+ (int)
+
+
+
+ Timeout de la session
+
+
+
+
+
+ RADIUS_IDLE_TIMEOUT
+ (int)
+
+
+
+ Durée d'expiration
+
+
+
+
+
+ RADIUS_TERMINATION_ACTION
+ (int)
+
+
+
+ Action de termination
+
+
+
+
+
+ RADIUS_CALLED_STATION_ID
+ (int)
+
+
+
+ Identifiant de la station appelée
+
+
+
+
+
+ RADIUS_CALLING_STATION_ID
+ (int)
+
+
+
+ Identifiant de la station appelant
+
+
+
+
+
+ RADIUS_NAS_IDENTIFIER
+ (int)
+
+
+
+ Identifiant NAS
+
+
+
+
+
+ RADIUS_PROXY_STATE
+ (int)
+
+
+
+ Statut du Proxy
+
+
+
+
+
+ RADIUS_LOGIN_LAT_SERVICE
+ (int)
+
+
+
+ Service d'identification LAT
+
+
+
+
+
+ RADIUS_LOGIN_LAT_NODE
+ (int)
+
+
+
+ Noeud d'identification LAT
+
+
+
+
+
+ RADIUS_LOGIN_LAT_GROUP
+ (int)
+
+
+
+ Groupe d'identification LAT
+
+
+
+
+
+ RADIUS_FRAMED_APPLETALK_LINK
+ (int)
+
+
+
+ Lien framé Appletalk
+
+
+
+
+
+ RADIUS_FRAMED_APPLETALK_NETWORK
+ (int)
+
+
+
+ Réseau framé Appletalk
+
+
+
+
+
+ RADIUS_FRAMED_APPLETALK_ZONE
+ (int)
+
+
+
+ Zone framé Appletalk
+
+
+
+
+
+ RADIUS_CHAP_CHALLENGE
+ (int)
+
+
+
+ Challenge
+
+
+
+
+
+ RADIUS_NAS_PORT_TYPE
+ (int)
+
+
+
+ Type du port NAS :
+
+ RADIUS_ASYNC
+ RADIUS_SYNC
+ RADIUS_ISDN_SYNC
+ RADIUS_ISDN_ASYNC_V120
+ RADIUS_ISDN_ASYNC_V110
+ RADIUS_VIRTUAL
+ RADIUS_PIAFS
+ RADIUS_HDLC_CLEAR_CHANNEL
+ RADIUS_X_25
+ RADIUS_X_75
+ RADIUS_G_3_FAX
+ RADIUS_SDSL
+ RADIUS_ADSL_CAP
+ RADIUS_ADSL_DMT
+ RADIUS_IDSL
+ RADIUS_ETHERNET
+ RADIUS_XDSL
+ RADIUS_CABLE
+ RADIUS_WIRELESS_OTHER
+ RADIUS_WIRELESS_IEEE_802_11
+
+
+
+
+
+
+ RADIUS_PORT_LIMIT
+ (int)
+
+
+
+ Limite du port
+
+
+
+
+
+ RADIUS_LOGIN_LAT_PORT
+ (int)
+
+
+
+ Port d'identification LAT
+
+
+
+
+
+ RADIUS_CONNECT_INFO
+ (int)
+
+
+
+ Information de connexion
+
+
+
+
+
+ RADIUS_ACCT_STATUS_TYPE
+ (int)
+
+
+
+ Type de statut du compte :
+
+ RADIUS_START
+ RADIUS_STOP
+ RADIUS_ACCOUNTING_ON
+ RADIUS_ACCOUNTING_OFF
+
+
+
+
+
+
+ RADIUS_ACCT_DELAY_TIME
+ (int)
+
+
+
+ Délai maximal d'identification
+
+
+
+
+
+ RADIUS_ACCT_INPUT_OCTETS
+ (int)
+
+
+
+ Octets d'entrée d'identification
+
+
+
+
+
+ RADIUS_ACCT_OUTPUT_OCTETS
+ (int)
+
+
+
+ Octets de sortie d'identification
+
+
+
+
+
+ RADIUS_ACCT_SESSION_ID
+ (int)
+
+
+
+ Identifiant de session d'identification
+
+
+
+
+
+ RADIUS_ACCT_AUTHENTIC
+ (int)
+
+
+
+ Identification authentique, un parmi :
+
+ RADIUS_AUTH_RADIUS
+ RADIUS_AUTH_LOCAL
+ RADIUS_AUTH_REMOTE
+
+
+
+
+
+
+ RADIUS_ACCT_SESSION_TIME
+ (int)
+
+
+
+ Durée de la session d'identification
+
+
+
+
+
+ RADIUS_ACCT_INPUT_PACKETS
+ (int)
+
+
+
+ Paquets d'entrée d'identification
+
+
+
+
+
+ RADIUS_ACCT_OUTPUT_PACKETS
+ (int)
+
+
+
+ Paquets de sortie d'identification
+
+
+
+
+
+ RADIUS_ACCT_TERMINATE_CAUSE
+ (int)
+
+
+
+ Cause de la fin de l'identification, un parmi :
+
+ RADIUS_TERM_USER_REQUEST
+ RADIUS_TERM_LOST_CARRIER
+ RADIUS_TERM_LOST_SERVICE
+ RADIUS_TERM_IDLE_TIMEOUT
+ RADIUS_TERM_SESSION_TIMEOUT
+ RADIUS_TERM_ADMIN_RESET
+ RADIUS_TERM_ADMIN_REBOOT
+ RADIUS_TERM_PORT_ERROR
+ RADIUS_TERM_NAS_ERROR
+ RADIUS_TERM_NAS_REQUEST
+ RADIUS_TERM_NAS_REBOOT
+ RADIUS_TERM_PORT_UNNEEDED
+ RADIUS_TERM_PORT_PREEMPTED
+ RADIUS_TERM_PORT_SUSPENDED
+ RADIUS_TERM_SERVICE_UNAVAILABLE
+ RADIUS_TERM_CALLBACK
+ RADIUS_TERM_USER_ERROR
+ RADIUS_TERM_HOST_REQUEST
+
+
+
+
+
+
+ RADIUS_ACCT_MULTI_SESSION_ID
+ (int)
+
+
+
+ Identifiant d'une session multiple d'identification
+
+
+
+
+
+ RADIUS_ACCT_LINK_COUNT
+ (int)
+
+
+
+ Nombre de liens d'identification
+
+
+
+
+
+ Constantes de type de service
+
+
+ RADIUS_LOGIN
+
+
+
+
+
+
+
+
+ RADIUS_FRAMED
+
+
+
+
+
+
+
+
+ RADIUS_CALLBACK_LOGIN
+
+
+
+
+
+
+
+
+ RADIUS_CALLBACK_FRAMED
+
+
+
+
+
+
+
+
+ RADIUS_OUTBOUND
+
+
+
+
+
+
+
+
+ RADIUS_ADMINISTRATIVE
+
+
+
+
+
+
+
+
+ RADIUS_NAS_PROMPT
+
+
+
+
+
+
+
+
+ RADIUS_AUTHENTICATE_ONLY
+
+
+
+
+
+
+
+
+ RADIUS_CALLBACK_NAS_PROMPT
+
+
+
+
+
+
+
+
+
+ Framed-Protocol Constants
+
+
+ RADIUS_PPP
+
+
+
+
+
+
+
+
+ RADIUS_SLIP
+
+
+
+
+
+
+
+
+ RADIUS_ARAP
+
+
+
+
+
+
+
+
+ RADIUS_GANDALF
+
+
+
+
+
+
+
+
+ RADIUS_XYLOGICS
+
+
+
+
+
+
+
+
+
+ Framed-Compression Constants
+
+
+ RADIUS_COMP_NONE
+
+
+
+
+
+
+
+
+ RADIUS_COMP_VJ
+
+
+
+
+
+
+
+
+ RADIUS_COMP_IPXHDR
+
+
+
+
+
+
+
+
+ RADIUS_COMP_STAC_LZS
+
+
+
+
+
+
+
+
+
+ NAS Port Type Constants
+
+
+ RADIUS_ASYNC
+
+
+
+
+
+
+
+
+ RADIUS_SYNC
+
+
+
+
+
+
+
+
+ RADIUS_ISDN_SYNC
+
+
+
+
+
+
+
+
+ RADIUS_ISDN_ASYNC_V120
+
+
+
+
+
+
+
+
+ RADIUS_ISDN_ASYNC_V110
+
+
+
+
+
+
+
+
+ RADIUS_VIRTUAL
+
+
+
+
+
+
+
+
+ RADIUS_PIAFS
+
+
+
+
+
+
+
+
+ RADIUS_HDLC_CLEAR_CHANNEL
+
+
+
+
+
+
+
+
+ RADIUS_X_25
+
+
+
+
+
+
+
+
+ RADIUS_X_75
+
+
+
+
+
+
+
+
+ RADIUS_G_3_FAX
+
+
+
+
+
+
+
+
+ RADIUS_SDSL
+
+
+
+
+
+
+
+
+ RADIUS_ADSL_CAP
+
+
+
+
+
+
+
+
+ RADIUS_ADSL_DMT
+
+
+
+
+
+
+
+
+ RADIUS_IDSL
+
+
+
+
+
+
+
+
+ RADIUS_ETHERNET
+
+
+
+
+
+
+
+
+ RADIUS_XDSL
+
+
+
+
+
+
+
+
+ RADIUS_CABLE
+
+
+
+
+
+
+
+
+ RADIUS_WIRELESS_OTHER
+
+
+
+
+
+
+
+
+ RADIUS_WIRELESS_IEEE_802_11
+
+
+
+
+
+
+
+
+
+ Accounting Status Type Constants
+
+
+ RADIUS_START
+
+
+
+
+
+
+
+
+ RADIUS_STOP
+
+
+
+
+
+
+
+
+ RADIUS_ACCOUNTING_ON
+
+
+
+
+
+
+
+
+ RADIUS_ACCOUNTING_OFF
+
+
+
+
+
+
+
+
+
+ Accounting Authentic Constants
+
+
+ RADIUS_AUTH_RADIUS
+
+
+
+
+
+
+
+
+ RADIUS_AUTH_LOCAL
+
+
+
+
+
+
+
+
+ RADIUS_AUTH_REMOTE
+
+
+
+
+
+
+
+
+
+ Accounting Terminate Cause Constants
+
+
+ RADIUS_TERM_USER_REQUEST
+
+
+
+
+
+
+
+
+ RADIUS_TERM_LOST_CARRIER
+
+
+
+
+
+
+
+
+ RADIUS_TERM_LOST_SERVICE
+
+
+
+
+
+
+
+
+ RADIUS_TERM_IDLE_TIMEOUT
+
+
+
+
+
+
+
+
+ RADIUS_TERM_SESSION_TIMEOUT
+
+
+
+
+
+
+
+
+ RADIUS_TERM_ADMIN_RESET
+
+
+
+
+
+
+
+
+ RADIUS_TERM_ADMIN_REBOOT
+
+
+
+
+
+
+
+
+ RADIUS_TERM_PORT_ERROR
+
+
+
+
+
+
+
+
+ RADIUS_TERM_NAS_ERROR
+
+
+
+
+
+
+
+
+ RADIUS_TERM_NAS_REQUEST
+
+
+
+
+
+
+
+
+ RADIUS_TERM_NAS_REBOOT
+
+
+
+
+
+
+
+
+ RADIUS_TERM_PORT_UNNEEDED
+
+
+
+
+
+
+
+
+ RADIUS_TERM_PORT_PREEMPTED
+
+
+
+
+
+
+
+
+ RADIUS_TERM_PORT_SUSPENDED
+
+
+
+
+
+
+
+
+ RADIUS_TERM_SERVICE_UNAVAILABLE
+
+
+
+
+
+
+
+
+ RADIUS_TERM_CALLBACK
+
+
+
+
+
+
+
+
+ RADIUS_TERM_USER_ERROR
+
+
+
+
+
+
+
+
+ RADIUS_TERM_HOST_REQUEST
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_CHAP_RESPONSE
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_CHAP_ERROR
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_CHAP_PW_1
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_CHAP_PW_2
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_CHAP_LM_ENC_PW
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_CHAP_NT_ENC_PW
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_MPPE_ENCRYPTION_POLICY
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_MPPE_ENCRYPTION_TYPES
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_RAS_VENDOR
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_CHAP_DOMAIN
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_CHAP_CHALLENGE
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_CHAP_MPPE_KEYS
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_BAP_USAGE
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_LINK_UTILIZATION_THRESHOLD
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_LINK_DROP_TIME_LIMIT
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_MPPE_SEND_KEY
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_MPPE_RECV_KEY
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_RAS_VERSION
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_OLD_ARAP_PASSWORD
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_NEW_ARAP_PASSWORD
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_ARAP_PASSWORD_CHANGE_REASON
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_FILTER
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_ACCT_AUTH_TYPE
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_ACCT_EAP_TYPE
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_CHAP2_RESPONSE
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_CHAP2_SUCCESS
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_CHAP2_PW
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_PRIMARY_DNS_SERVER
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_SECONDARY_DNS_SERVER
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_PRIMARY_NBNS_SERVER
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_SECONDARY_NBNS_SERVER
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_ARAP_CHALLENGE
+
+
+
+
+
+
+
+
+
+
+ Types d'attribut RADIUS spécifique au vendeur
+
+
+
+
+ RADIUS_VENDOR_MICROSOFT
+ (int)
+
+
+
+ Attributs spécifiques à Microsoft (RFC 2548) :
+
+ RADIUS_MICROSOFT_MS_CHAP_RESPONSE
+ RADIUS_MICROSOFT_MS_CHAP_ERROR
+ RADIUS_MICROSOFT_MS_CHAP_PW_1
+ RADIUS_MICROSOFT_MS_CHAP_PW_2
+ RADIUS_MICROSOFT_MS_CHAP_LM_ENC_PW
+ RADIUS_MICROSOFT_MS_CHAP_NT_ENC_PW
+ RADIUS_MICROSOFT_MS_MPPE_ENCRYPTION_POLICY
+ RADIUS_MICROSOFT_MS_MPPE_ENCRYPTION_TYPES
+ RADIUS_MICROSOFT_MS_RAS_VENDOR
+ RADIUS_MICROSOFT_MS_CHAP_DOMAIN
+ RADIUS_MICROSOFT_MS_CHAP_CHALLENGE
+ RADIUS_MICROSOFT_MS_CHAP_MPPE_KEYS
+ RADIUS_MICROSOFT_MS_BAP_USAGE
+ RADIUS_MICROSOFT_MS_LINK_UTILIZATION_THRESHOLD
+ RADIUS_MICROSOFT_MS_LINK_DROP_TIME_LIMIT
+ RADIUS_MICROSOFT_MS_MPPE_SEND_KEY
+ RADIUS_MICROSOFT_MS_MPPE_RECV_KEY
+ RADIUS_MICROSOFT_MS_RAS_VERSION
+ RADIUS_MICROSOFT_MS_OLD_ARAP_PASSWORD
+ RADIUS_MICROSOFT_MS_NEW_ARAP_PASSWORD
+ RADIUS_MICROSOFT_MS_ARAP_PASSWORD_CHANGE_REASON
+ RADIUS_MICROSOFT_MS_FILTER
+ RADIUS_MICROSOFT_MS_ACCT_AUTH_TYPE
+ RADIUS_MICROSOFT_MS_ACCT_EAP_TYPE
+ RADIUS_MICROSOFT_MS_CHAP2_RESPONSE
+ RADIUS_MICROSOFT_MS_CHAP2_SUCCESS
+ RADIUS_MICROSOFT_MS_CHAP2_PW
+ RADIUS_MICROSOFT_MS_PRIMARY_DNS_SERVER
+ RADIUS_MICROSOFT_MS_SECONDARY_DNS_SERVER
+ RADIUS_MICROSOFT_MS_PRIMARY_NBNS_SERVER
+ RADIUS_MICROSOFT_MS_SECONDARY_NBNS_SERVER
+ RADIUS_MICROSOFT_MS_ARAP_CHALLENGE
+
+
+
+
+
+
+
+
diff --git a/reference/reflection/reflectionclass/iscloneable.xml b/reference/reflection/reflectionclass/iscloneable.xml
index 22ea25ad89..14aa2f3225 100644
--- a/reference/reflection/reflectionclass/iscloneable.xml
+++ b/reference/reflection/reflectionclass/iscloneable.xml
@@ -35,7 +35,7 @@
&reftitle.examples;
- Utilisation basique de ReflectionClass::isCloneable
+ Utilisation basique de ReflectionClass::isCloneable
-
-
-
-
- ReflectionEnum::getBackingType
- Renvoie le type de base d'une énumération, si présent
-
-
-
- &reftitle.description;
-
- publicReflectionNamedTypenullReflectionEnum::getBackingType
-
-
-
- Si l'énumération est une énumération avec valeur de base, cette méthode renverra une instance
- de ReflectionType pour le type de base de l'énumération.
- Si ce n'est pas une énumération avec valeur de base, elle renverra null.
-
-
-
-
-
- &reftitle.parameters;
- &no.function.parameters;
-
-
-
- &reftitle.returnvalues;
-
- Une instance de ReflectionNamedType, ou null
- si l'énumération n'a pas de type de base.
-
-
-
-
- &reftitle.changelog;
-
-
-
-
- &Version;
- &Description;
-
-
-
-
- 8.2.0
-
- La valeur de retour est maintenant déclarée en tant que ?ReflectionNamedType. Auparavant,
- ?ReflectionType était déclaré.
-
-
-
-
-
-
-
-
- &reftitle.examples;
-
-
- Exemple de ReflectionEnum::getBackingType
-
-getBackingType();
-
-var_dump((string) $rBackingType);
-?>
-]]>
-
- &example.outputs;
-
-
-
-
-
-
-
-
- &reftitle.seealso;
-
-
- Enumerations
- ReflectionEnum::isBacked
-
-
-
-
-
-
+
+
+
+
+
+ ReflectionEnum::getBackingType
+ Renvoie le type de base d'une énumération, si présent
+
+
+
+ &reftitle.description;
+
+ publicReflectionNamedTypenullReflectionEnum::getBackingType
+
+
+
+ Si l'énumération est une énumération avec valeur de base, cette méthode renverra une instance
+ de ReflectionType pour le type de base de l'énumération.
+ Si ce n'est pas une énumération avec valeur de base, elle renverra &null;.
+
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ Une instance de ReflectionNamedType, ou &null;
+ si l'énumération n'a pas de type de base.
+
+
+
+
+ &reftitle.changelog;
+
+
+
+
+ &Version;
+ &Description;
+
+
+
+
+ 8.2.0
+
+ La valeur de retour est maintenant déclarée en tant que ?ReflectionNamedType. Auparavant,
+ ?ReflectionType était déclaré.
+
+
+
+
+
+
+
+
+ &reftitle.examples;
+
+
+ Exemple de ReflectionEnum::getBackingType
+
+getBackingType();
+
+var_dump((string) $rBackingType);
+?>
+]]>
+
+ &example.outputs;
+
+
+
+
+
+
+
+
+ &reftitle.seealso;
+
+
+ Enumerations
+ ReflectionEnum::isBacked
+
+
+
+
+
+
diff --git a/reference/reflection/reflectionproperty/ispublic.xml b/reference/reflection/reflectionproperty/ispublic.xml
index d3b341fdb6..9514ab3b2c 100644
--- a/reference/reflection/reflectionproperty/ispublic.xml
+++ b/reference/reflection/reflectionproperty/ispublic.xml
@@ -1,89 +1,89 @@
-
-
-
-
-
- ReflectionProperty::isPublic
- Vérifie si la propriété est publique
-
-
-
- &reftitle.description;
-
- publicboolReflectionProperty::isPublic
-
-
-
- Vérifie si la propriété est publique.
-
-
-
-
- &reftitle.parameters;
- &no.function.parameters;
-
-
-
- &reftitle.returnvalues;
-
- &true; si la propriété est marquée comme publique, &false; sinon.
-
-
-
- Notez que cela ne se réfère qu'à la visibilité principale,
- et non à une visibilité de définition,
- si spécifiée.
-
-
-
-
-
- &reftitle.notes;
-
-
- Il faut être conscient que le fait qu'une propriété soit publique
- ne signifie pas toujours qu'elle est accessible en écriture. Une propriété
- peut être virtuelle sans crochet set, ou pourrait être
- readonly et avoir déjà été écrite, ou encore avoir une
- visibilité set
- définie comme non publique. Dans tous ces cas, cette méthode retournera
- true, mais la propriété ne sera pas modifiable.
-
-
-
-
-
- &reftitle.seealso;
-
-
- ReflectionProperty::isProtected
- ReflectionProperty::isProtectedSet
- ReflectionProperty::isPrivate
- ReflectionProperty::isPrivateSet
- ReflectionProperty::isReadOnly
- ReflectionProperty::isStatic
-
-
-
-
-
-
+
+
+
+
+
+ ReflectionProperty::isPublic
+ Vérifie si la propriété est publique
+
+
+
+ &reftitle.description;
+
+ publicboolReflectionProperty::isPublic
+
+
+
+ Vérifie si la propriété est publique.
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ &true; si la propriété est marquée comme publique, &false; sinon.
+
+
+
+ Notez que cela ne se réfère qu'à la visibilité principale,
+ et non à une visibilité de définition,
+ si spécifiée.
+
+
+
+
+
+ &reftitle.notes;
+
+
+ Il faut être conscient que le fait qu'une propriété soit publique
+ ne signifie pas toujours qu'elle est accessible en écriture. Une propriété
+ peut être virtuelle sans crochet set, ou pourrait être
+ readonly et avoir déjà été écrite, ou encore avoir une
+ visibilité set
+ définie comme non publique. Dans tous ces cas, cette méthode retournera
+ &true;, mais la propriété ne sera pas modifiable.
+
+
+
+
+
+ &reftitle.seealso;
+
+
+ ReflectionProperty::isProtected
+ ReflectionProperty::isProtectedSet
+ ReflectionProperty::isPrivate
+ ReflectionProperty::isPrivateSet
+ ReflectionProperty::isReadOnly
+ ReflectionProperty::isStatic
+
+
+
+
+
+
diff --git a/reference/rpminfo/book.xml b/reference/rpminfo/book.xml
index 66a66199bf..7ae7d2902e 100644
--- a/reference/rpminfo/book.xml
+++ b/reference/rpminfo/book.xml
@@ -1,46 +1,46 @@
-
-
-
-
-
- RpmInfo
- RpmInfo
-
-
- &reftitle.intro;
-
- Cette extension permet de récupérer des informations à partir de fichiers RPM
- ou de la base de données des RPM installés.
-
-
- Elle fournit également une enveloppe de flux rpm pour récupérer le contenu des RPM
- (depuis la version 1.0.0 avec librpm >= 4.13).
-
-
-
- &reference.rpminfo.setup;
- &reference.rpminfo.constants;
- &reference.rpminfo.reference;
-
-
-
-
+
+
+
+
+
+ RpmInfo
+ RpmInfo
+
+
+ &reftitle.intro;
+
+ Cette extension permet de récupérer des informations à partir de fichiers RPM
+ ou de la base de données des RPM installés.
+
+
+ Elle fournit également une enveloppe de flux rpm pour récupérer le contenu des RPM
+ (depuis la version 1.0.0 avec librpm >= 4.13).
+
+
+
+ &reference.rpminfo.setup;
+ &reference.rpminfo.constants;
+ &reference.rpminfo.reference;
+
+
+
+
diff --git a/reference/rrd/functions/rrd-first.xml b/reference/rrd/functions/rrd-first.xml
index 1bb206c843..be2d3bf6ea 100644
--- a/reference/rrd/functions/rrd-first.xml
+++ b/reference/rrd/functions/rrd-first.xml
@@ -1,73 +1,73 @@
-
-
-
-
-
-
- rrd_first
- Récupère le timestamp du premier échantillon depuis le fichier RRD
-
-
-
- &reftitle.description;
-
- intrrd_first
- stringfile
- intraaindex0
-
-
- Retourne les données du premier échantillon depuis le RRD spécifié
- du fichier RRD.
-
-
-
-
- &reftitle.parameters;
-
-
- file
-
-
- Nom de fichier de la base de données RRD.
-
-
-
-
- raaindex
-
-
- Le numéro d'index du RRA à examiner. La valeur par défaut est 0.
-
-
-
-
-
-
-
- &reftitle.returnvalues;
-
- Timestamp unix,&return.falseforfailure;.
-
-
-
-
-
+
+
+
+
+
+
+ rrd_first
+ Récupère le timestamp du premier échantillon depuis le fichier RRD
+
+
+
+ &reftitle.description;
+
+ intrrd_first
+ stringfile
+ intraaindex0
+
+
+ Retourne les données du premier échantillon depuis le RRD spécifié
+ du fichier RRD.
+
+
+
+
+ &reftitle.parameters;
+
+
+ file
+
+
+ Nom de fichier de la base de données RRD.
+
+
+
+
+ raaindex
+
+
+ Le numéro d'index du RRA à examiner. La valeur par défaut est 0.
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+
+ Timestamp unix,&return.falseforfailure;.
+
+
+
+
+
diff --git a/reference/runkit7/functions/runkit7-constant-remove.xml b/reference/runkit7/functions/runkit7-constant-remove.xml
index 209eb080b9..fdf85cce1a 100644
--- a/reference/runkit7/functions/runkit7-constant-remove.xml
+++ b/reference/runkit7/functions/runkit7-constant-remove.xml
@@ -1,72 +1,72 @@
-
-
-
-
-
- runkit7_constant_remove
-
- Enlève/Supprime une constante déjà définie
-
-
-
-
- &reftitle.description;
-
- boolrunkit7_constant_remove
- stringconstant_name
-
-
-
-
- &reftitle.parameters;
-
-
- constant_name
-
-
- Le nom de la constante à enlever. Soit le nom d'une constante globale,
- soit classname::constname indiquant une constante de classe.
-
-
-
-
-
-
-
- &reftitle.returnvalues;
-
- &return.success;
-
-
-
-
- &reftitle.seealso;
-
- define
- runkit7_constant_add
- runkit7_constant_redefine
-
-
-
-
-
-
+
+
+
+
+
+ runkit7_constant_remove
+
+ Enlève/Supprime une constante déjà définie
+
+
+
+
+ &reftitle.description;
+
+ boolrunkit7_constant_remove
+ stringconstant_name
+
+
+
+
+ &reftitle.parameters;
+
+
+ constant_name
+
+
+ Le nom de la constante à enlever. Soit le nom d'une constante globale,
+ soit classname::constname indiquant une constante de classe.
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+
+ &return.success;
+
+
+
+
+ &reftitle.seealso;
+
+ define
+ runkit7_constant_add
+ runkit7_constant_redefine
+
+
+
+
+
+
diff --git a/reference/seaslog/seaslog/analyzerdetail.xml b/reference/seaslog/seaslog/analyzerdetail.xml
index 09a692eae0..ba8a4b5dfc 100644
--- a/reference/seaslog/seaslog/analyzerdetail.xml
+++ b/reference/seaslog/seaslog/analyzerdetail.xml
@@ -20,7 +20,7 @@
`SeasLog` obtient les résultats
- `grep -ai '{level}' | grep -ai '{key_word}' | sed -n '{start},{limit}'p`
+ `grep -ai '{level}' | grep -ai '{key_word}' | sed -n '{start},{limit}'p`
utilise le pipe système et retourne un tableau à PHP.
diff --git a/reference/session/book.xml b/reference/session/book.xml
index ad6b8928c9..77699f042b 100644
--- a/reference/session/book.xml
+++ b/reference/session/book.xml
@@ -1,115 +1,115 @@
-
-
-
-
-
-
-
- Gestion des sessions
- Sessions
-
-
-
- &reftitle.intro;
-
- Le support des sessions de PHP est un moyen de préserver
- des données entre plusieurs accès.
-
-
- Chaque visiteur accédant à votre page web se voit assigner un
- identifiant unique, appelé "identifiant de session". Il peut
- être stocké soit dans un cookie, soit propagé dans l'URL.
-
-
- Le support des sessions vous permet de stocker des données
- entre les requêtes dans le tableau super-globale $_SESSION.
- Lorsqu'un visiteur accède à votre site, PHP va vérifier automatiquement (si
- est activé) ou sur demande (explicitement avec
- session_start) s'il existe une
- session du même nom. Si c'est le cas, l'environnement
- précédemment sauvé sera recréé.
-
-
-
- Si vous activez
- session.auto_start alors le seul moyen de mettre des objets
- en session est de charger les définitions de classe avec
- auto_prepend_file
- dans lequel vous chargez les définitions dont vous avez besoin,
- ou bien vous devrez utiliser serialize
- sur votre objet, et unserialize
- pour le récupérer.
-
-
-
- La variable $_SESSION (et toutes les variables
- enregistrées) sont sérialisées en interne par PHP en utilisant le
- gestionnaire de sérialisation spécifié par l'option de configuration
- session.serialize_handler,
- après l'exécution du script PHP. Les variables qui sont indéfinies sont marquées
- comme telles. Lors des accès ultérieurs, elles ne seront pas
- définies, jusqu'à ce que l'utilisateur le fasse.
-
-
-
- En raison du fait que les données de session sont sérialisées,
- les variables de type resource ne peuvent être stockées
- dans une session.
-
-
- Les gestionnaires de sérialisation (php
- et php_binary) héritent des limitations de
- register_globals. Aussi, les index numériques ou les index
- sous forme de chaînes de caractères contenant des caractères
- spéciaux (| et !) ne
- peuvent pas être utilisés. Le fait de les utiliser génèrera des
- erreurs en fin de script. php_serialize
- n'a pas ce genre de limitations.
-
-
-
-
- Notez que lorsque vous travaillez avec les sessions, un enregistrement
- dans la session ne sera pas créé tant que la variable ne sera pas
- enregistrée en ajoutant une clé à la variable super-globale
- $_SESSION. Cela n'est vrai que si vous avez débuté une
- session en appelant la fonction session_start.
-
-
-
-
-
- &reference.session.setup;
- &reference.session.constants;
- &reference.session.examples;
- &reference.session.upload-progress;
- &reference.session.security;
- &reference.session.reference;
- &reference.session.sessionhandler;
- &reference.session.sessionhandlerinterface;
- &reference.session.sessionidinterface;
- &reference.session.sessionupdatetimestamphandlerinterface;
-
-
-
-
+
+
+
+
+
+
+
+ Gestion des sessions
+ Sessions
+
+
+
+ &reftitle.intro;
+
+ Le support des sessions de PHP est un moyen de préserver
+ des données entre plusieurs accès.
+
+
+ Chaque visiteur accédant à votre page web se voit assigner un
+ identifiant unique, appelé "identifiant de session". Il peut
+ être stocké soit dans un cookie, soit propagé dans l'URL.
+
+
+ Le support des sessions vous permet de stocker des données
+ entre les requêtes dans le tableau super-globale $_SESSION.
+ Lorsqu'un visiteur accède à votre site, PHP va vérifier automatiquement (si
+ est activé) ou sur demande (explicitement avec
+ session_start) s'il existe une
+ session du même nom. Si c'est le cas, l'environnement
+ précédemment sauvé sera recréé.
+
+
+
+ Si vous activez
+ session.auto_start alors le seul moyen de mettre des objets
+ en session est de charger les définitions de classe avec
+ auto_prepend_file
+ dans lequel vous chargez les définitions dont vous avez besoin,
+ ou bien vous devrez utiliser serialize
+ sur votre objet, et unserialize
+ pour le récupérer.
+
+
+
+ La variable $_SESSION (et toutes les variables
+ enregistrées) sont sérialisées en interne par PHP en utilisant le
+ gestionnaire de sérialisation spécifié par l'option de configuration
+ session.serialize_handler,
+ après l'exécution du script PHP. Les variables qui sont indéfinies sont marquées
+ comme telles. Lors des accès ultérieurs, elles ne seront pas
+ définies, jusqu'à ce que l'utilisateur le fasse.
+
+
+
+ En raison du fait que les données de session sont sérialisées,
+ les variables de type resource ne peuvent être stockées
+ dans une session.
+
+
+ Les gestionnaires de sérialisation (php
+ et php_binary) héritent des limitations de
+ register_globals. Aussi, les index numériques ou les index
+ sous forme de chaînes de caractères contenant des caractères
+ spéciaux (| et !) ne
+ peuvent pas être utilisés. Le fait de les utiliser génèrera des
+ erreurs en fin de script. php_serialize
+ n'a pas ce genre de limitations.
+
+
+
+
+ Notez que lorsque vous travaillez avec les sessions, un enregistrement
+ dans la session ne sera pas créé tant que la variable ne sera pas
+ enregistrée en ajoutant une clé à la variable super-globale
+ $_SESSION. Cela n'est vrai que si vous avez débuté une
+ session en appelant la fonction session_start.
+
+
+
+
+
+ &reference.session.setup;
+ &reference.session.constants;
+ &reference.session.examples;
+ &reference.session.upload-progress;
+ &reference.session.security;
+ &reference.session.reference;
+ &reference.session.sessionhandler;
+ &reference.session.sessionhandlerinterface;
+ &reference.session.sessionidinterface;
+ &reference.session.sessionupdatetimestamphandlerinterface;
+
+
+
+
diff --git a/reference/session/functions/session-start.xml b/reference/session/functions/session-start.xml
index d6229d7359..9df04e410b 100644
--- a/reference/session/functions/session-start.xml
+++ b/reference/session/functions/session-start.xml
@@ -138,7 +138,7 @@ echo ' page 2';
Après avoir vu la page page1.php avec un navigateur,
la seconde page page2.php (dont le code suit) va magiquement afficher
les données de session. Lisez la référence sur
- les sessions pour des informations
+ les sessions pour des informations
sur la propagation des identifiants de session,
et l'utilisation de la constante SID.
diff --git a/reference/session/security.xml b/reference/session/security.xml
index 67a3d109c2..ad509ad586 100644
--- a/reference/session/security.xml
+++ b/reference/session/security.xml
@@ -1,858 +1,858 @@
-
-
-
-
-
-
- Sessions et Sécurité
-
- Lien externe : Session fixation
-
-
- La gestion des sessions HTTP représente le cœur de la sécurité sur le Web.
- Des mesures d'atténuation doivent être prises en compte afin d'assurer la
- sécurité des sessions.
- Les développeurs doivent activer/utiliser les paramètres de sécurité appropriés.
-
-
-
- Gestion basique des sessions
-
-
- Sécurité des sessions
-
- Le module de session ne peut pas garantir que les informations stockées
- dans une session ne sont vues uniquement par l'utilisateur qui
- a créé la session. Des mesures supplémentaires sont nécessaires pour
- protéger la confidentialité de la session, suivant la valeur
- qu'on lui associe.
-
-
-
- L'importance des données stockées dans une session doit être évaluée
- et des protections supplémentaires peuvent être déployées ;
- ceci a obligatoirement un coût tel qu'être moins pratique pour
- l'utilisateur. Par exemple, pour protéger les utilisateurs
- d'une tactique simple, la directive session.use_only_cookies
- doit être activée. Dans ce cas, les cookies doivent être
- activés obligatoirement côté client sinon les sessions ne
- fonctionneront pas.
-
-
-
- Il y a plusieurs façons de divulguer des identifiants de session à
- des tierces personnes. I.E. injections Javascripts, identifiants
- de session dans les URLs, reniflement de paquets, accès physique
- au périphérique, etc.
- Un identifiant de session divulgué permet à un tiers d'accéder
- à toutes les ressources associées avec cet identifiant. Tout d'abord,
- les URLs contenant les identifiants de session. S'il y a des liens
- vers des sites ou des ressources externes, l'URL incluant l'identifiant
- de session doit être stockée dans les logs referrer du site externe.
- Si ces données ne sont pas chiffrées, les identifiants de session
- vont être transmis en texte clair sur le réseau. La solution ici est
- d'implémenter SSL/TLS sur le serveur et le rendre mandataire pour les
- utilisateurs. HSTS devrait être utilisé pour améliorer également la
- sécurité.
-
-
-
-
- Même HTTPS ne peut protéger la confidentialité des données
- dans tous les cas. Par exemple, les vulnérabilités CRIME et BEAST
- permettent à un attaquant de lire les données. De plus, notez
- que certains réseaux utilisent des proxys HTTPS MITM pour
- des audits. Les attaquants peuvent également mettre en place
- ce genre de proxy.
-
-
-
-
-
-
- Gestion des sessions non adaptatives
-
-
- Le gestionnaire de sessions PHP est adaptatif, par défaut.
- Un gestionnaire de sessions adaptatif apporte des
- risques supplémentaires.
-
-
-
- Lorsque session.use_strict_mode
- est activé, et que le gestionnaire de sauvegarde des sessions le supporte,
- un identifiant de session non initialisé est rejeté, et un nouveau est créé.
- Ceci prévient une attaque qui force les utilisateurs à utiliser un
- identifiant de session connu.
- Un attaquant peut passer des liens ou envoyer des emails qui contient
- l'identifiant de session.
- I.e. http://example.com/page.php?PHPSESSID=123456789 si
- session.use_trans_sid est activé,
- la victime commencera une session en utilisant l'identifiant de session
- fourni par l'attaquant.
- session.use_strict_mode
- permet d'annuler ce type de risque.
-
-
-
-
- Les gestionnaires de sauvegarde définis par l'utilisateur peuvent
- aussi supporter le mode de session strict en implémentant
- la validation des identifiants de session. Tous les gestionnaires de
- sauvegarde définis par l'utilisateur devraient implémenter la validation
- des identifiants de session.
-
-
-
-
- Le cookie d'identifiant de session peut être défini avec les
- attributs domain, path, httponly, secure et, depuis PHP 7.3, SameSite.
- Il existe une priorité définie par les navigateurs.
- En utilisant les priorités, un attaquant peut définir l'identifiant de
- session qui peut être utilisé en permanence. L'utilisation de la
- directive session.use_only_cookies
- ne permet pas de résoudre ce problème.
- session.use_strict_mode
- permet de mitiger ce risque. Avec la directive
- session.use_strict_mode=On,
- l'identifiant de session non initialisé sera refusé.
-
-
-
-
- Même si la directive
- session.use_strict_mode
- limite les risques concernant le gestionnaire adaptatif de session, un
- attaquant peut forcer les utilisateurs à utiliser un identifiant de
- session non initialisé qui a été créé par l'attaquant, i.e. via des injections
- Javascript. Ce type d'attaque peut être limité en utilisant les
- recommandations de ce manuel.
-
-
-
- En suivant ce manuel, les développeurs devraient activer la directive
- session.use_strict_mode,
- utiliser les timestamps basés sur le gestionnaire de session,
- et régénérer les identifiants de session en utilisant la fonction
- session_regenerate_id avec les procédures
- recommandées. Si les développeurs suivent ces instructions, un identifiant de session
- généré par un attaquant sera normalement supprimé.
-
-
-
- Lorsqu'un accès à une session obsolète survient, les développeurs
- devraient sauvegarder toutes les données de la session active de
- l'utilisateur ; ces informations seront utiles pour de futures
- investigations. L'utilisateur devrait être forcé à se déconnecter
- de toutes les sessions, i.e. le forçant ainsi à s'identifier de
- nouveau. Ceci permet de contrer les attaques utilisant des sessions
- volées.
-
-
-
-
-
- L'accès à une session obsolète ne veut pas forcément dire qu'il s'agit d'une
- attaque. Un réseau instable et/ou l'effacement immédiat de la session
- active va conduire des utilisateurs légitimes à utiliser des sessions
- obsolètes.
-
-
-
-
- Depuis 7.1.0, la fonction session_create_id a été
- ajoutée. Cette fonction permet d'accéder à toutes les sessions actives
- d'un utilisateur en préfixant les identifiants de session avec l'identifiant
- de l'utilisateur. L'activation de la directive
- session.use_strict_mode
- est vital dans cette configuration. Sinon, les utilisateurs malicieux
- peuvent définir des identifiants de sessions pour les autres utilisateurs.
-
-
-
-
- Les utilisateurs des versions antérieures à PHP 7.1.0 doivent
- utiliser CSPRNG, i.e. /dev/urandom, ou la fonction
- random_bytes et les fonctions de hachage
- pour générer un nouvel identifiant de session. La fonction
- session_create_id possède des mécanismes de détection
- de collision, et génère un identifiant de session suivant les
- configurations INI des sessions. L'utilisation de la fonction
- session_create_id est recommandée.
-
-
-
-
-
-
- Regénération d'un identifiant de session
-
-
- La directive
- session.use_strict_mode
- est un bon compromis mais n'est pas suffisant. Les développeurs doivent
- également utiliser la fonction session_regenerate_id
- pour la sécurité des sessions.
-
-
-
- La regénération d'un identifiant de session réduit le risque de vol d'identifiants
- de session, aussi, la fonction session_regenerate_id
- doit être utilisée périodiquement; i.e. Regénérer l'identifiant de session toutes
- les 15 minutes pour sécuriser le contenu sensible. Même dans le cas où
- un identifiant de session est volé, à la fois le légitime utilisateur
- et l'attaquant aura sa session qui va expirer. En d'autres termes, l'accès
- au contenu par l'utilisateur ou l'attaquant va générer une erreur d'accès
- à une session obsolète.
-
-
-
- Les identifiants de session doivent être régénérés lorsque
- les privilèges de l'utilisateur sont élevés, comme après une authentification.
- La fonction session_regenerate_id doit être appelée
- avant le stockage des informations d'authentification dans $_SESSION.
- (la fonction session_regenerate_id
- sauvegarde les données de session courantes automatiquement afin de
- sauvegarder les timestamps/etc... dans la session courante.)
- Assurez-vous que la nouvelle session contient le drapeau d'authentification.
-
-
-
- Les développeurs ne doivent pas se baser sur
- l'expiration de l'identifiant de session définie par la directive
- session.gc_maxlifetime.
- Les attaquants peuvent accéder à l'identifiant de session de la victime
- de façon périodique pour éviter son expiration, et permettre son exploitation
- y compris avec des sessions authentifiées.
-
-
-
- Au lieu de cela, les développeurs doivent implémenter un timestamp
- basé sur la gestion des données de session.
-
-
-
-
- Même si le gestionnaire de session peut gérer les timestamps de façon
- transparente, cette fonctionnalité n'est pas implémentée. Les données
- des anciennes sessions doivent être conservées tant que le récupérateur
- de mémoire ne soit passé. Simultanément, les développeurs doivent s'assurer
- eux-mêmes que les données de session obsolètes soient effectivement effacées.
- Cependant, les développeurs ne doivent pas supprimer les données
- de session active trop rapidement. i.e. session_regenerate_id(true);
- et session_destroy ne doivent jamais être appelés
- en même temps pour une session active. Ça peut paraître contradictoire,
- mais c'est une exigence du mandataire.
-
-
-
-
- session_regenerate_idn'effacera pas
- les anciennes sessions par défaut. Les sessions authentifiées obsolètes
- peuvent être présente pour être utilisées. Les développeurs doivent s'assurer
- que les anciennes sessions ne soient pas utilisées par tout le monde.
- Ils doivent interdire l'accès aux données de session obsolète
- en utilisant eux-même des timestamps.
-
-
-
-
- La suppression soudaine d'une session active produit des effets de bords
- indésirables. Les sessions peuvent disparaître lorsqu'il y a des connexions
- concurentes sur l'application web et/ou lorsque le réseau est instable.
-
-
- Les accès potentiellement malicieux sont indétectables avec la suppression
- soudaine d'une session.
-
-
- Au lieu de supprimer les sessions osbolètes immédiatement, les développeurs
- doivent définir un court temps d'expiration (timestamp) dans
- $_SESSION, et interdire l'accès aux données de session.
-
-
- Les développeurs ne doivent pas interdire l'accès aux données des
- anciennes sessions immédiatement après l'exécution de la fonction
- session_regenerate_id. L'accès doit être interdit
- à un stade ultérieure ; i.e. quelques secondes après pour les réseaux
- stables, comme un réseau filaire et quelques minutes après pour les réseaux
- instables comme des téléphones mobiles ou des réseaux Wi-Fi.
-
-
- Si un utilisateur accède à une session obsolète (session ayant expirée), l'accès
- à cette session doit être refusé. Il est également recommandé de supprimer le
- statut d'authentification de toutes les sessions utilisateurs, car cela
- peut représenter un axe d'attaque.
-
-
-
-
- L'utilisation de la directive session.use_only_cookies et de la fonction
- session_regenerate_id peuvent causer des DoS personnel
- avec des cookies non-supprimés définis par les attaquants. Dans ce cas,
- les développeurs peuvent inviter les utilisateurs à supprimer les cookies
- et les avertir qu'ils peuvent rencontrer un problème de sécurité.
- Les attaquants peuvent définir des cookies malicieux via une application
- web vulnérable, un plugin de navigateur exposé ou vicié, un périphérique
- physique compromis, etc...
-
-
-
-
- Ne vous méprenez pas sur le risque DoS. session.use_strict_mode=On
- est obligatoire pour la sécurité des identifiants de session !
- Tous les sites sont encouragés à activer la directive
- session.use_strict_mode.
-
-
- DoS peut uniquement survenir lorsque le compte subit une attaque. Une injection
- Javascript dans une application représente la plupart des axes d'attaque.
-
-
-
-
-
-
- Suppression des données de session
-
-
- Les données de sessions obsolètes doivent être inaccessibles
- et doivent être supprimées. Le module courant de session
- ne prend pas en charge cet aspect.
-
-
-
- Les données de sessions obsolètes doivent être supprimées aussi vite
- que possible. Cependant, les sessions actives ne doivent pas être
- supprimées instantanément. Pour satisfaire ces recommandations, les développeurs
- eux-mêmes doivent implémenter un gestionnaire des données de session basé sur
- un timestamp.
-
-
-
- Définissez et gérez l'expiration du timestamp dans la variable
- globale $_SESSION. Interdisez l'accès aux données de sessions
- périmées. Lorsqu'un accès à des données de session obsolète est détecté,
- il convient de supprimer toutes les statuts authentifiés des sessions
- utilisateurs et forcer les utilisateurs à s'authentifier de nouveau.
- L'accès à des données de sessions obsolètes peut représenter une attaque.
- Pour arriver à cette fin, les développeurs doivent suivre toutes les sessions
- actives de tous les utilisateurs.
-
-
-
-
- L'accès à une session obsolète peut également survenir à cause d'un réseau instable
- et/ou d'un accès concurrent à un site web, i.e. le serveur tente de définir un
- nouvel identifiant de session via un cookie, mais le paquet Set-Cookie n'a jamais
- atteint le client en raison d'une perte de connexion. Une connexion peut
- créer un nouvel identifiant de session via la fonction session_regenerate_id,
- mais une autre connexion concurrente peut ne pas avoir encore reçu
- l'identifiant de session. Toutefois, les développeurs doivent interdire l'accès
- à une session obsolète à un moment plus éloigné. i.e. la gestion des sessions
- basés sur le timestamp est obligatoire.
-
-
-
-
- En résumé, les données de sessions ne doivent pas être détruites avec la fonction
- session_regenerate_id, ni avec la fonction session_destroy,
- mais les timestamps doivent être utilisés pour contrôler l'accès aux données de
- session. Laissez la fonction session_gc supprimer les données obsolètes
- depuis le stockage des données de sessions.
-
-
-
-
-
- Session et Verrouillage
-
-
- Les données de session sont verrouillées par défaut pour éviter les
- accès concurent. Le verrouillage est obligatoire pour conserver une
- consistance des données de session au travers les requêtes.
-
-
-
- Cependant, le verrouillage de session peut être utilisé par les attaquants
- pour réaliser des attaques DoS. Pour minimiser le risque d'une attaque DoS
- par verrouillage de session, il convient de minimiser les verrous.
- Utilisez des données en lecture seule lorsque les données de session
- n'ont pas besoin d'être mises à jour. Utilisez l'option 'read_and_close'
- avec la fonction session_start.
- session_start(['read_and_close'=>1]); va clôre
- la session aussi vite que possible après la mise à jour de la variable
- globale $_SESSION en utilisant la fonction session_commit.
-
-
-
- Le module de session courant ne détecte pas
- toutes les modifications de la variable $_SESSION lorsque
- la session est inactive. Il en va de la responsabilité du développeur
- de ne pas modifier la variable $_SESSION lorsque la session est inactive.
-
-
-
-
-
- Sessions actives
-
-
- Les développeurs doivent conserver une trace de toutes les sessions
- actives de chaque utilisateur, et leur notifier le nombre de sessions
- actives, depuis quelle adresse IP, depuis combien de temps, etc.
- PHP ne conserve pas de traces de ces informations. Les développeurs
- sont supposés le faire eux-mêmes.
-
-
-
- Il existe différentes façons de faire cela. Une implémentation possible
- est de définir une base de données qui conserve une trace des données
- nécessaires, et y stocker toutes les informations pertinentes.
- Depuis que les données de session sont GCed, les développeurs doivent
- faire attention aux données GCed pour maintenir la base de données
- des sessions actives consistante.
-
-
-
- Une des implémentations simple est "l'identifiant utilisateur préfixant
- l'identifiant de session" et stocker les informations nécessaires dans
- la variable $_SESSION. La plupart des bases de données sont relativement
- performantes pour sélectionner un préfixe sous la forme d'une &string;.
- Les développeurs DOIVENT utiliser la fonction session_regenerate_id
- ainsi que la fonction session_create_id pour cela.
-
-
-
-
- N'utilisez jamais de données confidentielles comme préfixe.
- Si l'identifiant utilisateur est confidentiel, vous devriez utiliser
- la fonction hash_hmac.
-
-
-
-
-
- L'activation de la directive
- session.use_strict_mode
- est obligatoire pour ce type de configuration. Assurez vous qu'il
- est activé. Sinon, la base de données des sessions actives
- peut être compromise.
-
-
-
-
- Le gestionnaire de session basé sur un timestamp est obligatoire
- pour détecter l'accès à des sessions obsolètes. Lorsque l'accès à une
- session obsolète est détecté, le drapeau d'authentification doit
- être supprimé de toutes les sessions actives de l'utilisateur.
- Ceci permet d'éviter aux attaquants de continuer à exploiter les sessions
- volées.
-
-
-
-
-
- Session et l'auto-identification
-
-
- Les développeurs ne doivent pas utiliser d'identifiants de session avec une
- grande durée de vie pour l'auto-identification, car cela accroit le risque
- d'utiliser des sessions volées. Une fonctionnalité d'auto-identification
- doit être implémenté par le développeur.
-
-
-
- Utilisez une clé de hachage sécurisé à usage unique comme clé
- d'auto-identification en utilisant la fonction
- setcookie. Utilisez un hachage sécurisé
- plus fort que SHA-2. i.e. SHA-256 ou supérieur avec des données
- aléatoires depuis la fonction random_bytes
- ou via /dev/urandom.
-
-
-
- Si l'utilisateur est non authentifié, vérifiez si la clé d'auto-identification
- à usage unique est valide ou non. Dans ce cas où elle est valide, authentifiez
- l'utilisateur et définissez une nouvelle clé de hachage sécurisée à usage unique.
- Une clé d'auto-identification ne doit être utilisée qu'une seule fois, i.e. n'utilisez
- jamais une clé d'auto-identification, et régénérez-la toujours.
-
-
-
- Une clé d'auto-identification est une clé d'authentification avec une
- longue durée, elle doit être protégée autant que possible.
- Utilisez les attributs de cookie path/httponly/secure/SameSite pour la sécurité.
- i.e. ne transmettez jamais la clé d'auto-identification tant que cela
- n'est pas nécessaire.
-
-
-
- Les développeurs doivent implémenter les fonctionnalités qui
- désactivent l'auto-identification, et suppriment les cookies
- contenant les clés d'auto-identification non nécessaires.
-
-
-
-
-
- Attaques CSRF (Cross-Site Request Forgeries)
-
-
- Les sessions et les authentifications ne protègent pas contre les
- attaques CSRF. Les développeurs doivent implémenter des protections
- CRSF eux mêmes.
-
-
-
- La fonction output_add_rewrite_var peut être utilisée pour
- la protection CSRF. Référez vous aux pages du manuel pour plus de détails.
-
-
-
-
- PHP, avant sa version 7.2.0, utilise le même buffer de sortie et les
- mêmes configurations INI que la configuration trans-sid. Toutefois, l'utilisation
- de la fonction output_add_rewrite_var avec les versions
- de PHP antérieures à 7.2.0 n'est pas conseillé.
-
-
-
-
- La plupart des frameworks d'applications web supporte
- la protection CSRF. Référez vous au manuel de votre
- framework d'application web pour plus de détails.
-
-
-
- Depuis PHP 7.3, l'attribut SameSite du cookie de session peut être défini.
- Ceci est une mesure supplémentaire qui peut minimiser
- les vulnérabilités CSRF.
-
-
-
-
-
- Sécurisation des configurations INI de session
-
-
- En sécurisant les configurations INI de sessions, les développeurs
- peuvent éprouver la sécurité des sessions. Beaucoup de configurations
- INI n'ont pas de configuration recommandée. Les développeurs sont
- responsables de la bonne configuration des sessions.
-
-
-
-
-
- session.cookie_lifetime=0
-
-
- La valeur 0 a une signification importante.
- Elle informe les navigateurs de ne pas stocker le cookie dans un
- espace de stockage permanent. Aussi, lorsque le navigateur se ferme,
- le cookie d'identification de session est supprimé immédiatement.
- Si les développeurs définissent une valeur différente de 0, cela permet
- aux autres utilisateurs d'utiliser l'identifiant de session. La
- plupart des applications devraient utiliser "0" comme
- valeur.
-
-
- Si une fonctionnalité d'auto-identification est désirée, les développeurs
- doivent implémenter leur propre système d'auto-identification sécurité.
- N'utilisez pas des identifiants de session à longue durée pour cela.
- Pour plus d'informations, veuillez vous rapporter à la bonne section
- de cette documentation.
-
-
-
-
-
- session.use_cookies=On
-
-
- session.use_only_cookies=On
-
-
- Bien que les cookies HTTP souffrent de soucis techniques, ils
- restent la façon préférée de gérer les identifiants de sessions.
- N'utilisez que les cookies pour la gestion des identifiants de sessions
- lorsque cela est possible. La plupart des applications doivent utiliser
- un cookie pour l'identifiant de session.
-
-
- Si session.use_only_cookies=Off,
- le module de session utilisera les valeurs de l'identifiant
- de sessions définies par les variables GET ou POST fournies,
- et le cookie de l'identifiant de session ne sera pas initialisé.
-
-
-
-
-
- session.use_strict_mode=On
-
-
- Bien que l'activation de session.use_strict_mode
- soit obligatoire pour la sécurité des sessions, cette directive est
- désactivée par défaut.
-
-
- Ce mode évite que le module de session utilise un identifiant de session
- non initialisé. Dit différemment, le module de session ne va accepter
- que les identifiants de sessions valides générés par le module de session.
- Il va rejeter tous les identifiants de session fournis par les utilisateurs.
-
-
- En raison de la spécification des cookies, les attaquants sont capable
- de placer des cookies contenant les identifiants de sessions en configurant
- localement une base de données de cookie ou par injections Javascript.
- session.use_strict_mode peut éviter qu'un attaquant
- n'initialise un identifiant de session.
-
-
-
- Les attaquants peuvent initialiser un identifiant de session avec leur
- propre périphérique, et peuvent définir l'identifiant de session
- de leur victime. Ils doivent alors conserver l'identifiant de session
- actif pour pouvoir en abuser.
- Les attaquants doivent passer par bien d'autres étapes pour réussir leur attaque
- dans ce scénario. Aussi, l'utilisation de la directive
- session.use_strict_mode permet de limiter les risques.
-
-
-
-
-
-
- session.cookie_httponly=On
-
-
- Permet de refuser l'accès à un cookie de session depuis javascript.
- Cette configuration évite qu'un cookie ne soit corrompu par une
- injection Javascript.
-
-
- Il est possible d'utiliser un identifiant de session comme jeton CSRF, mais
- ce n'est pas recommandé. Par exemple, des sources HTML peuvent être
- sauvegardées et envoyées à d'autres utilisateurs.
- Les développeurs ne doivent pas écrire les identifiants de session dans les
- pages web pour des raisons de sécurité. Toutes les applications web doivent
- utiliser l'attribut httponly pour le cookie contenant l'identifiant de session.
-
-
-
- Le jeton CSRF doit être renouvellé périodiquement, tout comme l'identifiant
- de session.
-
-
-
-
-
-
- session.cookie_secure=On
-
-
- Permet d'accéder au cookie d'identifiant de session uniquement lorsque
- le protocole est HTTPS. Si un site web n'est accessible que par HTTPS,
- cette directive doit être activée.
-
-
- HSTS doit être utilisé pour les sites web accessibles que par HTTPS.
-
-
-
-
-
- session.cookie_samesite="Lax" ou
- session.cookie_samesite="Strict"
-
-
- Depuis PHP 7.3, l'attribut "SameSite" peut être défini
- pour le cookie d'identifiant de session. Cet attribut est une façon de
- mitiger les attaques CSRF (Cross Site Request Forgery).
-
-
- La différence entre Lax et Strict est l'accessibilité du cookie dans les requêtes
- originaires d'autres domaines employant la méthode HTTP GET.
- Les cookies utilisant Lax seront accessible via une requête GET originaire
- d'un autre domaine, alors que les cookies utilisant Strict ne le seront pas..
-
-
-
-
-
- session.gc_maxlifetime=[choisissez le plus petit possible]
-
-
- session.gc_maxlifetime est une configuration pour supprimer
- l'identifiant de session obsolète. Le fait de se reposer
- entièrement sur cette configuration n'est pas recommandé.
- Les développeurs doivent gérer la durée de vie des session avec un timestamp
- par eux même.
-
-
- Le GC des sessions (garbage collection) est mieux réalisé en utilisant
- la fonction session_gc.
- La fonction session_gc doit être exécutée par un gestionnaire
- de tâches ; i.e. un cron sur les systèmes Unix.
-
-
- GC est exécuté par probabilité, par défaut. Cette configuration
- ne garantie pas que les anciennes sessions soient
- supprimées. Bien que les développeurs ne doivent pas s'appuyer sur ce paramètre,
- il est recommandé tout de même de le définir à une valeur la plus petite possible.
- Il convient d'ajuster les directives session.gc_probability
- et session.gc_divisor de sorte à ce que
- les sessions obsolètes soient supprimées à fréquence appropriée.
- Si la fonctionnalité d'auto-identification est nécessaire, les développeurs
- doivent implémenter leur propre fonctionnalité d'auto-identification sécurisée ;
- voir ci-dessous pour plus d'informations. N'utilisez jamais l'identifiant
- de session de longue durée pour réaliser ce genre de fonctionnalité.
-
-
-
- Quelques modules de gestion de sauvegarde des sessions n'utilisent pas cette
- fonctionnalité basé sur l'expiration et sur la probabilité ; i.e.
- memcached, memcache. Référez vous à la documentation de ces gestionnaires
- de sauvegarde des sessions pour plus de détails.
-
-
-
-
-
-
- session.use_trans_sid=Off
-
-
- L'utilisation d'un gestionnaire d'identifiants de sessions transparent
- n'est pas interdit. Les développeurs doivent l'employer lorsque nécessaire.
- Pourtant, la désactivation de la gestion des identifiants de session de
- façon transparente permet de sécuriser un peu plus les identifiants de session
- en éliminant la possibilité d'une injection d'identifiant de sessions ou
- de fuite de cet identifiant.
-
-
-
- L'identifiant de session peut fuiter depuis des URLs sauvegardées,
- des URLs dans des emails, d'une source HTML sauvegardée, etc...
-
-
-
-
-
-
- session.trans_sid_tags=[drapeaux limités]
-
-
- (PHP 7.1.0 >=) Les développers ne doivent pas réécrire de drapeaux HTML
- non nécessaires. La valeur par défaut doit être suffisante pour la
- plupart des utilisations. Pour les versions de PHP plus anciennes,
- utilisez plutôt
- url_rewriter.tags.
-
-
-
-
-
- session.trans_sid_hosts=[hôtes limités]
-
-
- (PHP 7.1.0 >=) Ce paramètre définit une liste blanche des hôtes qui sont
- autorisés à réécrire les identifiants de session transparents. Ne jamais
- ajouter d'hôte qui ne sont pas de confiance !
- Le module de session autorise uniquement $_SERVER['HTTP_HOST']
- lorsque ce paramètre est vide.
-
-
-
-
-
- session.referer_check=[URL d'origine]
-
-
- Lorsque le paramètre session.use_trans_sid
- est actif.
- Ce paramètre réduit les risques d'injection d'identifiant de session.
- Si un site web est http://example.com/,
- définissez comme valeur à ce paramètre http://example.com/.
- Notez que les navigateurs HTTPS n'envoient pas l'en-tête referrer.
- Les navigateurs peuvent ne pas envoyer l'en-tête referrer de part
- leur propre configuration. Aussi, ce paramètre ne peut pas être
- considéré comme une mesure fiable de sécurité.
- Malgré tout, son utilisation est recommandée.
-
-
-
-
-
- session.cache_limiter=nocache
-
-
- S'assure que le contenu HTTP n'est pas mis en cache pour les sessions
- authentifiées. Permet la mise en cache que pour les contenus
- qui ne sont pas privés. Sinon, le contenu sera exposé.
- La valeur "private" doit être employé si le contenu HTTP n'inclut pas
- des données sensibles d'un point de vue sécurité. Notez que "private"
- peut transmettre des données privées mises en cache pour les clients
- partagés. "public" doit être uniquement utilisé lorsque le contenu HTML
- ne contient aucune donnée privée.
-
-
-
-
-
- session.hash_function="sha256"
-
-
- (PHP 7.1.0 <) Une fonction de hachage forte va générer un identifiant
- de session fort. Bien qu'une collision de hachage soit peu probable avec des
- algorithme de hachage MD5, les développeurs doivent utiliser SHA-2 ou un
- algorithme de hachage plus fort comme sha384 et sha512.
- Les développeurs doivent s'assurer d'une longueur suffisante de
- l'entropie pour la
- fonction de hachage utilisée.
-
-
-
-
-
- session.save_path=[dossier non lisible par tout le monde]
-
-
- Si ce paramètre est défini à un dossier accessible en lecture par tout le monde,
- comme /tmp (par défaut), les autres utilisateurs du serveur
- seront capables de récupérer les sessions en listant les fichiers présents
- dans ce répertoire.
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+ Sessions et Sécurité
+
+ Lien externe : Session fixation
+
+
+ La gestion des sessions HTTP représente le cœur de la sécurité sur le Web.
+ Des mesures d'atténuation doivent être prises en compte afin d'assurer la
+ sécurité des sessions.
+ Les développeurs doivent activer/utiliser les paramètres de sécurité appropriés.
+
+
+
+ Gestion basique des sessions
+
+
+ Sécurité des sessions
+
+ Le module de session ne peut pas garantir que les informations stockées
+ dans une session ne sont vues uniquement par l'utilisateur qui
+ a créé la session. Des mesures supplémentaires sont nécessaires pour
+ protéger la confidentialité de la session, suivant la valeur
+ qu'on lui associe.
+
+
+
+ L'importance des données stockées dans une session doit être évaluée
+ et des protections supplémentaires peuvent être déployées ;
+ ceci a obligatoirement un coût tel qu'être moins pratique pour
+ l'utilisateur. Par exemple, pour protéger les utilisateurs
+ d'une tactique simple, la directive session.use_only_cookies
+ doit être activée. Dans ce cas, les cookies doivent être
+ activés obligatoirement côté client sinon les sessions ne
+ fonctionneront pas.
+
+
+
+ Il y a plusieurs façons de divulguer des identifiants de session à
+ des tierces personnes. I.E. injections Javascripts, identifiants
+ de session dans les URLs, reniflement de paquets, accès physique
+ au périphérique, etc.
+ Un identifiant de session divulgué permet à un tiers d'accéder
+ à toutes les ressources associées avec cet identifiant. Tout d'abord,
+ les URLs contenant les identifiants de session. S'il y a des liens
+ vers des sites ou des ressources externes, l'URL incluant l'identifiant
+ de session doit être stockée dans les logs referrer du site externe.
+ Si ces données ne sont pas chiffrées, les identifiants de session
+ vont être transmis en texte clair sur le réseau. La solution ici est
+ d'implémenter SSL/TLS sur le serveur et le rendre mandataire pour les
+ utilisateurs. HSTS devrait être utilisé pour améliorer également la
+ sécurité.
+
+
+
+
+ Même HTTPS ne peut protéger la confidentialité des données
+ dans tous les cas. Par exemple, les vulnérabilités CRIME et BEAST
+ permettent à un attaquant de lire les données. De plus, notez
+ que certains réseaux utilisent des proxys HTTPS MITM pour
+ des audits. Les attaquants peuvent également mettre en place
+ ce genre de proxy.
+
+
+
+
+
+
+ Gestion des sessions non adaptatives
+
+
+ Le gestionnaire de sessions PHP est adaptatif, par défaut.
+ Un gestionnaire de sessions adaptatif apporte des
+ risques supplémentaires.
+
+
+
+ Lorsque session.use_strict_mode
+ est activé, et que le gestionnaire de sauvegarde des sessions le supporte,
+ un identifiant de session non initialisé est rejeté, et un nouveau est créé.
+ Ceci prévient une attaque qui force les utilisateurs à utiliser un
+ identifiant de session connu.
+ Un attaquant peut passer des liens ou envoyer des emails qui contient
+ l'identifiant de session.
+ I.e. http://example.com/page.php?PHPSESSID=123456789 si
+ session.use_trans_sid est activé,
+ la victime commencera une session en utilisant l'identifiant de session
+ fourni par l'attaquant.
+ session.use_strict_mode
+ permet d'annuler ce type de risque.
+
+
+
+
+ Les gestionnaires de sauvegarde définis par l'utilisateur peuvent
+ aussi supporter le mode de session strict en implémentant
+ la validation des identifiants de session. Tous les gestionnaires de
+ sauvegarde définis par l'utilisateur devraient implémenter la validation
+ des identifiants de session.
+
+
+
+
+ Le cookie d'identifiant de session peut être défini avec les
+ attributs domain, path, httponly, secure et, depuis PHP 7.3, SameSite.
+ Il existe une priorité définie par les navigateurs.
+ En utilisant les priorités, un attaquant peut définir l'identifiant de
+ session qui peut être utilisé en permanence. L'utilisation de la
+ directive session.use_only_cookies
+ ne permet pas de résoudre ce problème.
+ session.use_strict_mode
+ permet de mitiger ce risque. Avec la directive
+ session.use_strict_mode=On,
+ l'identifiant de session non initialisé sera refusé.
+
+
+
+
+ Même si la directive
+ session.use_strict_mode
+ limite les risques concernant le gestionnaire adaptatif de session, un
+ attaquant peut forcer les utilisateurs à utiliser un identifiant de
+ session non initialisé qui a été créé par l'attaquant, i.e. via des injections
+ Javascript. Ce type d'attaque peut être limité en utilisant les
+ recommandations de ce manuel.
+
+
+
+ En suivant ce manuel, les développeurs devraient activer la directive
+ session.use_strict_mode,
+ utiliser les timestamps basés sur le gestionnaire de session,
+ et régénérer les identifiants de session en utilisant la fonction
+ session_regenerate_id avec les procédures
+ recommandées. Si les développeurs suivent ces instructions, un identifiant de session
+ généré par un attaquant sera normalement supprimé.
+
+
+
+ Lorsqu'un accès à une session obsolète survient, les développeurs
+ devraient sauvegarder toutes les données de la session active de
+ l'utilisateur ; ces informations seront utiles pour de futures
+ investigations. L'utilisateur devrait être forcé à se déconnecter
+ de toutes les sessions, i.e. le forçant ainsi à s'identifier de
+ nouveau. Ceci permet de contrer les attaques utilisant des sessions
+ volées.
+
+
+
+
+
+ L'accès à une session obsolète ne veut pas forcément dire qu'il s'agit d'une
+ attaque. Un réseau instable et/ou l'effacement immédiat de la session
+ active va conduire des utilisateurs légitimes à utiliser des sessions
+ obsolètes.
+
+
+
+
+ Depuis 7.1.0, la fonction session_create_id a été
+ ajoutée. Cette fonction permet d'accéder à toutes les sessions actives
+ d'un utilisateur en préfixant les identifiants de session avec l'identifiant
+ de l'utilisateur. L'activation de la directive
+ session.use_strict_mode
+ est vital dans cette configuration. Sinon, les utilisateurs malicieux
+ peuvent définir des identifiants de sessions pour les autres utilisateurs.
+
+
+
+
+ Les utilisateurs des versions antérieures à PHP 7.1.0 doivent
+ utiliser CSPRNG, i.e. /dev/urandom, ou la fonction
+ random_bytes et les fonctions de hachage
+ pour générer un nouvel identifiant de session. La fonction
+ session_create_id possède des mécanismes de détection
+ de collision, et génère un identifiant de session suivant les
+ configurations INI des sessions. L'utilisation de la fonction
+ session_create_id est recommandée.
+
+
+
+
+
+
+ Regénération d'un identifiant de session
+
+
+ La directive
+ session.use_strict_mode
+ est un bon compromis mais n'est pas suffisant. Les développeurs doivent
+ également utiliser la fonction session_regenerate_id
+ pour la sécurité des sessions.
+
+
+
+ La regénération d'un identifiant de session réduit le risque de vol d'identifiants
+ de session, aussi, la fonction session_regenerate_id
+ doit être utilisée périodiquement; i.e. Regénérer l'identifiant de session toutes
+ les 15 minutes pour sécuriser le contenu sensible. Même dans le cas où
+ un identifiant de session est volé, à la fois le légitime utilisateur
+ et l'attaquant aura sa session qui va expirer. En d'autres termes, l'accès
+ au contenu par l'utilisateur ou l'attaquant va générer une erreur d'accès
+ à une session obsolète.
+
+
+
+ Les identifiants de session doivent être régénérés lorsque
+ les privilèges de l'utilisateur sont élevés, comme après une authentification.
+ La fonction session_regenerate_id doit être appelée
+ avant le stockage des informations d'authentification dans $_SESSION.
+ (la fonction session_regenerate_id
+ sauvegarde les données de session courantes automatiquement afin de
+ sauvegarder les timestamps/etc... dans la session courante.)
+ Assurez-vous que la nouvelle session contient le drapeau d'authentification.
+
+
+
+ Les développeurs ne doivent pas se baser sur
+ l'expiration de l'identifiant de session définie par la directive
+ session.gc_maxlifetime.
+ Les attaquants peuvent accéder à l'identifiant de session de la victime
+ de façon périodique pour éviter son expiration, et permettre son exploitation
+ y compris avec des sessions authentifiées.
+
+
+
+ Au lieu de cela, les développeurs doivent implémenter un timestamp
+ basé sur la gestion des données de session.
+
+
+
+
+ Même si le gestionnaire de session peut gérer les timestamps de façon
+ transparente, cette fonctionnalité n'est pas implémentée. Les données
+ des anciennes sessions doivent être conservées tant que le récupérateur
+ de mémoire ne soit passé. Simultanément, les développeurs doivent s'assurer
+ eux-mêmes que les données de session obsolètes soient effectivement effacées.
+ Cependant, les développeurs ne doivent pas supprimer les données
+ de session active trop rapidement. i.e. session_regenerate_id(true);
+ et session_destroy ne doivent jamais être appelés
+ en même temps pour une session active. Ça peut paraître contradictoire,
+ mais c'est une exigence du mandataire.
+
+
+
+
+ session_regenerate_idn'effacera pas
+ les anciennes sessions par défaut. Les sessions authentifiées obsolètes
+ peuvent être présente pour être utilisées. Les développeurs doivent s'assurer
+ que les anciennes sessions ne soient pas utilisées par tout le monde.
+ Ils doivent interdire l'accès aux données de session obsolète
+ en utilisant eux-même des timestamps.
+
+
+
+
+ La suppression soudaine d'une session active produit des effets de bords
+ indésirables. Les sessions peuvent disparaître lorsqu'il y a des connexions
+ concurentes sur l'application web et/ou lorsque le réseau est instable.
+
+
+ Les accès potentiellement malicieux sont indétectables avec la suppression
+ soudaine d'une session.
+
+
+ Au lieu de supprimer les sessions osbolètes immédiatement, les développeurs
+ doivent définir un court temps d'expiration (timestamp) dans
+ $_SESSION, et interdire l'accès aux données de session.
+
+
+ Les développeurs ne doivent pas interdire l'accès aux données des
+ anciennes sessions immédiatement après l'exécution de la fonction
+ session_regenerate_id. L'accès doit être interdit
+ à un stade ultérieure ; i.e. quelques secondes après pour les réseaux
+ stables, comme un réseau filaire et quelques minutes après pour les réseaux
+ instables comme des téléphones mobiles ou des réseaux Wi-Fi.
+
+
+ Si un utilisateur accède à une session obsolète (session ayant expirée), l'accès
+ à cette session doit être refusé. Il est également recommandé de supprimer le
+ statut d'authentification de toutes les sessions utilisateurs, car cela
+ peut représenter un axe d'attaque.
+
+
+
+
+ L'utilisation de la directive session.use_only_cookies et de la fonction
+ session_regenerate_id peuvent causer des DoS personnel
+ avec des cookies non-supprimés définis par les attaquants. Dans ce cas,
+ les développeurs peuvent inviter les utilisateurs à supprimer les cookies
+ et les avertir qu'ils peuvent rencontrer un problème de sécurité.
+ Les attaquants peuvent définir des cookies malicieux via une application
+ web vulnérable, un plugin de navigateur exposé ou vicié, un périphérique
+ physique compromis, etc...
+
+
+
+
+ Ne vous méprenez pas sur le risque DoS. session.use_strict_mode=On
+ est obligatoire pour la sécurité des identifiants de session !
+ Tous les sites sont encouragés à activer la directive
+ session.use_strict_mode.
+
+
+ DoS peut uniquement survenir lorsque le compte subit une attaque. Une injection
+ Javascript dans une application représente la plupart des axes d'attaque.
+
+
+
+
+
+
+ Suppression des données de session
+
+
+ Les données de sessions obsolètes doivent être inaccessibles
+ et doivent être supprimées. Le module courant de session
+ ne prend pas en charge cet aspect.
+
+
+
+ Les données de sessions obsolètes doivent être supprimées aussi vite
+ que possible. Cependant, les sessions actives ne doivent pas être
+ supprimées instantanément. Pour satisfaire ces recommandations, les développeurs
+ eux-mêmes doivent implémenter un gestionnaire des données de session basé sur
+ un timestamp.
+
+
+
+ Définissez et gérez l'expiration du timestamp dans la variable
+ globale $_SESSION. Interdisez l'accès aux données de sessions
+ périmées. Lorsqu'un accès à des données de session obsolète est détecté,
+ il convient de supprimer toutes les statuts authentifiés des sessions
+ utilisateurs et forcer les utilisateurs à s'authentifier de nouveau.
+ L'accès à des données de sessions obsolètes peut représenter une attaque.
+ Pour arriver à cette fin, les développeurs doivent suivre toutes les sessions
+ actives de tous les utilisateurs.
+
+
+
+
+ L'accès à une session obsolète peut également survenir à cause d'un réseau instable
+ et/ou d'un accès concurrent à un site web, i.e. le serveur tente de définir un
+ nouvel identifiant de session via un cookie, mais le paquet Set-Cookie n'a jamais
+ atteint le client en raison d'une perte de connexion. Une connexion peut
+ créer un nouvel identifiant de session via la fonction session_regenerate_id,
+ mais une autre connexion concurrente peut ne pas avoir encore reçu
+ l'identifiant de session. Toutefois, les développeurs doivent interdire l'accès
+ à une session obsolète à un moment plus éloigné. i.e. la gestion des sessions
+ basés sur le timestamp est obligatoire.
+
+
+
+
+ En résumé, les données de sessions ne doivent pas être détruites avec la fonction
+ session_regenerate_id, ni avec la fonction session_destroy,
+ mais les timestamps doivent être utilisés pour contrôler l'accès aux données de
+ session. Laissez la fonction session_gc supprimer les données obsolètes
+ depuis le stockage des données de sessions.
+
+
+
+
+
+ Session et Verrouillage
+
+
+ Les données de session sont verrouillées par défaut pour éviter les
+ accès concurent. Le verrouillage est obligatoire pour conserver une
+ consistance des données de session au travers les requêtes.
+
+
+
+ Cependant, le verrouillage de session peut être utilisé par les attaquants
+ pour réaliser des attaques DoS. Pour minimiser le risque d'une attaque DoS
+ par verrouillage de session, il convient de minimiser les verrous.
+ Utilisez des données en lecture seule lorsque les données de session
+ n'ont pas besoin d'être mises à jour. Utilisez l'option 'read_and_close'
+ avec la fonction session_start.
+ session_start(['read_and_close'=>1]); va clôre
+ la session aussi vite que possible après la mise à jour de la variable
+ globale $_SESSION en utilisant la fonction session_commit.
+
+
+
+ Le module de session courant ne détecte pas
+ toutes les modifications de la variable $_SESSION lorsque
+ la session est inactive. Il en va de la responsabilité du développeur
+ de ne pas modifier la variable $_SESSION lorsque la session est inactive.
+
+
+
+
+
+ Sessions actives
+
+
+ Les développeurs doivent conserver une trace de toutes les sessions
+ actives de chaque utilisateur, et leur notifier le nombre de sessions
+ actives, depuis quelle adresse IP, depuis combien de temps, etc.
+ PHP ne conserve pas de traces de ces informations. Les développeurs
+ sont supposés le faire eux-mêmes.
+
+
+
+ Il existe différentes façons de faire cela. Une implémentation possible
+ est de définir une base de données qui conserve une trace des données
+ nécessaires, et y stocker toutes les informations pertinentes.
+ Depuis que les données de session sont GCed, les développeurs doivent
+ faire attention aux données GCed pour maintenir la base de données
+ des sessions actives consistante.
+
+
+
+ Une des implémentations simple est "l'identifiant utilisateur préfixant
+ l'identifiant de session" et stocker les informations nécessaires dans
+ la variable $_SESSION. La plupart des bases de données sont relativement
+ performantes pour sélectionner un préfixe sous la forme d'une &string;.
+ Les développeurs DOIVENT utiliser la fonction session_regenerate_id
+ ainsi que la fonction session_create_id pour cela.
+
+
+
+
+ N'utilisez jamais de données confidentielles comme préfixe.
+ Si l'identifiant utilisateur est confidentiel, vous devriez utiliser
+ la fonction hash_hmac.
+
+
+
+
+
+ L'activation de la directive
+ session.use_strict_mode
+ est obligatoire pour ce type de configuration. Assurez vous qu'il
+ est activé. Sinon, la base de données des sessions actives
+ peut être compromise.
+
+
+
+
+ Le gestionnaire de session basé sur un timestamp est obligatoire
+ pour détecter l'accès à des sessions obsolètes. Lorsque l'accès à une
+ session obsolète est détecté, le drapeau d'authentification doit
+ être supprimé de toutes les sessions actives de l'utilisateur.
+ Ceci permet d'éviter aux attaquants de continuer à exploiter les sessions
+ volées.
+
+
+
+
+
+ Session et l'auto-identification
+
+
+ Les développeurs ne doivent pas utiliser d'identifiants de session avec une
+ grande durée de vie pour l'auto-identification, car cela accroit le risque
+ d'utiliser des sessions volées. Une fonctionnalité d'auto-identification
+ doit être implémenté par le développeur.
+
+
+
+ Utilisez une clé de hachage sécurisé à usage unique comme clé
+ d'auto-identification en utilisant la fonction
+ setcookie. Utilisez un hachage sécurisé
+ plus fort que SHA-2. i.e. SHA-256 ou supérieur avec des données
+ aléatoires depuis la fonction random_bytes
+ ou via /dev/urandom.
+
+
+
+ Si l'utilisateur est non authentifié, vérifiez si la clé d'auto-identification
+ à usage unique est valide ou non. Dans ce cas où elle est valide, authentifiez
+ l'utilisateur et définissez une nouvelle clé de hachage sécurisée à usage unique.
+ Une clé d'auto-identification ne doit être utilisée qu'une seule fois, i.e. n'utilisez
+ jamais une clé d'auto-identification, et régénérez-la toujours.
+
+
+
+ Une clé d'auto-identification est une clé d'authentification avec une
+ longue durée, elle doit être protégée autant que possible.
+ Utilisez les attributs de cookie path/httponly/secure/SameSite pour la sécurité.
+ i.e. ne transmettez jamais la clé d'auto-identification tant que cela
+ n'est pas nécessaire.
+
+
+
+ Les développeurs doivent implémenter les fonctionnalités qui
+ désactivent l'auto-identification, et suppriment les cookies
+ contenant les clés d'auto-identification non nécessaires.
+
+
+
+
+
+ Attaques CSRF (Cross-Site Request Forgeries)
+
+
+ Les sessions et les authentifications ne protègent pas contre les
+ attaques CSRF. Les développeurs doivent implémenter des protections
+ CRSF eux mêmes.
+
+
+
+ La fonction output_add_rewrite_var peut être utilisée pour
+ la protection CSRF. Référez vous aux pages du manuel pour plus de détails.
+
+
+
+
+ PHP, avant sa version 7.2.0, utilise le même buffer de sortie et les
+ mêmes configurations INI que la configuration trans-sid. Toutefois, l'utilisation
+ de la fonction output_add_rewrite_var avec les versions
+ de PHP antérieures à 7.2.0 n'est pas conseillé.
+
+
+
+
+ La plupart des frameworks d'applications web supporte
+ la protection CSRF. Référez vous au manuel de votre
+ framework d'application web pour plus de détails.
+
+
+
+ Depuis PHP 7.3, l'attribut SameSite du cookie de session peut être défini.
+ Ceci est une mesure supplémentaire qui peut minimiser
+ les vulnérabilités CSRF.
+
+
+
+
+
+ Sécurisation des configurations INI de session
+
+
+ En sécurisant les configurations INI de sessions, les développeurs
+ peuvent éprouver la sécurité des sessions. Beaucoup de configurations
+ INI n'ont pas de configuration recommandée. Les développeurs sont
+ responsables de la bonne configuration des sessions.
+
+
+
+
+
+ session.cookie_lifetime=0
+
+
+ La valeur 0 a une signification importante.
+ Elle informe les navigateurs de ne pas stocker le cookie dans un
+ espace de stockage permanent. Aussi, lorsque le navigateur se ferme,
+ le cookie d'identification de session est supprimé immédiatement.
+ Si les développeurs définissent une valeur différente de 0, cela permet
+ aux autres utilisateurs d'utiliser l'identifiant de session. La
+ plupart des applications devraient utiliser "0" comme
+ valeur.
+
+
+ Si une fonctionnalité d'auto-identification est désirée, les développeurs
+ doivent implémenter leur propre système d'auto-identification sécurité.
+ N'utilisez pas des identifiants de session à longue durée pour cela.
+ Pour plus d'informations, veuillez vous rapporter à la bonne section
+ de cette documentation.
+
+
+
+
+
+ session.use_cookies=On
+
+
+ session.use_only_cookies=On
+
+
+ Bien que les cookies HTTP souffrent de soucis techniques, ils
+ restent la façon préférée de gérer les identifiants de sessions.
+ N'utilisez que les cookies pour la gestion des identifiants de sessions
+ lorsque cela est possible. La plupart des applications doivent utiliser
+ un cookie pour l'identifiant de session.
+
+
+ Si session.use_only_cookies=Off,
+ le module de session utilisera les valeurs de l'identifiant
+ de sessions définies par les variables GET ou POST fournies,
+ et le cookie de l'identifiant de session ne sera pas initialisé.
+
+
+
+
+
+ session.use_strict_mode=On
+
+
+ Bien que l'activation de session.use_strict_mode
+ soit obligatoire pour la sécurité des sessions, cette directive est
+ désactivée par défaut.
+
+
+ Ce mode évite que le module de session utilise un identifiant de session
+ non initialisé. Dit différemment, le module de session ne va accepter
+ que les identifiants de sessions valides générés par le module de session.
+ Il va rejeter tous les identifiants de session fournis par les utilisateurs.
+
+
+ En raison de la spécification des cookies, les attaquants sont capable
+ de placer des cookies contenant les identifiants de sessions en configurant
+ localement une base de données de cookie ou par injections Javascript.
+ session.use_strict_mode peut éviter qu'un attaquant
+ n'initialise un identifiant de session.
+
+
+
+ Les attaquants peuvent initialiser un identifiant de session avec leur
+ propre périphérique, et peuvent définir l'identifiant de session
+ de leur victime. Ils doivent alors conserver l'identifiant de session
+ actif pour pouvoir en abuser.
+ Les attaquants doivent passer par bien d'autres étapes pour réussir leur attaque
+ dans ce scénario. Aussi, l'utilisation de la directive
+ session.use_strict_mode permet de limiter les risques.
+
+
+
+
+
+
+ session.cookie_httponly=On
+
+
+ Permet de refuser l'accès à un cookie de session depuis javascript.
+ Cette configuration évite qu'un cookie ne soit corrompu par une
+ injection Javascript.
+
+
+ Il est possible d'utiliser un identifiant de session comme jeton CSRF, mais
+ ce n'est pas recommandé. Par exemple, des sources HTML peuvent être
+ sauvegardées et envoyées à d'autres utilisateurs.
+ Les développeurs ne doivent pas écrire les identifiants de session dans les
+ pages web pour des raisons de sécurité. Toutes les applications web doivent
+ utiliser l'attribut httponly pour le cookie contenant l'identifiant de session.
+
+
+
+ Le jeton CSRF doit être renouvellé périodiquement, tout comme l'identifiant
+ de session.
+
+
+
+
+
+
+ session.cookie_secure=On
+
+
+ Permet d'accéder au cookie d'identifiant de session uniquement lorsque
+ le protocole est HTTPS. Si un site web n'est accessible que par HTTPS,
+ cette directive doit être activée.
+
+
+ HSTS doit être utilisé pour les sites web accessibles que par HTTPS.
+
+
+
+
+
+ session.cookie_samesite="Lax" ou
+ session.cookie_samesite="Strict"
+
+
+ Depuis PHP 7.3, l'attribut "SameSite" peut être défini
+ pour le cookie d'identifiant de session. Cet attribut est une façon de
+ mitiger les attaques CSRF (Cross Site Request Forgery).
+
+
+ La différence entre Lax et Strict est l'accessibilité du cookie dans les requêtes
+ originaires d'autres domaines employant la méthode HTTP GET.
+ Les cookies utilisant Lax seront accessible via une requête GET originaire
+ d'un autre domaine, alors que les cookies utilisant Strict ne le seront pas..
+
+
+
+
+
+ session.gc_maxlifetime=[choisissez le plus petit possible]
+
+
+ session.gc_maxlifetime est une configuration pour supprimer
+ l'identifiant de session obsolète. Le fait de se reposer
+ entièrement sur cette configuration n'est pas recommandé.
+ Les développeurs doivent gérer la durée de vie des session avec un timestamp
+ par eux même.
+
+
+ Le GC des sessions (garbage collection) est mieux réalisé en utilisant
+ la fonction session_gc.
+ La fonction session_gc doit être exécutée par un gestionnaire
+ de tâches ; i.e. un cron sur les systèmes Unix.
+
+
+ GC est exécuté par probabilité, par défaut. Cette configuration
+ ne garantie pas que les anciennes sessions soient
+ supprimées. Bien que les développeurs ne doivent pas s'appuyer sur ce paramètre,
+ il est recommandé tout de même de le définir à une valeur la plus petite possible.
+ Il convient d'ajuster les directives session.gc_probability
+ et session.gc_divisor de sorte à ce que
+ les sessions obsolètes soient supprimées à fréquence appropriée.
+ Si la fonctionnalité d'auto-identification est nécessaire, les développeurs
+ doivent implémenter leur propre fonctionnalité d'auto-identification sécurisée ;
+ voir ci-dessous pour plus d'informations. N'utilisez jamais l'identifiant
+ de session de longue durée pour réaliser ce genre de fonctionnalité.
+
+
+
+ Quelques modules de gestion de sauvegarde des sessions n'utilisent pas cette
+ fonctionnalité basé sur l'expiration et sur la probabilité ; i.e.
+ memcached, memcache. Référez vous à la documentation de ces gestionnaires
+ de sauvegarde des sessions pour plus de détails.
+
+
+
+
+
+
+ session.use_trans_sid=Off
+
+
+ L'utilisation d'un gestionnaire d'identifiants de sessions transparent
+ n'est pas interdit. Les développeurs doivent l'employer lorsque nécessaire.
+ Pourtant, la désactivation de la gestion des identifiants de session de
+ façon transparente permet de sécuriser un peu plus les identifiants de session
+ en éliminant la possibilité d'une injection d'identifiant de sessions ou
+ de fuite de cet identifiant.
+
+
+
+ L'identifiant de session peut fuiter depuis des URLs sauvegardées,
+ des URLs dans des emails, d'une source HTML sauvegardée, etc...
+
+
+
+
+
+
+ session.trans_sid_tags=[drapeaux limités]
+
+
+ (PHP 7.1.0 >=) Les développers ne doivent pas réécrire de drapeaux HTML
+ non nécessaires. La valeur par défaut doit être suffisante pour la
+ plupart des utilisations. Pour les versions de PHP plus anciennes,
+ utilisez plutôt
+ url_rewriter.tags.
+
+
+
+
+
+ session.trans_sid_hosts=[hôtes limités]
+
+
+ (PHP 7.1.0 >=) Ce paramètre définit une liste blanche des hôtes qui sont
+ autorisés à réécrire les identifiants de session transparents. Ne jamais
+ ajouter d'hôte qui ne sont pas de confiance !
+ Le module de session autorise uniquement $_SERVER['HTTP_HOST']
+ lorsque ce paramètre est vide.
+
+
+
+
+
+ session.referer_check=[URL d'origine]
+
+
+ Lorsque le paramètre session.use_trans_sid
+ est actif.
+ Ce paramètre réduit les risques d'injection d'identifiant de session.
+ Si un site web est http://example.com/,
+ définissez comme valeur à ce paramètre http://example.com/.
+ Notez que les navigateurs HTTPS n'envoient pas l'en-tête referrer.
+ Les navigateurs peuvent ne pas envoyer l'en-tête referrer de part
+ leur propre configuration. Aussi, ce paramètre ne peut pas être
+ considéré comme une mesure fiable de sécurité.
+ Malgré tout, son utilisation est recommandée.
+
+
+
+
+
+ session.cache_limiter=nocache
+
+
+ S'assure que le contenu HTTP n'est pas mis en cache pour les sessions
+ authentifiées. Permet la mise en cache que pour les contenus
+ qui ne sont pas privés. Sinon, le contenu sera exposé.
+ La valeur "private" doit être employé si le contenu HTTP n'inclut pas
+ des données sensibles d'un point de vue sécurité. Notez que "private"
+ peut transmettre des données privées mises en cache pour les clients
+ partagés. "public" doit être uniquement utilisé lorsque le contenu HTML
+ ne contient aucune donnée privée.
+
+
+
+
+
+ session.hash_function="sha256"
+
+
+ (PHP 7.1.0 <) Une fonction de hachage forte va générer un identifiant
+ de session fort. Bien qu'une collision de hachage soit peu probable avec des
+ algorithme de hachage MD5, les développeurs doivent utiliser SHA-2 ou un
+ algorithme de hachage plus fort comme sha384 et sha512.
+ Les développeurs doivent s'assurer d'une longueur suffisante de
+ l'entropie pour la
+ fonction de hachage utilisée.
+
+
+
+
+
+ session.save_path=[dossier non lisible par tout le monde]
+
+
+ Si ce paramètre est défini à un dossier accessible en lecture par tout le monde,
+ comme /tmp (par défaut), les autres utilisateurs du serveur
+ seront capables de récupérer les sessions en listant les fichiers présents
+ dans ce répertoire.
+
+
+
+
+
+
+
+
+
+
diff --git a/reference/simdjson/functions/simdjson-key-value.xml b/reference/simdjson/functions/simdjson-key-value.xml
index 48f92675b1..a67590e017 100644
--- a/reference/simdjson/functions/simdjson-key-value.xml
+++ b/reference/simdjson/functions/simdjson-key-value.xml
@@ -1,125 +1,127 @@
-
-
-
-
-
- simdjson_key_value
- Décode la valeur d'une chaîne JSON située à l'indicateur JSON demandé.
-
-
-
- &reftitle.description;
-
- mixedsimdjson_key_value
- stringjson
- stringkey
- boolassociative&false;
- intdepth512
-
-
- Décode et renvoie la valeur trouvée à l'indicateur JSON demandé.
-
-
-
-
- &reftitle.parameters;
-
-
- json
-
-
- Le jsonstring à interroger et décoder.
-
-
- Cette fonction ne fonctionne qu'avec des chaînes encodées en UTF-8.
-
-
- Cette fonction analyse les entrées valides que
- json_decode peut décoder,
- à condition qu'elles soient inférieures à 4 Go de longueur.
-
-
-
-
- key
-
-
- Le string du pointeur JSON.
-
-
-
-
- associative
-
-
- Lorsque &true; les objets JSON seront retournés sous forme
- de &array; associatifs ; lorsqu'ils sont &false;, les objets JSON seront retournés sous forme d'&object;s.
-
-
-
-
- depth
-
-
- La profondeur maximale de la structure à décoder.
- La valeur doit être supérieure à 0,
- et inférieure ou égale à 2147483647.
-
- Ceux qui appellent cette fonction devraient utiliser des valeurs raisonnablement petites,
- car des profondeurs plus importantes nécessitent plus d'espace tampon et augmenteront
- la profondeur de récursion, contrairement à l'implémentation actuelle de json_decode.
-
-
-
-
-
-
-
- &reftitle.returnvalues;
-
- Renvoie la partie de la valeur encodée dans json
- que key référence dans le type PHP approprié.
- Les valeurs true, false et
- null sont renvoyées respectivement comme &true;, &false; et &null;.
-
-
-
- &reftitle.errors;
-
- Si json est invalide, une SimdJsonException est lancée à partir de PECL simdjson 2.1.0,
- alors qu'auparavant, une RuntimeException était lancée.
-
-
- Si depth est en dehors de la plage autorisée,
- une SimdJsonValueError est lancée à partir de PECL simdjson 3.0.0,
- alors qu'auparavant, une erreur de niveau E_WARNING était lancée.
-
-
-
- &reftitle.seealso;
-
- json_encode
- simdjson_decode
-
-
-
-
+
+
+
+
+
+ simdjson_key_value
+ Décode la valeur d'une chaîne JSON située à l'indicateur JSON demandé.
+
+
+
+ &reftitle.description;
+
+ mixedsimdjson_key_value
+ stringjson
+ stringkey
+ boolassociative&false;
+ intdepth512
+
+
+ Décode et renvoie la valeur trouvée à l'indicateur JSON demandé.
+
+
+
+
+ &reftitle.parameters;
+
+
+ json
+
+
+ Le jsonstring à interroger et décoder.
+
+
+ Cette fonction ne fonctionne qu'avec des chaînes encodées en UTF-8.
+
+
+ Cette fonction analyse les entrées valides que
+ json_decode peut décoder,
+ à condition qu'elles soient inférieures à 4 Go de longueur.
+
+
+
+
+ key
+
+
+ Le string du pointeur JSON.
+
+
+
+
+ associative
+
+
+ Lorsque &true; les objets JSON seront retournés sous forme
+ de &array; associatifs ; lorsqu'ils sont &false;, les objets JSON seront retournés sous forme d'&object;s.
+
+
+
+
+ depth
+
+
+ La profondeur maximale de la structure à décoder.
+ La valeur doit être supérieure à 0,
+ et inférieure ou égale à 2147483647.
+
+ Ceux qui appellent cette fonction devraient utiliser des valeurs raisonnablement petites,
+ car des profondeurs plus importantes nécessitent plus d'espace tampon et augmenteront
+ la profondeur de récursion, contrairement à l'implémentation actuelle de json_decode.
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+
+ Renvoie la partie de la valeur encodée dans json
+ que key référence dans le type PHP approprié.
+ Les valeurs true, false et
+ null sont renvoyées respectivement comme &true;, &false; et &null;.
+
+
+
+ &reftitle.errors;
+
+ Si json ou key est invalide,
+ ou si key n'a pas pu être trouvé dans json,
+ une SimdJsonException est lancée à partir de PECL simdjson 2.1.0,
+ alors qu'auparavant, une RuntimeException était lancée.
+
+
+ Si depth est en dehors de la plage autorisée,
+ une SimdJsonValueError est lancée à partir de PECL simdjson 3.0.0,
+ alors qu'auparavant, une erreur de niveau E_WARNING était lancée.
+
+
+
+ &reftitle.seealso;
+
+ json_encode
+ simdjson_decode
+
+
+
+
diff --git a/reference/spl/arrayobject/setflags.xml b/reference/spl/arrayobject/setflags.xml
index 86f9615a9b..f721477cad 100644
--- a/reference/spl/arrayobject/setflags.xml
+++ b/reference/spl/arrayobject/setflags.xml
@@ -37,7 +37,7 @@
signification est décrite dans les
constantes prédéfinies.
- Options de comportement de ArrayObject
+ Options de comportement de ArrayObject
diff --git a/reference/spl/splfileinfo/setfileclass.xml b/reference/spl/splfileinfo/setfileclass.xml
index 96caac35bc..9ba4fcf657 100644
--- a/reference/spl/splfileinfo/setfileclass.xml
+++ b/reference/spl/splfileinfo/setfileclass.xml
@@ -17,7 +17,7 @@
Utilisez cette méthode pour définir une classe personnalisée qui sera
utilisée lorsque SplFileInfo::openFile est appelé.
Le nom de la classe passé à cette méthode doit être
- SplFileObject ou une classe dérivé de
+ SplFileObject ou une classe dérivé de
SplFileObject.
diff --git a/reference/spl/splfixedarray/offsetget.xml b/reference/spl/splfixedarray/offsetget.xml
index 71b197973d..992f75a3f6 100644
--- a/reference/spl/splfixedarray/offsetget.xml
+++ b/reference/spl/splfixedarray/offsetget.xml
@@ -45,7 +45,7 @@
&reftitle.errors;
- Lance une exception RuntimeException
+ Lance une exception RuntimeException
lorsque index est en dehors de la taille
définie du tableau ou lorsque index
n'a pu être analysé comme un entier.
diff --git a/reference/sqlite3/setup.xml b/reference/sqlite3/setup.xml
index fa0bf18af9..7bf9f9401a 100644
--- a/reference/sqlite3/setup.xml
+++ b/reference/sqlite3/setup.xml
@@ -1,47 +1,47 @@
-
-
-
-
-
-
- &reftitle.setup;
-
-
- &reftitle.required;
-
- Depuis PHP 7.4.0, libsqlite ≥ 3.7.4 est requise.
- Auparavant, la librairie libsqlite intégrée aurait pu être utilisée à la place.
-
-
-
-
- &reference.sqlite3.configure;
-
-
-
- &reference.sqlite3.ini;
-
-
-
-
-
-
+
+
+
+
+
+
+ &reftitle.setup;
+
+
+ &reftitle.required;
+
+ Depuis PHP 7.4.0, libsqlite ≥ 3.7.4 est requise.
+ Auparavant, la bibliothèque libsqlite intégrée aurait pu être utilisée à la place.
+
+
+
+
+ &reference.sqlite3.configure;
+
+
+
+ &reference.sqlite3.ini;
+
+
+
+
+
+
diff --git a/reference/sqlsrv/constants.xml b/reference/sqlsrv/constants.xml
index d70b441e31..ec734ad299 100644
--- a/reference/sqlsrv/constants.xml
+++ b/reference/sqlsrv/constants.xml
@@ -1,1019 +1,1019 @@
-
-
-
-
- &reftitle.constants;
- &extension.constants;
-
-
-
- SQLSRV_FETCH_ASSOC
- (int)
-
-
-
- Force sqlsrv_fetch_array à retourner un tableau
- associatif quand il est passé en paramètre.
-
-
-
-
-
- SQLSRV_FETCH_NUMERIC
- (int)
-
-
-
- Force sqlsrv_fetch_array à retourner un tableau
- indexé numériquement quand il est passé en paramètre.
-
-
-
-
-
- SQLSRV_FETCH_BOTH
- (int)
-
-
-
- Force sqlsrv_fetch_array à retourner un tableau
- associatif et un tableau indexé numériquement quand il est passé en
- paramètre (comportement par défaut).
-
-
-
-
-
- SQLSRV_ERR_ALL
- (int)
-
-
-
- Force sqlsrv_errors à retourner les erreurs
- et avertissements quand il est passé en paramètre (comportement par
- défaut).
-
-
-
-
-
- SQLSRV_ERR_ERRORS
- (int)
-
-
-
- Force sqlsrv_errors à retourner seulement
- les erreurs (pas les avertissements) quand il est passé en paramètre.
-
-
-
-
-
- SQLSRV_ERR_WARNINGS
- (int)
-
-
-
- Force sqlsrv_errors à retourner seulement
- les avertissements (pas les erreurs) quand il est passé en paramètre.
-
-
-
-
-
- SQLSRV_LOG_SYSTEM_ALL
- (int)
-
-
-
- Active les logs de tous les sous-systèmes quand il est passé à la fonction
- sqlsrv_configure comme paramère.
-
-
-
-
-
- SQLSRV_LOG_SYSTEM_CONN
- (int)
-
-
-
- Active les logs de toute l'activité des connexions quand il est passé
- à la fonction sqlsrv_configure comme paramère.
-
-
-
-
-
- SQLSRV_LOG_SYSTEM_INIT
- (int)
-
-
-
- Active les logs de toute l'activité des initialisations quand il est
- passé à la fonction sqlsrv_configure comme paramère.
-
-
-
-
-
- SQLSRV_LOG_SYSTEM_OFF
- (int)
-
-
-
- Désactive les logs de tous les sous-systèmes quand il est passé à la fonction
- sqlsrv_configure comme paramère.
-
-
-
-
-
- SQLSRV_LOG_SYSTEM_STMT
- (int)
-
-
-
- Active les logs des requêtes quand il est passé à la fonction
- sqlsrv_configure comme paramère.
-
-
-
-
-
- SQLSRV_LOG_SYSTEM_UTIL
- (int)
-
-
-
- Active les logs des erreurs de fonction quand il est passé à la fonction
- sqlsrv_configure comme paramère.
-
-
-
-
-
- SQLSRV_LOG_SEVERITY_ALL
- (int)
-
-
-
- Active les logs des erreurs, avertissements et notes quand il est
- passé à la fonction sqlsrv_configure comme paramère.
-
-
-
-
-
- SQLSRV_LOG_SEVERITY_ERROR
- (int)
-
-
-
- Spécifie que les erreurs seront enregistrées quand il est passé à la fonction
- sqlsrv_configure comme paramère.
-
-
-
-
-
- SQLSRV_LOG_SEVERITY_NOTICE
- (int)
-
-
-
- Spécifie que les notes seront enregistrées quand il est passé à la fonction
- sqlsrv_configure comme paramère.
-
-
-
-
-
- SQLSRV_LOG_SEVERITY_WARNING
- (int)
-
-
-
- Spécifie que les avertissements seront enregistrées quand il est passé à
- la fonction sqlsrv_configure comme paramère.
-
-
-
-
-
- SQLSRV_NULLABLE_YES
- (int)
-
-
-
- Indique qu'une colonne peut être nulle.
-
-
-
-
-
- SQLSRV_NULLABLE_NO
- (int)
-
-
-
- Indique qu'une colonne ne peut pas être nulle.
-
-
-
-
-
- SQLSRV_NULLABLE_UNKNOWN
- (int)
-
-
-
- Indique s'il est connu qu'une colonne est nulle.
-
-
-
-
-
- SQLSRV_PARAM_IN
- (int)
-
-
-
- Indique un paramètre d'entrée quand il est passé à la fonction
- sqlsrv_query ou à la fonction
- sqlsrv_prepare.
-
-
-
-
-
- SQLSRV_PARAM_INOUT
- (int)
-
-
-
- Indique un paramètre d'entrée ou de sortie quand il est passé à la
- fonction sqlsrv_query ou à la fonction
- sqlsrv_prepare.
-
-
-
-
-
- SQLSRV_PARAM_OUT
- (int)
-
-
-
- Indique un paramètre de sortie quand il est passé à la fonction
- sqlsrv_query ou à la fonction
- sqlsrv_prepare.
-
-
-
-
-
- SQLSRV_PHPTYPE_INT
- (int)
-
-
-
- Spécifie une donnée de type entier PHP. Pour plus d'informations, voir
- Comment spécifier les types PHP.
-
-
-
-
-
- SQLSRV_PHPTYPE_DATETIME
- (int)
-
-
-
- Spécifie une donnée de type datetime (date et heure) PHP. Pour plus d'informations, voir
- Comment spécifier les types PHP.
-
-
-
-
-
- SQLSRV_PHPTYPE_FLOAT
- (int)
-
-
-
- Spécifie une donnée de type nombre à virgule flottante PHP. Pour plus d'informations, voir
- Comment spécifier les types PHP.
-
-
-
-
-
- SQLSRV_PHPTYPE_STREAM
- (int)
-
-
-
- Spécifie une donnée de type flux de PHP. Cette constante fonctionne comme une fonction
- et accepte une constante encodée. Voir les constantes SQLSRV_ENC_*. Pour plus d'informations,
- repotrez-vous à Comment spécifier les types PHP.
-
-
-
-
-
- SQLSRV_PHPTYPE_STRING
- (int)
-
-
-
- Spécifie une donnée de type chaîne de caractère PHP. Cette constante fonctionne comme une fonction
- et accepte une constante encodée. Voir les constantes SQLSRV_ENC_*. Pour plus d'informations,
- reportez-vous à Comment spécifier les types PHP.
-
-
-
-
-
- SQLSRV_ENC_BINARY
- (int)
-
-
-
- Spécifie que la donnée est retournée sous la forme d'un flux brute d'octets
- depuis le serveur sans y effectuer un encodage ou une transformation. Pour plus
- d'informations, reportez-vous à Comment spécifier
- les types PHP.
-
-
-
-
-
- SQLSRV_ENC_CHAR
- (int)
-
-
-
- Les données sont retournées sous la forme de caractères sur 8 octets, tels que
- spécifiés dans la page de code des paramètres régionaux Windows définis sur le système. Tout
- caractère multioctet ou caractères qui ne correspondent pas à cette page
- de code seront substitués par un point d'interrogation sur un octet (?).
- C'est l'encodage par défaut. Pour plus d'informations, reportez-vous à
- Comment spécifier les types PHP.
-
-
-
-
-
- SQLSRV_SQLTYPE_BIGINT
- (int)
-
-
-
- Décrit le type de données bigint SQL Server. Pour plus d'informations, reportez-vous à
- Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_BINARY
- (int)
-
-
-
- Décrit le type de données binaire SQL Server. Pour plus d'informations, reportez-vous à
- Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_BIT
- (int)
-
-
-
- Décrit le type de données bit SQL Server. Pour plus d'informations, reportez-vous à
- Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_CHAR
- (int)
-
-
-
- Décrit le type de données caractère SQL Server. Cette constante fonctionne comme
- une fonction et accepte un paramètre indiquant le nombre de caractères. Pour plus
- d'informations, reportez-vous à
- Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_DATE
- (int)
-
-
-
- Décrit le type de données date SQL Server. Pour plus d'informations, reportez-vous à
- Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_DATETIME
- (int)
-
-
-
- Décrit le type de données datetime SQL Server. Pour plus d'informations,
- reportez-vous à
- Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_DATETIME2
- (int)
-
-
-
- Décrit le type de données datetime2 SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_DATETIMEOFFSET
- (int)
-
-
-
- Décrit le type de données datetimeoffset SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_DECIMAL
- (int)
-
-
-
- Décrit le type de données décimal. Cette constante fonctionne comme une fonction
- et accepte 2 paramètres indiquant (dans l'ordre) la précision et l'échelle.
- Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_FLOAT
- (int)
-
-
-
- Décrit le type de données nombre à virgule flottante SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_IMAGE
- (int)
-
-
-
- Décrit le type de données image SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_INT
- (int)
-
-
-
- Décrit le type de données entier SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_MONEY
- (int)
-
-
-
- Décrit le type de données monnaie SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_NCHAR
- (int)
-
-
-
- Décrit le type de données nchar SQL Server. Cette constante fonctionne comme une
- fonction et accepte un seul paramètre indiquant le nombre de caractères.
- Pour plus d'informations, reportez-vous à
- Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_NUMERIC
- (int)
-
-
-
- Décrit le type de données numérique SQL Server. Cette constante fonctionne comme
- une fonction et accepte 2 paramètres (dans l'ordre), la précision et l'échelle.
- Pour plus d'informations, reportez-vous à
- Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_NVARCHAR
- (int)
-
-
-
- Décrit le type de données nvarchar SQL Server. Cette constante fonctionne comme une
- fonction et accepte un seul paramètre indiquant le nombre de caractères.
- Pour plus d'informations, reportez-vous à
- Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_NVARCHAR('max')
- (int)
-
-
-
- Décrit le type de données nvarchar(MAX) SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_NTEXT
- (int)
-
-
-
- Décrit le type de données ntext SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_REAL
- (int)
-
-
-
- Décrit le type de données réelle SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_SMALLDATETIME
- (int)
-
-
-
- Décrit le type de données smalldatetime SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_SMALLINT
- (int)
-
-
-
- Décrit le type de données smallint SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_SMALLMONEY
- (int)
-
-
-
- Décrit le type de données smallmoney SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_TEXT
- (int)
-
-
-
- Décrit le type de données texte SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_TIME
- (int)
-
-
-
- Décrit le type de données time SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_TIMESTAMP
- (int)
-
-
-
- Décrit le type de données timestamp SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_TINYINT
- (int)
-
-
-
- Décrit le type de données tinyint SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_UNIQUEIDENTIFIER
- (int)
-
-
-
- Décrit le type de données uniqueidentifier SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_UDT
- (int)
-
-
-
- Décrit le type de données UDT SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_VARBINARY
- (int)
-
-
-
- Décrit le type de données varbinary SQL Server. Cette constante fonctionne
- comme une fonction et accepte un seul paramètre indiquant le nombre d'octets.
- Pour plus d'informations, reportez-vous à
- Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_VARBINARY('max')
- (int)
-
-
-
- Décrit le type de données varbinary(MAX) SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_VARCHAR
- (int)
-
-
-
- Décrit le type de données varchar SQL Server. Cette constante fonctionne comme
- une fonction et accepte un seul paramètre indiquant le nombre de caractères.
- Pour plus d'informations, reportez-vous à
- Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_VARCHAR('max')
- (int)
-
-
-
- Décrit le type de données varchar(MAX) SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_XML
- (int)
-
-
-
- Décrit le type de données XML SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_TXN_READ_UNCOMMITTED
- (int)
-
-
-
- Indique un niveau d'isolation de la transaction à READ UNCOMMITTED.
- Cette valeur est utilisée pour définir le niveau de l'isolation de la
- transaction dans le tableau $connectionOptions passé à la fonction
- sqlsrv_connect.
-
-
-
-
-
- SQLSRV_TXN_READ_COMMITTED
- (int)
-
-
-
- Indique un niveau d'isolation de la transaction à READ COMMITTED.
- Cette valeur est utilisée pour définir le niveau de l'isolation de la
- transaction dans le tableau $connectionOptions passé à la fonction
- sqlsrv_connect.
-
-
-
-
-
- SQLSRV_TXN_REPEATABLE_READ
- (int)
-
-
-
- Indique un niveau d'isolation de la transaction à REPEATABLE READ.
- Cette valeur est utilisée pour définir le niveau de l'isolation de la
- transaction dans le tableau $connectionOptions passé à la fonction
- sqlsrv_connect.
-
-
-
-
-
- SQLSRV_TXN_SNAPSHOT
- (int)
-
-
-
- Indique un niveau d'isolation de la transaction à SNAPSHOT.
- Cette valeur est utilisée pour définir le niveau de l'isolation de la
- transaction dans le tableau $connectionOptions passé à la fonction
- sqlsrv_connect.
-
-
-
-
-
- SQLSRV_TXN_READ_SERIALIZABLE
- (int)
-
-
-
- Indique un niveau d'isolation de la transaction à SERIALIZABLE.
- Cette valeur est utilisée pour définir le niveau de l'isolation de la
- transaction dans le tableau $connectionOptions passé à la fonction
- sqlsrv_connect.
-
-
-
-
-
- SQLSRV_CURSOR_FORWARD
- (int)
-
-
-
- Indique un curseur de type "suivant uniquement". Pour plus d'informations,
- reportez-vous à la section sur
- la spécification d'un type
- de curseur et la sélection de lignes.
-
-
-
-
-
- SQLSRV_CURSOR_STATIC
- (int)
-
-
-
- Indique un curseur de type "statique". Pour plus d'informations,
- reportez-vous à la section sur
- la spécification d'un type
- de curseur et la sélection de lignes.
-
-
-
-
-
- SQLSRV_CURSOR_DYNAMIC
- (int)
-
-
-
- Indique un curseur de type "dynamique". Pour plus d'informations,
- reportez-vous à la section sur
- la spécification d'un type
- de curseur et la sélection de lignes.
-
-
-
-
-
- SQLSRV_CURSOR_KEYSET
- (int)
-
-
-
- Indique un curseur de type "keyset". Pour plus d'informations,
- reportez-vous à la section sur
- la spécification d'un type
- de curseur et la sélection de lignes.
-
-
-
-
-
- SQLSRV_CURSOR_BUFFERED
- (int)
-
-
-
- Crée une requête de curseur côté client. Cela vous permet d'accéder aux
- lignes dans n'importe quel ordre. Pour des informations quant à son utilisation,
- reportez-vous à la section sur la
- la spécification d'un type
- de curseur et la sélection de lignes.
-
-
-
-
-
- SQLSRV_SCROLL_NEXT
- (int)
-
-
-
- Spécifie la ligne à sélectionner dans un jeu de résultats. Pour plus d'informations,
- reportez-vous à la section sur
- la spécification d'un type
- de curseur et la sélection de lignes.
-
-
-
-
-
- SQLSRV_SCROLL_PRIOR
- (int)
-
-
-
- Spécifie la ligne à sélectionner dans un jeu de résultats. Pour plus d'informations,
- reportez-vous à la section sur
- la spécification d'un type
- de curseur et la sélection de lignes.
-
-
-
-
-
- SQLSRV_SCROLL_FIRST
- (int)
-
-
-
- Spécifie la ligne à sélectionner dans un jeu de résultats. Pour plus d'informations,
- reportez-vous à la section sur la
- spécification d'un type de curseur et la sélection de lignes.
-
-
-
-
-
- SQLSRV_SCROLL_LAST
- (int)
-
-
-
- Spécifie la ligne à sélectionner dans un jeu de résultats. Pour plus d'informations,
- reportez-vous à la section sur la
- spécification d'un type de curseur et la sélection de lignes.
-
-
-
-
-
- SQLSRV_SCROLL_ABSOLUTE
- (int)
-
-
-
- Spécifie la ligne à sélectionner dans un jeu de résultats. Pour plus d'informations,
- reportez-vous à la section sur la
- spécification d'un type de curseur et la sélection de lignes.
-
-
-
-
-
- SQLSRV_SCROLL_RELATIVE
- (int)
-
-
-
- Spécifie la ligne à sélectionner dans un jeu de résultats. Pour plus d'informations,
- reportez-vous à la section sur la
- spécification d'un type de curseur et la sélection de lignes.
-
-
-
-
-
-
+
+
+
+
+ &reftitle.constants;
+ &extension.constants;
+
+
+
+ SQLSRV_FETCH_ASSOC
+ (int)
+
+
+
+ Force sqlsrv_fetch_array à retourner un tableau
+ associatif quand il est passé en paramètre.
+
+
+
+
+
+ SQLSRV_FETCH_NUMERIC
+ (int)
+
+
+
+ Force sqlsrv_fetch_array à retourner un tableau
+ indexé numériquement quand il est passé en paramètre.
+
+
+
+
+
+ SQLSRV_FETCH_BOTH
+ (int)
+
+
+
+ Force sqlsrv_fetch_array à retourner un tableau
+ associatif et un tableau indexé numériquement quand il est passé en
+ paramètre (comportement par défaut).
+
+
+
+
+
+ SQLSRV_ERR_ALL
+ (int)
+
+
+
+ Force sqlsrv_errors à retourner les erreurs
+ et avertissements quand il est passé en paramètre (comportement par
+ défaut).
+
+
+
+
+
+ SQLSRV_ERR_ERRORS
+ (int)
+
+
+
+ Force sqlsrv_errors à retourner seulement
+ les erreurs (pas les avertissements) quand il est passé en paramètre.
+
+
+
+
+
+ SQLSRV_ERR_WARNINGS
+ (int)
+
+
+
+ Force sqlsrv_errors à retourner seulement
+ les avertissements (pas les erreurs) quand il est passé en paramètre.
+
+
+
+
+
+ SQLSRV_LOG_SYSTEM_ALL
+ (int)
+
+
+
+ Active les logs de tous les sous-systèmes quand il est passé à la fonction
+ sqlsrv_configure comme paramère.
+
+
+
+
+
+ SQLSRV_LOG_SYSTEM_CONN
+ (int)
+
+
+
+ Active les logs de toute l'activité des connexions quand il est passé
+ à la fonction sqlsrv_configure comme paramère.
+
+
+
+
+
+ SQLSRV_LOG_SYSTEM_INIT
+ (int)
+
+
+
+ Active les logs de toute l'activité des initialisations quand il est
+ passé à la fonction sqlsrv_configure comme paramère.
+
+
+
+
+
+ SQLSRV_LOG_SYSTEM_OFF
+ (int)
+
+
+
+ Désactive les logs de tous les sous-systèmes quand il est passé à la fonction
+ sqlsrv_configure comme paramère.
+
+
+
+
+
+ SQLSRV_LOG_SYSTEM_STMT
+ (int)
+
+
+
+ Active les logs des requêtes quand il est passé à la fonction
+ sqlsrv_configure comme paramère.
+
+
+
+
+
+ SQLSRV_LOG_SYSTEM_UTIL
+ (int)
+
+
+
+ Active les logs des erreurs de fonction quand il est passé à la fonction
+ sqlsrv_configure comme paramère.
+
+
+
+
+
+ SQLSRV_LOG_SEVERITY_ALL
+ (int)
+
+
+
+ Active les logs des erreurs, avertissements et notes quand il est
+ passé à la fonction sqlsrv_configure comme paramère.
+
+
+
+
+
+ SQLSRV_LOG_SEVERITY_ERROR
+ (int)
+
+
+
+ Spécifie que les erreurs seront enregistrées quand il est passé à la fonction
+ sqlsrv_configure comme paramère.
+
+
+
+
+
+ SQLSRV_LOG_SEVERITY_NOTICE
+ (int)
+
+
+
+ Spécifie que les notes seront enregistrées quand il est passé à la fonction
+ sqlsrv_configure comme paramère.
+
+
+
+
+
+ SQLSRV_LOG_SEVERITY_WARNING
+ (int)
+
+
+
+ Spécifie que les avertissements seront enregistrées quand il est passé à
+ la fonction sqlsrv_configure comme paramère.
+
+
+
+
+
+ SQLSRV_NULLABLE_YES
+ (int)
+
+
+
+ Indique qu'une colonne peut être nulle.
+
+
+
+
+
+ SQLSRV_NULLABLE_NO
+ (int)
+
+
+
+ Indique qu'une colonne ne peut pas être nulle.
+
+
+
+
+
+ SQLSRV_NULLABLE_UNKNOWN
+ (int)
+
+
+
+ Indique s'il est connu qu'une colonne est nulle.
+
+
+
+
+
+ SQLSRV_PARAM_IN
+ (int)
+
+
+
+ Indique un paramètre d'entrée quand il est passé à la fonction
+ sqlsrv_query ou à la fonction
+ sqlsrv_prepare.
+
+
+
+
+
+ SQLSRV_PARAM_INOUT
+ (int)
+
+
+
+ Indique un paramètre d'entrée ou de sortie quand il est passé à la
+ fonction sqlsrv_query ou à la fonction
+ sqlsrv_prepare.
+
+
+
+
+
+ SQLSRV_PARAM_OUT
+ (int)
+
+
+
+ Indique un paramètre de sortie quand il est passé à la fonction
+ sqlsrv_query ou à la fonction
+ sqlsrv_prepare.
+
+
+
+
+
+ SQLSRV_PHPTYPE_INT
+ (int)
+
+
+
+ Spécifie une donnée de type entier PHP. Pour plus d'informations, voir
+ Comment spécifier les types PHP.
+
+
+
+
+
+ SQLSRV_PHPTYPE_DATETIME
+ (int)
+
+
+
+ Spécifie une donnée de type datetime (date et heure) PHP. Pour plus d'informations, voir
+ Comment spécifier les types PHP.
+
+
+
+
+
+ SQLSRV_PHPTYPE_FLOAT
+ (int)
+
+
+
+ Spécifie une donnée de type nombre à virgule flottante PHP. Pour plus d'informations, voir
+ Comment spécifier les types PHP.
+
+
+
+
+
+ SQLSRV_PHPTYPE_STREAM
+ (int)
+
+
+
+ Spécifie une donnée de type flux de PHP. Cette constante fonctionne comme une fonction
+ et accepte une constante encodée. Voir les constantes SQLSRV_ENC_*. Pour plus d'informations,
+ repotrez-vous à Comment spécifier les types PHP.
+
+
+
+
+
+ SQLSRV_PHPTYPE_STRING
+ (int)
+
+
+
+ Spécifie une donnée de type chaîne de caractère PHP. Cette constante fonctionne comme une fonction
+ et accepte une constante encodée. Voir les constantes SQLSRV_ENC_*. Pour plus d'informations,
+ reportez-vous à Comment spécifier les types PHP.
+
+
+
+
+
+ SQLSRV_ENC_BINARY
+ (int)
+
+
+
+ Spécifie que la donnée est retournée sous la forme d'un flux brute d'octets
+ depuis le serveur sans y effectuer un encodage ou une transformation. Pour plus
+ d'informations, reportez-vous à Comment spécifier
+ les types PHP.
+
+
+
+
+
+ SQLSRV_ENC_CHAR
+ (int)
+
+
+
+ Les données sont retournées sous la forme de caractères sur 8 octets, tels que
+ spécifiés dans la page de code des paramètres régionaux Windows définis sur le système. Tout
+ caractère multioctet ou caractères qui ne correspondent pas à cette page
+ de code seront substitués par un point d'interrogation sur un octet (?).
+ C'est l'encodage par défaut. Pour plus d'informations, reportez-vous à
+ Comment spécifier les types PHP.
+
+
+
+
+
+ SQLSRV_SQLTYPE_BIGINT
+ (int)
+
+
+
+ Décrit le type de données bigint SQL Server. Pour plus d'informations, reportez-vous à
+ Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_BINARY
+ (int)
+
+
+
+ Décrit le type de données binaire SQL Server. Pour plus d'informations, reportez-vous à
+ Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_BIT
+ (int)
+
+
+
+ Décrit le type de données bit SQL Server. Pour plus d'informations, reportez-vous à
+ Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_CHAR
+ (int)
+
+
+
+ Décrit le type de données caractère SQL Server. Cette constante fonctionne comme
+ une fonction et accepte un paramètre indiquant le nombre de caractères. Pour plus
+ d'informations, reportez-vous à
+ Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_DATE
+ (int)
+
+
+
+ Décrit le type de données date SQL Server. Pour plus d'informations, reportez-vous à
+ Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_DATETIME
+ (int)
+
+
+
+ Décrit le type de données datetime SQL Server. Pour plus d'informations,
+ reportez-vous à
+ Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_DATETIME2
+ (int)
+
+
+
+ Décrit le type de données datetime2 SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_DATETIMEOFFSET
+ (int)
+
+
+
+ Décrit le type de données datetimeoffset SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_DECIMAL
+ (int)
+
+
+
+ Décrit le type de données décimal. Cette constante fonctionne comme une fonction
+ et accepte 2 paramètres indiquant (dans l'ordre) la précision et l'échelle.
+ Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_FLOAT
+ (int)
+
+
+
+ Décrit le type de données nombre à virgule flottante SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_IMAGE
+ (int)
+
+
+
+ Décrit le type de données image SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_INT
+ (int)
+
+
+
+ Décrit le type de données entier SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_MONEY
+ (int)
+
+
+
+ Décrit le type de données monnaie SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_NCHAR
+ (int)
+
+
+
+ Décrit le type de données nchar SQL Server. Cette constante fonctionne comme une
+ fonction et accepte un seul paramètre indiquant le nombre de caractères.
+ Pour plus d'informations, reportez-vous à
+ Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_NUMERIC
+ (int)
+
+
+
+ Décrit le type de données numérique SQL Server. Cette constante fonctionne comme
+ une fonction et accepte 2 paramètres (dans l'ordre), la précision et l'échelle.
+ Pour plus d'informations, reportez-vous à
+ Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_NVARCHAR
+ (int)
+
+
+
+ Décrit le type de données nvarchar SQL Server. Cette constante fonctionne comme une
+ fonction et accepte un seul paramètre indiquant le nombre de caractères.
+ Pour plus d'informations, reportez-vous à
+ Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_NVARCHAR('max')
+ (int)
+
+
+
+ Décrit le type de données nvarchar(MAX) SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_NTEXT
+ (int)
+
+
+
+ Décrit le type de données ntext SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_REAL
+ (int)
+
+
+
+ Décrit le type de données réelle SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_SMALLDATETIME
+ (int)
+
+
+
+ Décrit le type de données smalldatetime SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_SMALLINT
+ (int)
+
+
+
+ Décrit le type de données smallint SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_SMALLMONEY
+ (int)
+
+
+
+ Décrit le type de données smallmoney SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_TEXT
+ (int)
+
+
+
+ Décrit le type de données texte SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_TIME
+ (int)
+
+
+
+ Décrit le type de données time SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_TIMESTAMP
+ (int)
+
+
+
+ Décrit le type de données timestamp SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_TINYINT
+ (int)
+
+
+
+ Décrit le type de données tinyint SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_UNIQUEIDENTIFIER
+ (int)
+
+
+
+ Décrit le type de données uniqueidentifier SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_UDT
+ (int)
+
+
+
+ Décrit le type de données UDT SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_VARBINARY
+ (int)
+
+
+
+ Décrit le type de données varbinary SQL Server. Cette constante fonctionne
+ comme une fonction et accepte un seul paramètre indiquant le nombre d'octets.
+ Pour plus d'informations, reportez-vous à
+ Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_VARBINARY('max')
+ (int)
+
+
+
+ Décrit le type de données varbinary(MAX) SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_VARCHAR
+ (int)
+
+
+
+ Décrit le type de données varchar SQL Server. Cette constante fonctionne comme
+ une fonction et accepte un seul paramètre indiquant le nombre de caractères.
+ Pour plus d'informations, reportez-vous à
+ Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_VARCHAR('max')
+ (int)
+
+
+
+ Décrit le type de données varchar(MAX) SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_XML
+ (int)
+
+
+
+ Décrit le type de données XML SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_TXN_READ_UNCOMMITTED
+ (int)
+
+
+
+ Indique un niveau d'isolation de la transaction à READ UNCOMMITTED.
+ Cette valeur est utilisée pour définir le niveau de l'isolation de la
+ transaction dans le tableau $connectionOptions passé à la fonction
+ sqlsrv_connect.
+
+
+
+
+
+ SQLSRV_TXN_READ_COMMITTED
+ (int)
+
+
+
+ Indique un niveau d'isolation de la transaction à READ COMMITTED.
+ Cette valeur est utilisée pour définir le niveau de l'isolation de la
+ transaction dans le tableau $connectionOptions passé à la fonction
+ sqlsrv_connect.
+
+
+
+
+
+ SQLSRV_TXN_REPEATABLE_READ
+ (int)
+
+
+
+ Indique un niveau d'isolation de la transaction à REPEATABLE READ.
+ Cette valeur est utilisée pour définir le niveau de l'isolation de la
+ transaction dans le tableau $connectionOptions passé à la fonction
+ sqlsrv_connect.
+
+
+
+
+
+ SQLSRV_TXN_SNAPSHOT
+ (int)
+
+
+
+ Indique un niveau d'isolation de la transaction à SNAPSHOT.
+ Cette valeur est utilisée pour définir le niveau de l'isolation de la
+ transaction dans le tableau $connectionOptions passé à la fonction
+ sqlsrv_connect.
+
+
+
+
+
+ SQLSRV_TXN_READ_SERIALIZABLE
+ (int)
+
+
+
+ Indique un niveau d'isolation de la transaction à SERIALIZABLE.
+ Cette valeur est utilisée pour définir le niveau de l'isolation de la
+ transaction dans le tableau $connectionOptions passé à la fonction
+ sqlsrv_connect.
+
+
+
+
+
+ SQLSRV_CURSOR_FORWARD
+ (int)
+
+
+
+ Indique un curseur de type "suivant uniquement". Pour plus d'informations,
+ reportez-vous à la section sur
+ la spécification d'un type
+ de curseur et la sélection de lignes.
+
+
+
+
+
+ SQLSRV_CURSOR_STATIC
+ (int)
+
+
+
+ Indique un curseur de type "statique". Pour plus d'informations,
+ reportez-vous à la section sur
+ la spécification d'un type
+ de curseur et la sélection de lignes.
+
+
+
+
+
+ SQLSRV_CURSOR_DYNAMIC
+ (int)
+
+
+
+ Indique un curseur de type "dynamique". Pour plus d'informations,
+ reportez-vous à la section sur
+ la spécification d'un type
+ de curseur et la sélection de lignes.
+
+
+
+
+
+ SQLSRV_CURSOR_KEYSET
+ (int)
+
+
+
+ Indique un curseur de type "keyset". Pour plus d'informations,
+ reportez-vous à la section sur
+ la spécification d'un type
+ de curseur et la sélection de lignes.
+
+
+
+
+
+ SQLSRV_CURSOR_BUFFERED
+ (int)
+
+
+
+ Crée une requête de curseur côté client. Cela vous permet d'accéder aux
+ lignes dans n'importe quel ordre. Pour des informations quant à son utilisation,
+ reportez-vous à la section sur la
+ la spécification d'un type
+ de curseur et la sélection de lignes.
+
+
+
+
+
+ SQLSRV_SCROLL_NEXT
+ (int)
+
+
+
+ Spécifie la ligne à sélectionner dans un jeu de résultats. Pour plus d'informations,
+ reportez-vous à la section sur
+ la spécification d'un type
+ de curseur et la sélection de lignes.
+
+
+
+
+
+ SQLSRV_SCROLL_PRIOR
+ (int)
+
+
+
+ Spécifie la ligne à sélectionner dans un jeu de résultats. Pour plus d'informations,
+ reportez-vous à la section sur
+ la spécification d'un type
+ de curseur et la sélection de lignes.
+
+
+
+
+
+ SQLSRV_SCROLL_FIRST
+ (int)
+
+
+
+ Spécifie la ligne à sélectionner dans un jeu de résultats. Pour plus d'informations,
+ reportez-vous à la section sur la
+ spécification d'un type de curseur et la sélection de lignes.
+
+
+
+
+
+ SQLSRV_SCROLL_LAST
+ (int)
+
+
+
+ Spécifie la ligne à sélectionner dans un jeu de résultats. Pour plus d'informations,
+ reportez-vous à la section sur la
+ spécification d'un type de curseur et la sélection de lignes.
+
+
+
+
+
+ SQLSRV_SCROLL_ABSOLUTE
+ (int)
+
+
+
+ Spécifie la ligne à sélectionner dans un jeu de résultats. Pour plus d'informations,
+ reportez-vous à la section sur la
+ spécification d'un type de curseur et la sélection de lignes.
+
+
+
+
+
+ SQLSRV_SCROLL_RELATIVE
+ (int)
+
+
+
+ Spécifie la ligne à sélectionner dans un jeu de résultats. Pour plus d'informations,
+ reportez-vous à la section sur la
+ spécification d'un type de curseur et la sélection de lignes.
+
+
+
+
+
+
diff --git a/reference/ssh2/functions/ssh2-sftp-lstat.xml b/reference/ssh2/functions/ssh2-sftp-lstat.xml
index 5165eaa583..9066ae9437 100644
--- a/reference/ssh2/functions/ssh2-sftp-lstat.xml
+++ b/reference/ssh2/functions/ssh2-sftp-lstat.xml
@@ -34,7 +34,7 @@
sftp
- Une ressource SSH2 SFTP ouverte par ssh2_sftp.
+ Une ressource SSH2 SFTP ouverte par ssh2_sftp.
diff --git a/reference/stats/functions/stats-rand-gen-chisquare.xml b/reference/stats/functions/stats-rand-gen-chisquare.xml
index 19fe59f9a8..33658a4e1e 100644
--- a/reference/stats/functions/stats-rand-gen-chisquare.xml
+++ b/reference/stats/functions/stats-rand-gen-chisquare.xml
@@ -14,7 +14,7 @@
Renvoie une déviation aléatoire de la distribution chi-carré où les degrés de
- liberté sont df.
+ liberté sont df.
i
diff --git a/reference/stomp/stomp/construct.xml b/reference/stomp/stomp/construct.xml
index 4612e63607..820190c299 100644
--- a/reference/stomp/stomp/construct.xml
+++ b/reference/stomp/stomp/construct.xml
@@ -13,7 +13,7 @@
&reftitle.description;
&style.oop; (constructeur) :
- Stomp::__construct
+ publicStomp::__constructstringbrokerini_get("stomp.default_broker_uri")stringusernamestringpassword
diff --git a/reference/stream/functions/stream-select.xml b/reference/stream/functions/stream-select.xml
index bbfcffe302..17cf9da962 100644
--- a/reference/stream/functions/stream-select.xml
+++ b/reference/stream/functions/stream-select.xml
@@ -133,7 +133,7 @@
&reftitle.returnvalues;
En cas de succès, stream_select retourne
- le nombre de flux qui ont évolué, ce qui peut être 0, si
+ le nombre de flux qui ont évolué, ce qui peut être 0, si
le délai d'expiration a été atteint avant que les flux n'évoluent.
En cas d'erreur, la fonction retournera &false; et un
avertissement sera renvoyé (cela peut apparaître si l'appel
diff --git a/reference/stream/streamwrapper/stream-metadata.xml b/reference/stream/streamwrapper/stream-metadata.xml
index f2b4947903..8003214ac2 100644
--- a/reference/stream/streamwrapper/stream-metadata.xml
+++ b/reference/stream/streamwrapper/stream-metadata.xml
@@ -51,7 +51,7 @@
STREAM_META_TOUCH (La méthode a été appelée suite à touch)STREAM_META_OWNER_NAME (La méthode a été appelée suite à chown avec un paramètre de type chaîne)
- STREAM_META_OWNER (La méthode a été appelée suite à chown)
+ STREAM_META_OWNER (La méthode a été appelée suite à chown)STREAM_META_GROUP_NAME (La méthode a été appelée suite à chgrp)STREAM_META_GROUP (La méthode a été appelée suite à chgrp)STREAM_META_ACCESS (La méthode a été appelée suite à chmod)
diff --git a/reference/stream/streamwrapper/stream-set-option.xml b/reference/stream/streamwrapper/stream-set-option.xml
index ea9b6d0099..864fbc4448 100644
--- a/reference/stream/streamwrapper/stream-set-option.xml
+++ b/reference/stream/streamwrapper/stream-set-option.xml
@@ -34,8 +34,8 @@
STREAM_OPTION_BLOCKING (Cette méthode est appelée en réponse à stream_set_blocking)STREAM_OPTION_READ_TIMEOUT (Cette méthode est appelée en réponse à stream_set_timeout)
- STREAM_OPTION_READ_BUFFER (Cette méthode est appelée en réponse à stream_set_read_buffer)
- STREAM_OPTION_WRITE_BUFFER (Cette méthode est appelée en réponse à stream_set_write_buffer)
+ STREAM_OPTION_READ_BUFFER (Cette méthode est appelée en réponse à stream_set_read_buffer)
+ STREAM_OPTION_WRITE_BUFFER (Cette méthode est appelée en réponse à stream_set_write_buffer)
diff --git a/reference/swoole/ini.xml b/reference/swoole/ini.xml
index 95d8e8f64f..9b336beffe 100644
--- a/reference/swoole/ini.xml
+++ b/reference/swoole/ini.xml
@@ -1,156 +1,157 @@
-
-
-
-
- &reftitle.runtime;
- &extension.runtime;
-
-
-
-
- &ini.descriptions.title;
-
-
-
-
-
- swoole.enable_library
- string
-
-
-
- Active ou désactive la bibliothèque intégrée de l’extension.
-
-
-
-
-
- swoole.enable_fiber_mock
- string
-
-
-
- Active ou désactive l’utilisation de l’extension xdebug pour déboguer les programmes Swoole.
-
-
-
-
-
- swoole.enable_preemptive_scheduler
- string
-
-
-
- Empêche certaines coroutines de consommer trop de temps CPU dans une boucle serrée (10 ms de temps CPU),
- ce qui pourrait empêcher la planification des autres coroutines.
-
-
-
-
-
- swoole.display_errors
- string
-
-
-
- Active ou désactive l’affichage des messages d’erreur Swoole.
-
-
-
-
-
-
- swoole.use_shortname
- string
-
-
-
- Active ou désactive les alias courts.
-
-
-
-
-
-
- swoole.unixsock_buffer_size
- int
-
-
-
- Définit la taille du tampon Socket pour la communication inter-processus.
-
-
-
-
-
-
-
-
+
+
+
+
+ &reftitle.runtime;
+ &extension.runtime;
+
+
+
+
+ &ini.descriptions.title;
+
+
+
+
+
+ swoole.enable_library
+ string
+
+
+
+ Active ou désactive la bibliothèque intégrée de l’extension.
+
+
+
+
+
+ swoole.enable_fiber_mock
+ string
+
+
+
+ Active ou désactive l’utilisation de l’extension xdebug pour déboguer les programmes Swoole.
+
+
+
+
+
+ swoole.enable_preemptive_scheduler
+ string
+
+
+
+ Empêche certaines coroutines de consommer trop de temps CPU dans une boucle serrée (10 ms de temps CPU),
+ ce qui pourrait empêcher la planification des autres coroutines.
+
+
+
+
+
+ swoole.display_errors
+ string
+
+
+
+ Active ou désactive l’affichage des messages d’erreur Swoole.
+
+
+
+
+
+
+ swoole.use_shortname
+ string
+
+
+
+ Active ou désactive les alias courts.
+
+
+
+
+
+
+ swoole.unixsock_buffer_size
+ int
+
+
+
+ Définit la taille du tampon Socket pour la communication inter-processus.
+
+
+
+
+
+
+
+
diff --git a/reference/swoole/swoole/coroutine/lock/lock.xml b/reference/swoole/swoole/coroutine/lock/lock.xml
index 73af7bb272..0133ffe705 100644
--- a/reference/swoole/swoole/coroutine/lock/lock.xml
+++ b/reference/swoole/swoole/coroutine/lock/lock.xml
@@ -1,58 +1,58 @@
-
-
-
-
-
-
- Swoole\Coroutine\Lock::lock
- Acquiert le verrou, en bloquant si nécessaire
-
-
-
- &reftitle.description;
-
- publicboolSwoole\Coroutine\Lock::lock
-
-
-
- Lors de l'exécution de l'opération de verrouillage, si le verrou est déjà détenu par une autre coroutine,
- la coroutine actuelle cédera activement le contrôle du CPU et entrera dans un état suspendu.
- Lorsque la coroutine qui détient le verrou appelle unlock(), la coroutine en attente sera réveillée
- et tentera de réacquérir le verrou.
-
-
-
-
- &reftitle.parameters;
- &no.function.parameters;
-
-
-
- &reftitle.returnvalues;
-
- Renvoie true si le verrou a été acquis avec succès,
- sinon false.
-
-
-
-
-
+
+
+
+
+
+
+ Swoole\Coroutine\Lock::lock
+ Acquiert le verrou, en bloquant si nécessaire
+
+
+
+ &reftitle.description;
+
+ publicboolSwoole\Coroutine\Lock::lock
+
+
+
+ Lors de l'exécution de l'opération de verrouillage, si le verrou est déjà détenu par une autre coroutine,
+ la coroutine actuelle cédera activement le contrôle du CPU et entrera dans un état suspendu.
+ Lorsque la coroutine qui détient le verrou appelle unlock(), la coroutine en attente sera réveillée
+ et tentera de réacquérir le verrou.
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ Renvoie &true; si le verrou a été acquis avec succès,
+ sinon &false;.
+
+
+
+
+
diff --git a/reference/swoole/swoole/coroutine/lock/trylock.xml b/reference/swoole/swoole/coroutine/lock/trylock.xml
index f6c85229db..6386777c9b 100644
--- a/reference/swoole/swoole/coroutine/lock/trylock.xml
+++ b/reference/swoole/swoole/coroutine/lock/trylock.xml
@@ -1,58 +1,58 @@
-
-
-
-
-
-
- Swoole\Coroutine\Lock::trylock
- Essaie d'acquérir le verrou sans bloquer
-
-
-
- &reftitle.description;
-
- publicboolSwoole\Coroutine\Lock::trylock
-
-
-
- Lors de l'appel de l'opération de verrouillage, si le verrou est déjà détenu par une autre coroutine,
- la fonction renverra immédiatement false sans suspendre la coroutine actuelle
- ou céder le contrôle du CPU. Cette conception non-bloquante permet à l'appelant de gérer de manière flexible
- les situations de contention, telles que la réessayer, abandonner ou exécuter d'autres logiques.
-
-
-
-
- &reftitle.parameters;
- &no.function.parameters;
-
-
-
- &reftitle.returnvalues;
-
- Renvoie true si le verrou a été acquis avec succès,
- false si le verrou n'est pas disponible.
-
-
-
-
-
+
+
+
+
+
+
+ Swoole\Coroutine\Lock::trylock
+ Essaie d'acquérir le verrou sans bloquer
+
+
+
+ &reftitle.description;
+
+ publicboolSwoole\Coroutine\Lock::trylock
+
+
+
+ Lors de l'appel de l'opération de verrouillage, si le verrou est déjà détenu par une autre coroutine,
+ la fonction renverra immédiatement false sans suspendre la coroutine actuelle
+ ou céder le contrôle du CPU. Cette conception non-bloquante permet à l'appelant de gérer de manière flexible
+ les situations de contention, telles que la réessayer, abandonner ou exécuter d'autres logiques.
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ Renvoie &true; si le verrou a été acquis avec succès,
+ &false; si le verrou n'est pas disponible.
+
+
+
+
+
diff --git a/reference/swoole/swoole/coroutine/lock/unlock.xml b/reference/swoole/swoole/coroutine/lock/unlock.xml
index f3d9d232be..73dd947f9b 100644
--- a/reference/swoole/swoole/coroutine/lock/unlock.xml
+++ b/reference/swoole/swoole/coroutine/lock/unlock.xml
@@ -1,69 +1,69 @@
-
-
-
-
-
-
- Swoole\Coroutine\Lock::unlock
- Relâche le verrou
-
-
-
- &reftitle.description;
-
- publicboolSwoole\Coroutine\Lock::unlock
-
-
-
-
-
- Unlock Behavior
-
-
-
- Avec io_uring futex: le système réveillera précisément une coroutine dans la file d'attente d'attente.
-
-
-
-
- Sans io_uring futex: attends la fin du temps de backoff des coroutines en attente
- et essaie de réacquérir le verrou.
-
-
-
-
-
-
- &reftitle.parameters;
- &no.function.parameters;
-
-
-
- &reftitle.returnvalues;
-
- Renvoie true si le verrou a été relâché avec succès,
- sinon false.
-
-
-
-
-
+
+
+
+
+
+
+ Swoole\Coroutine\Lock::unlock
+ Relâche le verrou
+
+
+
+ &reftitle.description;
+
+ publicboolSwoole\Coroutine\Lock::unlock
+
+
+
+
+
+ Unlock Behavior
+
+
+
+ Avec io_uring futex: le système réveillera précisément une coroutine dans la file d'attente d'attente.
+
+
+
+
+ Sans io_uring futex: attends la fin du temps de backoff des coroutines en attente
+ et essaie de réacquérir le verrou.
+
+
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ Renvoie &true; si le verrou a été relâché avec succès,
+ sinon &false;.
+
+
+
+
+
diff --git a/reference/tidy/tidy/html.xml b/reference/tidy/tidy/html.xml
index 149b735e20..d88fb0c30c 100644
--- a/reference/tidy/tidy/html.xml
+++ b/reference/tidy/tidy/html.xml
@@ -6,7 +6,7 @@
tidy::htmltidy_get_html
- Retourne un objet tidyNode commençant à la balise <html>
+ Retourne un objet tidyNode commençant à la balise <html>
diff --git a/reference/tidy/tidynode/ishtml.xml b/reference/tidy/tidynode/ishtml.xml
index 7c325167a2..4be8397973 100644
--- a/reference/tidy/tidynode/ishtml.xml
+++ b/reference/tidy/tidynode/ishtml.xml
@@ -28,7 +28,7 @@
&reftitle.returnvalues;
- Retourne &true; si le nœud est un nœud d'élément, mais pas le nœud racine
+ Retourne &true; si le nœud est un nœud d'élément, mais pas le nœud racine
du document, &false; sinon.
diff --git a/reference/uodbc/configure.xml b/reference/uodbc/configure.xml
index 3d128f7d4c..2f5108d80a 100644
--- a/reference/uodbc/configure.xml
+++ b/reference/uodbc/configure.xml
@@ -126,7 +126,7 @@
- Inclut le support Easysoft OOB. DIR est le dossier d'installation de OOB.
+ Inclut le support Easysoft OOB. DIR est le dossier d'installation de OOB.
Par défaut, c'est /usr/local/easysoft/oob/client.
@@ -137,7 +137,7 @@
- Inclut le support UnixODBC. DIR est le dossier d'installation d'UnixODBC.
+ Inclut le support UnixODBC. DIR est le dossier d'installation d'UnixODBC.
Par défaut, c'est /usr/local.
@@ -148,7 +148,7 @@
- Inclut le support OpenLink ODBC. DIR est le dossier d'installation OpenLink.
+ Inclut le support OpenLink ODBC. DIR est le dossier d'installation OpenLink.
Par défaut, c'est /usr/local. C'est le même que pour iODBC.
diff --git a/reference/uodbc/functions/odbc-data-source.xml b/reference/uodbc/functions/odbc-data-source.xml
index 0d33746f38..1763483648 100644
--- a/reference/uodbc/functions/odbc-data-source.xml
+++ b/reference/uodbc/functions/odbc-data-source.xml
@@ -36,7 +36,7 @@
Le paramètre connection_id est une connexion
ODBC valide. Le paramètre fetch_type peut être l'une des
deux constantes suivantes : SQL_FETCH_FIRST ou
- SQL_FETCH_NEXT. Utilisez SQL_FETCH_FIRST
+ SQL_FETCH_NEXT. Utilisez SQL_FETCH_FIRST
la première fois que la fonction est appelée, puis SQL_FETCH_NEXT.
diff --git a/reference/uodbc/functions/odbc-tables.xml b/reference/uodbc/functions/odbc-tables.xml
index 7cc48e231a..9407a90c74 100644
--- a/reference/uodbc/functions/odbc-tables.xml
+++ b/reference/uodbc/functions/odbc-tables.xml
@@ -104,7 +104,7 @@
il doit contenir une liste de valeurs, séparées par des virgules,
qui représentent les types recherchés. Chaque valeur peut être
insérée entre guillemets simples ('), ou sans guillemets. Par
- exemple, 'TABLE','VIEW' ou TABLE, VIEW. Si la source de données
+ exemple, 'TABLE','VIEW' ou TABLE, VIEW. Si la source de données
ne supporte pas un type de table donné, odbc_tables
ne retournera aucun résultat pour ce type.
diff --git a/reference/uopz/functions/uopz-extend.xml b/reference/uopz/functions/uopz-extend.xml
index 001d07d124..831a6d3140 100644
--- a/reference/uopz/functions/uopz-extend.xml
+++ b/reference/uopz/functions/uopz-extend.xml
@@ -54,7 +54,7 @@
&reftitle.errors;
- À partir de PHP 7.4.0, uopz_extends émet une
+ À partir de PHP 7.4.0, uopz_extends émet une
RuntimeException, si
OPcache est activé, et l'entrée de classe
de class ou parent (si dans
diff --git a/reference/uopz/functions/uopz-implement.xml b/reference/uopz/functions/uopz-implement.xml
index f6a8facfe1..64e0803694 100644
--- a/reference/uopz/functions/uopz-implement.xml
+++ b/reference/uopz/functions/uopz-implement.xml
@@ -55,7 +55,7 @@
&reftitle.errors;
- À partir de PHP 7.4.0, uopz_implements émet une
+ À partir de PHP 7.4.0, uopz_implements émet une
RuntimeException, si
OPcache est activé, et l'entrée de classe
de class est immutable.
diff --git a/reference/uopz/functions/uopz_set_static.xml b/reference/uopz/functions/uopz_set_static.xml
index aad9b75e28..e7b3af1827 100644
--- a/reference/uopz/functions/uopz_set_static.xml
+++ b/reference/uopz/functions/uopz_set_static.xml
@@ -65,7 +65,7 @@
&reftitle.examples;
- Exemple d'utilisation de uopz_set_static
+ Exemple d'utilisation de uopz_set_static
- Ou, si vous transmettez un composant PATH_INFO d'une URL :
+ Ou, si vous transmettez un composant PATH_INFO d'une URL :
diff --git a/reference/win32service/rightinfo/get-full-username.xml b/reference/win32service/rightinfo/get-full-username.xml
index 5756ba9508..2f29110759 100644
--- a/reference/win32service/rightinfo/get-full-username.xml
+++ b/reference/win32service/rightinfo/get-full-username.xml
@@ -26,7 +26,7 @@
&reftitle.returnvalues;
- Renvoie le domaine et le nom d'utilisateur ou le nom d'utilisateur si le domaine est null ou &null; si aucun nom d'utilisateur n'est trouvé.
+ Renvoie le domaine et le nom d'utilisateur ou le nom d'utilisateur si le domaine est &null; ou &null; si aucun nom d'utilisateur n'est trouvé.
diff --git a/reference/wincache/functions/wincache-ocache-fileinfo.xml b/reference/wincache/functions/wincache-ocache-fileinfo.xml
index c1a7dae7a6..73ffe091a0 100644
--- a/reference/wincache/functions/wincache-ocache-fileinfo.xml
+++ b/reference/wincache/functions/wincache-ocache-fileinfo.xml
@@ -41,14 +41,14 @@
&reftitle.returnvalues;
- Tableau de méta-données sur le cache opcode &return.falseforfailure;
+ Tableau de méta-données sur le cache opcode &return.falseforfailure;
Le tableau retourné par cette fonction contient les éléments suivants:
- total_cache_uptime - Temps d'activité total en secondes du cache opcode
+ total_cache_uptime - Temps d'activité total en secondes du cache opcode
diff --git a/reference/wincache/win32build.xml b/reference/wincache/win32build.xml
index b7f8b420f4..e5a75d1b57 100644
--- a/reference/wincache/win32build.xml
+++ b/reference/wincache/win32build.xml
@@ -61,7 +61,7 @@ cscript.exe win32\build\buildconf.js
configure.bat --help
]]>
- La sortie contiendra une nouvelle option --enable-wincache.
+ La sortie contiendra une nouvelle option --enable-wincache.
diff --git a/reference/xhprof/ini.xml b/reference/xhprof/ini.xml
index a132c7be43..848088ed70 100644
--- a/reference/xhprof/ini.xml
+++ b/reference/xhprof/ini.xml
@@ -41,7 +41,7 @@
Dossier utilisé par l'implémentation par défaut de l'interface
- iXHProfRuns (nommément, la classe XHProfRuns_Default) pour stocker
+ iXHProfRuns (nommément, la classe XHProfRuns_Default) pour stocker
les exécutions de XHProf.
diff --git a/reference/xml/configure.xml b/reference/xml/configure.xml
index d39aa831ea..4c3cc35268 100644
--- a/reference/xml/configure.xml
+++ b/reference/xml/configure.xml
@@ -13,7 +13,7 @@
Ces fonctions sont activées par défaut, et utilisent la
bibliothèque expat fournie avec la distribution. Vous pouvez
désactiver le support de XML en utilisant l'option de
- compilation .
+ compilation .
Si vous compilez PHP comme module pour Apache 1.3.9 ou supérieur,
PHP va automatiquement utiliser la bibliothèque
expat fournie par Apache. Si vous ne
diff --git a/reference/xmlreader/xmlreader/getattributens.xml b/reference/xmlreader/xmlreader/getattributens.xml
index e23bfb5055..74ec03ff29 100644
--- a/reference/xmlreader/xmlreader/getattributens.xml
+++ b/reference/xmlreader/xmlreader/getattributens.xml
@@ -46,7 +46,7 @@
&reftitle.returnvalues;
La valeur de l'attribut, ou &null; si aucun attribut avec le
- name et namespace donnés
+ name et namespace donnés
n'est trouvé ou positionné sur l'élément.
diff --git a/reference/xsl/xsltprocessor/getsecurityprefs.xml b/reference/xsl/xsltprocessor/getsecurityprefs.xml
index 7c5d93af85..fb1cd3c7c4 100644
--- a/reference/xsl/xsltprocessor/getsecurityprefs.xml
+++ b/reference/xsl/xsltprocessor/getsecurityprefs.xml
@@ -27,7 +27,7 @@
&reftitle.returnvalues;
- Un masque de constantes XSL_SECPREF_READ_FILE,
+ Un masque de constantes XSL_SECPREF_READ_FILE,
XSL_SECPREF_WRITE_FILE,
XSL_SECPREF_CREATE_DIRECTORY,
XSL_SECPREF_READ_NETWORK,
diff --git a/reference/yar/yar_client_exception/gettype.xml b/reference/yar/yar_client_exception/gettype.xml
index 5e59e75620..9b655cd9be 100644
--- a/reference/yar/yar_client_exception/gettype.xml
+++ b/reference/yar/yar_client_exception/gettype.xml
@@ -12,7 +12,7 @@
&reftitle.description;
- publicvoidYar_Client_Exception::getType
+ publicstringYar_Client_Exception::getType
@@ -29,7 +29,7 @@
&reftitle.returnvalues;
-
+ Retourne "Yar_Exception_Client".
@@ -59,7 +59,7 @@
&reftitle.seealso;
-
+ Yaf_Server_Exception::getType
diff --git a/reference/yaz/functions/yaz-record.xml b/reference/yaz/functions/yaz-record.xml
index d656acc2e7..761b5c115b 100644
--- a/reference/yaz/functions/yaz-record.xml
+++ b/reference/yaz/functions/yaz-record.xml
@@ -271,7 +271,7 @@ $rec = yaz_record($id, $p, "xml; charset=marc-8,utf-8");
- L'enregistrement $rec peut être obtenu avec le processeur
+ L'enregistrement $rec peut être obtenu avec le processeur
Sablotron XSLT comme cela :
diff --git a/reference/zookeeper/book.xml b/reference/zookeeper/book.xml
index a1cca6a284..b21fdcb964 100644
--- a/reference/zookeeper/book.xml
+++ b/reference/zookeeper/book.xml
@@ -11,7 +11,7 @@
&reftitle.intro;
- Cette extension utilise la librairie libzookeeper pour fournir une API permettant
+ Cette extension utilise la bibliothèque libzookeeper pour fournir une API permettant
de communiquer avec le service Zookeeper.
diff --git a/reference/zookeeper/ini.xml b/reference/zookeeper/ini.xml
index 9a00deaed2..44908618bc 100644
--- a/reference/zookeeper/ini.xml
+++ b/reference/zookeeper/ini.xml
@@ -58,7 +58,7 @@
- Délai maximum d'attente par defaut pour toutes les sessions de ZooKeeper.
+ Délai maximum d'attente par défaut pour toutes les sessions de ZooKeeper.
diff --git a/reference/zookeeper/zookeeper/setdebuglevel.xml b/reference/zookeeper/zookeeper/setdebuglevel.xml
index 9e5a3a3547..c147e3747f 100644
--- a/reference/zookeeper/zookeeper/setdebuglevel.xml
+++ b/reference/zookeeper/zookeeper/setdebuglevel.xml
@@ -4,7 +4,7 @@
Zookeeper::setDebugLevel
- Définit le niveau de débogage pour la librairie
+ Définit le niveau de débogage pour la bibliothèque
diff --git a/reference/zookeeper/zookeeper/setlogstream.xml b/reference/zookeeper/zookeeper/setlogstream.xml
index b09881c30d..5d1fb38f2c 100644
--- a/reference/zookeeper/zookeeper/setlogstream.xml
+++ b/reference/zookeeper/zookeeper/setlogstream.xml
@@ -4,7 +4,7 @@
Zookeeper::setLogStream
- Définit le flux à utiliser par la librairie pour le journal
+ Définit le flux à utiliser par la bibliothèque pour le journal
@@ -15,7 +15,7 @@
resourcestream
- La librairie zookeeper utilise stderr comme flux de journalisation par défaut. L'application doit s'assurer que le flux est inscriptible. Passer NULL réinitialise le flux à sa valeur par défaut (stderr).
+ La bibliothèque zookeeper utilise stderr comme flux de journalisation par défaut. L'application doit s'assurer que le flux est inscriptible. Passer NULL réinitialise le flux à sa valeur par défaut (stderr).
@@ -26,7 +26,7 @@
stream
- Le flux à utiliser par la librairie pour le journal.
+ Le flux à utiliser par la bibliothèque pour le journal.
From b4cb48b6c3719cbb6b844eef66b7402639e06086 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:27:21 +0100
Subject: [PATCH 09/96] =?UTF-8?q?Fix=20reference/:=20traductions=20erron?=
=?UTF-8?q?=C3=A9es,=20grammaire,=20contenu=20manquant?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
strings/: code ASCII 26→32 (addcslashes), sens inversé (crc32),
echo manquant (chr), espace manquant et accent (echo)
array/: "objects"→"objets", article/nom désaccordés, $varname,
traduction imprécise "type" vs "représentation chaîne"
datetime/: accords féminins (fournie/lancée), "object"→"objet",
"omit"→"omis", référence strtotime→DateTimeImmutable, code PHP
avec dates en français corrigé, "constants"→"constantes",
"example"→"exemple", espace manquant, "pas"→"par"
filesystem/: description disk_total_space complètement fausse corrigée,
unlink() auto-clear cache ajouté, "dossier"→"fichier",
handle→stream, timeout socket ajouté, "quel'on"→"que l'on",
impératif "essayez/regardez", PATHINFO_DIRNAME rempli
json/: "décrite"→"décrit", "sous-projet"→"sous-ensemble",
contenu PHP5.5+ obsolète supprimé, bloc json_encode dupliqué
supprimé, "Peut-être"→"Peut être", accord féminin sérialisée
dom/: "Model"→"Modèle"
spl/: "so"→"sa", "dynamique"→"dynamiques"
---
reference/array/functions/array-column.xml | 2 +-
reference/array/functions/array-diff-key.xml | 4 +-
.../array/functions/array-diff-uassoc.xml | 2 +-
reference/array/functions/array-diff.xml | 6 +-
reference/datetime/constants.xml | 544 ++++----
reference/datetime/dateperiod/construct.xml | 4 +-
reference/datetime/datetime/construct.xml | 10 +-
reference/datetime/datetime/modify.xml | 8 +-
.../datetime/datetimeimmutable/construct.xml | 12 +-
.../datetime/datetimeimmutable/modify.xml | 4 +-
reference/datetime/datetimeinterface.xml | 844 ++++++------
reference/dom/book.xml | 2 +-
reference/filesystem/constants.xml | 1154 ++++++++---------
.../filesystem/functions/clearstatcache.xml | 3 +-
reference/filesystem/functions/delete.xml | 108 +-
.../filesystem/functions/disk-free-space.xml | 2 +-
.../filesystem/functions/disk-total-space.xml | 5 +-
reference/filesystem/functions/feof.xml | 246 ++--
reference/json/functions/json-decode.xml | 30 +-
reference/json/functions/json-encode.xml | 2 +-
.../json/jsonserializable/jsonserialize.xml | 2 +-
reference/json/setup.xml | 2 +-
reference/spl/arrayobject.xml | 262 ++--
reference/strings/functions/addcslashes.xml | 2 +-
reference/strings/functions/chr.xml | 3 +-
reference/strings/functions/crc32.xml | 15 +-
reference/strings/functions/echo.xml | 4 +-
27 files changed, 1630 insertions(+), 1652 deletions(-)
diff --git a/reference/array/functions/array-column.xml b/reference/array/functions/array-column.xml
index 5c0a8f3b07..413caeac89 100644
--- a/reference/array/functions/array-column.xml
+++ b/reference/array/functions/array-column.xml
@@ -62,7 +62,7 @@
Cette valeur peut être la clé entière de la colonne, ou le nom de la clé.
La valeur est cast
comme d'habitude pour les clés du tableau (cependant, antérieur à PHP 8.0.0,
- les objects qui supportent une conversion en chaîne de caractère étaient aussi autorisés).
+ les objets qui supportent une conversion en chaîne de caractères étaient aussi autorisés).
diff --git a/reference/array/functions/array-diff-key.xml b/reference/array/functions/array-diff-key.xml
index 4ccec16baf..89683876ce 100644
--- a/reference/array/functions/array-diff-key.xml
+++ b/reference/array/functions/array-diff-key.xml
@@ -90,8 +90,8 @@
Les deux clés depuis les paires clé => valeur
sont considérées comme égales uniquement si
(string) $cle1 === (string) $cle2 . En d'autres termes,
- une analyse de type stricte est exécutée, donc, le type doit être
- exactement le même.
+ une analyse de type stricte est exécutée, donc, la représentation
+ sous forme de chaîne de caractères doit être exactement la même.
Retourne un &array; contenant toutes les entrées du tableau
- array1 qui ne sont présentes dans
+ array qui ne sont présentes dans
aucun autre tableau.
diff --git a/reference/array/functions/array-diff.xml b/reference/array/functions/array-diff.xml
index d73a44ac36..75aab91989 100644
--- a/reference/array/functions/array-diff.xml
+++ b/reference/array/functions/array-diff.xml
@@ -95,7 +95,7 @@ print_r($result);
]]>
- Les valeurs multiples dans array1 seront toutes
+ Les valeurs multiples dans $array1 seront toutes
traitées de la même façon. Ce qui affichera :
@@ -112,7 +112,7 @@ Array
Deux éléments sont considérés comme égaux si et seulement si
(string) $elem1 === (string) $elem2 ; en somme, lorsque
- la représentation de la chaînes
+ la représentation de la chaîne
de caractères est la même.
@@ -128,7 +128,7 @@ $source = [1, 2, 3, 4];
$filter = [3, 4, [5], 6];
$result = array_diff($source, $filter);
-// Alors que ceci est bien, depuis que les objets peuvent être transformés en chaîne de caractères.
+// Alors que ceci fonctionne, car les objets peuvent être convertis en chaîne de caractères.
class S {
private $v;
diff --git a/reference/datetime/constants.xml b/reference/datetime/constants.xml
index 6eb4a515ac..1b5b791c25 100644
--- a/reference/datetime/constants.xml
+++ b/reference/datetime/constants.xml
@@ -1,272 +1,272 @@
-
-
-
-
-
-
- &reftitle.constants;
-
- Les constantes DATE_*
- sont définies et offrent des standards
- des dates, qui peut être utilisée avec toutes les fonctions
- de formatage de date (comme date).
-
-
-
- Formats de retour returnFormat disponibles pour
- date_sunrise et
- date_sunset
-
-
-
-
- Ces constantes sont dépréciées à partir de PHP 8.4.0.
- Les fonctions correspondantes date_sunrise et
- date_sunset sont dépréciées à partir de PHP 8.1.0.
-
-
-
-
-
- SUNFUNCS_RET_TIMESTAMP
- (int)
-
-
-
- Timestamp
-
-
-
-
-
- SUNFUNCS_RET_STRING
- (int)
-
-
-
- Heures:minutes (exemple: 08:02)
-
-
-
-
-
- SUNFUNCS_RET_DOUBLE
- (int)
-
-
-
- Heures en tant que nombre à point flottant (exemple 8.75)
-
-
-
-
-
- DATE_* constants
-
-
- DATE_ATOM
- (string)
-
-
-
- Atom (exemple : 2005-08-15T15:52:01+00:00) ;
- compatible avec ISO-8601, RFC 3399 et XML Schema
-
-
-
-
-
-
- DATE_COOKIE
- (string)
-
-
-
- Cookies HTTP (exemple : Monday, 15-Aug-2005 15:52:01 UTC)
-
-
-
-
-
-
- DATE_ISO8601
- (string)
-
-
-
- Semblable à ISO-8601 (exemple : 2005-08-15T15:52:01+0000)
-
-
-
- Ce format n'est pas compatible avec ISO-8601, mais il est resté ainsi pour des raisons de compatibilité ascendante. Utilisez
- DATE_ISO8601_EXPANDED,
- DATE_ATOM pour une compatibilité avec ISO-8601 à la place (ref ISO8601:2004 section 4.3.3 clause d).
-
-
-
-
-
-
-
- DATE_ISO8601_EXPANDED
- (string)
-
-
-
- ISO-8601 Expanded (exemple : +10191-07-26T08:59:52+01:00)
-
-
-
- Ce format permet des plages d'années en dehors de la plage normale d'ISO-8601 de 0000 à 9999 en incluant toujours un caractère de signe. Il s'assure également de la compatibilité de la partie du fuseau horaire (+01:00) avec ISO-8601.
-
-
-
-
-
-
-
- DATE_RFC822
- (string)
-
-
-
- RFC 822 (exemple : Mon, 15 Aug 05 15:52:01 +0000)
-
-
-
-
-
-
- DATE_RFC850
- (string)
-
-
-
- RFC 850 (exemple : Monday, 15-Aug-05 15:52:01 UTC)
-
-
-
-
-
-
- DATE_RFC1036
- (string)
-
-
-
- RFC 1036 (exemple : Mon, 15 Aug 05 15:52:01 +0000)
-
-
-
-
-
-
- DATE_RFC1123
- (string)
-
-
-
- RFC 1123 (exemple : Mon, 15 Aug 2005 15:52:01 +0000)
-
-
-
-
-
-
- DATE_RFC7231
- (string)
-
-
-
- RFC 7231 (à partir de PHP 7.0.19 et 7.1.5)
- (exemple : Sat, 30 Apr 2016 17:52:13 GMT)
-
-
-
-
-
-
- DATE_RFC2822
- (string)
-
-
-
- RFC 2822 (exemple : Mon, 15 Aug 2005 15:52:01 +0000)
-
-
-
-
-
-
- DATE_RFC3339
- (string)
-
-
-
- Identique à DATE_ATOM.
-
-
-
-
-
-
- DATE_RFC3339_EXTENDED
- (string)
-
-
-
- Format étendu RFC 3339
- (exemple : 2005-08-15T15:52:01.000+00:00)
-
-
-
-
-
-
- DATE_RSS
- (string)
-
-
-
- RSS (exemple : Mon, 15 Aug 2005 15:52:01 +0000).
- &Alias; DATE_RFC1123.
-
-
-
-
-
-
- DATE_W3C
- (string)
-
-
-
- World Wide Web Consortium (exemple : 2005-08-15T15:52:01+00:00).
- &Alias; DATE_RFC3339.
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+ &reftitle.constants;
+
+ Les constantes DATE_*
+ sont définies et offrent des standards
+ des dates, qui peuvent être utilisés avec toutes les fonctions
+ de formatage de date (comme date).
+
+
+
+ Formats de retour returnFormat disponibles pour
+ date_sunrise et
+ date_sunset
+
+
+
+
+ Ces constantes sont dépréciées à partir de PHP 8.4.0.
+ Les fonctions correspondantes date_sunrise et
+ date_sunset sont dépréciées à partir de PHP 8.1.0.
+
+
+
+
+
+ SUNFUNCS_RET_TIMESTAMP
+ (int)
+
+
+
+ Timestamp
+
+
+
+
+
+ SUNFUNCS_RET_STRING
+ (int)
+
+
+
+ Heures:minutes (exemple: 08:02)
+
+
+
+
+
+ SUNFUNCS_RET_DOUBLE
+ (int)
+
+
+
+ Heures en tant que nombre à point flottant (exemple 8.75)
+
+
+
+
+
+ DATE_* constantes
+
+
+ DATE_ATOM
+ (string)
+
+
+
+ Atom (exemple : 2005-08-15T15:52:01+00:00) ;
+ compatible avec ISO-8601, RFC 3399 et XML Schema
+
+
+
+
+
+
+ DATE_COOKIE
+ (string)
+
+
+
+ Cookies HTTP (exemple : Monday, 15-Aug-2005 15:52:01 UTC)
+
+
+
+
+
+
+ DATE_ISO8601
+ (string)
+
+
+
+ Semblable à ISO-8601 (exemple : 2005-08-15T15:52:01+0000)
+
+
+
+ Ce format n'est pas compatible avec ISO-8601, mais il est resté ainsi pour des raisons de compatibilité ascendante. Utilisez
+ DATE_ISO8601_EXPANDED,
+ DATE_ATOM pour une compatibilité avec ISO-8601 à la place (ref ISO8601:2004 section 4.3.3 clause d).
+
+
+
+
+
+
+
+ DATE_ISO8601_EXPANDED
+ (string)
+
+
+
+ ISO-8601 Expanded (exemple : +10191-07-26T08:59:52+01:00)
+
+
+
+ Ce format permet des plages d'années en dehors de la plage normale d'ISO-8601 de 0000 à 9999 en incluant toujours un caractère de signe. Il s'assure également de la compatibilité de la partie du fuseau horaire (+01:00) avec ISO-8601.
+
+
+
+
+
+
+
+ DATE_RFC822
+ (string)
+
+
+
+ RFC 822 (exemple : Mon, 15 Aug 05 15:52:01 +0000)
+
+
+
+
+
+
+ DATE_RFC850
+ (string)
+
+
+
+ RFC 850 (exemple : Monday, 15-Aug-05 15:52:01 UTC)
+
+
+
+
+
+
+ DATE_RFC1036
+ (string)
+
+
+
+ RFC 1036 (exemple : Mon, 15 Aug 05 15:52:01 +0000)
+
+
+
+
+
+
+ DATE_RFC1123
+ (string)
+
+
+
+ RFC 1123 (exemple : Mon, 15 Aug 2005 15:52:01 +0000)
+
+
+
+
+
+
+ DATE_RFC7231
+ (string)
+
+
+
+ RFC 7231 (à partir de PHP 7.0.19 et 7.1.5)
+ (exemple : Sat, 30 Apr 2016 17:52:13 GMT)
+
+
+
+
+
+
+ DATE_RFC2822
+ (string)
+
+
+
+ RFC 2822 (exemple : Mon, 15 Aug 2005 15:52:01 +0000)
+
+
+
+
+
+
+ DATE_RFC3339
+ (string)
+
+
+
+ Identique à DATE_ATOM.
+
+
+
+
+
+
+ DATE_RFC3339_EXTENDED
+ (string)
+
+
+
+ Format étendu RFC 3339
+ (exemple : 2005-08-15T15:52:01.000+00:00)
+
+
+
+
+
+
+ DATE_RSS
+ (string)
+
+
+
+ RSS (exemple : Mon, 15 Aug 2005 15:52:01 +0000).
+ &Alias; DATE_RFC1123.
+
+
+
+
+
+
+ DATE_W3C
+ (string)
+
+
+
+ World Wide Web Consortium (exemple : 2005-08-15T15:52:01+00:00).
+ &Alias; DATE_RFC3339.
+
+
+
+
+
+
+
+
diff --git a/reference/datetime/dateperiod/construct.xml b/reference/datetime/dateperiod/construct.xml
index edb9f6a9af..071f292251 100644
--- a/reference/datetime/dateperiod/construct.xml
+++ b/reference/datetime/dateperiod/construct.xml
@@ -41,7 +41,7 @@
Crée un nouvel objet DatePeriod.
- Les objetsDatePeriod peuvent être utilisés comme itérateur pour
+ Les objets DatePeriod peuvent être utilisés comme itérateur pour
générer un certain nombre d'objets DateTimeImmutable ou
DateTime à partir d'une start
date (date de début), un interval, et une end
@@ -50,7 +50,7 @@
La classe des objets renvoyés est équivalente à la classe ancêtre
DateTimeImmutable ou DateTime
- fournis pas l'objet start.
+ fournis par l'objet start.
diff --git a/reference/datetime/datetime/construct.xml b/reference/datetime/datetime/construct.xml
index 4157c16d8e..c2051e08b6 100644
--- a/reference/datetime/datetime/construct.xml
+++ b/reference/datetime/datetime/construct.xml
@@ -41,11 +41,11 @@
timezone
- Un object DateTimeZone représentant le fuseau
+ Un objet DateTimeZone représentant le fuseau
horaire de $datetime.
- Si $timezone est omit ou &null;,
+ Si $timezone est omis ou &null;,
le fuseau horaire actuel sera utilisé.
@@ -71,8 +71,8 @@
&reftitle.errors;
- Si une chaîne de date ou de temps invalide est fourni, une
- DateMalformedStringException est lancé.
+ Si une chaîne de date ou de temps invalide est fournie, une
+ DateMalformedStringException est lancée.
Antérieur à PHP 8.3, ceci était une Exception.
@@ -94,7 +94,7 @@
Lance désormais une
DateMalformedStringException
- si une chaîne invalide est fourni,
+ si une chaîne invalide est fournie,
au lieu de Exception.
diff --git a/reference/datetime/datetime/modify.xml b/reference/datetime/datetime/modify.xml
index 4941adc089..b319d1e6d5 100644
--- a/reference/datetime/datetime/modify.xml
+++ b/reference/datetime/datetime/modify.xml
@@ -24,7 +24,7 @@
Modifie le timestamp d'un objet DateTime
en l'incrémentant ou le décrémentant
- dans un format acceptable par strtotime.
+ dans un format acceptable par DateTimeImmutable::__construct.
@@ -54,7 +54,7 @@
API Orienté Objet uniquement :
Si une chaîne de date ou de temps invalide est fournie, une
- DateMalformedStringException est lancé.
+ DateMalformedStringException est lancée.
@@ -147,10 +147,10 @@ echo $date->format('Y-m-d') . "\n";
modify('1er juillet 2023');
+$date->modify('July 1st, 2023');
echo $date->format('Y-m-d H:i') . "\n";
-$date->modify('l prochain');
+$date->modify('Monday next week');
echo $date->format('Y-m-d H:i') . "\n";
$date->modify('17:30');
diff --git a/reference/datetime/datetimeimmutable/construct.xml b/reference/datetime/datetimeimmutable/construct.xml
index 4d7058ce1a..155a080185 100644
--- a/reference/datetime/datetimeimmutable/construct.xml
+++ b/reference/datetime/datetimeimmutable/construct.xml
@@ -44,11 +44,11 @@
timezone
- Un object DateTimeZone représentant le fuseau
+ Un objet DateTimeZone représentant le fuseau
horaire de $datetime.
- Si $timezone est omit ou &null;,
+ Si $timezone est omis ou &null;,
le fuseau horaire actuel sera utilisé.
@@ -75,8 +75,8 @@
&reftitle.errors;
- Si une chaîne de date ou de temps invalide est fourni, une
- DateMalformedStringException est lancé.
+ Si une chaîne de date ou de temps invalide est fournie, une
+ DateMalformedStringException est lancée.
Antérieur à PHP 8.3, ceci était une Exception.
@@ -98,7 +98,7 @@
Lance désormais une
DateMalformedStringException
- si une chaîne invalide est fourni,
+ si une chaîne invalide est fournie,
au lieu de Exception.
@@ -159,7 +159,7 @@ echo date_format($date, 'Y-m-d');
- Intricacies of DateTimeImmutable::__construct
+ Subtilités de DateTimeImmutable::__construct
Si une chaîne de date ou de temps invalide est fournie, une
- DateMalformedStringException est lancé.
+ DateMalformedStringException est lancée.
Antérieur à PHP 8.3, ceci était un avertissement.
@@ -65,7 +65,7 @@
DateTimeImmutable::modify lance désormais
DateMalformedStringException si une
- chaîne invalide est fourni. Auparavant, il retournait &false;,
+ chaîne invalide est fournie. Auparavant, il retournait &false;,
et un avertissement était émis.
diff --git a/reference/datetime/datetimeinterface.xml b/reference/datetime/datetimeinterface.xml
index 6f427e35e4..2cc791cf24 100644
--- a/reference/datetime/datetimeinterface.xml
+++ b/reference/datetime/datetimeinterface.xml
@@ -1,422 +1,422 @@
-
-
-
-
-
-
- L'interface DateTimeInterface
- DateTimeInterface
-
-
-
-
-
- &reftitle.intro;
-
- DateTimeInterface a été créé pour que les
- déclarations de type de paramètre, retour, ou propriété peuvent accepter
- soit DateTime ou DateTimeImmutable
- comme valeur. Il n'est pas possible d'implémenter cette interface dans les
- classes utilisateurs.
-
-
- Les constantes communes qui permettent de formater les objets
- DateTimeImmutable ou
- DateTime via
- DateTimeImmutable::format et
- DateTime::format sont également définies sur cette
- interface.
-
-
-
-
-
- &reftitle.interfacesynopsis;
-
-
-
-
- DateTimeInterface
-
-
- &Constants;
-
- public
- const
- string
- DateTimeInterface::ATOM
- "Y-m-d\\TH:i:sP"
-
-
- public
- const
- string
- DateTimeInterface::COOKIE
- "l, d-M-Y H:i:s T"
-
-
- public
- const
- string
- DateTimeInterface::ISO8601
- "Y-m-d\\TH:i:sO"
-
-
- public
- const
- string
- DateTimeInterface::ISO8601_EXPANDED
- "X-m-d\\TH:i:sP"
-
-
- public
- const
- string
- DateTimeInterface::RFC822
- "D, d M y H:i:s O"
-
-
- public
- const
- string
- DateTimeInterface::RFC850
- "l, d-M-y H:i:s T"
-
-
- public
- const
- string
- DateTimeInterface::RFC1036
- "D, d M y H:i:s O"
-
-
- public
- const
- string
- DateTimeInterface::RFC1123
- "D, d M Y H:i:s O"
-
-
- public
- const
- string
- DateTimeInterface::RFC7231
- "D, d M Y H:i:s \\G\\M\\T"
-
-
- public
- const
- string
- DateTimeInterface::RFC2822
- "D, d M Y H:i:s O"
-
-
- public
- const
- string
- DateTimeInterface::RFC3339
- "Y-m-d\\TH:i:sP"
-
-
- public
- const
- string
- DateTimeInterface::RFC3339_EXTENDED
- "Y-m-d\\TH:i:s.vP"
-
-
- public
- const
- string
- DateTimeInterface::RSS
- "D, d M Y H:i:s O"
-
-
- public
- const
- string
- DateTimeInterface::W3C
- "Y-m-d\\TH:i:sP"
-
-
- &Methods;
-
-
-
-
-
-
-
-
-
-
- &reftitle.constants;
-
-
-
- DateTimeInterface::ATOM
- string
-
- DATE_ATOM
-
-
- Atom (exemple: 2005-08-15T15:52:01+00:00) ;
- compatible avec ISO-8601, RFC 3399 et XML Schema
-
-
-
-
-
-
- DateTimeInterface::COOKIE
- string
-
- DATE_COOKIE
-
-
- HTTP Cookies (exemple: Monday, 15-Aug-2005 15:52:01 UTC)
-
-
-
-
-
-
- DateTimeInterface::ISO8601
- string
-
- DATE_ISO8601
-
-
- Semblable à ISO-8601 (exemple: 2005-08-15T15:52:01+0000)
-
-
-
- Ce format n'est pas compatible avec ISO-8601, mais reste ainsi pour des
- raisons de compatibilité ascendante. Utilisez DateTime::ISO8601_EXPANDED
- ou DateTimeInterface::ATOM pour assurer la compatibilité avec
- ISO-8601. (ref ISO8601:2004 section 4.3.3 clause d)
-
-
-
-
-
-
-
- DateTimeInterface::ISO8601_EXPANDED
- string
-
- DATE_ISO8601_EXPANDED
-
-
- ISO-8601 Expanded (exemple: +10191-07-26T08:59:52+01:00)
-
-
-
- Ce format permet des plages d'années en dehors de la plage normale de
- ISO-8601 allant de 0000 à 9999 en
- incluant toujours un caractère de signe. Il s'assure également que cette
- partie de fuseau horaire (+01:00) est compatible avec
- ISO-8601.
-
-
-
-
-
-
-
- DateTimeInterface::RFC822
- string
-
- DATE_RFC822
-
-
- RFC 822 (exemple: Mon, 15 Aug 05 15:52:01 +0000)
-
-
-
-
-
-
- DateTimeInterface::RFC850
- string
-
- DATE_RFC850
-
-
- RFC 850 (exemple: Monday, 15-Aug-05 15:52:01 UTC)
-
-
-
-
-
-
- DateTimeInterface::RFC1036
- string
-
- DATE_RFC1036
-
-
- RFC 1036 (exemple: Mon, 15 Aug 05 15:52:01 +0000)
-
-
-
-
-
-
- DateTimeInterface::RFC1123
- string
-
- DATE_RFC1123
-
-
- RFC 1123 (exemple: Mon, 15 Aug 2005 15:52:01 +0000)
-
-
-
-
-
-
- DateTimeInterface::RFC7231
- string
-
- DATE_RFC7231
-
-
- RFC 7231 (à partir de PHP 7.0.19 et 7.1.5)
- (exemple: Sat, 30 Apr 2016 17:52:13 GMT)
-
-
-
-
-
-
- DateTimeInterface::RFC2822
- string
-
- DATE_RFC2822
-
-
- RFC 2822 (exemple: Mon, 15 Aug 2005 15:52:01 +0000)
-
-
-
-
-
-
- DateTimeInterface::RFC3339
- string
-
- DATE_RFC3339
-
-
- Comme DATE_ATOM
-
-
-
-
-
-
- DateTimeInterface::RFC3339_EXTENDED
- string
-
- DATE_RFC3339_EXTENDED
-
-
- RFC 3339 EXTENDED format (example: 2005-08-15T15:52:01.000+00:00)
-
-
-
-
-
-
- DateTimeInterface::RSS
- string
-
- DATE_RSS
-
-
- RSS (exemple: Mon, 15 Aug 2005 15:52:01 +0000)
-
-
-
-
-
-
- DateTimeInterface::W3C
- string
-
- DATE_W3C
-
-
- World Wide Web Consortium (example: 2005-08-15T15:52:01+00:00)
-
-
-
-
-
-
-
-
- &reftitle.changelog;
-
-
-
-
-
- &Version;
- &Description;
-
-
-
-
- 8.4.0
-
- Les constantes de classe sont maintenant typées.
-
-
-
- 8.2.0
-
- La constante DateTimeInterface::ISO8601_EXPANDED
- a été ajouté.
-
-
-
- 7.2.0
-
- Les constantes de classe de DateTime sont
- maintenant définies sur DateTimeInterface.
-
-
-
-
-
-
-
-
-
-
- &reference.datetime.entities.datetimeinterface;
-
-
-
+
+
+
+
+
+
+ L'interface DateTimeInterface
+ DateTimeInterface
+
+
+
+
+
+ &reftitle.intro;
+
+ DateTimeInterface a été créé pour que les
+ déclarations de type de paramètre, retour, ou propriété puissent accepter
+ soit DateTime soit DateTimeImmutable
+ comme valeur. Il n'est pas possible d'implémenter cette interface dans les
+ classes utilisateurs.
+
+
+ Les constantes communes qui permettent de formater les objets
+ DateTimeImmutable ou
+ DateTime via
+ DateTimeImmutable::format et
+ DateTime::format sont également définies sur cette
+ interface.
+
+
+
+
+
+ &reftitle.interfacesynopsis;
+
+
+
+
+ DateTimeInterface
+
+
+ &Constants;
+
+ public
+ const
+ string
+ DateTimeInterface::ATOM
+ "Y-m-d\\TH:i:sP"
+
+
+ public
+ const
+ string
+ DateTimeInterface::COOKIE
+ "l, d-M-Y H:i:s T"
+
+
+ public
+ const
+ string
+ DateTimeInterface::ISO8601
+ "Y-m-d\\TH:i:sO"
+
+
+ public
+ const
+ string
+ DateTimeInterface::ISO8601_EXPANDED
+ "X-m-d\\TH:i:sP"
+
+
+ public
+ const
+ string
+ DateTimeInterface::RFC822
+ "D, d M y H:i:s O"
+
+
+ public
+ const
+ string
+ DateTimeInterface::RFC850
+ "l, d-M-y H:i:s T"
+
+
+ public
+ const
+ string
+ DateTimeInterface::RFC1036
+ "D, d M y H:i:s O"
+
+
+ public
+ const
+ string
+ DateTimeInterface::RFC1123
+ "D, d M Y H:i:s O"
+
+
+ public
+ const
+ string
+ DateTimeInterface::RFC7231
+ "D, d M Y H:i:s \\G\\M\\T"
+
+
+ public
+ const
+ string
+ DateTimeInterface::RFC2822
+ "D, d M Y H:i:s O"
+
+
+ public
+ const
+ string
+ DateTimeInterface::RFC3339
+ "Y-m-d\\TH:i:sP"
+
+
+ public
+ const
+ string
+ DateTimeInterface::RFC3339_EXTENDED
+ "Y-m-d\\TH:i:s.vP"
+
+
+ public
+ const
+ string
+ DateTimeInterface::RSS
+ "D, d M Y H:i:s O"
+
+
+ public
+ const
+ string
+ DateTimeInterface::W3C
+ "Y-m-d\\TH:i:sP"
+
+
+ &Methods;
+
+
+
+
+
+
+
+
+
+
+ &reftitle.constants;
+
+
+
+ DateTimeInterface::ATOM
+ string
+
+ DATE_ATOM
+
+
+ Atom (exemple: 2005-08-15T15:52:01+00:00) ;
+ compatible avec ISO-8601, RFC 3399 et XML Schema
+
+
+
+
+
+
+ DateTimeInterface::COOKIE
+ string
+
+ DATE_COOKIE
+
+
+ HTTP Cookies (exemple: Monday, 15-Aug-2005 15:52:01 UTC)
+
+
+
+
+
+
+ DateTimeInterface::ISO8601
+ string
+
+ DATE_ISO8601
+
+
+ Semblable à ISO-8601 (exemple: 2005-08-15T15:52:01+0000)
+
+
+
+ Ce format n'est pas compatible avec ISO-8601, mais reste ainsi pour des
+ raisons de compatibilité ascendante. Utilisez DateTime::ISO8601_EXPANDED
+ ou DateTimeInterface::ATOM pour assurer la compatibilité avec
+ ISO-8601. (ref ISO8601:2004 section 4.3.3 clause d)
+
+
+
+
+
+
+
+ DateTimeInterface::ISO8601_EXPANDED
+ string
+
+ DATE_ISO8601_EXPANDED
+
+
+ ISO-8601 Expanded (exemple: +10191-07-26T08:59:52+01:00)
+
+
+
+ Ce format permet des plages d'années en dehors de la plage normale de
+ ISO-8601 allant de 0000 à 9999 en
+ incluant toujours un caractère de signe. Il s'assure également que cette
+ partie de fuseau horaire (+01:00) est compatible avec
+ ISO-8601.
+
+
+
+
+
+
+
+ DateTimeInterface::RFC822
+ string
+
+ DATE_RFC822
+
+
+ RFC 822 (exemple: Mon, 15 Aug 05 15:52:01 +0000)
+
+
+
+
+
+
+ DateTimeInterface::RFC850
+ string
+
+ DATE_RFC850
+
+
+ RFC 850 (exemple: Monday, 15-Aug-05 15:52:01 UTC)
+
+
+
+
+
+
+ DateTimeInterface::RFC1036
+ string
+
+ DATE_RFC1036
+
+
+ RFC 1036 (exemple: Mon, 15 Aug 05 15:52:01 +0000)
+
+
+
+
+
+
+ DateTimeInterface::RFC1123
+ string
+
+ DATE_RFC1123
+
+
+ RFC 1123 (exemple: Mon, 15 Aug 2005 15:52:01 +0000)
+
+
+
+
+
+
+ DateTimeInterface::RFC7231
+ string
+
+ DATE_RFC7231
+
+
+ RFC 7231 (à partir de PHP 7.0.19 et 7.1.5)
+ (exemple: Sat, 30 Apr 2016 17:52:13 GMT)
+
+
+
+
+
+
+ DateTimeInterface::RFC2822
+ string
+
+ DATE_RFC2822
+
+
+ RFC 2822 (exemple: Mon, 15 Aug 2005 15:52:01 +0000)
+
+
+
+
+
+
+ DateTimeInterface::RFC3339
+ string
+
+ DATE_RFC3339
+
+
+ Comme DATE_ATOM
+
+
+
+
+
+
+ DateTimeInterface::RFC3339_EXTENDED
+ string
+
+ DATE_RFC3339_EXTENDED
+
+
+ RFC 3339 EXTENDED format (exemple : 2005-08-15T15:52:01.000+00:00)
+
+
+
+
+
+
+ DateTimeInterface::RSS
+ string
+
+ DATE_RSS
+
+
+ RSS (exemple: Mon, 15 Aug 2005 15:52:01 +0000)
+
+
+
+
+
+
+ DateTimeInterface::W3C
+ string
+
+ DATE_W3C
+
+
+ World Wide Web Consortium (exemple : 2005-08-15T15:52:01+00:00)
+
+
+
+
+
+
+
+
+ &reftitle.changelog;
+
+
+
+
+
+ &Version;
+ &Description;
+
+
+
+
+ 8.4.0
+
+ Les constantes de classe sont maintenant typées.
+
+
+
+ 8.2.0
+
+ La constante DateTimeInterface::ISO8601_EXPANDED
+ a été ajoutée.
+
+
+
+ 7.2.0
+
+ Les constantes de classe de DateTime sont
+ maintenant définies sur DateTimeInterface.
+
+
+
+
+
+
+
+
+
+
+ &reference.datetime.entities.datetimeinterface;
+
+
+
diff --git a/reference/dom/book.xml b/reference/dom/book.xml
index b7544756e9..2cb87cde52 100644
--- a/reference/dom/book.xml
+++ b/reference/dom/book.xml
@@ -4,7 +4,7 @@
- Model Objet d'un document
+ Modèle Objet d'un documentDOM
diff --git a/reference/filesystem/constants.xml b/reference/filesystem/constants.xml
index 6c40756f81..45707e4a64 100644
--- a/reference/filesystem/constants.xml
+++ b/reference/filesystem/constants.xml
@@ -1,577 +1,577 @@
-
-
-
-
-
-
- &reftitle.constants;
- &extension.constants;
-
-
-
- SEEK_SET
- (int)
-
-
-
-
-
-
-
-
-
- SEEK_CUR
- (int)
-
-
-
-
-
-
-
-
-
- SEEK_END
- (int)
-
-
-
-
-
-
-
-
-
- LOCK_SH
- (int)
-
-
-
-
-
-
-
-
-
- LOCK_EX
- (int)
-
-
-
-
-
-
-
-
-
- LOCK_UN
- (int)
-
-
-
-
-
-
-
-
-
- LOCK_NB
- (int)
-
-
-
-
-
-
-
-
-
-
- flags disponibles pour
- file
-
-
-
-
- FILE_USE_INCLUDE_PATH
- (int)
-
-
-
- Recherche le filename dans
- include_path.
-
-
-
-
-
-
- FILE_NO_DEFAULT_CONTEXT
- (int)
-
-
-
-
-
-
-
-
-
- FILE_APPEND
- (int)
-
-
-
- Ajoute du contenu au fichier existant.
-
-
-
-
-
-
- FILE_IGNORE_NEW_LINES
- (int)
-
-
-
- Supprime les caractères de fin de ligne.
-
-
-
-
-
-
- FILE_SKIP_EMPTY_LINES
- (int)
-
-
-
- Ignore les lignes vides.
-
-
-
-
-
-
- FILE_BINARY
- (int)
-
-
-
- Mode binaire.
-
-
- Cette constante n'a aucun effet et est dépréciée à partir de PHP 8.1.0.
-
-
-
-
-
-
-
-
- FILE_TEXT
- (int)
-
-
-
- Mode texte.
-
-
- Cette constante n'a aucun effet et est dépréciée à partir de PHP 8.1.0.
-
-
-
-
-
-
-
-
-
- flags disponibles pour
- glob
-
-
-
-
- GLOB_AVAILABLE_FLAGS
- (int)
-
-
-
- Tous les indicateurs GLOB_* combinés.
- Équivalent à 0 | GLOB_BRACE |
- GLOB_MARK | GLOB_NOSORT |
- GLOB_NOCHECK | GLOB_NOESCAPE |
- GLOB_ERR | GLOB_ONLYDIR
-
-
-
-
-
- GLOB_BRACE
- (int)
-
-
-
- Étend {a,b,c} pour correspondre à 'a', 'b' ou 'c'
-
-
-
- GLOB_BRACE n'est pas disponible sur certains systèmes non-GNU,
- comme Solaris ou Alpine Linux.
-
-
-
-
-
-
- GLOB_ERR
- (int)
-
-
-
- Arrête en cas d'erreurs de lecture (comme les répertoires illisibles),
- par défaut, les erreurs sont ignorées.
-
-
-
-
-
- GLOB_MARK
- (int)
-
-
-
- Ajoute une barre oblique (un antislash sur Windows) à chaque répertoire retourné.
-
-
-
-
-
- GLOB_NOCHECK
- (int)
-
-
-
- Renvoie le motif de recherche si aucun fichier correspondant n'a été trouvé.
-
-
-
-
-
- GLOB_NOESCAPE
- (int)
-
-
-
- Les barres obliques inverses ne citent pas les métacaractères.
-
-
-
-
-
- GLOB_NOSORT
- (int)
-
-
-
- Renvoie les fichiers tels qu'ils apparaissent dans le répertoire (sans tri).
- Lorsque ce drapeau n'est pas utilisé, les chemins sont triés par ordre alphabétique.
-
-
-
-
-
- GLOB_ONLYDIR
- (int)
-
-
-
- Renvoie uniquement les entrées de répertoire qui correspondent au modèle.
-
-
-
-
-
-
- flags disponibles pour
- pathinfo
-
-
-
- PATHINFO_ALL
- (int)
-
-
-
- Toutes les parties du chemin
- renvoyées sous forme de tableau associatif.
-
-
-
-
-
- PATHINFO_DIRNAME
- (int)
-
-
-
-
-
-
-
-
-
- PATHINFO_BASENAME
- (int)
-
-
-
- Le nom du répertoire ou
- le nom et l'extension du fichier.
-
-
-
-
-
- PATHINFO_EXTENSION
- (int)
-
-
-
- L'extension du fichier.
-
-
-
-
-
- PATHINFO_FILENAME
- (int)
-
-
-
- Le nom du fichier (sans l'extension)
- ou du répertoire.
-
-
-
-
-
-
- scanner_mode disponibles pour
- parse_ini_file et
- parse_ini_string
-
-
-
- INI_SCANNER_NORMAL
- (int)
-
-
-
- Mode d'analyse normale des directives INI.
-
-
-
-
-
-
- INI_SCANNER_RAW
- (int)
-
-
-
- Mode d'analyse brut des directives INI.
-
-
-
-
-
-
- INI_SCANNER_TYPED
- (int)
-
-
-
- Mode scanner typé INI.
-
-
-
-
-
-
- flags disponibles pour
- fnmatch
-
-
-
-
- FNM_NOESCAPE
- (int)
-
-
-
- Désactive la protection des antislash.
-
-
-
-
-
-
- FNM_PATHNAME
- (int)
-
-
-
- Un slash dans la chaîne ne correspond qu'au
- slash final du motif.
-
-
-
-
-
-
- FNM_PERIOD
- (int)
-
-
-
- Le point initial dans la chaîne doit correspondre
- exactement au point dans le motif.
-
-
-
-
-
-
- FNM_CASEFOLD
- (int)
-
-
-
- Recherche sans casse. Une partie de l'extension GNU.
-
-
-
-
-
- Constantes de Téléversement de Fichiers PHP
-
-
- UPLOAD_ERR_CANT_WRITE
- (int)
-
-
-
- Échec de l'écriture du fichier sur le disque.
- La valeur de la constante est 7.
-
-
-
-
-
- UPLOAD_ERR_EXTENSION
- (int)
-
-
-
- Une extension PHP a interrompu le téléchargement du fichier. PHP ne fournit pas de moyen de savoir quelle extension a provoqué l'arrêt du téléchargement du fichier ; examiner la liste des extensions chargées avec la fonction phpinfo peut aider.
- La valeur de la constante est 8.
-
-
-
-
-
- UPLOAD_ERR_FORM_SIZE
- (int)
-
-
-
- Le fichier téléchargé dépasse la directive MAX_FILE_SIZE spécifiée dans le formulaire HTML.
- La valeur de la constante est 2.
-
-
-
-
-
- UPLOAD_ERR_INI_SIZE
- (int)
-
-
-
- Le fichier téléchargé dépasse la directive upload_max_filesize spécifiée dans le fichier &php.ini;.
- La valeur de la constante est 1.
-
-
-
-
-
- UPLOAD_ERR_NO_FILE
- (int)
-
-
-
- Aucun fichier n'a été téléchargé.
- La valeur de la constante est 4.
-
-
-
-
-
- UPLOAD_ERR_NO_TMP_DIR
- (int)
-
-
-
- Absence de dossier temporaire.
- La valeur de la constante est 6.
-
-
-
-
-
- UPLOAD_ERR_OK
- (int)
-
-
-
- Aucune erreur, le fichier a été téléchargé avec succès.
- La valeur de la constante est 0.
-
-
-
-
-
- UPLOAD_ERR_PARTIAL
- (int)
-
-
-
- Le fichier téléchargé n'a été que partiellement téléchargé.
- La valeur de la constante est 3.
-
-
-
-
-
-
+
+
+
+
+
+
+ &reftitle.constants;
+ &extension.constants;
+
+
+
+ SEEK_SET
+ (int)
+
+
+
+
+
+
+
+
+
+ SEEK_CUR
+ (int)
+
+
+
+
+
+
+
+
+
+ SEEK_END
+ (int)
+
+
+
+
+
+
+
+
+
+ LOCK_SH
+ (int)
+
+
+
+
+
+
+
+
+
+ LOCK_EX
+ (int)
+
+
+
+
+
+
+
+
+
+ LOCK_UN
+ (int)
+
+
+
+
+
+
+
+
+
+ LOCK_NB
+ (int)
+
+
+
+
+
+
+
+
+
+
+ flags disponibles pour
+ file
+
+
+
+
+ FILE_USE_INCLUDE_PATH
+ (int)
+
+
+
+ Recherche le filename dans
+ include_path.
+
+
+
+
+
+
+ FILE_NO_DEFAULT_CONTEXT
+ (int)
+
+
+
+
+
+
+
+
+
+ FILE_APPEND
+ (int)
+
+
+
+ Ajoute du contenu au fichier existant.
+
+
+
+
+
+
+ FILE_IGNORE_NEW_LINES
+ (int)
+
+
+
+ Supprime les caractères de fin de ligne.
+
+
+
+
+
+
+ FILE_SKIP_EMPTY_LINES
+ (int)
+
+
+
+ Ignore les lignes vides.
+
+
+
+
+
+
+ FILE_BINARY
+ (int)
+
+
+
+ Mode binaire.
+
+
+ Cette constante n'a aucun effet et est dépréciée à partir de PHP 8.1.0.
+
+
+
+
+
+
+
+
+ FILE_TEXT
+ (int)
+
+
+
+ Mode texte.
+
+
+ Cette constante n'a aucun effet et est dépréciée à partir de PHP 8.1.0.
+
+
+
+
+
+
+
+
+
+ flags disponibles pour
+ glob
+
+
+
+
+ GLOB_AVAILABLE_FLAGS
+ (int)
+
+
+
+ Tous les indicateurs GLOB_* combinés.
+ Équivalent à 0 | GLOB_BRACE |
+ GLOB_MARK | GLOB_NOSORT |
+ GLOB_NOCHECK | GLOB_NOESCAPE |
+ GLOB_ERR | GLOB_ONLYDIR
+
+
+
+
+
+ GLOB_BRACE
+ (int)
+
+
+
+ Étend {a,b,c} pour correspondre à 'a', 'b' ou 'c'
+
+
+
+ GLOB_BRACE n'est pas disponible sur certains systèmes non-GNU,
+ comme Solaris ou Alpine Linux.
+
+
+
+
+
+
+ GLOB_ERR
+ (int)
+
+
+
+ Arrête en cas d'erreurs de lecture (comme les répertoires illisibles),
+ par défaut, les erreurs sont ignorées.
+
+
+
+
+
+ GLOB_MARK
+ (int)
+
+
+
+ Ajoute une barre oblique (un antislash sur Windows) à chaque répertoire retourné.
+
+
+
+
+
+ GLOB_NOCHECK
+ (int)
+
+
+
+ Renvoie le motif de recherche si aucun fichier correspondant n'a été trouvé.
+
+
+
+
+
+ GLOB_NOESCAPE
+ (int)
+
+
+
+ Les barres obliques inverses ne citent pas les métacaractères.
+
+
+
+
+
+ GLOB_NOSORT
+ (int)
+
+
+
+ Renvoie les fichiers tels qu'ils apparaissent dans le répertoire (sans tri).
+ Lorsque ce drapeau n'est pas utilisé, les chemins sont triés par ordre alphabétique.
+
+
+
+
+
+ GLOB_ONLYDIR
+ (int)
+
+
+
+ Renvoie uniquement les entrées de répertoire qui correspondent au modèle.
+
+
+
+
+
+
+ flags disponibles pour
+ pathinfo
+
+
+
+ PATHINFO_ALL
+ (int)
+
+
+
+ Toutes les parties du chemin
+ renvoyées sous forme de tableau associatif.
+
+
+
+
+
+ PATHINFO_DIRNAME
+ (int)
+
+
+
+ Le chemin du répertoire ou du fichier.
+
+
+
+
+
+ PATHINFO_BASENAME
+ (int)
+
+
+
+ Le nom du répertoire ou
+ le nom et l'extension du fichier.
+
+
+
+
+
+ PATHINFO_EXTENSION
+ (int)
+
+
+
+ L'extension du fichier.
+
+
+
+
+
+ PATHINFO_FILENAME
+ (int)
+
+
+
+ Le nom du fichier (sans l'extension)
+ ou du répertoire.
+
+
+
+
+
+
+ scanner_mode disponibles pour
+ parse_ini_file et
+ parse_ini_string
+
+
+
+ INI_SCANNER_NORMAL
+ (int)
+
+
+
+ Mode d'analyse normale des directives INI.
+
+
+
+
+
+
+ INI_SCANNER_RAW
+ (int)
+
+
+
+ Mode d'analyse brut des directives INI.
+
+
+
+
+
+
+ INI_SCANNER_TYPED
+ (int)
+
+
+
+ Mode scanner typé INI.
+
+
+
+
+
+
+ flags disponibles pour
+ fnmatch
+
+
+
+
+ FNM_NOESCAPE
+ (int)
+
+
+
+ Désactive la protection des antislash.
+
+
+
+
+
+
+ FNM_PATHNAME
+ (int)
+
+
+
+ Un slash dans la chaîne ne correspond qu'au
+ slash final du motif.
+
+
+
+
+
+
+ FNM_PERIOD
+ (int)
+
+
+
+ Le point initial dans la chaîne doit correspondre
+ exactement au point dans le motif.
+
+
+
+
+
+
+ FNM_CASEFOLD
+ (int)
+
+
+
+ Recherche sans casse. Une partie de l'extension GNU.
+
+
+
+
+
+ Constantes de Téléversement de Fichiers PHP
+
+
+ UPLOAD_ERR_CANT_WRITE
+ (int)
+
+
+
+ Échec de l'écriture du fichier sur le disque.
+ La valeur de la constante est 7.
+
+
+
+
+
+ UPLOAD_ERR_EXTENSION
+ (int)
+
+
+
+ Une extension PHP a interrompu le téléchargement du fichier. PHP ne fournit pas de moyen de savoir quelle extension a provoqué l'arrêt du téléchargement du fichier ; examiner la liste des extensions chargées avec la fonction phpinfo peut aider.
+ La valeur de la constante est 8.
+
+
+
+
+
+ UPLOAD_ERR_FORM_SIZE
+ (int)
+
+
+
+ Le fichier téléchargé dépasse la directive MAX_FILE_SIZE spécifiée dans le formulaire HTML.
+ La valeur de la constante est 2.
+
+
+
+
+
+ UPLOAD_ERR_INI_SIZE
+ (int)
+
+
+
+ Le fichier téléchargé dépasse la directive upload_max_filesize spécifiée dans le fichier &php.ini;.
+ La valeur de la constante est 1.
+
+
+
+
+
+ UPLOAD_ERR_NO_FILE
+ (int)
+
+
+
+ Aucun fichier n'a été téléchargé.
+ La valeur de la constante est 4.
+
+
+
+
+
+ UPLOAD_ERR_NO_TMP_DIR
+ (int)
+
+
+
+ Absence de dossier temporaire.
+ La valeur de la constante est 6.
+
+
+
+
+
+ UPLOAD_ERR_OK
+ (int)
+
+
+
+ Aucune erreur, le fichier a été téléchargé avec succès.
+ La valeur de la constante est 0.
+
+
+
+
+
+ UPLOAD_ERR_PARTIAL
+ (int)
+
+
+
+ Le fichier téléchargé n'a été que partiellement téléchargé.
+ La valeur de la constante est 3.
+
+
+
+
+
+
diff --git a/reference/filesystem/functions/clearstatcache.xml b/reference/filesystem/functions/clearstatcache.xml
index b5dbc2abda..86bcfec810 100644
--- a/reference/filesystem/functions/clearstatcache.xml
+++ b/reference/filesystem/functions/clearstatcache.xml
@@ -32,12 +32,13 @@
sur un fichier qui n'existe pas, la fonction retournera &false;
jusqu'à ce que vous créiez le fichier. Si vous créez le fichier,
la fonction retournera &true; même si vous effacez le fichier.
+ Cependant, unlink efface automatiquement le cache.
Cette fonction met en cache des informations sur les fichiers.
Vous n'avez donc besoin d'appeler clearstatcache que
- si vous faites des opérations multiples sur le dossier, et que vous
+ si vous faites des opérations multiples sur le même fichier, et que vous
voulez avoir une version récente des informations.
diff --git a/reference/filesystem/functions/delete.xml b/reference/filesystem/functions/delete.xml
index e120479bb9..cbfad95399 100644
--- a/reference/filesystem/functions/delete.xml
+++ b/reference/filesystem/functions/delete.xml
@@ -1,54 +1,54 @@
-
-
-
-
-
-
-
- delete
- Voir unlink ou unset
-
-
-
- &reftitle.description;
-
- Il n'y a pas de mot clé ou fonction delete dans le langage PHP.
- Si vous arrivez sur cette page en tentant de supprimer un fichier,
- essayer unlink.
- Pour supprimer une variable de la portée locale regarder
- unset.
-
-
-
-
- &reftitle.seealso;
-
-
- unlink
- unset
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+ delete
+ Voir unlink ou unset
+
+
+
+ &reftitle.description;
+
+ Il n'y a pas de mot clé ou fonction delete dans le langage PHP.
+ Si vous arrivez sur cette page en tentant de supprimer un fichier,
+ essayez unlink.
+ Pour supprimer une variable de la portée locale, regardez
+ unset.
+
+
+
+
+ &reftitle.seealso;
+
+
+ unlink
+ unset
+
+
+
+
+
+
+
diff --git a/reference/filesystem/functions/disk-free-space.xml b/reference/filesystem/functions/disk-free-space.xml
index a62b96e6e7..60e2720260 100644
--- a/reference/filesystem/functions/disk-free-space.xml
+++ b/reference/filesystem/functions/disk-free-space.xml
@@ -33,7 +33,7 @@
Si vous fournissez un fichier au lieu d'un dossier, le comportement
- de cette fonction peut être aléatoire, suivant le système d'exploitation
+ de cette fonction n'est pas défini, suivant le système d'exploitation
et les versions de PHP.
diff --git a/reference/filesystem/functions/disk-total-space.xml b/reference/filesystem/functions/disk-total-space.xml
index 425a6ee9a2..02e4a842df 100644
--- a/reference/filesystem/functions/disk-total-space.xml
+++ b/reference/filesystem/functions/disk-total-space.xml
@@ -16,8 +16,9 @@
stringdirectory
- Lit récursivement toutes les tailles
- du dossier directory et retourne la somme en octets.
+ Étant donné une chaîne contenant un répertoire, cette fonction retourne
+ le nombre total d'octets sur le système de fichiers ou la partition de
+ disque correspondante.
diff --git a/reference/filesystem/functions/feof.xml b/reference/filesystem/functions/feof.xml
index cd4b6763f4..9f05e8fd0a 100644
--- a/reference/filesystem/functions/feof.xml
+++ b/reference/filesystem/functions/feof.xml
@@ -1,123 +1,123 @@
-
-
-
-
-
-
- feof
- Teste la fin du fichier
-
-
-
- &reftitle.description;
-
- boolfeof
- resourcestream
-
-
- Teste la fin du fichier.
-
-
-
-
- &reftitle.parameters;
-
-
-
- stream
-
- &fs.validfp.all;
-
-
-
-
-
-
-
- &reftitle.returnvalues;
-
- Retourne &true; si le pointeur
- handle est à la fin du fichier ou si
- une erreur survient, sinon, retourne &false;.
-
-
-
-
- &reftitle.notes;
-
-
- Si une connexion ouverte avec fsockopen n'est pas fermée
- par le serveur, feof se bloquera.
- Pour contourner ce comportement, reportez-vous à l'exemple ci-dessous :
-
- Gestion des délais d'attente dépassés feof
-
-
-]]>
-
-
-
-
-
-
- Si le pointeur de fichier passé n'est pas valide, vous obtiendrez une
- boucle infinie car feof échouera à retourner &true;.
-
- Exemple avec feof et un pointeur de fichier invalide
-
-
-]]>
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+ feof
+ Teste la fin du fichier
+
+
+
+ &reftitle.description;
+
+ boolfeof
+ resourcestream
+
+
+ Teste la fin du fichier.
+
+
+
+
+ &reftitle.parameters;
+
+
+
+ stream
+
+ &fs.validfp.all;
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+
+ Retourne &true; si le pointeur
+ stream est à la fin du fichier ou si
+ une erreur survient (y compris les délais d'attente de socket), sinon, retourne &false;.
+
+
+
+
+ &reftitle.notes;
+
+
+ Si une connexion ouverte avec fsockopen n'est pas fermée
+ par le serveur, feof se bloquera.
+ Pour contourner ce comportement, reportez-vous à l'exemple ci-dessous :
+
+ Gestion des délais d'attente dépassés feof
+
+
+]]>
+
+
+
+
+
+
+ Si le pointeur de fichier passé n'est pas valide, vous obtiendrez une
+ boucle infinie car feof échouera à retourner &true;.
+
+ Exemple avec feof et un pointeur de fichier invalide
+
+
+]]>
+
+
+
+
+
+
+
+
diff --git a/reference/json/functions/json-decode.xml b/reference/json/functions/json-decode.xml
index e230f56aea..263bcf0a13 100644
--- a/reference/json/functions/json-decode.xml
+++ b/reference/json/functions/json-decode.xml
@@ -71,7 +71,7 @@
JSON_INVALID_UTF8_SUBSTITUTE,
JSON_OBJECT_AS_ARRAY,
JSON_THROW_ON_ERROR.
- Le comportement de ces constantes est décrite sur la page
+ Le comportement de ces constantes est décrit sur la page
des constantes JSON.
@@ -252,31 +252,6 @@ $json = json_encode(
)
);
-// Définition des erreurs
-$constants = get_defined_constants(true);
-$json_errors = array();
-foreach ($constants["json"] as $name => $value) {
- if (!strncmp($name, "JSON_ERROR_", 11)) {
- $json_errors[$value] = $name;
- }
-}
-
-
-$json = json_encode(
- array(
- 1 => array(
- 'English' => array(
- 'One',
- 'January'
- ),
- 'French' => array(
- 'Une',
- 'Janvier'
- )
- )
- )
-);
-
// Affichage des erreurs pour des niveau d'imbrication différentes.
var_dump(json_decode($json, true, 4));
echo 'Last error: ', json_last_error_msg(), PHP_EOL, PHP_EOL;
@@ -350,14 +325,13 @@ object(stdClass)#1 (1) {
La spécification JSON ne fait pas partie de Javascript
- mais d'un sous-projet de Javascript.
+ mais d'un sous-ensemble de Javascript.
Si une erreur survient lors du décodage, la fonction
json_last_error
- (ou json_last_error_msg avec PHP5.5+)
pourra être utilisée pour
déterminer la nature exacte de l'erreur.
diff --git a/reference/json/functions/json-encode.xml b/reference/json/functions/json-encode.xml
index c301f17659..0154feb5f3 100644
--- a/reference/json/functions/json-encode.xml
+++ b/reference/json/functions/json-encode.xml
@@ -42,7 +42,7 @@
value
- La valeur à encoder. Peut-être de n'importe quel type, excepté
+ La valeur à encoder. Peut être de n'importe quel type, excepté
une &resource;.
diff --git a/reference/json/jsonserializable/jsonserialize.xml b/reference/json/jsonserializable/jsonserialize.xml
index 724d0a99d2..df17117cb4 100644
--- a/reference/json/jsonserializable/jsonserialize.xml
+++ b/reference/json/jsonserializable/jsonserialize.xml
@@ -14,7 +14,7 @@
- Sérialise l'objet en une valeur qui peut être sérialisé nativement par
+ Sérialise l'objet en une valeur qui peut être sérialisée nativement par
la fonction json_encode.
diff --git a/reference/json/setup.xml b/reference/json/setup.xml
index 6982ec7ec5..66721cb711 100644
--- a/reference/json/setup.xml
+++ b/reference/json/setup.xml
@@ -11,7 +11,7 @@
L'extension JSON est une extension du cœur de PHP, elle est donc activée par défaut.
- Auparavant à PHP 8.0.0, l'extension JSON était apportée et compilée dans PHP par
+ Antérieurement à PHP 8.0.0, l'extension JSON était apportée et compilée dans PHP par
défaut, mais pouvait être désactivée explicitement en utilisant
diff --git a/reference/spl/arrayobject.xml b/reference/spl/arrayobject.xml
index 89ec9846fa..f896b93589 100644
--- a/reference/spl/arrayobject.xml
+++ b/reference/spl/arrayobject.xml
@@ -1,131 +1,131 @@
-
-
-
-
- &class.theclass; ArrayObject
- ArrayObject
-
-
-
-
-
- &reftitle.intro;
-
- Cette classe permet aux objets de fonctionner comme des tableaux.
-
-
-
- Envelopper des objets avec cette classe est fondamentalement défectueux, et son utilisation avec des objets est donc déconseillée.
-
-
-
-
-
-
-
- &reftitle.classsynopsis;
-
-
-
-
- ArrayObject
-
-
-
- implements
- IteratorAggregate
-
-
-
- ArrayAccess
-
-
-
- Serializable
-
-
-
- Countable
-
-
- &Constants;
-
- public
- const
- int
- ArrayObject::STD_PROP_LIST
-
-
- public
- const
- int
- ArrayObject::ARRAY_AS_PROPS
-
-
- &Methods;
-
-
-
-
-
-
-
-
-
-
-
- &reftitle.constants;
-
- Options de ArrayObject
-
-
-
- ArrayObject::STD_PROP_LIST
-
-
- Les propriétés de l'objet ont leur fonctionnement normal lorsqu'on
- y accède depuis la liste (var_dump, &foreach;, etc.).
-
-
-
-
-
- ArrayObject::ARRAY_AS_PROPS
-
-
- Les éléments peuvent être accédé comme des propriétés (lecture et écriture).
- La classe ArrayObject utilise so propre logique
- pour accéder aux propriétés, ainsi aucun avertissement ou erreur est
- émise lors d'une tentative de lecture ou écriture de propriétés dynamique.
-
-
-
-
-
-
-
-
-
- &reference.spl.entities.arrayobject;
-
-
-
+
+
+
+
+ &class.theclass; ArrayObject
+ ArrayObject
+
+
+
+
+
+ &reftitle.intro;
+
+ Cette classe permet aux objets de fonctionner comme des tableaux.
+
+
+
+ Envelopper des objets avec cette classe est fondamentalement défectueux, et son utilisation avec des objets est donc déconseillée.
+
+
+
+
+
+
+
+ &reftitle.classsynopsis;
+
+
+
+
+ ArrayObject
+
+
+
+ implements
+ IteratorAggregate
+
+
+
+ ArrayAccess
+
+
+
+ Serializable
+
+
+
+ Countable
+
+
+ &Constants;
+
+ public
+ const
+ int
+ ArrayObject::STD_PROP_LIST
+
+
+ public
+ const
+ int
+ ArrayObject::ARRAY_AS_PROPS
+
+
+ &Methods;
+
+
+
+
+
+
+
+
+
+
+
+ &reftitle.constants;
+
+ Options de ArrayObject
+
+
+
+ ArrayObject::STD_PROP_LIST
+
+
+ Les propriétés de l'objet ont leur fonctionnement normal lorsqu'on
+ y accède depuis la liste (var_dump, &foreach;, etc.).
+
+
+
+
+
+ ArrayObject::ARRAY_AS_PROPS
+
+
+ Les éléments peuvent être accédé comme des propriétés (lecture et écriture).
+ La classe ArrayObject utilise sa propre logique
+ pour accéder aux propriétés, ainsi aucun avertissement ou erreur est
+ émise lors d'une tentative de lecture ou écriture de propriétés dynamiques.
+
+
+
+
+
+
+
+
+
+ &reference.spl.entities.arrayobject;
+
+
+
diff --git a/reference/strings/functions/addcslashes.xml b/reference/strings/functions/addcslashes.xml
index 542c4908a0..43ef8928fe 100644
--- a/reference/strings/functions/addcslashes.xml
+++ b/reference/strings/functions/addcslashes.xml
@@ -42,7 +42,7 @@
\n, \r etc., ils seront
convertis à la mode du langage C, alors que les autres
caractères non-alphanumériques ayant un code ASCII inférieur
- à 26, et supérieur à 126 sont remplacés par leur représentation
+ à 32, et supérieur à 126 sont remplacés par leur représentation
octale.
diff --git a/reference/strings/functions/chr.xml b/reference/strings/functions/chr.xml
index aa99fb3546..45fdf8d045 100644
--- a/reference/strings/functions/chr.xml
+++ b/reference/strings/functions/chr.xml
@@ -43,7 +43,7 @@
Les valeurs en dehors de l'intervalle valide (0..255) seront
- converties en valeur positive, et se termineront à 255, ce qui est
+ soumises à un ET logique bit à bit avec 255, ce qui est
l'équivalent de l'algorithme suivant :
]]>
diff --git a/reference/strings/functions/crc32.xml b/reference/strings/functions/crc32.xml
index 9f3f53a876..d8f1ac1e80 100644
--- a/reference/strings/functions/crc32.xml
+++ b/reference/strings/functions/crc32.xml
@@ -44,13 +44,14 @@
en un entier non-signé.
- Sur les installations 64bits, la fonction retournera aussi des entiers
- négatifs pour des valeurs retournées très grandes, mais cela va casser
- la conversion en hexadécimal en ayant une position 0xFFFFFFFF########
- supplémentaire. Sachant que la représentation décimale semble être le
- cas le plus largement utilisé, nous avons décidé de ne pas la casser
- même si elle casse directement la comparaison décimale dans 50% des
- cas lors d'un passage de 32 à 64bits.
+ Faire en sorte que les installations 64bits retournent aussi des entiers
+ négatifs pour les valeurs de résultat élevées a été envisagé, mais cela
+ casserait la conversion hexadécimale car les valeurs négatives auraient
+ un décalage supplémentaire de 0xFFFFFFFF########. Étant donné que la
+ représentation hexadécimale semble être le cas d'utilisation le plus
+ courant, nous avons décidé de ne pas la casser même si cela casse
+ directement la comparaison décimale dans environ 50% des cas lors d'un
+ passage de 32 à 64bits.
Avec du recul, le fait que la fonction retourne un entier n'était peut-être
diff --git a/reference/strings/functions/echo.xml b/reference/strings/functions/echo.xml
index f7a53605c8..b655fd5779 100644
--- a/reference/strings/functions/echo.xml
+++ b/reference/strings/functions/echo.xml
@@ -167,7 +167,7 @@ echo(1 + 2) * 3, PHP_EOL;
// echo voit le résultat de l'expression comme un seul argument
echo "hello", " world", PHP_EOL;
-// affiche"hello world"
+// affiche "hello world"
echo("hello"), (" world"), PHP_EOL;
// affiche "hello world"; les parenthèses font partie de chaque expression
@@ -195,7 +195,7 @@ echo("hello", " world"), PHP_EOL;
Passer plusieurs arguments à echo permet d'éviter des
complications qui apparaissent à cause de la précédence de l'opération de
- concaténation en PHP. Par exemple, l'opérateur de concatenation a une
+ concaténation en PHP. Par exemple, l'opérateur de concaténation a une
précédence supérieure à l'opérateur ternaire, et antérieurement à PHP 8.0.0,
avait la même précédence que l'addition et la soustraction :
From 4dedfb3352c5781129587433bd3289b9f5c426c2 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:36:54 +0100
Subject: [PATCH 10/96] Fix translation errors in pcre, session, pdo, mysqli,
pgsql, openssl, mbstring, intl, image
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- pcre: Fix plural agreements, typos (contante→constante, et→est), deduplicate d'utiliser
- session: Fix obsolètes, CSRF, risques, les hôtes, assurez-vous, superglobal
- pdo: Fix toutes les valeurs, en charge les transactions, survenue
- mysqli: Fix liées, détruits, effectuer, débogage, configurés
- pgsql: Fix SQL99, PostgreSQL 8.0, interpolation, extrêmement, retournée
- openssl: Fix déchiffrement, clé privée (was publique), déchiffrée, codées en dur
- mbstring: Fix permettent, inverted mb-substr meaning, encodage HTTP
- intl: Fix fuseaux horaires, graphèmes, translate Links→Liens
- image: Fix soient disponibles, src_image/dst_image params, Le paramètre
---
reference/image/book.xml | 8 ++++----
reference/image/functions/imagecopyresampled.xml | 4 ++--
reference/image/functions/imagepng.xml | 4 ++--
reference/image/ini.xml | 2 +-
reference/intl/book.xml | 16 ++++++++--------
reference/intl/constants.xml | 6 +++---
reference/intl/dateformatter/create.xml | 4 ++--
reference/mbstring/book.xml | 2 +-
reference/mbstring/functions/mb-send-mail.xml | 4 ++--
reference/mbstring/functions/mb-substr.xml | 2 +-
reference/mbstring/ini.xml | 2 +-
reference/mysqli/mysqli/close.xml | 4 ++--
reference/mysqli/mysqli/construct.xml | 2 +-
reference/mysqli/overview.xml | 8 ++++----
reference/openssl/book.xml | 4 ++--
reference/openssl/configure.xml | 4 ++--
reference/openssl/functions/openssl-decrypt.xml | 6 +++---
reference/openssl/functions/openssl-pkey-new.xml | 2 +-
reference/openssl/functions/openssl-sign.xml | 4 ++--
reference/openssl/functions/openssl-verify.xml | 4 ++--
reference/openssl/setup.xml | 2 +-
reference/pcre/book.xml | 4 ++--
reference/pcre/configure.xml | 6 +++---
reference/pcre/constants.xml | 8 ++++----
reference/pcre/pattern.differences.xml | 2 +-
reference/pcre/pattern.syntax.xml | 8 ++++----
reference/pdo/constants.xml | 4 ++--
reference/pdo/pdo/begintransaction.xml | 2 +-
reference/pdo/pdo/construct.xml | 2 +-
reference/pdo/pdo/errorinfo.xml | 2 +-
reference/pgsql/book.xml | 6 +++---
reference/pgsql/functions/pg-close.xml | 2 +-
reference/pgsql/functions/pg-connect.xml | 2 +-
reference/pgsql/functions/pg-query.xml | 6 +++---
reference/pgsql/setup.xml | 4 ++--
reference/session/book.xml | 2 +-
reference/session/functions/session-destroy.xml | 2 +-
reference/session/functions/session-gc.xml | 3 +--
.../functions/session-get-cookie-params.xml | 2 +-
reference/session/ini.xml | 8 ++++----
reference/session/security.xml | 10 +++++-----
41 files changed, 89 insertions(+), 90 deletions(-)
diff --git a/reference/image/book.xml b/reference/image/book.xml
index c4507564b2..68e522775b 100644
--- a/reference/image/book.xml
+++ b/reference/image/book.xml
@@ -52,7 +52,7 @@
Tandis que la version empaquetée de la bibliothèque GD utilise le gestionnaire de
- mémoire Zend pour allouer de la mémoire, mais les versions système non, donc
+ mémoire Zend pour allouer de la mémoire, les versions système ne le font pas, donc
memory_limit ne s'applique pas.
@@ -128,9 +128,9 @@
- Malgré le fait que la plupart des formats soit disponible avec un support en lecture
- et en écriture dans le tableau ci-dessous, cela ne signifie pas que PHP a été compilé
- avec le support adéquate. Pour connaître les formats supportés par GD durant la compilation,
+ Malgré le fait que la plupart des formats soient disponibles avec un support en lecture
+ et en écriture dans le tableau ci-dessus, cela ne signifie pas que PHP a été compilé
+ avec le support adéquat. Pour connaître les formats supportés par GD durant la compilation,
utilisez la fonction gd_info ; pour plus d'informations sur le
support lors de la compilation d'un ou plusieurs formats, reportez-vous au chapitre sur
l'installation.
diff --git a/reference/image/functions/imagecopyresampled.xml b/reference/image/functions/imagecopyresampled.xml
index 00148379f5..5985224285 100644
--- a/reference/image/functions/imagecopyresampled.xml
+++ b/reference/image/functions/imagecopyresampled.xml
@@ -25,8 +25,8 @@
imagecopyresampled copie une zone
- rectangulaire de l'image src_im vers
- l'image dst_im. Durant la copie,
+ rectangulaire de l'image src_image vers
+ l'image dst_image. Durant la copie,
la zone est rééchantillonnée de manière à conserver la clarté
de l'image durant une réduction.
diff --git a/reference/image/functions/imagepng.xml b/reference/image/functions/imagepng.xml
index d43ba3a229..b4ebabb644 100644
--- a/reference/image/functions/imagepng.xml
+++ b/reference/image/functions/imagepng.xml
@@ -57,13 +57,13 @@
peut être défini par une combinaison des constantes
PNG_FILTER_*.
PNG_NO_FILTER ou
- PNG_ALL_FILTERS peuvent également être utilisé
+ PNG_ALL_FILTERS peuvent également être utilisés
pour, respectivement, désactiver ou activer tous les filtres.
La valeur par défaut (-1) désactive le filtrage.
- La paramètre filters est ignoré par system libgd.
+ Le paramètre filters est ignoré par la version système de libgd.
diff --git a/reference/image/ini.xml b/reference/image/ini.xml
index bb75380916..108dfcf074 100644
--- a/reference/image/ini.xml
+++ b/reference/image/ini.xml
@@ -62,7 +62,7 @@
7.1.0
- La valeur par défaut de gd.jpeg_ignore_warning a été changé de 0 à 1.
+ La valeur par défaut de gd.jpeg_ignore_warning a été changée de 0 à 1.
diff --git a/reference/intl/book.xml b/reference/intl/book.xml
index bbf991edba..a1e7d3cdb7 100755
--- a/reference/intl/book.xml
+++ b/reference/intl/book.xml
@@ -75,34 +75,34 @@
Calendar: fournit une classe qui peut être utilisée pour
les opérations de régionalisation du calendrier, et
- obtenir des informations variées tel que le timezone pour
- la locale choisi, le premier jour de la semaine, ou si le
+ obtenir des informations variées tel que le fuseau horaire pour
+ la locale choisie, le premier jour de la semaine, ou si le
changement d'heure (été/hiver) est activée.
Timezone: fournit un emballage autour de la base de données "Olson"
- qui contient des informations sur tous les timezone du monde.
+ qui contient des informations sur tous les fuseaux horaires du monde.
- Date formatter: autorise à afficher la date et l'heure en
+ Date formatter: permet d'afficher la date et l'heure en
rapport avec le format localisé, ou le schéma donné ou
- les règles définies, et de transformer une chaîne de caractère en date et heure.
+ les règles définies, et de transformer une chaîne de caractères en date et heure.
- Transliterator: autorise à obtenir une représentation
- latine d'une chaîne de caractère dans différent langages.
+ Transliterator: permet d'obtenir une représentation
+ latine d'une chaîne de caractères dans différents langages.
- Links
+ LiensDiverses docs ICU
diff --git a/reference/intl/constants.xml b/reference/intl/constants.xml
index e62e36c809..4c9f207b92 100755
--- a/reference/intl/constants.xml
+++ b/reference/intl/constants.xml
@@ -27,7 +27,7 @@
La version courante de la bibliothèque ICU en tant qu'une chaîne décimale
- séparer avec des points.
+ séparée par des points.
@@ -39,7 +39,7 @@
Limite la taille locale, par défaut à 80 en PHP. Les noms
- de locales plus grand que cette taille seront interdits.
+ de locales plus grands que cette taille seront interdits.
@@ -168,7 +168,7 @@
- Le nombre de grapphèmes par défaut à extraire.
+ Le nombre de graphèmes par défaut à extraire.
diff --git a/reference/intl/dateformatter/create.xml b/reference/intl/dateformatter/create.xml
index c426813ff3..095d9135fa 100644
--- a/reference/intl/dateformatter/create.xml
+++ b/reference/intl/dateformatter/create.xml
@@ -95,9 +95,9 @@
par défaut qui sera utilisée si &null; est fourni) ce sera celui retourné
par la fonction date_default_timezone_get ou, si applicable,
celui de l'objet IntlCalendar passé au paramètre
- calendar.Cet identifiant doit être un identifiant
+ calendar. Cet identifiant doit être un identifiant
valide dans la base de données ICU, ou un identifiant représentant
- une possible explicite, comme GMT-05:30.
+ un décalage explicite, comme GMT-05:30.
Ce paramètre peut aussi être un objet
diff --git a/reference/mbstring/book.xml b/reference/mbstring/book.xml
index b05394f800..eb00d5d176 100644
--- a/reference/mbstring/book.xml
+++ b/reference/mbstring/book.xml
@@ -24,7 +24,7 @@
mbstring fournit les fonctions spécifiques de manipulations
- de chaînes qui vous permet de travailler avec les encodages multioctets en PHP.
+ de chaînes qui vous permettent de travailler avec les encodages multioctets en PHP.
En plus de cela, mbstring gère la traduction
entre les jeux de caractères disponibles. mbstring est
également connu pour gérer l'Unicode, comme UTF-8 et UCS-2 ainsi que de
diff --git a/reference/mbstring/functions/mb-send-mail.xml b/reference/mbstring/functions/mb-send-mail.xml
index f323af410d..68893bf4f5 100644
--- a/reference/mbstring/functions/mb-send-mail.xml
+++ b/reference/mbstring/functions/mb-send-mail.xml
@@ -66,7 +66,7 @@
Ce paramètre est typiquement utilisé pour ajouter des en-têtes supplémentaires
(From, Cc, and Bcc). Les différents ajouts doivent être séparés par un
- CRLF (\r\n). Ce paramètre doit être validé afin d'éviter d'injection
+ CRLF (\r\n). Ce paramètre doit être validé afin d'éviter l'injection
d'en-tête non désiré par des personnes malveillantes.
@@ -157,7 +157,7 @@
8.0.0
- additional_params is nullable now.
+ additional_params est désormais nullable.
diff --git a/reference/mbstring/functions/mb-substr.xml b/reference/mbstring/functions/mb-substr.xml
index e622bce72f..9517172ad2 100644
--- a/reference/mbstring/functions/mb-substr.xml
+++ b/reference/mbstring/functions/mb-substr.xml
@@ -34,7 +34,7 @@
string
- La chaîne à extraire depuis la sous-chaîne.
+ La chaîne depuis laquelle extraire la sous-chaîne.
diff --git a/reference/mbstring/ini.xml b/reference/mbstring/ini.xml
index 62cbebe0c3..253aae6ac4 100644
--- a/reference/mbstring/ini.xml
+++ b/reference/mbstring/ini.xml
@@ -177,7 +177,7 @@
Définit l'encodage d'affichage HTTP par défaut (l'affichage sera
- converti depuis l'encodage interne vers l'encode HTTP de la
+ converti depuis l'encodage interne vers l'encodage HTTP de la
sortie, lors de l'affichage).
diff --git a/reference/mysqli/mysqli/close.xml b/reference/mysqli/mysqli/close.xml
index eae4193f00..1e8bc3c190 100644
--- a/reference/mysqli/mysqli/close.xml
+++ b/reference/mysqli/mysqli/close.xml
@@ -25,10 +25,10 @@
Les connexions MySQL non-persistantes et les jeux de résultats seront
- automatiquement fermé quand leurs objets sont détruit.
+ automatiquement fermées quand leurs objets sont détruits.
Explicitement fermer les connexions ouvertes et libérer les jeux de
résultats est optionnel. Cependant, c'est une bonne idée de fermer la
- connexion dès que le script termine de performer toutes ses opérations de
+ connexion dès que le script termine d'effectuer toutes ses opérations de
base de données, s'il a encore beaucoup de traitement à faire après
avoir récupéré les résultats.
diff --git a/reference/mysqli/mysqli/construct.xml b/reference/mysqli/mysqli/construct.xml
index 23e68b5ded..ec94895428 100644
--- a/reference/mysqli/mysqli/construct.xml
+++ b/reference/mysqli/mysqli/construct.xml
@@ -295,7 +295,7 @@ if (mysqli_errno($mysqli)) {
- L'erreur "Can't create TCP/IP socket (10106)" signifie à
+ L'erreur "Can't create TCP/IP socket (10106)" signifie
généralement que la directive de configuration
variables_order ne contient pas le
caractère E. Sous Windows, si l'environnement n'est pas copié,
diff --git a/reference/mysqli/overview.xml b/reference/mysqli/overview.xml
index dcb0c0909b..ba80defe64 100644
--- a/reference/mysqli/overview.xml
+++ b/reference/mysqli/overview.xml
@@ -97,7 +97,7 @@
Dans la documentation PHP, vous rencontrerez un autre terme :
extension. Le code PHP est constitué d'un cœur,
- avec des extensions optionnelles. Les extensions lié à MySQL de PHP,
+ avec des extensions optionnelles. Les extensions liées à MySQL de PHP,
telles que l'extension mysqli et l'extension de pilote
PDO MySQL, sont implémentées en utilisant le framework d'extension PHP.
@@ -192,7 +192,7 @@
- Capacités de déboguage avancées
+ Capacités de débogage avancées
@@ -301,7 +301,7 @@
L'extension mysqli et le pilote MySQL natif peuvent
- tout deux être configuré individuellement pour utiliser soit
+ tous deux être configurés individuellement pour utiliser soit
libmysqlclient soit mysqlnd. Comme
mysqlnd a été conçu spécifiquement pour utiliser le système
PHP, il propose de nombreux avantages et améliorations par rapport à
@@ -381,7 +381,7 @@
La plupart
- Toutes toutes les fonctionnalités MySQL 4.1 et plus récent
+ Toutes les fonctionnalités MySQL 4.1 et plus récentOuiLa plupart
diff --git a/reference/openssl/book.xml b/reference/openssl/book.xml
index af95040ec5..cdc9d7bf7d 100644
--- a/reference/openssl/book.xml
+++ b/reference/openssl/book.xml
@@ -13,8 +13,8 @@
Cette extension lie des fonctions de la bibliothèque
OpenSSL pour le chiffrement et
- déchiffremment symétrique et asymétrique, PBKDF2, PKCS7, PKCS12, X509 et autre
- opération cryptographique. De plus elle fournit une implémentation de flux TLS.
+ déchiffrement symétrique et asymétrique, PBKDF2, PKCS7, PKCS12, X509 et autres
+ opérations cryptographiques. De plus elle fournit une implémentation de flux TLS.
OpenSSL offre beaucoup de fonctionnalités
diff --git a/reference/openssl/configure.xml b/reference/openssl/configure.xml
index f113b5d1ab..98f77041ea 100644
--- a/reference/openssl/configure.xml
+++ b/reference/openssl/configure.xml
@@ -19,7 +19,7 @@
L'option de configuration
est disponible
qui fait que PHP utilise la liste de chiffrement système au lieu des valeurs
- par défaut codé en dur.
+ par défaut codées en dur.
Note aux utilisateurs Win32
@@ -58,7 +58,7 @@
Le fichier openssl.cnf sera supposé se trouver dans
le dossier des certificats, tel que configuré lors de la compilation
de la bibliothèque openssl. Cela signifie généralement C:\Program Files\Common Files\SSL\openssl.cnf (x64)
- or C:\Program Files (x86)\Common Files\SSL\openssl.cnf (x86), ou,
+ ou C:\Program Files (x86)\Common Files\SSL\openssl.cnf (x86), ou,
avant PHP 7.4.0,
c:\usr\local\ssl\openssl.cnf.
diff --git a/reference/openssl/functions/openssl-decrypt.xml b/reference/openssl/functions/openssl-decrypt.xml
index 99b321783e..c432e8dae7 100644
--- a/reference/openssl/functions/openssl-decrypt.xml
+++ b/reference/openssl/functions/openssl-decrypt.xml
@@ -94,8 +94,8 @@
- La longueur de tag n'est pas vérifié par la fonction.
- C'est la responsabilité de l'appeleur de s'assurer que la longueur du
+ La longueur de tag n'est pas vérifiée par la fonction.
+ C'est la responsabilité de l'appelant de s'assurer que la longueur du
tag correspond à la longueur du tag reçu quand
openssl_encrypt a été appelée. Sinon, le
déchiffrement peut réussir si le début du tag donné correspond au début
@@ -119,7 +119,7 @@
&reftitle.returnvalues;
- La chaîne décryptée en cas de succès &return.falseforfailure;.
+ La chaîne déchiffrée en cas de succès &return.falseforfailure;.
diff --git a/reference/openssl/functions/openssl-pkey-new.xml b/reference/openssl/functions/openssl-pkey-new.xml
index c57ff356d4..024cb86d54 100644
--- a/reference/openssl/functions/openssl-pkey-new.xml
+++ b/reference/openssl/functions/openssl-pkey-new.xml
@@ -424,7 +424,7 @@
7.1.0
- L'option curve_name a été ajouté
+ L'option curve_name a été ajoutée
pour permettre la création de clés EC.
diff --git a/reference/openssl/functions/openssl-sign.xml b/reference/openssl/functions/openssl-sign.xml
index 2187baed78..e799c3a6f9 100644
--- a/reference/openssl/functions/openssl-sign.xml
+++ b/reference/openssl/functions/openssl-sign.xml
@@ -131,7 +131,7 @@
data
- La chaîne de données utilisé pour générer la signature
+ La chaîne de données utilisée pour générer la signature
@@ -44,7 +44,7 @@
Une chaîne brute binaire, générée par la fonction
- openssl_sign ou signification similaire
+ openssl_sign ou un moyen similaire
diff --git a/reference/openssl/setup.xml b/reference/openssl/setup.xml
index 88cff1f5a8..a5d4a2a5c2 100644
--- a/reference/openssl/setup.xml
+++ b/reference/openssl/setup.xml
@@ -37,7 +37,7 @@
&reftitle.resources;
- Antérieur à PHP 8.0.0, il y avait 3 types de ressources définie dans le
+ Antérieur à PHP 8.0.0, il y avait 3 types de ressources définis dans le
module OpenSSL :
OpenSSL key
diff --git a/reference/pcre/book.xml b/reference/pcre/book.xml
index b08e22dcfe..97b1819726 100644
--- a/reference/pcre/book.xml
+++ b/reference/pcre/book.xml
@@ -18,7 +18,7 @@
l'antislash (\) ou le caractère nul (\0).
Si un délimiteur doit être utilisé dans
l'expression, il faudra le protéger avec un antislash.
- Les délimiteurs à la Perl (), {}, [], et <> peuvent aussi être utilisé.
+ Les délimiteurs à la Perl (), {}, [], et <> peuvent aussi être utilisées.
Voir la syntaxe des masques
pour plus d'explications.
@@ -43,7 +43,7 @@
La bibliothèque PCRE est un ensemble de fonctions qui implémentent les
expressions régulières en utilisant la même syntaxe et sémantique
- que Perl 5 avec seulement quelques différence (voir plus bas). L'implémentation
+ que Perl 5 avec seulement quelques différences (voir plus bas). L'implémentation
courante correspond à Perl 5.005.
diff --git a/reference/pcre/configure.xml b/reference/pcre/configure.xml
index 87cb5ff9a3..d5f6087b7f 100644
--- a/reference/pcre/configure.xml
+++ b/reference/pcre/configure.xml
@@ -12,18 +12,18 @@
bibliothèque PCRE externe en passant l'option de configuration
ou
DIR est l'emplacement des fichiers de la bibliothèque PCRE.
- Il est recommandé d'utiliser d'utiliser PCRE 8.10 ou plus récent ;
+ Il est recommandé d'utiliser PCRE 8.10 ou plus récent ;
à partir de PHP 7.3.0, PCRE2 est requis.
- La compilation à la volée (Just In Time) de PCRE est supporté par défaut,
+ La compilation à la volée (Just In Time) de PCRE est supportée par défaut,
qui peut être désactivé avec l'option de configuration
à partir de PHP 7.0.12.
&windows.builtin;
PCRE est un projet actif et au fur et à mesure où il change, les
- fonctionnalités PHP change également. Il est possible que certaines
+ fonctionnalités PHP changent également. Il est possible que certaines
parties du manuel PHP soient obsolètes et qu'elles ne couvrent pas
les nouvelles fonctionnalités que fournit PCRE. Pour une liste des
modifications, reportez-vous au
diff --git a/reference/pcre/constants.xml b/reference/pcre/constants.xml
index 51b3b154e3..438f6058a2 100644
--- a/reference/pcre/constants.xml
+++ b/reference/pcre/constants.xml
@@ -104,10 +104,10 @@
(int)
- Cette contante demande à preg_match et
+ Cette constante demande à preg_match et
preg_match_all
- d'include les sous-masques sans correspondance dans $matches avec une valeur à &null;.
- Sans cette contante, les sous-masques sans correspondance sont retourné avec une chaîne vide, comme si la correspondance était vide.
+ d'inclure les sous-masques sans correspondance dans $matches avec une valeur à &null;.
+ Sans cette constante, les sous-masques sans correspondance sont retourné avec une chaîne vide, comme si la correspondance était vide.
Définir cette constante permet de distinguer ces deux cas.
7.2.0
@@ -179,7 +179,7 @@
Retourné par la fonction preg_last_error si l'offset
ne correspond pas au début d'un point valide UTF-8 (uniquement lorsque l'on
- exécute une expression enmode
+ exécute une expression en mode
UTF-8).
5.3.0
diff --git a/reference/pcre/pattern.differences.xml b/reference/pcre/pattern.differences.xml
index a58a6555c9..88b89f8afc 100644
--- a/reference/pcre/pattern.differences.xml
+++ b/reference/pcre/pattern.differences.xml
@@ -130,7 +130,7 @@
(d) Si PCRE_UNGREEDY est
activé, la "gourmandise" des quantificateurs de
- répétition est inversée, ce qui est rend non
+ répétition est inversée, ce qui les rend non
gourmand par défaut, mais s'ils sont suivis de ?, il seront
gourmands.
diff --git a/reference/pcre/pattern.syntax.xml b/reference/pcre/pattern.syntax.xml
index 7f07e3ca9b..2863892233 100644
--- a/reference/pcre/pattern.syntax.xml
+++ b/reference/pcre/pattern.syntax.xml
@@ -34,7 +34,7 @@
Lors de l'utilisation des fonctions PCRE, il est nécessaire que le motif soit encadré
par des délimiteurs. Un délimiteur peut être n'importe quel caractère
non alpha-numérique autre qu'un backslash ou qu'un espace.
- Les caractères d'espacement blanc avant un délimiteur valide sont silencieusement ignoré.
+ Les caractères d'espacement blanc avant un délimiteur valide sont silencieusement ignorés.
Les délimiteurs les plus courants sont les slashes (/), dièses
@@ -1264,7 +1264,7 @@
caractère de nouvelle ligne. Avec l'option
PCRE_DOTALL le point
remplace n'importe quel caractère, même le caractère de
- nouvelle ligne. La gestion des points et complètement
+ nouvelle ligne. La gestion des points est complètement
indépendante de ^ et $.
Le seul point commun est que les deux ont un comportement particulier vis-à-vis
des caractères de nouvelle ligne.
@@ -1459,8 +1459,8 @@
En mode UTF-8, les caractères dont les valeurs sont supérieures à 128 ne seront trouvés par
aucune des classes de caractères POSIX.
À partir de libpcre 8.10 certains caractères de classes ont été
- modifié pour utiliser des caractères de propriétés Unicode, dans ce cas les
- restrictions mentionnées ne s'applique pas.
+ modifiées pour utiliser des caractères de propriétés Unicode, dans ce cas les
+ restrictions mentionnées ne s'appliquent pas.
Référez-vous au manuel PCRE(3) pour plus de détails.
diff --git a/reference/pdo/constants.xml b/reference/pdo/constants.xml
index a281c1073f..a6eaf9e798 100644
--- a/reference/pdo/constants.xml
+++ b/reference/pdo/constants.xml
@@ -452,7 +452,7 @@
- Force tous les valeurs récupérées (sauf &null;) à être traitées comme des chaînes.
+ Force toutes les valeurs récupérées (sauf &null;) à être traitées comme des chaînes.
Les valeurs &null; restent inchangées à moins que PDO::ATTR_ORACLE_NULLS
ne soit défini sur PDO::NULL_TO_STRING.
@@ -515,7 +515,7 @@
Ne pas lever d'erreur ou d'exception si une erreur se produit.
Le développeur est censé vérifier explicitement les erreurs.
- Auparavant à PHP 8.0.0, ceci est le mode par défaut.
+ Avant PHP 8.0.0, ceci est le mode par défaut.
Voir erreur et gestion des erreurs
pour plus d'informations sur cet attribut.
diff --git a/reference/pdo/pdo/begintransaction.xml b/reference/pdo/pdo/begintransaction.xml
index a712a9fb60..7680718ccb 100755
--- a/reference/pdo/pdo/begintransaction.xml
+++ b/reference/pdo/pdo/begintransaction.xml
@@ -47,7 +47,7 @@
&reftitle.errors;
- Lance l'exception PDOException si une transaction a déjà démarrée ou que le pilote ne prend pas encharge les tansactions.
+ Lance l'exception PDOException si une transaction a déjà démarrée ou que le pilote ne prend pas en charge les transactions.
&pdo.errors.exception-not-errmode;
diff --git a/reference/pdo/pdo/construct.xml b/reference/pdo/pdo/construct.xml
index 24d9e575b7..a4dca4d538 100644
--- a/reference/pdo/pdo/construct.xml
+++ b/reference/pdo/pdo/construct.xml
@@ -171,7 +171,7 @@ $dbh = new PDO($dsn, $user, $password);
Crée une instance PDO avec un alias
L'exemple ci-dessous suppose que le fichier &php.ini; contient la directive
- suivant pour activer une connexion à un serveur MySQL, avec l'alias
+ suivante pour activer une connexion à un serveur MySQL, avec l'alias
mydb:
diff --git a/reference/pdo/pdo/errorinfo.xml b/reference/pdo/pdo/errorinfo.xml
index 672e2f1ea3..a560db2db7 100755
--- a/reference/pdo/pdo/errorinfo.xml
+++ b/reference/pdo/pdo/errorinfo.xml
@@ -27,7 +27,7 @@
&reftitle.returnvalues;
PDO::errorInfo retourne un tableau contenant des
- informations sur l'erreur survenu lors de la dernière opération exécutée par ce
+ informations sur l'erreur survenue lors de la dernière opération exécutée par ce
gestionnaire de base de données. Le tableau contient les champs suivants :
diff --git a/reference/pgsql/book.xml b/reference/pgsql/book.xml
index 32331527af..e20df7a605 100644
--- a/reference/pgsql/book.xml
+++ b/reference/pgsql/book.xml
@@ -12,9 +12,9 @@
La base de données PostgreSQL est un produit Open Source, disponible
sans frais. PostgreSQL, développé au département de
- Science informatique, à UC Berkeley, met en place la majorité
- des concepts des bases relationnelles actuellement disponibles sur le
- marché. PostgreSQL accepte le langage SQL92/SQL3, assure
+ Science informatique, à UC Berkeley, a été le pionnier de nombreux
+ concepts objet-relationnels actuellement disponibles sur le
+ marché. PostgreSQL accepte le langage SQL92/SQL99, assure
l'intégrité transactionnelle et l'extension de type.
PostgreSQL est une évolution du code original de Berkeley.
diff --git a/reference/pgsql/functions/pg-close.xml b/reference/pgsql/functions/pg-close.xml
index 29ae43f2b6..0407aea3e0 100644
--- a/reference/pgsql/functions/pg-close.xml
+++ b/reference/pgsql/functions/pg-close.xml
@@ -27,7 +27,7 @@
- Si des instances de PgSql\Lob qui ont été ouverts
+ Si des instances de PgSql\Lob qui ont été ouvertes
avec cette connexion, ne fermez pas la connexion avant d'avoir fermé toutes
les instances de PgSql\Lob.
diff --git a/reference/pgsql/functions/pg-connect.xml b/reference/pgsql/functions/pg-connect.xml
index ba45dac55f..812cb1c116 100644
--- a/reference/pgsql/functions/pg-connect.xml
+++ b/reference/pgsql/functions/pg-connect.xml
@@ -118,7 +118,7 @@
8.1.0
Retourne désormais une instance de PgSql\Connection ;
- auparavant, une &resource; était retourné.
+ auparavant, une &resource; était retournée.
diff --git a/reference/pgsql/functions/pg-query.xml b/reference/pgsql/functions/pg-query.xml
index 2ae6fe9aae..2fc921ace5 100644
--- a/reference/pgsql/functions/pg-query.xml
+++ b/reference/pgsql/functions/pg-query.xml
@@ -63,15 +63,15 @@
La requête ou les requêtes SQL à être exécutées. Lorsque plusieurs
requêtes sont passées à la fonction, elles sont automatiquement
- exécutées comme étant une transaction, à moins qu'il y aille les
+ exécutées comme étant une transaction, à moins qu'il y ait les
commandes BEGIN/COMMIT incluses dans la requête. Cependant,
l'utilisation de transactions multiples dans un seul appel de fonction
n'est pas recommandée.
- L'inperpolation des chaînes de caractères fournies par l'utilisateur
- est extrèmement dangereux et vous devez garder en tête l'ensemble
+ L'interpolation des chaînes de caractères fournies par l'utilisateur
+ est extrêmement dangereuse et vous devez garder en tête l'ensemble
des vulnérabilités concernant les
injections SQL.
Dans la plupart des cas, la fonction pg_query_params
diff --git a/reference/pgsql/setup.xml b/reference/pgsql/setup.xml
index 853dce21a3..fb5d6e22bd 100644
--- a/reference/pgsql/setup.xml
+++ b/reference/pgsql/setup.xml
@@ -9,7 +9,7 @@
&reftitle.required;
Pour accéder au support PostgreSQL, vous avez besoin de PostgreSQL 6.5
- ou plus récent ; PostgreSQL 7.0 ou plus récent pour activer toutes les
+ ou plus récent ; PostgreSQL 8.0 ou plus récent pour activer toutes les
fonctionnalités du module PostgreSQL. PostgreSQL supporte de nombreux
jeux de caractères, y compris les jeux multioctets asiatiques. La
version courante et plus de détails sur PostgreSQL sont accessibles
@@ -31,7 +31,7 @@
&reftitle.resources;
- Antérieur à PHP 8.1.0, il y avait deux types de ressource utilisé dans le module PostgreSQL.
+ Antérieur à PHP 8.1.0, il y avait deux types de ressource utilisés dans le module PostgreSQL.
La première est l'identifiant pour la connexion à la base de données
et le second est une ressource qui contient le résultat d'une requête.
diff --git a/reference/session/book.xml b/reference/session/book.xml
index 77699f042b..0b8ecf71b8 100644
--- a/reference/session/book.xml
+++ b/reference/session/book.xml
@@ -22,7 +22,7 @@
Le support des sessions vous permet de stocker des données
- entre les requêtes dans le tableau super-globale $_SESSION.
+ entre les requêtes dans le tableau superglobal $_SESSION.
Lorsqu'un visiteur accède à votre site, PHP va vérifier automatiquement (si
est activé) ou sur demande (explicitement avec
diff --git a/reference/session/functions/session-destroy.xml b/reference/session/functions/session-destroy.xml
index 0f7eff954d..1ef3bf7baa 100644
--- a/reference/session/functions/session-destroy.xml
+++ b/reference/session/functions/session-destroy.xml
@@ -62,7 +62,7 @@
Pour éviter ceci, vous devez définir un horodatage à $_SESSION et
- refuser l'accès à toutes les dates ultérieures. Ou assurer vous que votre
+ refuser l'accès à toutes les dates ultérieures. Ou assurez-vous que votre
application n'a pas de requêtes simultanées. Ceci s'applique aussi à
session_regenerate_id.
diff --git a/reference/session/functions/session-gc.xml b/reference/session/functions/session-gc.xml
index dacd7bb279..76c0a6c533 100644
--- a/reference/session/functions/session-gc.xml
+++ b/reference/session/functions/session-gc.xml
@@ -36,8 +36,7 @@
le session.save_path doit être défini
à la même valeur que pour les requêtes web, et le script doit avoir les permissions d'accès et de suppression
pour les fichiers de session. Cela peut être affecté par l'utilisateur sous lequel le script s'exécute,
- ainsi que par des fonctionnalités de conteneur ou de sandboxing telles que l'option PrivateTmp=
- option.
+ ainsi que par des fonctionnalités de conteneur ou de sandboxing telles que l'option PrivateTmp=.
diff --git a/reference/session/functions/session-get-cookie-params.xml b/reference/session/functions/session-get-cookie-params.xml
index 4725aa6424..9f3353980a 100644
--- a/reference/session/functions/session-get-cookie-params.xml
+++ b/reference/session/functions/session-get-cookie-params.xml
@@ -63,7 +63,7 @@
"samesite" :
- Contrôle l'envoie entre domaine (cross-domain) du cookie.
+ Contrôle l'envoi entre domaine (cross-domain) du cookie.
diff --git a/reference/session/ini.xml b/reference/session/ini.xml
index 243ad44f58..2d13f638be 100644
--- a/reference/session/ini.xml
+++ b/reference/session/ini.xml
@@ -679,7 +679,7 @@
Permet qu'un cookie ne soit pas envoyé par le serveur avec des requêtes entre sites
- (cross-site). Cette assertion permet aux agents utilisateur de mitiger les riques
+ (cross-site). Cette assertion permet aux agents utilisateur de mitiger les risques
de fuite d'informations d'origine du site (cross-origin), et fournit de la
protection contre les attaques des fausses requêtes entre sites (cross-site request
forgery). Notez que ceci n'est pas supporté par tous les navigateurs.
@@ -746,7 +746,7 @@
l'identifiant de session.
- Depuis PHP 7.1.0, le chemin URL complet, par exemple https://php.net/, est
+ Depuis PHP 7.1.0, le chemin URL complet, par exemple https://php.net/,
est géré par la fonctionnalité. Précédement, PHP gérait le chemin relatif
uniquement. L'hote cible de la réécriture est défini par session.trans_sid_hosts.
@@ -763,7 +763,7 @@
session.trans_sid_tags spécifie les balises HTML qui
- sont réécrite pour include l'ID de session lorsque le support du SID
+ sont réécrite pour inclure l'ID de session lorsque le support du SID
transparent est activé. Par défaut
a=href,area=href,frame=src,input=src,form=
@@ -790,7 +790,7 @@
- session.trans_sid_hosts spécifie kes hôtes qui sont
+ session.trans_sid_hosts spécifie les hôtes qui sont
réécrit pour inclure l'ID de session lorsque le support du SID transparent
est activé. Par défaut $_SERVER['HTTP_HOST']. Plusieurs
hôtes peuvent être spécifiés séparé par ",", aucun espace n'est autorisé
diff --git a/reference/session/security.xml b/reference/session/security.xml
index ad509ad586..55c0d8fd9a 100644
--- a/reference/session/security.xml
+++ b/reference/session/security.xml
@@ -249,7 +249,7 @@
session_regenerate_idn'effacera pas
les anciennes sessions par défaut. Les sessions authentifiées obsolètes
- peuvent être présente pour être utilisées. Les développeurs doivent s'assurer
+ peuvent être présentés pour être utilisées. Les développeurs doivent s'assurer
que les anciennes sessions ne soient pas utilisées par tout le monde.
Ils doivent interdire l'accès aux données de session obsolète
en utilisant eux-même des timestamps.
@@ -266,7 +266,7 @@
soudaine d'une session.
- Au lieu de supprimer les sessions osbolètes immédiatement, les développeurs
+ Au lieu de supprimer les sessions obsolètes immédiatement, les développeurs
doivent définir un court temps d'expiration (timestamp) dans
$_SESSION, et interdire l'accès aux données de session.
@@ -274,7 +274,7 @@
Les développeurs ne doivent pas interdire l'accès aux données des
anciennes sessions immédiatement après l'exécution de la fonction
session_regenerate_id. L'accès doit être interdit
- à un stade ultérieure ; i.e. quelques secondes après pour les réseaux
+ à un stade ultérieur ; i.e. quelques secondes après pour les réseaux
stables, comme un réseau filaire et quelques minutes après pour les réseaux
instables comme des téléphones mobiles ou des réseaux Wi-Fi.
@@ -369,7 +369,7 @@
Les données de session sont verrouillées par défaut pour éviter les
- accès concurent. Le verrouillage est obligatoire pour conserver une
+ accès concurrent. Le verrouillage est obligatoire pour conserver une
consistance des données de session au travers les requêtes.
@@ -501,7 +501,7 @@
Les sessions et les authentifications ne protègent pas contre les
attaques CSRF. Les développeurs doivent implémenter des protections
- CRSF eux mêmes.
+ CSRF eux mêmes.
From 51463ec99a5096bf97cf9a060e4f393b14482fc7 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:37:46 +0100
Subject: [PATCH 11/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20chapters/intro.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
chapters/intro.xml | 434 ++++++++++++++++++++++-----------------------
1 file changed, 217 insertions(+), 217 deletions(-)
diff --git a/chapters/intro.xml b/chapters/intro.xml
index eea980a603..3997153c38 100644
--- a/chapters/intro.xml
+++ b/chapters/intro.xml
@@ -1,217 +1,217 @@
-
-
-
-
-
-
- Introduction
- Qu'est-ce que PHP et que peut-il faire?
-
-
- Qu'est-ce que PHP ?
-
- PHP (officiellement, ce sigle est un acronyme récursif pour
- PHP Hypertext Preprocessor) est un langage de scripts généraliste
- et Open Source, spécialement conçu pour le développement d'applications
- web. Il peut être intégré facilement au HTML.
-
-
- Bien... mais qu'est-ce que cela veut dire ? Un exemple :
-
-
-
- Exemple d'introduction
-
-
-
-
-Exemple
-
-
-
-
-
-
-
-]]>
-
-
-
-
- Au lieu d'utiliser des tonnes de commandes afin d'afficher du HTML (comme en
- C ou en Perl), les pages PHP contiennent des fragments HTML dont du code
- qui fait "quelque chose" (dans ce cas, il va afficher
- "Bonjour, je suis un script PHP !").
- Le code PHP est inclus entre
- une balise de début
- <?php et une balise de fin ?>
- qui permettent au serveur web de passer en mode PHP.
-
-
- Ce qui distingue PHP des langages de script comme le Javascript,
- est que le code est exécuté sur le serveur, générant ainsi le HTML, qui
- sera ensuite envoyé au client. Le client ne reçoit que le
- résultat du script, sans aucun moyen d'avoir accès au code
- qui a produit ce résultat. Vous pouvez configurer votre serveur
- web afin qu'il analyse tous vos fichiers HTML comme des fichiers PHP.
- Ainsi, il n'y a aucun moyen de distinguer les pages qui sont produites
- dynamiquement des pages statiques. Un serveur web peut même être configuré
- pour traiter tous les fichiers HTML avec PHP, et il n'y a
- aucun moyen pour les utilisateurs de savoir que PHP est utilisé.
-
-
- Le grand avantage de PHP est qu'il est extrêmement simple pour les
- néophytes, mais offre des fonctionnalités avancées pour les
- experts. Ne craignez pas de lire la longue liste de fonctionnalités
- PHP. Avec PHP, presque tout le monde peut commencer rapidement
- et écrire des scripts simples en un rien de temps.
-
-
- Bien que le développement de PHP soit orienté vers la programmation
- pour les sites web, on peut faire bien plus avec PHP.
- Lisez donc la section Que peut faire PHP ?
- ou bien le tutoriel d'introduction pour passer directement
- à l'apprentissage de la programmation web.
-
-
-
-
- Que peut faire PHP ?
-
- Tout. PHP est principalement conçu pour servir de
- langage de script côté serveur, il peut donc faire tout ce qu'un autre programme CGI peut faire, comme
- collecter des données de formulaire, générer du contenu dynamique,
- ou gérer des cookies. Mais PHP peut en faire bien plus.
-
-
- Il y a deux domaines différents où PHP peut s'illustrer.
-
-
-
- Langage de script côté serveur. C'est l'utilisation la plus
- traditionnelle, et aussi le principal objet de PHP.
- Trois composants sont nécessaires pour l'exploiter :
- un analyseur PHP (CGI ou module serveur), un serveur
- web et un navigateur web. Vous devez exécuter le serveur
- web en corrélation avec PHP. Vous pouvez accéder
- au programme PHP avec l'aide du navigateur web. Tout ceci
- peut fonctionner sur une machine locale juste pour expérimenter
- la programmation PHP. Voyez la
- section d'installation
- pour plus d'informations.
-
-
-
-
- Langage de programmation en ligne de commande. Un script PHP peut être
- exécuté en ligne de commande,
- sans l'aide du serveur web et d'un navigateur. Il suffit
- de disposer de l'exécutable PHP. Cette utilisation est idéale
- pour les scripts qui sont exécutés régulièrement
- avec un cron (sous Unix ou macOS) ou
- un gestionnaire de tâches (sous Windows). Ces scripts
- peuvent aussi être utilisés pour réaliser des opérations sur des
- fichiers texte. Voyez la section sur l'utilisation de PHP en
- ligne de commande
- pour plus d'informations.
-
-
-
-
-
- PHP est utilisable sur la majorité des systèmes
- d'exploitation, comme Linux, de nombreuses variantes Unix (incluant HP-UX,
- Solaris et OpenBSD), Microsoft Windows, macOS, RISC OS et d'autres encore.
- PHP supporte aussi la plupart des serveurs web actuels dont
- Apache, IIS et bien d'autres. Et ceci inclut tous les serveurs web
- qui peuvent utiliser le binaire PHP FastCGI, comme lighttpd
- et nginx. PHP fonctionne sous forme de module, ou comme processeur CGI.
-
-
- Avec PHP, les développeurs ont le choix du système d'exploitation et
- du serveur web. De plus, ils ont aussi le choix d'utiliser
- la programmation procédurale ou objet (OOP), ou encore un mélange des
- deux.
-
-
- Avec PHP, ce n'est pas limité à la production de code HTML. Les capacités de PHP incluent
- la création de types de fichiers riches, tels que des images ou des fichiers PDF, le chiffrement de données
- et l'envoi d'e-mails. Il peut également facilement générer n'importe quel texte, tel que JSON
- ou XML. PHP peut générer automatiquement ces fichiers et les enregistrer dans
- le système de fichiers au lieu de les imprimer, formant ainsi un cache côté serveur pour
- contenu dynamique.
-
-
- Une des forces les plus significatives de PHP est qu'il supporte
- énormément de bases de données.
- Écrire une page web faisant appel à une base de données devient
- terriblement simple, en utilisant une des extensions spécifiques
- aux bases de données (c.-à-d. pour mysql),
- ou utilisant une classe d'abstraction comme PDO,
- ou une connexion à n'importe quelle base de données supportant la connexion
- standard ouvert via l'extension ODBC.
- Les autres bases de données peuvent utiliser l'extension
- cURL ou sockets
- comme CouchDB.
-
-
- PHP supporte de nombreux protocoles comme
- LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (sous Windows) et
- encore d'autres. Il peut aussi ouvrir des sockets réseau,
- et interagir avec n'importe quel autre protocole. PHP supporte
- le format complexe WDDX, qui permet de communiquer entre tous
- les langages web. En termes d'interconnexion, PHP supporte aussi
- les objets Java, et les utilise de manière transparente
- comme objets intégrés.
-
-
- PHP possède des fonctionnalités utiles dans le
- traitement de texte,
- incluant les expressions régulières compatibles Perl (PCRE),
- ainsi que bon nombre d'extensions et d'utilitaires pour
- analyser et accéder aux documents XML.
- PHP standardise toutes les extensions XML sur la solide base de libxml2,
- et étend le jeu de fonctionnalités en ajoutant le support de
- SimpleXML, XMLReader
- et XMLWriter.
-
-
- Beaucoup d'autres extensions existent, catégorisées
- alphabétiquement et par catégorie.
- Et enfin, il existe des extensions PECL qui peuvent (ou pas) être documentées
- dans le manuel PHP, comme XDebug.
-
-
- Cette page n'est pas assez grande pour lister
- toutes les puissantes fonctionnalités de PHP. Lisez la section
- sur l'installation de PHP
- et étudiez la liste de fonctions
- pour avoir plus de détails sur toutes ces technologies.
-
-
-
-
-
-
+
+
+
+
+
+
+ Introduction
+ Qu'est-ce que PHP et que peut-il faire?
+
+
+ Qu'est-ce que PHP ?
+
+ PHP (officiellement, ce sigle est un acronyme récursif pour
+ PHP Hypertext Preprocessor) est un langage de scripts généraliste
+ et Open Source, spécialement conçu pour le développement d'applications
+ web. Il peut être intégré facilement au HTML.
+
+
+ Bien... mais qu'est-ce que cela veut dire ? Un exemple :
+
+
+
+ Exemple d'introduction
+
+
+
+
+Exemple
+
+
+
+
+
+
+
+]]>
+
+
+
+
+ Au lieu d'utiliser des tonnes de commandes afin d'afficher du HTML (comme en
+ C ou en Perl), les pages PHP contiennent des fragments HTML dont du code
+ qui fait "quelque chose" (dans ce cas, il va afficher
+ "Bonjour, je suis un script PHP !").
+ Le code PHP est inclus entre
+ une balise de début
+ <?php et une balise de fin ?>
+ qui permettent au serveur web de passer en mode PHP.
+
+
+ Ce qui distingue PHP des langages de script comme le Javascript,
+ est que le code est exécuté sur le serveur, générant ainsi le HTML, qui
+ sera ensuite envoyé au client. Le client ne reçoit que le
+ résultat du script, sans aucun moyen d'avoir accès au code
+ qui a produit ce résultat. Vous pouvez configurer votre serveur
+ web afin qu'il analyse tous vos fichiers HTML comme des fichiers PHP.
+ Ainsi, il n'y a aucun moyen de distinguer les pages qui sont produites
+ dynamiquement des pages statiques. Un serveur web peut même être configuré
+ pour traiter tous les fichiers HTML avec PHP, et il n'y a
+ aucun moyen pour les utilisateurs de savoir que PHP est utilisé.
+
+
+ Le grand avantage de PHP est qu'il est extrêmement simple pour les
+ néophytes, mais offre des fonctionnalités avancées pour les
+ experts. Ne craignez pas de lire la longue liste de fonctionnalités
+ PHP. Avec PHP, presque tout le monde peut commencer rapidement
+ et écrire des scripts simples en un rien de temps.
+
+
+ Bien que le développement de PHP soit orienté vers la programmation
+ pour les sites web, on peut faire bien plus avec PHP.
+ Lisez donc la section Que peut faire PHP ?
+ ou bien le tutoriel d'introduction pour passer directement
+ à l'apprentissage de la programmation web.
+
+
+
+
+ Que peut faire PHP ?
+
+ Tout. PHP est principalement conçu pour servir de
+ langage de script côté serveur, il peut donc faire tout ce qu'un autre programme CGI peut faire, comme
+ collecter des données de formulaire, générer du contenu dynamique,
+ ou gérer des cookies. Mais PHP peut en faire bien plus.
+
+
+ Il y a deux domaines différents où PHP peut s'illustrer.
+
+
+
+ Langage de script côté serveur. C'est l'utilisation la plus
+ traditionnelle, et aussi le principal objet de PHP.
+ Trois composants sont nécessaires pour l'exploiter :
+ un analyseur PHP (CGI ou module serveur), un serveur
+ web et un navigateur web. Vous devez exécuter le serveur
+ web en corrélation avec PHP. Vous pouvez accéder
+ au programme PHP avec l'aide du navigateur web. Tout ceci
+ peut fonctionner sur une machine locale juste pour expérimenter
+ la programmation PHP. Voyez la
+ section d'installation
+ pour plus d'informations.
+
+
+
+
+ Langage de programmation en ligne de commande. Un script PHP peut être
+ exécuté en ligne de commande,
+ sans l'aide du serveur web et d'un navigateur. Il suffit
+ de disposer de l'exécutable PHP. Cette utilisation est idéale
+ pour les scripts qui sont exécutés régulièrement
+ avec un cron (sous Unix ou macOS) ou
+ un gestionnaire de tâches (sous Windows). Ces scripts
+ peuvent aussi être utilisés pour réaliser des opérations sur des
+ fichiers texte. Voyez la section sur l'utilisation de PHP en
+ ligne de commande
+ pour plus d'informations.
+
+
+
+
+
+ PHP est utilisable sur la majorité des systèmes
+ d'exploitation, comme Linux, de nombreuses variantes Unix (incluant HP-UX,
+ Solaris et OpenBSD), Microsoft Windows, macOS, RISC OS et d'autres encore.
+ PHP supporte aussi la plupart des serveurs web actuels dont
+ Apache, IIS et bien d'autres. Et ceci inclut tous les serveurs web
+ qui peuvent utiliser le binaire PHP FastCGI, comme lighttpd
+ et nginx. PHP fonctionne sous forme de module, ou comme processeur CGI.
+
+
+ Avec PHP, les développeurs ont le choix du système d'exploitation et
+ du serveur web. De plus, ils ont aussi le choix d'utiliser
+ la programmation procédurale ou objet (OOP), ou encore un mélange des
+ deux.
+
+
+ Avec PHP, ce n'est pas limité à la production de code HTML. Les capacités de PHP incluent
+ la création de types de fichiers riches, tels que des images ou des fichiers PDF, le chiffrement de données
+ et l'envoi d'e-mails. Il peut également facilement générer n'importe quel texte, tel que JSON
+ ou XML. PHP peut générer automatiquement ces fichiers et les enregistrer dans
+ le système de fichiers au lieu de les imprimer, formant ainsi un cache côté serveur pour
+ contenu dynamique.
+
+
+ Une des forces les plus significatives de PHP est qu'il supporte
+ énormément de bases de données.
+ Écrire une page web faisant appel à une base de données devient
+ terriblement simple, en utilisant une des extensions spécifiques
+ aux bases de données (c.-à-d. pour mysql),
+ ou utilisant une classe d'abstraction comme PDO,
+ ou une connexion à n'importe quelle base de données supportant la connexion
+ standard ouvert via l'extension ODBC.
+ Les autres bases de données peuvent utiliser l'extension
+ cURL ou sockets
+ comme CouchDB.
+
+
+ PHP supporte de nombreux protocoles comme
+ LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (sous Windows) et
+ encore d'autres. Il peut aussi ouvrir des sockets réseau,
+ et interagir avec n'importe quel autre protocole. PHP supporte
+ le format complexe WDDX, qui permet de communiquer entre tous
+ les langages web. En termes d'interconnexion, PHP supporte aussi
+ les objets Java, et les utilise de manière transparente
+ comme objets intégrés.
+
+
+ PHP possède des fonctionnalités utiles dans le
+ traitement de texte,
+ incluant les expressions régulières compatibles Perl (PCRE),
+ ainsi que bon nombre d'extensions et d'utilitaires pour
+ analyser et accéder aux documents XML.
+ PHP standardise toutes les extensions XML sur la solide base de libxml2,
+ et étend le jeu de fonctionnalités en ajoutant le support de
+ SimpleXML, XMLReader
+ et XMLWriter.
+
+
+ Beaucoup d'autres extensions existent, catégorisées
+ alphabétiquement et par catégorie.
+ Et enfin, il existe des extensions PECL qui peuvent (ou pas) être documentées
+ dans le manuel PHP, comme XDebug.
+
+
+ Cette page n'est pas assez grande pour lister
+ toutes les puissantes fonctionnalités de PHP. Lisez la section
+ sur l'installation de PHP
+ et étudiez la liste de fonctions
+ pour avoir plus de détails sur toutes ces technologies.
+
+
+
+
+
+
From c668e3e1d7082544a6a87e639e18b6155588f16e Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:37:51 +0100
Subject: [PATCH 12/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20chapters/tutorial.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
chapters/tutorial.xml | 954 +++++++++++++++++++++---------------------
1 file changed, 477 insertions(+), 477 deletions(-)
diff --git a/chapters/tutorial.xml b/chapters/tutorial.xml
index 971e2c2ad3..c53dc26a62 100755
--- a/chapters/tutorial.xml
+++ b/chapters/tutorial.xml
@@ -1,477 +1,477 @@
-
-
-
-
-
- Une introduction à PHP
-
-
- Dans cette section, nous voulons illustrer les principes de base
- de PHP dans une courte introduction. Ce chapitre traite uniquement
- de création de pages web dynamiques avec PHP, laissant de côté
- temporairement les autres possibilités de PHP. Voir la section
- Ce que peut faire PHP pour
- plus d'informations.
-
-
- Les pages web qui exploitent PHP sont traitées comme des pages
- HTML standards, et vous pouvez les créer, éditer et effacer
- tout comme vous le faites normalement avec des pages HTML
- classiques.
-
-
-
- Votre première page PHP
-
- Ce tutoriel suppose que PHP est déjà installé.
- Les instructions d'installation sont disponibles sur la
- page de téléchargement.
-
-
- Créez un fichier appelé hello.php
- avec le contenu suivant :
-
-
-
- Notre premier script PHP : hello.php
-
-
-]]>
-
-
- Avec votre terminal, naviguez jusqu'au répertoire contenant ce fichier et
- démarrez un serveur de développement avec la commande suivante :
-
-
-
-
-
- Utilisez votre navigateur pour accéder au fichier en utilisant l'URL de votre serveur web, se terminant
- avec la référence au fichier hello.php.
- Par rapport à la précédente commande exécutée, l'URL sera
- http://localhost:8000/hello.php.
- Si tout est configuré correctement, ce fichier sera analysé par PHP
- et vous verrez la sortie "Hello World!" affichée dans votre navigateur.
-
-
- PHP peut être intégré dans une page web HTML normale. Cela signifie que, dans votre document HTML,
- vous pouvez écrire des instructions PHP, comme démontré dans l'exemple suivant :
-
-
-
-
-
- Test PHP
-
-
- Bonjour le monde'; ?>
-
-
-]]>
-
-
- Cela produira le résultat suivant :
-
-
-
-
-
- Test PHP
-
-
-
Bonjour le monde
-
-
-]]>
-
-
-
-
- Ce programme est extrêmement simple et vous n'avez pas besoin de PHP
- pour créer une page web comme ceci. Elle ne fait qu'afficher
- Bonjour le monde, grâce à la fonction
- echo
- de PHP. Notez que ce fichier n'a pas besoin d'être exécutable
- ou autre, dans aucun cas. Le serveur sait que ce fichier a besoin d'être interprété
- par PHP, car vous utilisez l'extension ".php", et le serveur est configuré pour
- les passer à PHP. Regardez cela comme une page HTML normale qui contient une série
- de balises spéciales qui vont vous permettre de réaliser beaucoup de choses intéressantes.
-
-
-
- Le point important de cet exemple était de montrer le format des
- balises spéciales PHP. Nous avons utilisé ici
- <?php pour indiquer le début de la balise PHP.
- Puis, nous avons introduit les commandes PHP et refermé les balises
- PHP avec ?>. Vous pouvez passer du mode PHP
- au mode HTML et vice-versa, de cette manière, et à votre guise. Pour plus
- d'informations, lisez la section du manuel sur la
- syntaxe basique de PHP.
-
-
-
- Une note sur les retours à la ligne
-
- Les retours à la ligne ont une signification minime en HTML, cependant,
- c'est toujours une bonne idée de rendre votre HTML aussi joli et proche
- que possible en y ajoutant des retours à la ligne. Un retour à la ligne
- suivant immédiatement une balise de fermeture PHP (?>)
- sera supprimé par PHP. Ceci peut être vraiment très utile lorsque vous
- insérez plusieurs blocs PHP ou fichiers inclus contenant du PHP qui
- n'est pas supposé afficher quoi que ce soit. En même temps, ce peut
- être confus. Vous pouvez ajouter un espace après la balise fermante
- PHP (?>) pour forcer l'espace et un retour à
- la ligne à afficher, ou vous pouvez ajouter explicitement un retour à la ligne
- dans le dernier echo/print de votre bloc PHP.
-
-
-
-
- Une note sur les éditeurs de texte
-
- Il existe de nombreux éditeurs de texte et environnements de
- développement (IDE) que vous pouvez utiliser pour créer, éditer
- et gérer vos applications PHP. Une liste partielle de ces outils
- est entretenue à l'adresse
- PHP Editor's List.
- Si vous voulez recommander un éditeur particulier, rendez donc une visite
- à cette page et demandez au webmestre d'ajouter votre éditeur. Avoir au minimum
- un éditeur de texte avec la coloration syntaxique est vivement recommandé.
-
-
-
-
- Une note sur les traitements de texte
-
- Les traitements de texte tels que StarOffice Writer, Microsoft Word et
- Abiword sont de très mauvais choix pour éditer des scripts PHP.
- Si vous voulez utiliser l'un d'entre eux, malgré tout, pour tester vos
- scripts, vous devez vous assurer que vous sauvez les fichiers au format
- texte seul (plain text) : sinon, PHP ne sera pas capable de lire
- et d'exécuter ces scripts.
-
-
-
-
- Maintenant vous avez créé un script PHP qui fonctionne, c'est le moment
- de créer le meilleur script PHP ! Faites un appel à la fonction
- phpinfo et vous verrez beaucoup d'informations
- intéressantes sur votre système et sa configuration comme les
- variables pré-définies disponibles,
- les modules PHP chargés ainsi que la configuration.
- Prenez du temps pour revoir ces informations importantes.
-
-
-
- Récupération des informations du système depuis PHP
-
-
-]]>
-
-
-
-
-
-
- Trucs pratiques
-
- Réalisons maintenant quelque chose de plus puissant. Nous allons
- vérifier le type de navigateur que le visiteur de notre site utilise.
- Pour cela, nous allons accéder aux informations que le navigateur
- du visiteur nous envoie, lors de sa requête HTTP. Cette information
- est stockée dans une variable.
- Les variables sont faciles à repérer, car elles commencent toutes par
- un signe dollar. La variable qui nous intéresse ici est
- $_SERVER['HTTP_USER_AGENT'].
-
-
-
- $_SERVER est une
- variable spéciale de PHP, qui contient toutes les informations
- relatives au serveur web. C'est une variable réservée de PHP,
- et une superglobale. Reportez-vous aux pages du manuel traitant des
- Auto-globales
- (aussi connues sous le nom de super-globales).
-
-
-
- Pour afficher cette variable, nous pouvons simplement faire :
-
-
-
- Afficher le contenu d'une variable (élément de tableau)
-
-
-]]>
-
-
- Un résultat possible du script pourra alors être :
-
-
-
-
-
-
-
- Il y a de nombreux types de
- variables disponibles en PHP. Dans l'exemple ci-dessus, nous avons affiché
- un élément d'une variable Tableau (Array).
- Les tableaux peuvent être très utiles.
-
-
- $_SERVER est juste une variable qui est automatiquement
- disponible dans votre script. Une liste de toutes les variables qui sont
- rendues disponibles est fournie dans la section
- Variables réservées ou vous
- pouvez aussi en obtenir une liste complète en lisant l'affichage de la fonction
- phpinfo utilisée dans l'exemple de la section précédente.
-
-
- Vous pouvez ajouter plusieurs commandes PHP dans une balise PHP, et créer
- de petits blocs de code qui réalisent des opérations plus complexes
- qu'un simple affichage. Par exemple, si nous voulons vérifier que le
- navigateur est bien de la famille Firefox, nous pouvons
- faire cela :
-
-
-
- Exemple utilisant les
- structures de contrôle et
- les fonctions
-
-
-]]>
-
-
- Le résultat de ce script, si vous utilisez Firefox, sera :
-
-
-
-
-
-
-
- Ici, nous introduisons plusieurs nouveaux concepts. Nous avons une
- structure if.
- Si vous êtes familier avec les syntaxes de base du langage C, cela
- ne vous surprendra pas. Si vous ne connaissez pas assez le langage C ou
- un autre langage dont la syntaxe est similaire à celle ci-dessus, il
- vaudrait mieux que vous lisiez une introduction à PHP, et assimiliez
- les premiers chapitres, ou bien lisez le chapitre consacré à
- la référence du langage.
-
-
- Le second concept que nous avons introduit est la fonction str_contains.
- str_contains est une fonction intégrée à PHP, qui détermine
- la présence d'une chaîne donnée dans une autre. Dans notre cas, nous
- avons recherché la chaîne "Firefox" dans la chaîne
- $_SERVER['HTTP_USER_AGENT']. Si la chaîne recherchée
- est trouvée, la fonction retourne &true;. Sinon, elle retourne &false;.
- Si elle retourne &true;, la structure if
- reçoit &true; et le code entre accolades {} est exécuté. Sinon, le code n'est pas
- exécuté. N'hésitez pas à
- expérimenter d'autres exemples, à l'aide de
- if,
- else, et d'autres
- fonctions comme strtoupper et
- strlen. Chaque page de la documentation contient aussi
- des exemples. Si vous n'êtes pas sûr de l'utilisation de ces fonctions, vous devez lire
- la page du manuel
- "comment lire une définition de fonction"
- ainsi que la section sur les fonctions PHP.
-
-
- Nous pouvons maintenant progresser et vous montrer comment utiliser le mode PHP,
- au milieu du code HTML :
-
-
-
- Passer du mode PHP au mode HTML et vice-versa
-
-
-
str_contains() a retourné true
-
Vous utilisez Firefox
-
-
str_contains() a retourné false
-
Vous n'utilisez pas Firefox
-
-]]>
-
-
- Un exemple de résultat obtenu dans ce script est :
-
-
-str_contains() a retourné true
-
Vous utilisez Firefox
-]]>
-
-
-
-
- Au lieu d'utiliser une commande echo, pour afficher
- du texte, vous pouvez utiliser du code HTML pur. Le point important à noter
- ici est que la logique de programmation est conservée. Seul un des deux
- blocs HTML sera affiché, suivant le résultat de la fonction str_contains.
- En d'autres termes, cela dépend si la chaîne Firefox
- a été trouvée ou non.
-
-
-
-
- Utiliser un formulaire
-
- L'un des points forts de PHP est sa capacité à gérer les formulaires.
- Le concept de base qui est important à comprendre est que tous les
- champs d'un formulaire seront automatiquement disponibles dans le
- script PHP d'action. Lisez le chapitre du manuel concernant les
- variables depuis des sources externes à PHP
- pour plus d'informations et d'exemples sur la façon d'utiliser les
- formulaires. Voici un exemple de formulaire HTML :
-
-
-
- Un simple formulaire HTML
-
-
-
-
-
-
-
-
-
-
-]]>
-
-
-
-
- Il n'y a rien de particulier dans ce formulaire. Il est en HTML
- pur, sans aucune configuration particulière. Lorsque le visiteur
- remplit le formulaire et clique sur le bouton Valider, le
- fichier action.php est appelé. Dans ce
- fichier, vous pouvez écrire le script suivant :
-
-
-
- Afficher des données issues d'un formulaire
-
-.
-Tu as ans.
-]]>
-
-
- Voici le résultat que vous pourriez obtenir, selon
- les valeurs que vous avez saisies :
-
-
-
-
-
-
-
- Mis à part les parties htmlspecialchars et
- (int), ce script ne fait que des choses évidentes.
- htmlspecialchars s'assure que tous les caractères
- spéciaux HTML sont proprement encodés afin d'éviter des injections
- de balises HTML et de Javascript dans vos pages. Pour l'âge, vu que
- nous savons que c'est un entier, vous pouvez le
- convertir en un
- &integer;. Vous pouvez également demander à PHP de le faire
- automatiquement à votre place en utilisant l'extension
- filter.
- Les variables $_POST['nom'] et
- $_POST['age'] sont automatiquement créées par PHP.
- Un peu plus tôt dans ce tutoriel, nous avons utilisé la variable
- $_SERVER, une superglobale. Maintenant, nous avons
- introduit une autre superglobale $_POST
- qui contient toutes les données envoyées par la méthode POST. Notez que
- dans notre formulaire, nous avons choisi la méthode POST.
- Si nous avions utilisé la méthode GET alors notre formulaire
- aurait placé ces informations dans la variable $_GET,
- une autre superglobale. Vous pouvez aussi utiliser la variable
- $_REQUEST, si vous
- ne souhaitez pas vous embarrasser de la méthode utilisée. Elle contient
- un mélange des données de GET, POST, COOKIE et FILE.
-
-
-
-
- Et après ?
-
- Avec ce que vous savez, vous êtes maintenant capable de comprendre
- l'essentiel de la documentation PHP, et les différents scripts d'exemples
- disponibles dans les archives.
-
-
- Différentes présentations des capacités de PHP sont disponibles sur le
- site des conférences PHP :
- &url.php.talks;.
-
-
-
-
-
+
+
+
+
+
+ Une introduction à PHP
+
+
+ Dans cette section, nous voulons illustrer les principes de base
+ de PHP dans une courte introduction. Ce chapitre traite uniquement
+ de création de pages web dynamiques avec PHP, laissant de côté
+ temporairement les autres possibilités de PHP. Voir la section
+ Ce que peut faire PHP pour
+ plus d'informations.
+
+
+ Les pages web qui exploitent PHP sont traitées comme des pages
+ HTML standards, et vous pouvez les créer, éditer et effacer
+ tout comme vous le faites normalement avec des pages HTML
+ classiques.
+
+
+
+ Votre première page PHP
+
+ Ce tutoriel suppose que PHP est déjà installé.
+ Les instructions d'installation sont disponibles sur la
+ page de téléchargement.
+
+
+ Créez un fichier appelé hello.php
+ avec le contenu suivant :
+
+
+
+ Notre premier script PHP : hello.php
+
+
+]]>
+
+
+ Avec votre terminal, naviguez jusqu'au répertoire contenant ce fichier et
+ démarrez un serveur de développement avec la commande suivante :
+
+
+
+
+
+ Utilisez votre navigateur pour accéder au fichier en utilisant l'URL de votre serveur web, se terminant
+ avec la référence au fichier hello.php.
+ Par rapport à la précédente commande exécutée, l'URL sera
+ http://localhost:8000/hello.php.
+ Si tout est configuré correctement, ce fichier sera analysé par PHP
+ et vous verrez la sortie "Hello World!" affichée dans votre navigateur.
+
+
+ PHP peut être intégré dans une page web HTML normale. Cela signifie que, dans votre document HTML,
+ vous pouvez écrire des instructions PHP, comme démontré dans l'exemple suivant :
+
+
+
+
+
+ Test PHP
+
+
+ Bonjour le monde'; ?>
+
+
+]]>
+
+
+ Cela produira le résultat suivant :
+
+
+
+
+
+ Test PHP
+
+
+
Bonjour le monde
+
+
+]]>
+
+
+
+
+ Ce programme est extrêmement simple et vous n'avez pas besoin de PHP
+ pour créer une page web comme ceci. Elle ne fait qu'afficher
+ Bonjour le monde, grâce à la fonction
+ echo
+ de PHP. Notez que ce fichier n'a pas besoin d'être exécutable
+ ou autre, dans aucun cas. Le serveur sait que ce fichier a besoin d'être interprété
+ par PHP, car vous utilisez l'extension ".php", et le serveur est configuré pour
+ les passer à PHP. Regardez cela comme une page HTML normale qui contient une série
+ de balises spéciales qui vont vous permettre de réaliser beaucoup de choses intéressantes.
+
+
+
+ Le point important de cet exemple était de montrer le format des
+ balises spéciales PHP. Nous avons utilisé ici
+ <?php pour indiquer le début de la balise PHP.
+ Puis, nous avons introduit les commandes PHP et refermé les balises
+ PHP avec ?>. Vous pouvez passer du mode PHP
+ au mode HTML et vice-versa, de cette manière, et à votre guise. Pour plus
+ d'informations, lisez la section du manuel sur la
+ syntaxe basique de PHP.
+
+
+
+ Une note sur les retours à la ligne
+
+ Les retours à la ligne ont une signification minime en HTML, cependant,
+ c'est toujours une bonne idée de rendre votre HTML aussi joli et proche
+ que possible en y ajoutant des retours à la ligne. Un retour à la ligne
+ suivant immédiatement une balise de fermeture PHP (?>)
+ sera supprimé par PHP. Ceci peut être vraiment très utile lorsque vous
+ insérez plusieurs blocs PHP ou fichiers inclus contenant du PHP qui
+ n'est pas supposé afficher quoi que ce soit. En même temps, ce peut
+ être confus. Vous pouvez ajouter un espace après la balise fermante
+ PHP (?>) pour forcer l'espace et un retour à
+ la ligne à afficher, ou vous pouvez ajouter explicitement un retour à la ligne
+ dans le dernier echo/print de votre bloc PHP.
+
+
+
+
+ Une note sur les éditeurs de texte
+
+ Il existe de nombreux éditeurs de texte et environnements de
+ développement (IDE) que vous pouvez utiliser pour créer, éditer
+ et gérer vos applications PHP. Une liste partielle de ces outils
+ est entretenue à l'adresse
+ PHP Editor's List.
+ Si vous voulez recommander un éditeur particulier, rendez donc une visite
+ à cette page et demandez au webmestre d'ajouter votre éditeur. Avoir au minimum
+ un éditeur de texte avec la coloration syntaxique est vivement recommandé.
+
+
+
+
+ Une note sur les traitements de texte
+
+ Les traitements de texte tels que StarOffice Writer, Microsoft Word et
+ Abiword sont de très mauvais choix pour éditer des scripts PHP.
+ Si vous voulez utiliser l'un d'entre eux, malgré tout, pour tester vos
+ scripts, vous devez vous assurer que vous sauvez les fichiers au format
+ texte seul (plain text) : sinon, PHP ne sera pas capable de lire
+ et d'exécuter ces scripts.
+
+
+
+
+ Maintenant vous avez créé un script PHP qui fonctionne, c'est le moment
+ de créer le meilleur script PHP ! Faites un appel à la fonction
+ phpinfo et vous verrez beaucoup d'informations
+ intéressantes sur votre système et sa configuration comme les
+ variables pré-définies disponibles,
+ les modules PHP chargés ainsi que la configuration.
+ Prenez du temps pour revoir ces informations importantes.
+
+
+
+ Récupération des informations du système depuis PHP
+
+
+]]>
+
+
+
+
+
+
+ Trucs pratiques
+
+ Réalisons maintenant quelque chose de plus puissant. Nous allons
+ vérifier le type de navigateur que le visiteur de notre site utilise.
+ Pour cela, nous allons accéder aux informations que le navigateur
+ du visiteur nous envoie, lors de sa requête HTTP. Cette information
+ est stockée dans une variable.
+ Les variables sont faciles à repérer, car elles commencent toutes par
+ un signe dollar. La variable qui nous intéresse ici est
+ $_SERVER['HTTP_USER_AGENT'].
+
+
+
+ $_SERVER est une
+ variable spéciale de PHP, qui contient toutes les informations
+ relatives au serveur web. C'est une variable réservée de PHP,
+ et une superglobale. Reportez-vous aux pages du manuel traitant des
+ Auto-globales
+ (aussi connues sous le nom de super-globales).
+
+
+
+ Pour afficher cette variable, nous pouvons simplement faire :
+
+
+
+ Afficher le contenu d'une variable (élément de tableau)
+
+
+]]>
+
+
+ Un résultat possible du script pourra alors être :
+
+
+
+
+
+
+
+ Il y a de nombreux types de
+ variables disponibles en PHP. Dans l'exemple ci-dessus, nous avons affiché
+ un élément d'une variable Tableau (Array).
+ Les tableaux peuvent être très utiles.
+
+
+ $_SERVER est juste une variable qui est automatiquement
+ disponible dans votre script. Une liste de toutes les variables qui sont
+ rendues disponibles est fournie dans la section
+ Variables réservées ou vous
+ pouvez aussi en obtenir une liste complète en lisant l'affichage de la fonction
+ phpinfo utilisée dans l'exemple de la section précédente.
+
+
+ Vous pouvez ajouter plusieurs commandes PHP dans une balise PHP, et créer
+ de petits blocs de code qui réalisent des opérations plus complexes
+ qu'un simple affichage. Par exemple, si nous voulons vérifier que le
+ navigateur est bien de la famille Firefox, nous pouvons
+ faire cela :
+
+
+
+ Exemple utilisant les
+ structures de contrôle et
+ les fonctions
+
+
+]]>
+
+
+ Le résultat de ce script, si vous utilisez Firefox, sera :
+
+
+
+
+
+
+
+ Ici, nous introduisons plusieurs nouveaux concepts. Nous avons une
+ structure if.
+ Si vous êtes familier avec les syntaxes de base du langage C, cela
+ ne vous surprendra pas. Si vous ne connaissez pas assez le langage C ou
+ un autre langage dont la syntaxe est similaire à celle ci-dessus, il
+ vaudrait mieux que vous lisiez une introduction à PHP, et assimiliez
+ les premiers chapitres, ou bien lisez le chapitre consacré à
+ la référence du langage.
+
+
+ Le second concept que nous avons introduit est la fonction str_contains.
+ str_contains est une fonction intégrée à PHP, qui détermine
+ la présence d'une chaîne donnée dans une autre. Dans notre cas, nous
+ avons recherché la chaîne "Firefox" dans la chaîne
+ $_SERVER['HTTP_USER_AGENT']. Si la chaîne recherchée
+ est trouvée, la fonction retourne &true;. Sinon, elle retourne &false;.
+ Si elle retourne &true;, la structure if
+ reçoit &true; et le code entre accolades {} est exécuté. Sinon, le code n'est pas
+ exécuté. N'hésitez pas à
+ expérimenter d'autres exemples, à l'aide de
+ if,
+ else, et d'autres
+ fonctions comme strtoupper et
+ strlen. Chaque page de la documentation contient aussi
+ des exemples. Si vous n'êtes pas sûr de l'utilisation de ces fonctions, vous devez lire
+ la page du manuel
+ "comment lire une définition de fonction"
+ ainsi que la section sur les fonctions PHP.
+
+
+ Nous pouvons maintenant progresser et vous montrer comment utiliser le mode PHP,
+ au milieu du code HTML :
+
+
+
+ Passer du mode PHP au mode HTML et vice-versa
+
+
+
str_contains() a retourné true
+
Vous utilisez Firefox
+
+
str_contains() a retourné false
+
Vous n'utilisez pas Firefox
+
+]]>
+
+
+ Un exemple de résultat obtenu dans ce script est :
+
+
+str_contains() a retourné true
+
Vous utilisez Firefox
+]]>
+
+
+
+
+ Au lieu d'utiliser une commande echo, pour afficher
+ du texte, vous pouvez utiliser du code HTML pur. Le point important à noter
+ ici est que la logique de programmation est conservée. Seul un des deux
+ blocs HTML sera affiché, suivant le résultat de la fonction str_contains.
+ En d'autres termes, cela dépend si la chaîne Firefox
+ a été trouvée ou non.
+
+
+
+
+ Utiliser un formulaire
+
+ L'un des points forts de PHP est sa capacité à gérer les formulaires.
+ Le concept de base qui est important à comprendre est que tous les
+ champs d'un formulaire seront automatiquement disponibles dans le
+ script PHP d'action. Lisez le chapitre du manuel concernant les
+ variables depuis des sources externes à PHP
+ pour plus d'informations et d'exemples sur la façon d'utiliser les
+ formulaires. Voici un exemple de formulaire HTML :
+
+
+
+ Un simple formulaire HTML
+
+
+
+
+
+
+
+
+
+
+]]>
+
+
+
+
+ Il n'y a rien de particulier dans ce formulaire. Il est en HTML
+ pur, sans aucune configuration particulière. Lorsque le visiteur
+ remplit le formulaire et clique sur le bouton Valider, le
+ fichier action.php est appelé. Dans ce
+ fichier, vous pouvez écrire le script suivant :
+
+
+
+ Afficher des données issues d'un formulaire
+
+.
+Tu as ans.
+]]>
+
+
+ Voici le résultat que vous pourriez obtenir, selon
+ les valeurs que vous avez saisies :
+
+
+
+
+
+
+
+ Mis à part les parties htmlspecialchars et
+ (int), ce script ne fait que des choses évidentes.
+ htmlspecialchars s'assure que tous les caractères
+ spéciaux HTML sont proprement encodés afin d'éviter des injections
+ de balises HTML et de Javascript dans vos pages. Pour l'âge, vu que
+ nous savons que c'est un entier, vous pouvez le
+ convertir en un
+ &integer;. Vous pouvez également demander à PHP de le faire
+ automatiquement à votre place en utilisant l'extension
+ filter.
+ Les variables $_POST['nom'] et
+ $_POST['age'] sont automatiquement créées par PHP.
+ Un peu plus tôt dans ce tutoriel, nous avons utilisé la variable
+ $_SERVER, une superglobale. Maintenant, nous avons
+ introduit une autre superglobale $_POST
+ qui contient toutes les données envoyées par la méthode POST. Notez que
+ dans notre formulaire, nous avons choisi la méthode POST.
+ Si nous avions utilisé la méthode GET alors notre formulaire
+ aurait placé ces informations dans la variable $_GET,
+ une autre superglobale. Vous pouvez aussi utiliser la variable
+ $_REQUEST, si vous
+ ne souhaitez pas vous embarrasser de la méthode utilisée. Elle contient
+ un mélange des données de GET, POST, COOKIE et FILE.
+
+
+
+
+ Et après ?
+
+ Avec ce que vous savez, vous êtes maintenant capable de comprendre
+ l'essentiel de la documentation PHP, et les différents scripts d'exemples
+ disponibles dans les archives.
+
+
+ Différentes présentations des capacités de PHP sont disponibles sur le
+ site des conférences PHP :
+ &url.php.talks;.
+
+
+
+
+
From 4466310bf17630e280cb56957791204ac6b5f309 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:37:55 +0100
Subject: [PATCH 13/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20faq/html.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
faq/html.xml | 714 +++++++++++++++++++++++++--------------------------
1 file changed, 357 insertions(+), 357 deletions(-)
diff --git a/faq/html.xml b/faq/html.xml
index d9608934c0..c9ada9fd61 100644
--- a/faq/html.xml
+++ b/faq/html.xml
@@ -1,357 +1,357 @@
-
-
-
-
-
-
- PHP et HTML
- PHP et HTML
-
-
- PHP et HTML sont très interactifs : PHP peut générer du HTML et HTML
- peut passer des informations à PHP. Avant de lire cette faq (foire aux
- questions), il est important que vous appreniez comment récupérer des variables externes à PHP.
- La page du manuel correspondante contient beaucoup d'exemples.
-
-
-
-
-
-
- Quel encodage/décodage ai-je besoin lors du passage d'une valeur via
- un formulaire/une URL ?
-
-
-
-
- Il y a plusieurs étapes pour lesquelles le codage est important. En supposant que vous avez
- une string$data, qui contient la chaîne
- que vous voulez passer de manière non-encodée, voici les étapes appropriées :
-
-
-
- Interprétation HTML. Afin d'indiquer une chaîne aléatoire, vous
- devez l'inclure entre doubles guillemets et
- utiliser la fonction htmlspecialchars pour encoder
- la chaîne.
-
-
-
-
- URL : une URL est constituée de plusieurs parties. Si vous voulez que vos données
- soient interprétées comme un seul élément, vous devez
- les encoder avec la fonction urlencode.
-
-
-
-
-
-
- Un élément de formulaire HTML caché
-
-'."\n";
-?>
-]]>
-
-
-
-
- Il n'est pas correct d'utiliser la fonction urlencode
- pour vos données $data, car il en est de la responsabilité du
- navigateur de les encoder. Tous les navigateurs populaires le font correctement.
- Notez que cela s'effectue sans considération de la méthode utilisée
- (c'est-à-dire
- GET ou POST).
- Vous devez uniquement noter ce cas pour les requêtes GET,
- car les requêtes POST sont généralement cachées.
-
-
-
- Données éditables par l'utilisateur
-
-\n";
-echo htmlspecialchars($data)."\n";
-echo '';
-?>
-]]>
-
-
-
-
- Les données sont montrées dans le navigateur comme prévues, car celui-ci interprétera
- les symboles HTML échappés.
-
-
- Au moment de la validation, via la méthode GET ou
- POST, les données devraient être
- url-encodées par le navigateur avant le transfert et directement url-décodées par PHP.
- Donc, finalement, vous n'avez pas à effectuer d'url-encodage/url-decodage vous-même,
- tout est effectué automatiquement.
-
-
-
- Dans une URL
-
-'."\n";
-?>
-]]>
-
-
-
-
- En fait, vous simulez une requête GET HTML, il est nécessaire
- d'utiliser manuellement la fonction urlencode sur vos données.
-
-
-
-
- Vous devez utiliser htmlspecialchars sur l'URL complète,
- car l'URL se comporte comme la valeur d'un attribut HTML. Dans ce cas, le navigateur
- fera un htmlspecialchars sur la valeur et passera le résultat à
- l'URL. PHP devrait comprendre l'URL correctement, car vous avez url-encodé les données.
-
-
- Vous devez noter que & dans l'URL est remplacé par
- &. Bien que la plupart des navigateurs devraient
- corriger cela si vous l'oubliez, ce n'est pas toujours le cas. Donc, même si votre URL
- n'est pas dynamique, vous devez utiliser
- la fonction htmlspecialchars sur l'URL.
-
-
-
-
-
-
-
-
-
-
- J'essaye d'utiliser <input type="image"> mais
- les variables $foo.x et $foo.y
- ne sont pas disponibles. $_GET['foo.x'] n'existe pas non plus.
- Où sont-elles ?
-
-
-
-
- Lorsque vous validez un formulaire, il est possible d'utiliser une image au lieu du bouton
- standard de type "submit" avec une balise du type :
-
-
-]]>
-
- Lorsque l'utilisateur clique sur l'image, le formulaire est transmis au serveur avec deux
- variables supplémentaires : foo.x et
- foo.y qui représentent les coordonnées du point cliqué.
-
-
- Comme foo.x et foo.y sont
- des noms de variables invalides en PHP, elles sont automatiquement converties
- en foo_x et foo_y. Les points sont
- remplacés par des soulignés. Donc, vous devez accéder à ces variables
- comme n'importe quelle autre variable tel que décrit dans la section
- "Variables provenant d'autres sources".
- Par exemple, en utilisant $_GET['foo_x'].
-
-
- Les espaces dans les noms de variables sont également converties en un souligné bas.
-
-
-
-
-
-
-
-
- Comment créer un tableau dans une balise <form> HTML ?
-
-
-
- Pour envoyer le résultat du <form> comme un tableau
- de variables à votre script PHP, vous devez nommer, via l'attribut name, les balises
- <input>, <select> ou <textarea> comme cela :
-
-
-
-
-
-]]>
-
- Noter les crochets après le nom de la variable, c'est ce qui fait que celle-ci sera un tableau.
- Vous pouvez grouper les éléments dans différents tableaux de variables en assignant le
- même nom à différents éléments :
-
-
-
-
-
-]]>
-
- Cela produira deux tableaux de variables, MonTableau et MonAutreTableau, qui seront
- envoyés au script PHP. Il est également possible d'assigner des clés spécifiques à votre
- tableau :
-
-
-
-
-
-]]>
-
- Le tableau UnAutreTableau contiendra les clés 0, 1, email et telephone.
-
-
-
-
- Le fait de spécifier une clé à un tableau est optionnel en HTML. Si vous ne le faites pas,
- les clés du tableau suiveront l'ordre d'apparition des éléments dans le formulaire.
- Dans notre premier exemple, le tableau contient les clés 0, 1, 2 et 3.
-
-
-
-
- Voir aussi les
- fonctions sur les tableaux de variables et la section
- sur les
- variables provenant d'autres sources.
-
-
-
-
-
-
-
- Comment puis-je récupérer le résultat d'un champ HTML SELECT
- multiple ?
-
-
-
-
- Le champ SELECT multiple en HTML permet à l'utilisateur de
- sélectionner plusieurs éléments d'une liste.
- Ces éléments seront transmis à la page pointée par l'attribut
- action de la balise form.
- Le problème est que ces éléments sont tous passés avec le même nom de variable.
-
-
-]]>
-
- Chaque option sélectionnée arrivera au mécanisme de traitement sous la forme :
-
-var=option1
-var=option2
-var=option3
-
- Chaque option effacera donc le contenu de la précédente variable
- $var. La solution consiste à utiliser un tableau de variables
- dans cet élément de formulaire HTML, par exemple :
-
-
-]]>
-
- Cela fera que PHP traitera $var comme un tableau de
- variables et que chaque assignement de valeur à var[] ajoutera un index au tableau.
- La première option choisie sera mise dans $var[0],
- la suivante sera mise dans $var[1], etc. La fonction
- count peut être utilisée pour déterminer combien
- d'options ont été sélectionnées, et la fonction sort
- peut être utilisée pour trier le tableau, si nécessaire.
-
-
- Notez que si vous utilisez Javascript, [] dans le nom de l'élément peut
- vous poser problème lorsque vous tenterez d'accéder à celui-ci par son nom.
- Utilisez plutôt l'indice numérique de l'élément dans ce cas, ou bien utilisez les simples
- guillemets pour entourer cet élément, comme :
-
-variable = document.forms[0].elements['var[]'];
-
-
-
-
-
-
-
-
- Comment puis-je passer une variable de Javascript vers PHP ?
-
-
-
-
- Javascript est (habituellement) une technologie côté client et PHP
- est (habituellement) une technologie côté serveur et sachant que HTTP est un
- protocole statique, les deux langages ne peuvent pas directement partager des
- variables.
-
-
- Cependant, il est possible de faire passer des variables entre les deux.
- Une des solutions pour cela est de générer un code Javascript à l'aide de PHP
- et de faire rafraîchir le navigateur tout seul, passant ainsi des variables spécifiques
- au script PHP. L'exemple suivant montre précisément comme réaliser cela --
- il permet à PHP de récupérer les dimensions de l'écran du client, ce qui est normalement
- possible qu'en technologie côté client.
-
-
-
- Génération de Javascript avec PHP
-
-\n";
- echo 'La hauteur de l\'écran est : ' . $_GET['hauteur'] . " \n";
-} else {
- // passage des variables de dimensions
- // (préservation de la requête d'origine
- // -- les variables par méthode POST doivent être traitées différemment)
-
- echo "\n";
- exit();
-}
-?>
-]]>
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+ PHP et HTML
+ PHP et HTML
+
+
+ PHP et HTML sont très interactifs : PHP peut générer du HTML et HTML
+ peut passer des informations à PHP. Avant de lire cette faq (foire aux
+ questions), il est important que vous appreniez comment récupérer des variables externes à PHP.
+ La page du manuel correspondante contient beaucoup d'exemples.
+
+
+
+
+
+
+ Quel encodage/décodage ai-je besoin lors du passage d'une valeur via
+ un formulaire/une URL ?
+
+
+
+
+ Il y a plusieurs étapes pour lesquelles le codage est important. En supposant que vous avez
+ une string$data, qui contient la chaîne
+ que vous voulez passer de manière non-encodée, voici les étapes appropriées :
+
+
+
+ Interprétation HTML. Afin d'indiquer une chaîne aléatoire, vous
+ devez l'inclure entre doubles guillemets et
+ utiliser la fonction htmlspecialchars pour encoder
+ la chaîne.
+
+
+
+
+ URL : une URL est constituée de plusieurs parties. Si vous voulez que vos données
+ soient interprétées comme un seul élément, vous devez
+ les encoder avec la fonction urlencode.
+
+
+
+
+
+
+ Un élément de formulaire HTML caché
+
+'."\n";
+?>
+]]>
+
+
+
+
+ Il n'est pas correct d'utiliser la fonction urlencode
+ pour vos données $data, car il en est de la responsabilité du
+ navigateur de les encoder. Tous les navigateurs populaires le font correctement.
+ Notez que cela s'effectue sans considération de la méthode utilisée
+ (c'est-à-dire
+ GET ou POST).
+ Vous devez uniquement noter ce cas pour les requêtes GET,
+ car les requêtes POST sont généralement cachées.
+
+
+
+ Données éditables par l'utilisateur
+
+\n";
+echo htmlspecialchars($data)."\n";
+echo '';
+?>
+]]>
+
+
+
+
+ Les données sont montrées dans le navigateur comme prévues, car celui-ci interprétera
+ les symboles HTML échappés.
+
+
+ Au moment de la validation, via la méthode GET ou
+ POST, les données devraient être
+ url-encodées par le navigateur avant le transfert et directement url-décodées par PHP.
+ Donc, finalement, vous n'avez pas à effectuer d'url-encodage/url-decodage vous-même,
+ tout est effectué automatiquement.
+
+
+
+ Dans une URL
+
+'."\n";
+?>
+]]>
+
+
+
+
+ En fait, vous simulez une requête GET HTML, il est nécessaire
+ d'utiliser manuellement la fonction urlencode sur vos données.
+
+
+
+
+ Vous devez utiliser htmlspecialchars sur l'URL complète,
+ car l'URL se comporte comme la valeur d'un attribut HTML. Dans ce cas, le navigateur
+ fera un htmlspecialchars sur la valeur et passera le résultat à
+ l'URL. PHP devrait comprendre l'URL correctement, car vous avez url-encodé les données.
+
+
+ Vous devez noter que & dans l'URL est remplacé par
+ &. Bien que la plupart des navigateurs devraient
+ corriger cela si vous l'oubliez, ce n'est pas toujours le cas. Donc, même si votre URL
+ n'est pas dynamique, vous devez utiliser
+ la fonction htmlspecialchars sur l'URL.
+
+
+
+
+
+
+
+
+
+
+ J'essaye d'utiliser <input type="image"> mais
+ les variables $foo.x et $foo.y
+ ne sont pas disponibles. $_GET['foo.x'] n'existe pas non plus.
+ Où sont-elles ?
+
+
+
+
+ Lorsque vous validez un formulaire, il est possible d'utiliser une image au lieu du bouton
+ standard de type "submit" avec une balise du type :
+
+
+]]>
+
+ Lorsque l'utilisateur clique sur l'image, le formulaire est transmis au serveur avec deux
+ variables supplémentaires : foo.x et
+ foo.y qui représentent les coordonnées du point cliqué.
+
+
+ Comme foo.x et foo.y sont
+ des noms de variables invalides en PHP, elles sont automatiquement converties
+ en foo_x et foo_y. Les points sont
+ remplacés par des soulignés. Donc, vous devez accéder à ces variables
+ comme n'importe quelle autre variable tel que décrit dans la section
+ "Variables provenant d'autres sources".
+ Par exemple, en utilisant $_GET['foo_x'].
+
+
+ Les espaces dans les noms de variables sont également converties en un souligné bas.
+
+
+
+
+
+
+
+
+ Comment créer un tableau dans une balise <form> HTML ?
+
+
+
+ Pour envoyer le résultat du <form> comme un tableau
+ de variables à votre script PHP, vous devez nommer, via l'attribut name, les balises
+ <input>, <select> ou <textarea> comme cela :
+
+
+
+
+
+]]>
+
+ Noter les crochets après le nom de la variable, c'est ce qui fait que celle-ci sera un tableau.
+ Vous pouvez grouper les éléments dans différents tableaux de variables en assignant le
+ même nom à différents éléments :
+
+
+
+
+
+]]>
+
+ Cela produira deux tableaux de variables, MonTableau et MonAutreTableau, qui seront
+ envoyés au script PHP. Il est également possible d'assigner des clés spécifiques à votre
+ tableau :
+
+
+
+
+
+]]>
+
+ Le tableau UnAutreTableau contiendra les clés 0, 1, email et telephone.
+
+
+
+
+ Le fait de spécifier une clé à un tableau est optionnel en HTML. Si vous ne le faites pas,
+ les clés du tableau suiveront l'ordre d'apparition des éléments dans le formulaire.
+ Dans notre premier exemple, le tableau contient les clés 0, 1, 2 et 3.
+
+
+
+
+ Voir aussi les
+ fonctions sur les tableaux de variables et la section
+ sur les
+ variables provenant d'autres sources.
+
+
+
+
+
+
+
+ Comment puis-je récupérer le résultat d'un champ HTML SELECT
+ multiple ?
+
+
+
+
+ Le champ SELECT multiple en HTML permet à l'utilisateur de
+ sélectionner plusieurs éléments d'une liste.
+ Ces éléments seront transmis à la page pointée par l'attribut
+ action de la balise form.
+ Le problème est que ces éléments sont tous passés avec le même nom de variable.
+
+
+]]>
+
+ Chaque option sélectionnée arrivera au mécanisme de traitement sous la forme :
+
+var=option1
+var=option2
+var=option3
+
+ Chaque option effacera donc le contenu de la précédente variable
+ $var. La solution consiste à utiliser un tableau de variables
+ dans cet élément de formulaire HTML, par exemple :
+
+
+]]>
+
+ Cela fera que PHP traitera $var comme un tableau de
+ variables et que chaque assignement de valeur à var[] ajoutera un index au tableau.
+ La première option choisie sera mise dans $var[0],
+ la suivante sera mise dans $var[1], etc. La fonction
+ count peut être utilisée pour déterminer combien
+ d'options ont été sélectionnées, et la fonction sort
+ peut être utilisée pour trier le tableau, si nécessaire.
+
+
+ Notez que si vous utilisez Javascript, [] dans le nom de l'élément peut
+ vous poser problème lorsque vous tenterez d'accéder à celui-ci par son nom.
+ Utilisez plutôt l'indice numérique de l'élément dans ce cas, ou bien utilisez les simples
+ guillemets pour entourer cet élément, comme :
+
+variable = document.forms[0].elements['var[]'];
+
+
+
+
+
+
+
+
+ Comment puis-je passer une variable de Javascript vers PHP ?
+
+
+
+
+ Javascript est (habituellement) une technologie côté client et PHP
+ est (habituellement) une technologie côté serveur et sachant que HTTP est un
+ protocole statique, les deux langages ne peuvent pas directement partager des
+ variables.
+
+
+ Cependant, il est possible de faire passer des variables entre les deux.
+ Une des solutions pour cela est de générer un code Javascript à l'aide de PHP
+ et de faire rafraîchir le navigateur tout seul, passant ainsi des variables spécifiques
+ au script PHP. L'exemple suivant montre précisément comme réaliser cela --
+ il permet à PHP de récupérer les dimensions de l'écran du client, ce qui est normalement
+ possible qu'en technologie côté client.
+
+
+
+ Génération de Javascript avec PHP
+
+\n";
+ echo 'La hauteur de l\'écran est : ' . $_GET['hauteur'] . " \n";
+} else {
+ // passage des variables de dimensions
+ // (préservation de la requête d'origine
+ // -- les variables par méthode POST doivent être traitées différemment)
+
+ echo "\n";
+ exit();
+}
+?>
+]]>
+
+
+
+
+
+
+
+
+
+
From 63cc334c01a11fe135c4837d155fd68a2415a14b Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:37:58 +0100
Subject: [PATCH 14/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20faq/mailinglist.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
faq/mailinglist.xml | 428 ++++++++++++++++++++++----------------------
1 file changed, 214 insertions(+), 214 deletions(-)
diff --git a/faq/mailinglist.xml b/faq/mailinglist.xml
index 5ab70bd35f..07ae83fb5c 100644
--- a/faq/mailinglist.xml
+++ b/faq/mailinglist.xml
@@ -1,214 +1,214 @@
-
-
-
-
-
-
- Listes de diffusion
- Listes de diffusion
-
-
- Cette section traite des questions à propos de la communication avec la communauté PHP.
- Le meilleur moyen est l'utilisation des listes de diffusion.
-
-
-
-
-
- Existe-t-il des listes de diffusion PHP ?
-
-
-
- Bien sûr ! Il y a beaucoup de listes de diffusion traitant de beaucoup de sujets.
- Une liste des listes de diffusion les plus communes peut être trouvée sur cette
- page.
-
-
- La liste de diffusion la plus générale est la liste php-general.
- Pour s'y inscrire, envoyez un courriel vide à
- &url.ml.general.subscribe;.
- Pour se déinscrire, envoyez un courriel vide à
- &url.ml.general.unsubscribe;.
-
-
- Vous pouvez également vous inscrire et vous désinscrire en utilisant
- l'interface web sur cette page;
- les instructions pour se désinscrire sont également présentes en bas
- de chaque courriel de la liste.
-
-
-
-
-
-
- Y a-t-il d'autres communautés ?
-
-
-
- Il y a énormément de communautés PHP à travers le monde, et nous avons une liste
- de la plupart des ressources (ainsi que des informations pour en connaître
- d'autres) sur notre page de support.
-
-
-
-
-
-
- Puis-je mettre en place ma propre liste de diffusion PHP ?
-
-
-
- Absolument ! En fait, nous ne faisons pas que l'autoriser, mais nous l'encourageons !
- Le fait d'aider les autres en partageant ses compétences et son expérience de PHP
- aide dans le développement de la communauté PHP mais aussi dans le langage
- en tant que tel.
-
-
-
-
-
-
-
- Aidez-moi ! Je ne peux visiblement pas m'inscrire à une / me désinscrire d'une
- des listes de diffusion !
-
-
-
-
- La raison la plus courante pour laquelle les gens ont du mal à se désabonner de nos
- listes de diffusion c'est à cause des courriels redirigés. Par exemple, si
- votre adresse e-mail est elephpant@example.com, mais que vous vous
- êtes abonné à la liste de diffusion en utilisant la redirection php-lists@example.com et que vous redirigez cela vers
- elephpant@example.com, tenter de vous désabonner de elephpant@example.com ne fonctionnera pas,
- car cette adresse n'est même pas connue de nos systèmes. Au lieu de cela, vous devrez vous désabonner
- de l'adresse vers laquelle le courrier est envoyé, en envoyant un e-mail depuis
- cette adresse — dans cet exemple, php-lists@example.com.
-
-
-
-
-
-
- Y a-t-il une archive des listes de diffusion quelque part ?
-
-
-
- Oui, vous pouvez trouver la liste des sites proposant des archives
- sur la page des
- listes de diffusion.
- Vous pouvez également trouver plusieurs sites qui archivent ou publient
- le contenu de nos listes de diffusion en utilisant votre moteur de
- recherche Internet préféré, en cherchant, par exemple, la chaîne
- "php mailing list archives".
-
-
- Tous les messages de nos listes de diffusion sont également archivés
- dans des newsgroup. Vous pouvez accéder à ces serveurs sur &url.php.news; avec un client adapté.
- Il y a également une interface web expérimentale pour ces serveurs à l'adresse
- &url.php.newsweb;
-
-
-
-
-
-
- Que puis-je demander sur les listes de diffusion ?
-
-
-
- PHP devient de plus en plus populaire chaque jour, augmentant ainsi
- le trafic sur la liste de diffusion php-general qui accueille
- de 75 à 200 messages chaque jour. Aussi, c'est dans l'intérêt de tous que d'utiliser
- la liste de diffusion en dernier ressort, lorsque vous avez déjà épuisé toutes les
- autres voies.
-
-
- Avant de poster sur cette liste, merci de lire la FAQ (Foire Aux Questions) afin
- de voir si vous n'y trouvez pas de l'aide. S'il n'y a rien concernant votre problème,
- essayez dans les archives de la liste de diffusion (voir précédemment).
- Si vous avez des problèmes pour l'installation ou la configuration de PHP,
- lisez toute la documentation s'y rapportant, ainsi que les fichiers README.
- Si vous ne trouvez toujours pas de réponse à votre problème, vous
- êtes le bienvenu sur la liste de diffusion.
-
-
- Afin d'avoir la meilleure réponse à votre question (et pour éviter d'agacer
- les développeurs), assurez-vous de poser votre question sur la liste de diffusion
- appropriée. Par exemple, si vous avez des difficultés à installer PHP, vous
- devez poser votre question sur la liste de diffusion php-install.
- Attention : certaines listes ont des noms similaires, mais des usages totalement
- différents ; une question vis à vis des scripts PHP sous Windows doit être
- dirigée vers la liste des utilisateurs PHP sous Windows, et non
- vers la liste interne Windows.
-
-
- Avant de poser une question, vous devriez lire l'article intitulé
- "Comment poser une
- question de la meilleure façon" ; c'est une bonne idée, pour tout le monde.
-
-
-
-
-
-
- Quelle information devrais-je inclure lors de l'écriture de mon message à la
- liste de diffusion ?
-
-
-
- Les messages comme "Je n'arrive pas à faire fonctionner PHP !! Aidez-moi !!
- Qu'est-ce qu'il ne va pas ??" sont totalement inutiles, pour tous.
- Si vous avez des problèmes pour faire fonctionner PHP, vous devez inclure
- le système sur lequel le problème survient, quelle version de PHP vous tentez
- de faire fonctionner, sous quelle forme vous l'avez installée (précompilé,
- Git, RPMs, etc.), qu'est-ce que vous avez fait pour le moment, l'endroit où vous
- êtes coincé et quel est le message d'erreur.
-
-
- Cela est valable pour n'importe quel type de problème. Vous devez inclure les informations
- sur ce que vous avez fait, où vous êtes coincé, ce que vous cherché à faire et, si possible,
- le message d'erreur obtenu. Si vous avez un problème avec votre code source, vous
- devez également inclure la portion de code qui ne fonctionne pas. N'incluez que le code
- nécessaire à la compréhension du problème ! Si vous incluez tout le code, votre message
- sera difficile à lire et, à cause de cela, beaucoup de personnes passeront sans même le lire.
- Si vous n'êtes pas sûr sur la quantité d'informations à inclure à votre message,
- il est préférable d'en mettre trop que pas assez et préparez-vous à fournir d'autres
- informations.
-
-
- Un autre point important à ne pas oublier est de résumer votre problème
- dans l'objet du message. Un objet qui ressemble à "Aidez-moi !!!!" ou "Quel est le souci ici ?" sera
- ignoré par la majorité des lecteurs.
-
-
- Et pour finir, vous êtes encouragé à lire l'article sur
- "Comment poser une question de la meilleure
- façon", ce qui sera une aide énorme pour tous, et tout spécialement pour vous.
-
-
-
-
-
-
-
+
+
+
+
+
+
+ Listes de diffusion
+ Listes de diffusion
+
+
+ Cette section traite des questions à propos de la communication avec la communauté PHP.
+ Le meilleur moyen est l'utilisation des listes de diffusion.
+
+
+
+
+
+ Existe-t-il des listes de diffusion PHP ?
+
+
+
+ Bien sûr ! Il y a beaucoup de listes de diffusion traitant de beaucoup de sujets.
+ Une liste des listes de diffusion les plus communes peut être trouvée sur cette
+ page.
+
+
+ La liste de diffusion la plus générale est la liste php-general.
+ Pour s'y inscrire, envoyez un courriel vide à
+ &url.ml.general.subscribe;.
+ Pour se déinscrire, envoyez un courriel vide à
+ &url.ml.general.unsubscribe;.
+
+
+ Vous pouvez également vous inscrire et vous désinscrire en utilisant
+ l'interface web sur cette page;
+ les instructions pour se désinscrire sont également présentes en bas
+ de chaque courriel de la liste.
+
+
+
+
+
+
+ Y a-t-il d'autres communautés ?
+
+
+
+ Il y a énormément de communautés PHP à travers le monde, et nous avons une liste
+ de la plupart des ressources (ainsi que des informations pour en connaître
+ d'autres) sur notre page de support.
+
+
+
+
+
+
+ Puis-je mettre en place ma propre liste de diffusion PHP ?
+
+
+
+ Absolument ! En fait, nous ne faisons pas que l'autoriser, mais nous l'encourageons !
+ Le fait d'aider les autres en partageant ses compétences et son expérience de PHP
+ aide dans le développement de la communauté PHP mais aussi dans le langage
+ en tant que tel.
+
+
+
+
+
+
+
+ Aidez-moi ! Je ne peux visiblement pas m'inscrire à une / me désinscrire d'une
+ des listes de diffusion !
+
+
+
+
+ La raison la plus courante pour laquelle les gens ont du mal à se désabonner de nos
+ listes de diffusion c'est à cause des courriels redirigés. Par exemple, si
+ votre adresse e-mail est elephpant@example.com, mais que vous vous
+ êtes abonné à la liste de diffusion en utilisant la redirection php-lists@example.com et que vous redirigez cela vers
+ elephpant@example.com, tenter de vous désabonner de elephpant@example.com ne fonctionnera pas,
+ car cette adresse n'est même pas connue de nos systèmes. Au lieu de cela, vous devrez vous désabonner
+ de l'adresse vers laquelle le courrier est envoyé, en envoyant un e-mail depuis
+ cette adresse — dans cet exemple, php-lists@example.com.
+
+
+
+
+
+
+ Y a-t-il une archive des listes de diffusion quelque part ?
+
+
+
+ Oui, vous pouvez trouver la liste des sites proposant des archives
+ sur la page des
+ listes de diffusion.
+ Vous pouvez également trouver plusieurs sites qui archivent ou publient
+ le contenu de nos listes de diffusion en utilisant votre moteur de
+ recherche Internet préféré, en cherchant, par exemple, la chaîne
+ "php mailing list archives".
+
+
+ Tous les messages de nos listes de diffusion sont également archivés
+ dans des newsgroup. Vous pouvez accéder à ces serveurs sur &url.php.news; avec un client adapté.
+ Il y a également une interface web expérimentale pour ces serveurs à l'adresse
+ &url.php.newsweb;
+
+
+
+
+
+
+ Que puis-je demander sur les listes de diffusion ?
+
+
+
+ PHP devient de plus en plus populaire chaque jour, augmentant ainsi
+ le trafic sur la liste de diffusion php-general qui accueille
+ de 75 à 200 messages chaque jour. Aussi, c'est dans l'intérêt de tous que d'utiliser
+ la liste de diffusion en dernier ressort, lorsque vous avez déjà épuisé toutes les
+ autres voies.
+
+
+ Avant de poster sur cette liste, merci de lire la FAQ (Foire Aux Questions) afin
+ de voir si vous n'y trouvez pas de l'aide. S'il n'y a rien concernant votre problème,
+ essayez dans les archives de la liste de diffusion (voir précédemment).
+ Si vous avez des problèmes pour l'installation ou la configuration de PHP,
+ lisez toute la documentation s'y rapportant, ainsi que les fichiers README.
+ Si vous ne trouvez toujours pas de réponse à votre problème, vous
+ êtes le bienvenu sur la liste de diffusion.
+
+
+ Afin d'avoir la meilleure réponse à votre question (et pour éviter d'agacer
+ les développeurs), assurez-vous de poser votre question sur la liste de diffusion
+ appropriée. Par exemple, si vous avez des difficultés à installer PHP, vous
+ devez poser votre question sur la liste de diffusion php-install.
+ Attention : certaines listes ont des noms similaires, mais des usages totalement
+ différents ; une question vis à vis des scripts PHP sous Windows doit être
+ dirigée vers la liste des utilisateurs PHP sous Windows, et non
+ vers la liste interne Windows.
+
+
+ Avant de poser une question, vous devriez lire l'article intitulé
+ "Comment poser une
+ question de la meilleure façon" ; c'est une bonne idée, pour tout le monde.
+
+
+
+
+
+
+ Quelle information devrais-je inclure lors de l'écriture de mon message à la
+ liste de diffusion ?
+
+
+
+ Les messages comme "Je n'arrive pas à faire fonctionner PHP !! Aidez-moi !!
+ Qu'est-ce qu'il ne va pas ??" sont totalement inutiles, pour tous.
+ Si vous avez des problèmes pour faire fonctionner PHP, vous devez inclure
+ le système sur lequel le problème survient, quelle version de PHP vous tentez
+ de faire fonctionner, sous quelle forme vous l'avez installée (précompilé,
+ Git, RPMs, etc.), qu'est-ce que vous avez fait pour le moment, l'endroit où vous
+ êtes coincé et quel est le message d'erreur.
+
+
+ Cela est valable pour n'importe quel type de problème. Vous devez inclure les informations
+ sur ce que vous avez fait, où vous êtes coincé, ce que vous cherché à faire et, si possible,
+ le message d'erreur obtenu. Si vous avez un problème avec votre code source, vous
+ devez également inclure la portion de code qui ne fonctionne pas. N'incluez que le code
+ nécessaire à la compréhension du problème ! Si vous incluez tout le code, votre message
+ sera difficile à lire et, à cause de cela, beaucoup de personnes passeront sans même le lire.
+ Si vous n'êtes pas sûr sur la quantité d'informations à inclure à votre message,
+ il est préférable d'en mettre trop que pas assez et préparez-vous à fournir d'autres
+ informations.
+
+
+ Un autre point important à ne pas oublier est de résumer votre problème
+ dans l'objet du message. Un objet qui ressemble à "Aidez-moi !!!!" ou "Quel est le souci ici ?" sera
+ ignoré par la majorité des lecteurs.
+
+
+ Et pour finir, vous êtes encouragé à lire l'article sur
+ "Comment poser une question de la meilleure
+ façon", ce qui sera une aide énorme pour tous, et tout spécialement pour vous.
+
+
+
+
+
+
+
From 10492af35e18a1e24f268733f3abf5d21953a37a Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:38:03 +0100
Subject: [PATCH 15/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20features/commandline.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
features/commandline.xml | 4060 +++++++++++++++++++-------------------
1 file changed, 2030 insertions(+), 2030 deletions(-)
diff --git a/features/commandline.xml b/features/commandline.xml
index 4f4d8ef2cf..005e9711ce 100755
--- a/features/commandline.xml
+++ b/features/commandline.xml
@@ -1,2030 +1,2030 @@
-
-
-
-
-
- Utiliser PHP en ligne de commande
- Utilisation des lignes de commande
-
-
-
- Introduction
-
-
- Le but premier de &cli.sapi; est le développement
- d'applications shell avec PHP. Les différences entre le &cli.sapi;
- et les autres SAPI sont
- expliqués dans ce chapitre. Il est important de mentionner que &cli;
- et CGI sont des SAPI différents malgré
- le fait qu'ils puissent partager la majeure partie de leurs comportements.
-
-
-
- Le &cli.sapi; est activé par défaut en utilisant l'option
- , mais vous pouvez le désactiver
- en utilisant l'option
- lors de l'exécution de la commande ./configure.
-
-
-
- Le nom, l'emplacement et l'existence des binaires &cli;/CGI
- vont dépendre de la façon dont PHP est installé sur votre système. Par
- défaut, en exécutant make, les deux binaires CGI
- et &cli; sont compilés et nommés respectivement sapi/cgi/php-cgi et
- sapi/cli/php dans votre répertoire source PHP. Vous
- remarquerez que les deux se nomment php. Ce qui se passe
- ensuite pendant le make install dépend de votre ligne
- de configuration. Si un module SAPI, apxs par exemple, a été choisi pendant la
- configuration, ou que l'option a été
- activée, le &cli; est copié dans {PREFIX}/bin/php pendant
- le make install sinon, le CGI sera placé ici.
- Si, par exemple, figure dans votre
- ligne de configuration, le &cli; est copié dans {PREFIX}/bin/php
- pendant le make install. Si vous voulez forcer l'installation du
- binaire CGI, lancez make install-cli
- après le make install. Sinon, vous pouvez aussi spécifier
- dans votre ligne de configuration.
-
-
-
-
- Du fait que les deux options et
- sont activées par défaut, avoir simplement
- dans votre ligne de configuration
- n'implique pas nécessairement que le CLI soit renommé en
- {PREFIX}/bin/php pendant le make install.
-
-
-
-
- Le binaire &cli; est distribué dans le dossier principal
- sous le nom de php.exe sous Windows. La version
- CGI est distribuée sous le nom de php-cgi.exe.
- De plus, un fichier php-win.exe est distribué si PHP
- est configuré en utilisant l'option de configuration
- . Ce fichier fait la
- même chose que la version &cli;, sauf qu'il n'affiche rien et qu'il ne fournit
- pas de console.
-
-
-
- Quel SAPI est installé ?
-
- À partir d'un terminal, lancer php -v vous dira si
- php est en version CGI ou
- &cli;. Vous pouvez aussi consulter la fonction
- php_sapi_name et la constante
- PHP_SAPI.
-
-
-
-
- Une page man de manuel Unix est disponible
- en tapant man php dans l'interpréteur de commande.
-
-
-
-
-
-
-
- Différences avec les autres SAPIs
-
-
- Les différences les plus notables entre le &cli; SAPI et les
- SAPI sont :
-
-
-
- Contrairement au CGI SAPI, aucun
- en-tête HTTP n'est écrit dans le résultat.
-
-
- Bien que le CGI SAPI fournisse un
- moyen de supprimer les en-têtes HTTP, il n'est pas possible d'activer les
- en-têtes HTTP dans le &cli.sapi;.
-
-
- &cli; est lancé en mode silencieux par défaut, bien que les options
- et soient gardées
- pour rester compatible avec les anciennes versions CGI.
-
-
- Il ne change pas le répertoire courant en celui du script.
- (les options et sont
- gardées par souci de compatibilité)
-
-
- Messages d'erreurs en texte brut (pas de formatage HTML).
-
-
-
-
- Il y a plusieurs directives du &php.ini; qui sont ignorées par le
- &cli.sapi;, car elles n'ont pas de sens en environnement shell :
-
-
-
- Directives &php.ini; ignorées
-
-
-
- Directive
- Valeur par défaut pour &cli; SAPI
- Commentaire
-
-
-
-
- html_errors
- &false;
-
- Par défaut à &false;, vu qu'il peut être bien difficile de lire des messages
- d'erreur sur un terminal lorsqu'ils sont noyés dans des balises HTML
- non-interprétées.
-
-
-
- implicit_flush
- &true;
-
- Dans un terminal, il est généralement souhaitable que tout affichage en provenance de
- print,
- echo
- et autres, soit immédiatement affiché, et non pas placé dans un
- buffer quelconque. Néanmoins, il est toujours possible d'utiliser
- la bufferisation de sortie
- si vous voulez retarder un affichage, ou bien en manipuler le contenu
- une dernière fois.
-
-
-
- max_execution_time
- 0 (sans limite)
-
- PHP dans un terminal est susceptible d'être utilisé pour des tâches
- bien plus diverses que dans des scripts web, et vu que cela
- prend généralement beaucoup de temps, ce paramètre sera défini par défaut
- à 0 permettant ainsi d'être illimité.
-
-
-
- register_argc_argv
- &true;
-
-
- La définition à &true; de cette directive signifie que les scripts
- exécutés via le SAPI &cli; auront toujours
- accès à argc (représentant le nombre
- d'arguments passés à l'application) et
- argv (le tableau contenant les arguments passés).
-
-
- Les variables PHP $argc
- et $argv sont automatiquement définies et remplies
- avec les valeurs appropriées, lors de l'utilisation du
- SAPI &cli;. Ces valeurs peuvent également
- être trouvées dans la variable $_SERVER, par exemple :
- $_SERVER['argv'].
-
-
-
- La présence de $argv ou $_SERVER['argv']
- n'est pas une indication fiable qu'un script est exécuté depuis la
- ligne de commande, car ces variables peuvent être définies dans d'autres contextes
- lorsque register_argc_argv est activé.
- La valeur retournée par php_sapi_name devrait être vérifiée
- à la place.
-
-
-
-
-
-
-
-
-
-
- output_buffering
- &false;
-
-
- Même si cette configuration INI est codée en dur à &false;,
- les fonctions relatives à
- l'affichage du buffer
- sont disponibles.
-
-
-
-
- max_input_time
- &false;
-
-
- Le PHP &cli; ne supporte pas GET, POST et le téléchargement de fichiers.
-
-
-
-
-
-
-
-
-
- Ces directives ne peuvent pas être initialisées avec d'autres valeurs
- dans le fichier &php.ini; ou par une autre méthode. C'est une limitation,
- car ces valeurs par défaut s'appliquent une fois que tous les autres
- fichiers de configuration ont été analysés. Cependant, ces
- valeurs peuvent être modifiées durant l'exécution (ce qui n'est pas
- logique pour certaines directives, comme
- register_argc_argv).
-
-
-
-
- Il est recommandé de définir
- ignore_user_abort pour
- les scripts en ligne de commande. Voir la fonction
- ignore_user_abort pour plus d'informations.
-
-
-
-
-
-
- Pour faciliter le travail en environnement shell, plusieurs constantes
- sont définies pour les flux
- I/O.
-
-
-
-
-
- Le &cli.sapi; ne transforme pas
- le dossier courant en dossier d'exécution du script.
-
-
-
- Exemple montrant la différence avec le SAPI
- CGI :
-
-
-
-]]>
-
-
- Lorsque vous utilisez la version CGI, l'affichage sera :
-
-
-
-
-
- Cela montre clairement que PHP modifie le dossier
- courant, et utilise le dossier du script exécuté.
-
-
- En utilisant le &cli.sapi;, on obtient :
-
-
-
-
-
- Cela donne beaucoup plus de souplesse lorsque vous rédigez des
- scripts shell avec PHP.
-
-
-
-
- Le CGI SAPI se comporte de la même façon que le
- &cli.sapi;, en lui passant l'option
- , lorsque vous l'invoquez en ligne de commande.
-
-
-
-
-
-
-
-
-
-
- Options de ligne de commande
- Options
-
-
- La liste des options de ligne de commande fournies par PHP
- est disponible à n'importe quel moment en exécutant PHP avec l'option
- :
-
- [--] [args...]
- php [options] -r [--] [args...]
- php [options] [-B ] -R [-E ] [--] [args...]
- php [options] [-B ] -F [-E ] [--] [args...]
- php [options] -- [args...]
- php [options] -a
-
- -a Run interactively
- -c | Look for php.ini file in this directory
- -n No php.ini file will be used
- -d foo[=bar] Define INI entry foo with value 'bar'
- -e Generate extended information for debugger/profiler
- -f Parse and execute .
- -h This help
- -i PHP information
- -l Syntax check only (lint)
- -m Show compiled in modules
- -r Run PHP without using script tags ..?>
- -B Run PHP before processing input lines
- -R Run PHP for every input line
- -F Parse and execute for every input line
- -E Run PHP after processing all input lines
- -H Hide any passed arguments from external tools.
- -S : Run with built-in web server.
- -t Specify document root for built-in web server.
- -s Output HTML syntax highlighted source.
- -v Version number
- -w Output source with stripped comments and whitespace.
- -z Load Zend extension .
-
- args... Arguments passed to script. Use -- args when first argument
- starts with - or script is read from stdin
-
- --ini Show configuration file names
-
- --rf Show information about function .
- --rc Show information about class .
- --re Show information about extension .
- --rz Show information about Zend extension .
- --ri Show configuration for extension .
-]]>
-
-
-
-
-
- Options de ligne de commande
-
-
-
- Option
- Option longue
- Description
-
-
-
-
- -a
- --interactive
-
-
- Lance PHP de façon interactive. Pour plus d'informations, reportez-vous
- à la documentation concernant le shell interactif.
-
-
-
-
- -b
- --bindpath
-
-
- Lie le chemin pour les externes, en mode serveur FASTCGI
- (CGI uniquement).
-
-
-
-
- -C
- --no-chdir
-
-
- Ne pas aller dans le dossier du script (CGI uniquement).
-
-
-
-
- -q
- --no-header
-
-
- Mode silencieux. Supprime la sortie des en-têtes HTTP
- (CGI uniquement).
-
-
-
-
- -T
- --timing
-
-
- Mesure le temps d'exécution du script, répété count
- fois (CGI uniquement).
-
-
-
-
- -c
- --php-ini
-
-
- Spécifie le nom du dossier dans lequel se trouve le fichier &php.ini;,
- ou encore spécifie un fichier de configuration (INI)
- directement (qui ne s'appelle pas obligatoirement &php.ini;) :
-
-
-
-
-
-
-
-
-
- Si cette option n'est pas spécifiée, &php.ini; est recherché dans
- les endroits par défaut.
-
-
-
-
- -n
- --no-php-ini
-
-
- Ignore totalement &php.ini;.
-
-
-
-
- -d
- --define
-
-
- Définit une valeur personnalisée pour n'importe quelle directive
- de configuration du fichier &php.ini;. La syntaxe est :
-
-
-
-
-
-
- Exemple d'utilisation de -d pour définir une directive INI
-
-
-
-
-
-
-
-
- -e
- --profile-info
-
-
- Génère des informations étendues pour le profilage et le débogage.
-
-
-
-
- -f
- --file
-
-
- Analyse et exécute le fichier spécifié. L'option
- est facultative, et peut être omise. Le seul nom du fichier
- est suffisant.
-
-
-
-
- -h et -?
- --help et --usage
-
- Affiche des informations sur la liste courante des options de la
- ligne de commande, ainsi que leur description.
-
-
-
- -i
- --info
-
- Appelle la fonction phpinfo, et
- affiche le résultat. Si PHP ne fonctionne pas
- correctement, il est recommandé d'utiliser la commande php -i
- et de voir s'il n'y a pas d'erreurs affichées avant ou après la
- table d'information. N'oubliez pas que le résultat de cette
- option, si vous utilisez le mode CGI, est au format
- HTML, et donc de taille conséquente.
-
-
-
- -l
- --syntax-check
-
-
- Vérifie la syntaxe mais n'exécute pas le code PHP donné.
- L'entrée provenant de l'entrée standard sera traitée si aucun nom de fichier n'est spécifié,
- sinon chaque fichier spécifié sera vérifié.
- En cas de réussite, le message
- No syntax errors detected in <filename>
- (Littéralement, aucune erreur de syntaxe n'a été détectée dans le fichier)
- est affiché sur la sortie standard.
- En cas d'erreur, le message Errors parsing <filename>
- (Littéralement, erreur d'analyse dans le fichier filename)
- est affiché, en plus des messages d'erreurs détectés par l'analyseur
- lui-même.
- Si des erreurs sont trouvées dans les fichiers spécifiés (ou l'entrée standard),
- le code de retour du shell est défini à -1, sinon le
- code de retour du shell est défini à 0.
-
-
- Cette option ne détecte pas les erreurs fatales (par exemple les
- fonctions non définies) qui nécessitent l'exécution du code.
-
-
-
- Avant PHP 8.3.0, il n'était possible de spécifier qu'un seul nom de fichier
- à vérifier.
-
-
-
-
- Cette option ne fonctionne pas avec l'option .
-
-
-
-
-
- -m
- --modules
-
-
-
- Affichage des modules internes (et chargés) de PHP et Zend
-
-
-
-
-
-
-
-
- -r
- --run
-
-
- Permet l'exécution de PHP directement dans la ligne de commande.
- Les balises de PHP (<?php et ?>)
- ne sont pas nécessaires, et causeront
- une erreur d'analyse si elles sont présentes.
-
-
-
- Une attention toute particulière doit être portée lors de l'utilisation de cette option
- de PHP, pour qu'il n'y ait pas de collision avec
- les substitutions de variables en ligne de commande, réalisées par le
- shell.
-
-
- Erreur de syntaxe lors de l'utilisation de doubles guillemets
-
-
-
-
-
- Le problème ici est que le shell (sh/bash) effectue une substitution
- de variables, même avec les guillemets doubles ".
- Puisque la variable $foo n'est probablement pas
- définie dans le shell, elle est remplacée par rien, ce qui fait
- que le code passé à PHP pour l'exécution est :
-
-
-
-
-
-
-
- La solution de ce problème est d'utiliser les guillemets simples
- '. Les variables de ces chaînes ne seront pas
- substituées par leurs valeurs par le shell.
-
-
- Utilisation de guillemets simples pour éviter une substitution
- par le shell
-
-
- int(1)
- ["E_WARNING"]=>
- int(2)
- ["E_PARSE"]=>
- int(4)
- ["E_NOTICE"]=>
- int(8)
- ["E_CORE_ERROR"]=>
- [...]
-]]>
-
-
-
- Si un shell différent de sh/bash est utilisé, d'autres problèmes pourront
- être rencontrés - si approprié, un rapport de bogues pourra être ouvert via
- à &url.php.bugs;.
- Il est toujours très facile d'avoir des problèmes lorsque vous essayez
- d'inclure des variables shell dans le code, ou d'utiliser les antislashs
- pour la protection. Vous aurez été prévenu !
-
-
-
-
- est disponible avec le &cli.sapi;
- mais pas avec le SAPI CGI.
-
-
-
-
- Cette option est seulement utilisée pour des choses simples. Ainsi,
- quelques directives de configuration (par exemple auto_prepend_file et auto_append_file) sont ignorées
- dans ce mode.
-
-
-
-
-
- -B
- --process-begin
-
-
- Code PHP à exécuter avant le traitement de stdin.
-
-
-
-
- -R
- --process-code
-
-
- Code PHP à exécuter pour chaque ligne en entrée.
-
-
- Il y a deux variables spéciales de disponibles dans ce mode :
- $argn et $argi.
- $argn doit contenir la ligne PHP
- traitée à ce moment donné, tandis que
- $argi doit contenir le numéro de la ligne.
-
-
-
-
- -F
- --process-file
-
-
- Fichier PHP à exécuter pour chaque ligne en entrée.
-
-
-
-
- -E
- --process-end
-
-
- Code PHP à exécuter après avoir effectué l'entrée.
-
-
-
- Exemple d'utilisation des options ,
- et pour compter le nombre de lignes d'un projet.
-
-
-
-
-
-
-
-
-
- -S
- --server
-
-
- Démarre le serveur
- web interne.
-
-
-
-
- -t
- --docroot
-
- Spécifie la racine des documents pour le serveur web interne.
-
-
-
- -s
- --syntax-highlight et --syntax-highlighting
-
-
- Affiche le code avec la colorisation syntaxique.
-
-
- Cette option utilise le mécanisme interne pour analyser le fichier,
- et écrire au format HTML une version colorisée du code source.
- Notez que cette option ne fait que générer un bloc HTML, avec les balises HTML
- <code> [...] </code>, sans en-têtes HTML.
-
-
-
- Cette option ne fonctionne pas avec l'option .
-
-
-
-
-
- -v
- --version
-
-
- Utilisation de l'option pour récupérer le nom du SAPI
- ainsi que la version de PHP et de Zend
-
-
-
-
-
-
-
-
- -w
- --strip
-
-
- Affiche la source sans les commentaires ni les espaces.
-
-
-
- Cette option ne fonctionne pas avec l'option .
-
-
-
-
-
- -z
- --zend-extension
-
-
- Charge une extension Zend. Si et seulement si un fichier est fourni, PHP
- essaie de charger cette extension dans le dossier courant par défaut
- des bibliothèques sur votre système (généralement spécifié avec
- /etc/ld.so.conf sous Linux par exemple). Passer un nom de
- fichier avec le chemin complet fera que PHP utilisera ce fichier,
- sans recherche dans les dossiers classiques. Un chemin de dossier
- relatif, incluant les informations sur le dossier, indiquera à PHP qu'il doit
- chercher les extensions uniquement dans ce dossier.
-
-
-
-
-
- --ini
-
-
- Affiche les noms des fichiers de configuration et des dossiers analysés.
-
- Exemple avec --ini
-
-
-
-
-
-
-
-
- --rf
- --rfunction
-
-
- Affiche des informations sur la fonction donnée ou la méthode
- d'une classe (c.-à-d. nombre et nom des paramètres).
-
-
- Cette option n'est disponible que si PHP a été compilé avec le support
- Reflection.
-
-
-
- Exemple avec --rf
-
- public function var_dump ] {
-
- - Parameters [2] {
- Parameter #0 [ $var ]
- Parameter #1 [ $... ]
- }
-}
-]]>
-
-
-
-
-
-
- --rc
- --rclass
-
-
- Affiche des informations sur la classe donnée (liste des constantes,
- propriétés et méthodes).
-
-
- Cette option n'est disponible que si PHP a été compilé avec le support
- Reflection.
-
-
-
- Exemple avec --rc
-
- class Directory ] {
-
- - Constants [0] {
- }
-
- - Static properties [0] {
- }
-
- - Static methods [0] {
- }
-
- - Properties [0] {
- }
-
- - Methods [3] {
- Method [ public method close ] {
- }
-
- Method [ public method rewind ] {
- }
-
- Method [ public method read ] {
- }
- }
-}
-]]>
-
-
-
-
-
-
- --re
- --rextension
-
-
- Affiche les informations sur l'extension donnée (liste les options du
- &php.ini;, les fonctions définies, les constantes et les classes).
-
-
- Cette option n'est disponible que si PHP a été compilé avec le support
- Reflection.
-
-
-
- Exemple avec --re
-
- extension #19 json version 1.2.1 ] {
-
- - Functions {
- Function [ function json_encode ] {
- }
- Function [ function json_decode ] {
- }
- }
-}
-]]>
-
-
-
-
-
-
- --rz
- --rzendextension
-
-
- Affiche les informations de configuration pour l'extension Zend fournie
- (les mêmes informations que celles retournées par la fonction
- phpinfo).
-
-
-
-
- --ri
- --rextinfo
-
-
- Affiche les informations de configuration pour l'extension donnée (les
- mêmes informations retournées par la fonction phpinfo).
- Les informations de configurations internes
- sont disponibles en utilisant le nom d'extension "main".
-
-
-
- Exemple avec --ri
-
- enabled
-"Olson" Timezone Database Version => 2009.20
-Timezone Database => internal
-Default timezone => Europe/Oslo
-
-Directive => Local Value => Master Value
-date.timezone => Europe/Oslo => Europe/Oslo
-date.default_latitude => 59.930972 => 59.930972
-date.default_longitude => 10.776699 => 10.776699
-date.sunset_zenith => 90.583333 => 90.583333
-date.sunrise_zenith => 90.583333 => 90.583333
-]]>
-
-
-
-
-
-
-
-
-
-
-
-
- Les options -rBRFEH, --ini et
- --r[fcezi] ne sont disponibles qu'en mode &cli;.
-
-
-
-
-
-
-
- Exécution de fichiers PHP
- Utilisation
-
- Il y a 3 façons différentes d'appeler le &cli.sapi; avec du code PHP
- à exécuter :
-
-
-
- Indiquer à PHP d'exécuter un fichier donné :
-
-
-
-
-
-
-
- Les deux méthodes (en utilisant ou pas) exécutent le
- script contenu dans le fichier mon_script.php.
- Notez qu'il n'existe pas de restriction sur les fichiers pouvant
- être exécutés ; en particulier, il n'est pas nécessaire que l'extension
- du fichier soit .php.
-
-
-
-
- Donner du code PHP à exécuter directement en ligne de commande.
-
-
-
-
-
-
-
- Une attention particulière doit alors être apportée aux variables d'environnement,
- qui seront remplacées, et aux guillemets, qui ont des significations spéciales en
- ligne de commande.
-
-
-
- Lisez l'exemple attentivement, il n'y a ni balise d'ouverture, ni balise de fermeture !
- L'option rend caduque l'utilisation de celles-ci, et les ajouter conduirait
- alors à une erreur d'analyse syntaxique.
-
-
-
-
-
- Alimenter l'entrée standard en code PHP
- (stdin).
-
-
- Cela donne la possibilité de créer dynamiquement du code
- PHP, puis de le fournir à PHP, et enfin,
- de le traiter à nouveau en shell. Voici un exemple fictif :
-
-
-
- final_output.txt
-]]>
-
-
-
-
- Il n'est pas possible de combiner ces trois modes d'exécution.
-
-
-
- Comme toute application shell, l'exécutable PHP accepte
- des arguments ; cependant, le script PHP peut aussi en recevoir.
- Le nombre d'arguments pouvant être passés à votre script n'est pas limité par PHP
- (le shell a une limite en termes de nombre de caractères qui peuvent être passés.
- Généralement, vous n'atteindrez pas cette limite). Les arguments passés au script seront
- transmis via la variable tableau $argv. Le premier
- index (zéro) contient toujours le nom du script appelé depuis la ligne
- de commande. Notez que, si le code est exécuté en ligne en utilisant
- l'option de ligne commande , la valeur de $argv[0]
- sera "Standard input code"; antérieur à PHP 7.2.0,
- c'était un tiret ("-") à la place. Cela est aussi vrai si
- le code est exécuté via un pipe depuis STDIN.
-
-
-
- Une seconde variable globale, $argc, contient le nombre
- d'éléments du tableau $argv
- (et non pas le nombre d'arguments passés
- à votre script).
-
-
-
- Tant que les arguments passés au script ne commencent pas par
- le caractère -, il n'y a rien de spécial à surveiller.
- Le fait de passer des arguments au script qui commencent par
- - pose des problèmes car PHP
- va penser qu'il doit les interpréter. Pour éviter cela, utilisez le séparateur
- --. Après cet argument, tous les arguments suivants seront
- passés au script sans être modifiés ou analysés par PHP.
-
-
-
- [args...]
-[...]
-
-# Cela va passer l'argument '-h' au script, et éviter que PHP ne le traite
-$ php -r 'var_dump($argv);' -- -h
-array(2) {
- [0]=>
- string(1) "-"
- [1]=>
- string(2) "-h"
-}
-]]>
-
-
-
- Cependant, il y a une autre méthode pour utiliser PHP en script shell ;
- la première ligne du script devra être #!/usr/bin/php
- (à remplacer par le chemin vers le binaire PHP &cli; sur le système sous-jacent).
- Le reste du fichier doit contenir le code PHP normal, compris entre les
- balises ouvrantes/fermantes. Après avoir mis les droits d'exécution sur le
- script (chmod +x test), il peut être exécuté comme un script
- shell ou perl habituel :
-
-
-
- Exécute un script PHP en tant que script shell
-
-
-]]>
-
-
- En supposant que ce fichier s'appelle test, dans le
- dossier courant, il est alors possible de faire ceci :
-
-
-
- string(6) "./test"
- [1]=>
- string(2) "-h"
- [2]=>
- string(2) "--"
- [3]=>
- string(3) "foo"
-}
-]]>
-
-
-
-
- Comme vous pouvez le voir, dans ce cas, vous n'avez pas besoin
- de faire attention lors du passage de paramètres qui commencent par
- - à votre script.
-
-
-
- L'exécutable PHP peut être utilisé pour exécuter des scripts indépendants du
- serveur web. Si vous êtes sur un système Unix, il est recommandé d'ajouter
- la ligne spéciale en début de script, de le rendre exécutable de
- manière que le système sache quel programme doit exécuter le script.
- Sous Windows, vous pouvez associer l'exécutable php.exe
- avec le double-clic sur les fichiers d'extension .php,
- ou bien vous pouvez faire un fichier batch pour exécuter le script grâce
- à PHP. La première ligne utilisée dans le monde Unix ne perturbera pas
- l'exécution sous Windows, ce qui rend les scripts facilement portables. Un exemple
- complet est disponible ci-dessous :
-
-
-
- Script prévu pour être exécuté en ligne de commande (script.php)
-
-
-
-C'est une ligne de commande à une option.
-
- Utilisation :
-
-
-
-
-
- Le script ci-dessus inclut la première ligne spéciale indiquant que ce fichier
- doit être exécuté par PHP. Nous travaillons ici avec la version &cli;, aussi,
- aucun en-tête HTTP ne sera affiché.
-
-
-
- Le programme commence par vérifier que l'argument requis est spécifié
- (en plus du nom du script, qui est aussi compté). S'il n'est pas présent,
- ou si l'argument est , ,
- ou , un message d'aide sera affiché,
- en utilisant $argv[0] pour afficher dynamiquement le nom
- du script tel qu'entré dans la ligne de commande. Sinon, l'argument est affiché
- tel qu'il a été entré dans le terminal.
-
-
-
- Pour exécuter le script ci-dessus sous Unix, vous devez le rendre
- exécutable, puis l'appeler avec une commande comme :
- script.php echothis ou
- script.php -h. Sous Windows, vous pouvez faire un
- fichier batch pour cela :
-
-
-
-
- Fichier batch pour exécuter un script PHP en ligne de commande (script.bat)
-
-
-
-
-
-
-
- En supposant que le programme ci-dessus est nommé
- script.php, et que l'exécutable &cli;
- php.exe se trouve dans
- C:\php\php.exe, ce fichier batch l'exécutera
- avec les options que vous lui passez :
- script.bat echothis ou
- script.bat -h.
-
-
-
- Voir aussi l'extension Readline,
- qui dispose de nombreuses fonctions pour améliorer la convivialité
- des applications PHP en ligne de commande.
-
-
-
- Sous Windows, PHP peut être configuré pour fonctionner sans avoir
- besoin de fournir les extensions C:\php\php.exe
- ou .php, tel que décrit dans
- la ligne de commande PHP sous
- Microsoft Windows.
-
-
-
-
- Sous Windows, il est recommandé d'exécuter PHP sous un compte utilisateur.
- Lorsque PHP est exécuté sous un service réseau, certaines opérations peuvent
- échouer, car "Aucun lien entre les noms de compte et les identifiants de
- sécurité n'est réalisé".
-
-
-
-
-
-
-
-
- Flux d'entrée/sortie
- Flux I/O
-
-
- Le &cli.sapi; définit quelques constantes pour les flux I/O pour
- rendre la programmation en ligne de commande plus facile.
-
-
-
-
- Constantes spécifiques CLI
-
-
-
- Constante
- Description
-
-
-
-
- STDIN
-
-
- Un flux déjà ouvert vers stdin. Ceci évite de
- l'ouvrir explicitement avec
-
-
-]]>
-
- Si vous voulez lire une seule ligne depuis stdin,
- vous pouvez utiliser
-
-
-]]>
-
-
-
-
-
- STDOUT
-
-
- Un flux déjà ouvert vers stdout. Ceci évite de
- l'ouvrir explicitement avec
-
-
-]]>
-
-
-
-
-
- STDERR
-
-
- Un flux déjà ouvert vers stderr.
- Ceci évite de l'ouvrir explicitement avec
-
-
-]]>
-
-
-
-
-
-
-
-
-
-
- Ainsi, vous n'avez pas besoin d'ouvrir un flux spécifique pour, par exemple,
- stderr mais vous pouvez simplement utiliser la constante
- correspondante à ce flux :
-
-
-
- Vous n'avez pas à clore explicitement ces flux, sachant qu'ils le seront
- automatiquement par PHP à la fin de votre script.
-
-
-
-
- Ces constantes ne sont pas disponibles lors d'une lecture d'un
- script PHP depuis stdin.
-
-
-
-
-
-
-
- Shell Interactif
-
-
- Le &cli.sapi; fournit un shell interactif lors de l'utilisation
- de l'option si PHP a été compilé avec l'option .
- Depuis PHP 7.1.0 le shell interactif est également disponible sur Windows,
- si l'extension readline est activée.
-
-
-
- En utilisant le shell interactif, vous avez la possibilité de taper du code PHP
- et qu'il soit exécuté directement.
-
-
-
- Exécution de code en utilisant le shell interactif
-
- echo 5+8;
-13
-php > function addTwo($n)
-php > {
-php { return $n + 2;
-php { }
-php > var_dump(addtwo(2));
-int(4)
-php >
-]]>
-
-
-
-
- Le shell interactif fournit également une autocomplétion des fonctions,
- des constantes, des noms de classes, des variables, des appels aux méthodes
- statiques et des constantes de classes en utilisant la touche de tabulation.
- Depuis PHP 8.4.0, le chemin vers le fichier d'historique peut être défini en utilisant la
- variable d'environnement PHP_HISTFILE.
-
-
-
- Auto-complétion en utilisant la touche de tabulation
-
- Le fait de presser deux fois la touche de tabulation lorsqu'il y a plusieurs
- complétions possibles affichera une liste de ces complétions :
-
-
- strp[TAB][TAB]
-strpbrk strpos strptime
-php > strp
-]]>
-
-
- Lorsqu'il n'y a qu'une seule complétion possible, presser la touche de tabulation
- une seule fois complétera le reste sur la même ligne :
-
-
- strpt[TAB]ime(
-]]>
-
-
- La complétion fonctionnera aussi pour les noms qui ont été définis lors
- de la session courante du shell interactif :
-
-
- $fooThisIsAReallyLongVariableName = 42;
-php > $foo[TAB]ThisIsAReallyLongVariableName
-]]>
-
-
-
-
- Le shell interactif stocke votre historique et peut y accéder en utilisant les touches
- haut et bas. L'historique est sauvegardé dans le fichier ~/.php_history.
-
-
-
- Le &cli.sapi; fournit 2 directives du &php.ini; :
- cli.pager et cli.prompt.
- La directive cli.pager permet la définition d'un programme
- externe (comme less) à utiliser comme pager pour la sortie
- au lieu d'afficher directement sur l'écran. La directive
- cli.prompt autorise la modification du prompte
- php >.
-
-
-
- Il est également possible de définir des directives du &php.ini;
- dans un shell interactif en utilisant des notations raccourcies.
-
-
-
- Définition de directives du &php.ini; dans un shell interactif
-
- La définition de la directive cli.prompt :
-
-
- #cli.prompt=hello world :>
-hello world :>
-]]>
-
-
- En utilisant des backticks, il est possible d'exécuter du code PHP
- dans le prompte :
-
-
- #cli.prompt=`echo date('H:i:s');` php >
-15:49:35 php > echo 'hi';
-hi
-15:49:43 php > sleep(2);
-15:49:45 php >
-]]>
-
-
- Définition du pager à less :
-
-
- #cli.pager=less
-php > phpinfo();
-(sortie affichée avec less)
-php >
-]]>
-
-
-
-
- La directive cli.prompt supporte quelques séquences d'échappements :
-
- Séquences d'échappements de cli.prompt
-
-
-
- Séquence :
- Description :
-
-
-
-
- \e
-
- utilisé pour ajouter des couleurs au prompte. Exemple :
- \e[032m\v \e[031m\b \e[34m\> \e[0m
-
-
-
- \v
- La version de PHP.
-
-
- \b
-
- Indique dans quel bloc de PHP nous nous trouvons.
- Par exemple, /* permet d'indiquer que nous
- sommes dans un commentaire multilignes. Le scope externe est représenté
- par php.
-
-
-
- \>
-
- Indique le caractère utilisé pour le prompte. Par défaut, ce sera
- >, mais peut être modifié lorsque le shell se
- trouve dans un bloc indéterminé ou dans une chaîne de caractères.
- Les caractères possibles sont : ' " {
- ( >
-
-
-
-
-
-
-
-
-
- Les fichiers inclus via auto_prepend_file et auto_append_file sont analysés
- dans ce mode, mais avec quelques restrictions - c.-à-d. les fonctions
- doivent avoir été définies avant l'appel.
-
-
-
-
- Mode interactif
-
- Si l'extension readline n'est pas disponible, antérieur à PHP 8.1.0,
- invoquer le &cli.sapi; avec l'option fournit le mode interactif.
- Dans ce mode, un script PHP complet est supposé être donné via STDIN,
- et après l'interruption
- avec
-
- CTRL
- D
-
- (POSIX) ou
-
- CTRL
- Z
-
- suivi de ENTER (Windows), ce script sera évalué.
- Ceci est basiquement identique à invoquer le &cli.sapi; sans l'option .
-
-
- À partir de PHP 8.1.0, invoquer le &cli.sapi; avec l'option
- échoue, si l'extension readline n'est pas disponible.
-
-
-
-
-
-
-
- Serveur web interne
-
-
-
- Ce serveur web est prévu pour aider dans le développement des applications.
- Il peut également être utile pour les tests, et pour les démonstrations
- d'applications qui sont exécutées dans des environnements contrôlés.
- Mais par contre, il n'a pas été conçu pour être un serveur web complet.
- Aussi, il ne devrait pas être utilisé dans un réseau public.
-
-
-
-
- Le &cli.sapi; fournit un serveur web interne.
-
-
-
- Le serveur web s'exécute sur un seul processus single-threaded,
- les applications PHP seront retardées/suspendues si une requête est bloquée.
-
-
-
- Les requêtes URI sont servies depuis le dossier de travail courant
- où PHP a été démarré, à moins que l'option -t ne soit utilisée pour spécifier
- explicitement un document racine. Si une requête URI ne spécifie
- pas un fichier, alors le fichier index.php ou le fichier
- index.html du dossier courant sera retourné. Si aucun de ces fichiers n'existe,
- la recherche d'un fichier index.php et index.html se poursuivra dans le dossier
- parent et ainsi de suite jusqu'à ce qu'un de ces fichier ne soit trouvé ou
- que le dossier racine ne soit atteint. Si un fichier index.php ou index.html
- est trouvé, il sera retourné et $_SERVER['PATH_INFO'] sera défini comme la
- dernière partie de l'URI. Sinon, un code réponse 404 sera retourné.
-
-
-
- Si un fichier PHP est fourni dans la ligne de commande lorsque le serveur web
- est démarré, il sera traité comme un script "routeur".
- Le script sera exécuté au début de chaque requête HTTP. Si ce script retourne
- &false;, alors la ressource demandée est retournée telle quelle.
- Sinon, la sortie du script est retournée au navigateur.
-
-
-
- Les types MIME standards sont retournés pour les fichiers avec les extensions :
-
- .3gp
- .apk
- .avi
- .bmp
- .css
- .csv
- .doc
- .docx
- .flac
- .gif
- .gz
- .gzip
- .htm
- .html
- .ics
- .jpe
- .jpeg
- .jpg
- .js
- .kml
- .kmz
- .m4a
- .mov
- .mp3
- .mp4
- .mpeg
- .mpg
- .odp
- .ods
- .odt
- .oga
- .ogg
- .ogv
- .pdf
- .png
- .pps
- .pptx
- .qt
- .svg
- .swf
- .tar
- .text
- .tif
- .txt
- .wav
- .webm
- .wmv
- .xls
- .xlsx
- .xml
- .xsl
- .xsd
- .zip
-
- .
-
-
-
- À partir de PHP 7.4.0, le serveur web intégré peut être configuré pour bifurquer plusieurs
- travailleurs afin de tester du code nécessitant plusieurs requêtes concurrentes
- au serveur web intégré.
- Définissez la variable d'environnement PHP_CLI_SERVER_WORKERS sur le
- nombre de travailleurs souhaité avant de démarrer le serveur.
-
-
-
- Cette fonctionnalité n'est pas prise en charge sur Windows.
-
-
-
-
- Cette fonctionnalité expérimentale n'est pas
- destinée à une utilisation en production. En général, le Serveur Web intégré
- n'est pas destiné à une utilisation en production.
-
-
-
-
- Démarrage du serveur web
-
-
-
-
- Le terminal affichera :
-
-
-
-
-
- Après des requêtes URI sur http://localhost:8000/ et
- http://localhost:8000/myscript.html, le terminal affichera quelques choses
- comme :
-
-
-
-
-
- Noter qu'avant PHP 7.4.0, les ressources statiques en lien symbolique
- ne sont pas accessibles sous Windows, tant que le script routeur
- ne le gère pas.
-
-
-
-
- Démarrage avec un dossier racine spécifique
-
-
-
-
- Le terminal affichera :
-
-
-
-
-
-
-
- Utilisation d'un script routeur
-
- Dans cet exemple, le fait de demander des images les affichera,
- mais les requêtes pour les fichiers HTML afficheront
- "Bienvenue chez PHP !".
-
-
-Bienvenue chez PHP !";
-}
-?>]]>
-
-
-
-
-
-
-
- Vérification de l'utilisation CLI du serveur Web
-
- Pour ré-utiliser un script router du framework lors du
- développement avec le CLI du serveur web et ensuite, continuez
- de l'utiliser avec un serveur web de production :
-
-
-]]>
-
-
-
-
-
-
-
- Gestion des types de fichiers non supportés
-
- Si vous devez servir une ressource statique pour laquelle le type
- MIME n'est pas géré par le CLI du serveur web, utilisez ceci :
-
-
-]]>
-
-
-
-
-
-
-
- Accès au CLI du serveur web depuis une machine distante
-
- Vous pouvez rendre le serveur web accessible sur le port 8000
- pour toutes les interfaces avec :
-
-
-
-
-
-
- Le serveur web intégré ne doit pas être utilisé sur un réseau public.
-
-
-
-
-
-
-
-
- Configurations INI
-
-
-
-
- &ini.descriptions.title;
-
-
-
-
-
- cli_server.color
- bool
-
-
-
- Active le serveur web de développement interne à utiliser
- la coloration ANSI du code dans la sortie du terminal.
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+ Utiliser PHP en ligne de commande
+ Utilisation des lignes de commande
+
+
+
+ Introduction
+
+
+ Le but premier de &cli.sapi; est le développement
+ d'applications shell avec PHP. Les différences entre le &cli.sapi;
+ et les autres SAPI sont
+ expliqués dans ce chapitre. Il est important de mentionner que &cli;
+ et CGI sont des SAPI différents malgré
+ le fait qu'ils puissent partager la majeure partie de leurs comportements.
+
+
+
+ Le &cli.sapi; est activé par défaut en utilisant l'option
+ , mais vous pouvez le désactiver
+ en utilisant l'option
+ lors de l'exécution de la commande ./configure.
+
+
+
+ Le nom, l'emplacement et l'existence des binaires &cli;/CGI
+ vont dépendre de la façon dont PHP est installé sur votre système. Par
+ défaut, en exécutant make, les deux binaires CGI
+ et &cli; sont compilés et nommés respectivement sapi/cgi/php-cgi et
+ sapi/cli/php dans votre répertoire source PHP. Vous
+ remarquerez que les deux se nomment php. Ce qui se passe
+ ensuite pendant le make install dépend de votre ligne
+ de configuration. Si un module SAPI, apxs par exemple, a été choisi pendant la
+ configuration, ou que l'option a été
+ activée, le &cli; est copié dans {PREFIX}/bin/php pendant
+ le make install sinon, le CGI sera placé ici.
+ Si, par exemple, figure dans votre
+ ligne de configuration, le &cli; est copié dans {PREFIX}/bin/php
+ pendant le make install. Si vous voulez forcer l'installation du
+ binaire CGI, lancez make install-cli
+ après le make install. Sinon, vous pouvez aussi spécifier
+ dans votre ligne de configuration.
+
+
+
+
+ Du fait que les deux options et
+ sont activées par défaut, avoir simplement
+ dans votre ligne de configuration
+ n'implique pas nécessairement que le CLI soit renommé en
+ {PREFIX}/bin/php pendant le make install.
+
+
+
+
+ Le binaire &cli; est distribué dans le dossier principal
+ sous le nom de php.exe sous Windows. La version
+ CGI est distribuée sous le nom de php-cgi.exe.
+ De plus, un fichier php-win.exe est distribué si PHP
+ est configuré en utilisant l'option de configuration
+ . Ce fichier fait la
+ même chose que la version &cli;, sauf qu'il n'affiche rien et qu'il ne fournit
+ pas de console.
+
+
+
+ Quel SAPI est installé ?
+
+ À partir d'un terminal, lancer php -v vous dira si
+ php est en version CGI ou
+ &cli;. Vous pouvez aussi consulter la fonction
+ php_sapi_name et la constante
+ PHP_SAPI.
+
+
+
+
+ Une page man de manuel Unix est disponible
+ en tapant man php dans l'interpréteur de commande.
+
+
+
+
+
+
+
+ Différences avec les autres SAPIs
+
+
+ Les différences les plus notables entre le &cli; SAPI et les
+ SAPI sont :
+
+
+
+ Contrairement au CGI SAPI, aucun
+ en-tête HTTP n'est écrit dans le résultat.
+
+
+ Bien que le CGI SAPI fournisse un
+ moyen de supprimer les en-têtes HTTP, il n'est pas possible d'activer les
+ en-têtes HTTP dans le &cli.sapi;.
+
+
+ &cli; est lancé en mode silencieux par défaut, bien que les options
+ et soient gardées
+ pour rester compatible avec les anciennes versions CGI.
+
+
+ Il ne change pas le répertoire courant en celui du script.
+ (les options et sont
+ gardées par souci de compatibilité)
+
+
+ Messages d'erreurs en texte brut (pas de formatage HTML).
+
+
+
+
+ Il y a plusieurs directives du &php.ini; qui sont ignorées par le
+ &cli.sapi;, car elles n'ont pas de sens en environnement shell :
+
+
+
+ Directives &php.ini; ignorées
+
+
+
+ Directive
+ Valeur par défaut pour &cli; SAPI
+ Commentaire
+
+
+
+
+ html_errors
+ &false;
+
+ Par défaut à &false;, vu qu'il peut être bien difficile de lire des messages
+ d'erreur sur un terminal lorsqu'ils sont noyés dans des balises HTML
+ non-interprétées.
+
+
+
+ implicit_flush
+ &true;
+
+ Dans un terminal, il est généralement souhaitable que tout affichage en provenance de
+ print,
+ echo
+ et autres, soit immédiatement affiché, et non pas placé dans un
+ buffer quelconque. Néanmoins, il est toujours possible d'utiliser
+ la bufferisation de sortie
+ si vous voulez retarder un affichage, ou bien en manipuler le contenu
+ une dernière fois.
+
+
+
+ max_execution_time
+ 0 (sans limite)
+
+ PHP dans un terminal est susceptible d'être utilisé pour des tâches
+ bien plus diverses que dans des scripts web, et vu que cela
+ prend généralement beaucoup de temps, ce paramètre sera défini par défaut
+ à 0 permettant ainsi d'être illimité.
+
+
+
+ register_argc_argv
+ &true;
+
+
+ La définition à &true; de cette directive signifie que les scripts
+ exécutés via le SAPI &cli; auront toujours
+ accès à argc (représentant le nombre
+ d'arguments passés à l'application) et
+ argv (le tableau contenant les arguments passés).
+
+
+ Les variables PHP $argc
+ et $argv sont automatiquement définies et remplies
+ avec les valeurs appropriées, lors de l'utilisation du
+ SAPI &cli;. Ces valeurs peuvent également
+ être trouvées dans la variable $_SERVER, par exemple :
+ $_SERVER['argv'].
+
+
+
+ La présence de $argv ou $_SERVER['argv']
+ n'est pas une indication fiable qu'un script est exécuté depuis la
+ ligne de commande, car ces variables peuvent être définies dans d'autres contextes
+ lorsque register_argc_argv est activé.
+ La valeur retournée par php_sapi_name devrait être vérifiée
+ à la place.
+
+
+
+
+
+
+
+
+
+
+ output_buffering
+ &false;
+
+
+ Même si cette configuration INI est codée en dur à &false;,
+ les fonctions relatives à
+ l'affichage du buffer
+ sont disponibles.
+
+
+
+
+ max_input_time
+ &false;
+
+
+ Le PHP &cli; ne supporte pas GET, POST et le téléchargement de fichiers.
+
+
+
+
+
+
+
+
+
+ Ces directives ne peuvent pas être initialisées avec d'autres valeurs
+ dans le fichier &php.ini; ou par une autre méthode. C'est une limitation,
+ car ces valeurs par défaut s'appliquent une fois que tous les autres
+ fichiers de configuration ont été analysés. Cependant, ces
+ valeurs peuvent être modifiées durant l'exécution (ce qui n'est pas
+ logique pour certaines directives, comme
+ register_argc_argv).
+
+
+
+
+ Il est recommandé de définir
+ ignore_user_abort pour
+ les scripts en ligne de commande. Voir la fonction
+ ignore_user_abort pour plus d'informations.
+
+
+
+
+
+
+ Pour faciliter le travail en environnement shell, plusieurs constantes
+ sont définies pour les flux
+ I/O.
+
+
+
+
+
+ Le &cli.sapi; ne transforme pas
+ le dossier courant en dossier d'exécution du script.
+
+
+
+ Exemple montrant la différence avec le SAPI
+ CGI :
+
+
+
+]]>
+
+
+ Lorsque vous utilisez la version CGI, l'affichage sera :
+
+
+
+
+
+ Cela montre clairement que PHP modifie le dossier
+ courant, et utilise le dossier du script exécuté.
+
+
+ En utilisant le &cli.sapi;, on obtient :
+
+
+
+
+
+ Cela donne beaucoup plus de souplesse lorsque vous rédigez des
+ scripts shell avec PHP.
+
+
+
+
+ Le CGI SAPI se comporte de la même façon que le
+ &cli.sapi;, en lui passant l'option
+ , lorsque vous l'invoquez en ligne de commande.
+
+
+
+
+
+
+
+
+
+
+ Options de ligne de commande
+ Options
+
+
+ La liste des options de ligne de commande fournies par PHP
+ est disponible à n'importe quel moment en exécutant PHP avec l'option
+ :
+
+ [--] [args...]
+ php [options] -r [--] [args...]
+ php [options] [-B ] -R [-E ] [--] [args...]
+ php [options] [-B ] -F [-E ] [--] [args...]
+ php [options] -- [args...]
+ php [options] -a
+
+ -a Run interactively
+ -c | Look for php.ini file in this directory
+ -n No php.ini file will be used
+ -d foo[=bar] Define INI entry foo with value 'bar'
+ -e Generate extended information for debugger/profiler
+ -f Parse and execute .
+ -h This help
+ -i PHP information
+ -l Syntax check only (lint)
+ -m Show compiled in modules
+ -r Run PHP without using script tags ..?>
+ -B Run PHP before processing input lines
+ -R Run PHP for every input line
+ -F Parse and execute for every input line
+ -E Run PHP after processing all input lines
+ -H Hide any passed arguments from external tools.
+ -S : Run with built-in web server.
+ -t Specify document root for built-in web server.
+ -s Output HTML syntax highlighted source.
+ -v Version number
+ -w Output source with stripped comments and whitespace.
+ -z Load Zend extension .
+
+ args... Arguments passed to script. Use -- args when first argument
+ starts with - or script is read from stdin
+
+ --ini Show configuration file names
+
+ --rf Show information about function .
+ --rc Show information about class .
+ --re Show information about extension .
+ --rz Show information about Zend extension .
+ --ri Show configuration for extension .
+]]>
+
+
+
+
+
+ Options de ligne de commande
+
+
+
+ Option
+ Option longue
+ Description
+
+
+
+
+ -a
+ --interactive
+
+
+ Lance PHP de façon interactive. Pour plus d'informations, reportez-vous
+ à la documentation concernant le shell interactif.
+
+
+
+
+ -b
+ --bindpath
+
+
+ Lie le chemin pour les externes, en mode serveur FASTCGI
+ (CGI uniquement).
+
+
+
+
+ -C
+ --no-chdir
+
+
+ Ne pas aller dans le dossier du script (CGI uniquement).
+
+
+
+
+ -q
+ --no-header
+
+
+ Mode silencieux. Supprime la sortie des en-têtes HTTP
+ (CGI uniquement).
+
+
+
+
+ -T
+ --timing
+
+
+ Mesure le temps d'exécution du script, répété count
+ fois (CGI uniquement).
+
+
+
+
+ -c
+ --php-ini
+
+
+ Spécifie le nom du dossier dans lequel se trouve le fichier &php.ini;,
+ ou encore spécifie un fichier de configuration (INI)
+ directement (qui ne s'appelle pas obligatoirement &php.ini;) :
+
+
+
+
+
+
+
+
+
+ Si cette option n'est pas spécifiée, &php.ini; est recherché dans
+ les endroits par défaut.
+
+
+
+
+ -n
+ --no-php-ini
+
+
+ Ignore totalement &php.ini;.
+
+
+
+
+ -d
+ --define
+
+
+ Définit une valeur personnalisée pour n'importe quelle directive
+ de configuration du fichier &php.ini;. La syntaxe est :
+
+
+
+
+
+
+ Exemple d'utilisation de -d pour définir une directive INI
+
+
+
+
+
+
+
+
+ -e
+ --profile-info
+
+
+ Génère des informations étendues pour le profilage et le débogage.
+
+
+
+
+ -f
+ --file
+
+
+ Analyse et exécute le fichier spécifié. L'option
+ est facultative, et peut être omise. Le seul nom du fichier
+ est suffisant.
+
+
+
+
+ -h et -?
+ --help et --usage
+
+ Affiche des informations sur la liste courante des options de la
+ ligne de commande, ainsi que leur description.
+
+
+
+ -i
+ --info
+
+ Appelle la fonction phpinfo, et
+ affiche le résultat. Si PHP ne fonctionne pas
+ correctement, il est recommandé d'utiliser la commande php -i
+ et de voir s'il n'y a pas d'erreurs affichées avant ou après la
+ table d'information. N'oubliez pas que le résultat de cette
+ option, si vous utilisez le mode CGI, est au format
+ HTML, et donc de taille conséquente.
+
+
+
+ -l
+ --syntax-check
+
+
+ Vérifie la syntaxe mais n'exécute pas le code PHP donné.
+ L'entrée provenant de l'entrée standard sera traitée si aucun nom de fichier n'est spécifié,
+ sinon chaque fichier spécifié sera vérifié.
+ En cas de réussite, le message
+ No syntax errors detected in <filename>
+ (Littéralement, aucune erreur de syntaxe n'a été détectée dans le fichier)
+ est affiché sur la sortie standard.
+ En cas d'erreur, le message Errors parsing <filename>
+ (Littéralement, erreur d'analyse dans le fichier filename)
+ est affiché, en plus des messages d'erreurs détectés par l'analyseur
+ lui-même.
+ Si des erreurs sont trouvées dans les fichiers spécifiés (ou l'entrée standard),
+ le code de retour du shell est défini à -1, sinon le
+ code de retour du shell est défini à 0.
+
+
+ Cette option ne détecte pas les erreurs fatales (par exemple les
+ fonctions non définies) qui nécessitent l'exécution du code.
+
+
+
+ Avant PHP 8.3.0, il n'était possible de spécifier qu'un seul nom de fichier
+ à vérifier.
+
+
+
+
+ Cette option ne fonctionne pas avec l'option .
+
+
+
+
+
+ -m
+ --modules
+
+
+
+ Affichage des modules internes (et chargés) de PHP et Zend
+
+
+
+
+
+
+
+
+ -r
+ --run
+
+
+ Permet l'exécution de PHP directement dans la ligne de commande.
+ Les balises de PHP (<?php et ?>)
+ ne sont pas nécessaires, et causeront
+ une erreur d'analyse si elles sont présentes.
+
+
+
+ Une attention toute particulière doit être portée lors de l'utilisation de cette option
+ de PHP, pour qu'il n'y ait pas de collision avec
+ les substitutions de variables en ligne de commande, réalisées par le
+ shell.
+
+
+ Erreur de syntaxe lors de l'utilisation de doubles guillemets
+
+
+
+
+
+ Le problème ici est que le shell (sh/bash) effectue une substitution
+ de variables, même avec les guillemets doubles ".
+ Puisque la variable $foo n'est probablement pas
+ définie dans le shell, elle est remplacée par rien, ce qui fait
+ que le code passé à PHP pour l'exécution est :
+
+
+
+
+
+
+
+ La solution de ce problème est d'utiliser les guillemets simples
+ '. Les variables de ces chaînes ne seront pas
+ substituées par leurs valeurs par le shell.
+
+
+ Utilisation de guillemets simples pour éviter une substitution
+ par le shell
+
+
+ int(1)
+ ["E_WARNING"]=>
+ int(2)
+ ["E_PARSE"]=>
+ int(4)
+ ["E_NOTICE"]=>
+ int(8)
+ ["E_CORE_ERROR"]=>
+ [...]
+]]>
+
+
+
+ Si un shell différent de sh/bash est utilisé, d'autres problèmes pourront
+ être rencontrés - si approprié, un rapport de bogues pourra être ouvert via
+ à &url.php.bugs;.
+ Il est toujours très facile d'avoir des problèmes lorsque vous essayez
+ d'inclure des variables shell dans le code, ou d'utiliser les antislashs
+ pour la protection. Vous aurez été prévenu !
+
+
+
+
+ est disponible avec le &cli.sapi;
+ mais pas avec le SAPI CGI.
+
+
+
+
+ Cette option est seulement utilisée pour des choses simples. Ainsi,
+ quelques directives de configuration (par exemple auto_prepend_file et auto_append_file) sont ignorées
+ dans ce mode.
+
+
+
+
+
+ -B
+ --process-begin
+
+
+ Code PHP à exécuter avant le traitement de stdin.
+
+
+
+
+ -R
+ --process-code
+
+
+ Code PHP à exécuter pour chaque ligne en entrée.
+
+
+ Il y a deux variables spéciales de disponibles dans ce mode :
+ $argn et $argi.
+ $argn doit contenir la ligne PHP
+ traitée à ce moment donné, tandis que
+ $argi doit contenir le numéro de la ligne.
+
+
+
+
+ -F
+ --process-file
+
+
+ Fichier PHP à exécuter pour chaque ligne en entrée.
+
+
+
+
+ -E
+ --process-end
+
+
+ Code PHP à exécuter après avoir effectué l'entrée.
+
+
+
+ Exemple d'utilisation des options ,
+ et pour compter le nombre de lignes d'un projet.
+
+
+
+
+
+
+
+
+
+ -S
+ --server
+
+
+ Démarre le serveur
+ web interne.
+
+
+
+
+ -t
+ --docroot
+
+ Spécifie la racine des documents pour le serveur web interne.
+
+
+
+ -s
+ --syntax-highlight et --syntax-highlighting
+
+
+ Affiche le code avec la colorisation syntaxique.
+
+
+ Cette option utilise le mécanisme interne pour analyser le fichier,
+ et écrire au format HTML une version colorisée du code source.
+ Notez que cette option ne fait que générer un bloc HTML, avec les balises HTML
+ <code> [...] </code>, sans en-têtes HTML.
+
+
+
+ Cette option ne fonctionne pas avec l'option .
+
+
+
+
+
+ -v
+ --version
+
+
+ Utilisation de l'option pour récupérer le nom du SAPI
+ ainsi que la version de PHP et de Zend
+
+
+
+
+
+
+
+
+ -w
+ --strip
+
+
+ Affiche la source sans les commentaires ni les espaces.
+
+
+
+ Cette option ne fonctionne pas avec l'option .
+
+
+
+
+
+ -z
+ --zend-extension
+
+
+ Charge une extension Zend. Si et seulement si un fichier est fourni, PHP
+ essaie de charger cette extension dans le dossier courant par défaut
+ des bibliothèques sur votre système (généralement spécifié avec
+ /etc/ld.so.conf sous Linux par exemple). Passer un nom de
+ fichier avec le chemin complet fera que PHP utilisera ce fichier,
+ sans recherche dans les dossiers classiques. Un chemin de dossier
+ relatif, incluant les informations sur le dossier, indiquera à PHP qu'il doit
+ chercher les extensions uniquement dans ce dossier.
+
+
+
+
+
+ --ini
+
+
+ Affiche les noms des fichiers de configuration et des dossiers analysés.
+
+ Exemple avec --ini
+
+
+
+
+
+
+
+
+ --rf
+ --rfunction
+
+
+ Affiche des informations sur la fonction donnée ou la méthode
+ d'une classe (c.-à-d. nombre et nom des paramètres).
+
+
+ Cette option n'est disponible que si PHP a été compilé avec le support
+ Reflection.
+
+
+
+ Exemple avec --rf
+
+ public function var_dump ] {
+
+ - Parameters [2] {
+ Parameter #0 [ $var ]
+ Parameter #1 [ $... ]
+ }
+}
+]]>
+
+
+
+
+
+
+ --rc
+ --rclass
+
+
+ Affiche des informations sur la classe donnée (liste des constantes,
+ propriétés et méthodes).
+
+
+ Cette option n'est disponible que si PHP a été compilé avec le support
+ Reflection.
+
+
+
+ Exemple avec --rc
+
+ class Directory ] {
+
+ - Constants [0] {
+ }
+
+ - Static properties [0] {
+ }
+
+ - Static methods [0] {
+ }
+
+ - Properties [0] {
+ }
+
+ - Methods [3] {
+ Method [ public method close ] {
+ }
+
+ Method [ public method rewind ] {
+ }
+
+ Method [ public method read ] {
+ }
+ }
+}
+]]>
+
+
+
+
+
+
+ --re
+ --rextension
+
+
+ Affiche les informations sur l'extension donnée (liste les options du
+ &php.ini;, les fonctions définies, les constantes et les classes).
+
+
+ Cette option n'est disponible que si PHP a été compilé avec le support
+ Reflection.
+
+
+
+ Exemple avec --re
+
+ extension #19 json version 1.2.1 ] {
+
+ - Functions {
+ Function [ function json_encode ] {
+ }
+ Function [ function json_decode ] {
+ }
+ }
+}
+]]>
+
+
+
+
+
+
+ --rz
+ --rzendextension
+
+
+ Affiche les informations de configuration pour l'extension Zend fournie
+ (les mêmes informations que celles retournées par la fonction
+ phpinfo).
+
+
+
+
+ --ri
+ --rextinfo
+
+
+ Affiche les informations de configuration pour l'extension donnée (les
+ mêmes informations retournées par la fonction phpinfo).
+ Les informations de configurations internes
+ sont disponibles en utilisant le nom d'extension "main".
+
+
+
+ Exemple avec --ri
+
+ enabled
+"Olson" Timezone Database Version => 2009.20
+Timezone Database => internal
+Default timezone => Europe/Oslo
+
+Directive => Local Value => Master Value
+date.timezone => Europe/Oslo => Europe/Oslo
+date.default_latitude => 59.930972 => 59.930972
+date.default_longitude => 10.776699 => 10.776699
+date.sunset_zenith => 90.583333 => 90.583333
+date.sunrise_zenith => 90.583333 => 90.583333
+]]>
+
+
+
+
+
+
+
+
+
+
+
+
+ Les options -rBRFEH, --ini et
+ --r[fcezi] ne sont disponibles qu'en mode &cli;.
+
+
+
+
+
+
+
+ Exécution de fichiers PHP
+ Utilisation
+
+ Il y a 3 façons différentes d'appeler le &cli.sapi; avec du code PHP
+ à exécuter :
+
+
+
+ Indiquer à PHP d'exécuter un fichier donné :
+
+
+
+
+
+
+
+ Les deux méthodes (en utilisant ou pas) exécutent le
+ script contenu dans le fichier mon_script.php.
+ Notez qu'il n'existe pas de restriction sur les fichiers pouvant
+ être exécutés ; en particulier, il n'est pas nécessaire que l'extension
+ du fichier soit .php.
+
+
+
+
+ Donner du code PHP à exécuter directement en ligne de commande.
+
+
+
+
+
+
+
+ Une attention particulière doit alors être apportée aux variables d'environnement,
+ qui seront remplacées, et aux guillemets, qui ont des significations spéciales en
+ ligne de commande.
+
+
+
+ Lisez l'exemple attentivement, il n'y a ni balise d'ouverture, ni balise de fermeture !
+ L'option rend caduque l'utilisation de celles-ci, et les ajouter conduirait
+ alors à une erreur d'analyse syntaxique.
+
+
+
+
+
+ Alimenter l'entrée standard en code PHP
+ (stdin).
+
+
+ Cela donne la possibilité de créer dynamiquement du code
+ PHP, puis de le fournir à PHP, et enfin,
+ de le traiter à nouveau en shell. Voici un exemple fictif :
+
+
+
+ final_output.txt
+]]>
+
+
+
+
+ Il n'est pas possible de combiner ces trois modes d'exécution.
+
+
+
+ Comme toute application shell, l'exécutable PHP accepte
+ des arguments ; cependant, le script PHP peut aussi en recevoir.
+ Le nombre d'arguments pouvant être passés à votre script n'est pas limité par PHP
+ (le shell a une limite en termes de nombre de caractères qui peuvent être passés.
+ Généralement, vous n'atteindrez pas cette limite). Les arguments passés au script seront
+ transmis via la variable tableau $argv. Le premier
+ index (zéro) contient toujours le nom du script appelé depuis la ligne
+ de commande. Notez que, si le code est exécuté en ligne en utilisant
+ l'option de ligne commande , la valeur de $argv[0]
+ sera "Standard input code"; antérieur à PHP 7.2.0,
+ c'était un tiret ("-") à la place. Cela est aussi vrai si
+ le code est exécuté via un pipe depuis STDIN.
+
+
+
+ Une seconde variable globale, $argc, contient le nombre
+ d'éléments du tableau $argv
+ (et non pas le nombre d'arguments passés
+ à votre script).
+
+
+
+ Tant que les arguments passés au script ne commencent pas par
+ le caractère -, il n'y a rien de spécial à surveiller.
+ Le fait de passer des arguments au script qui commencent par
+ - pose des problèmes car PHP
+ va penser qu'il doit les interpréter. Pour éviter cela, utilisez le séparateur
+ --. Après cet argument, tous les arguments suivants seront
+ passés au script sans être modifiés ou analysés par PHP.
+
+
+
+ [args...]
+[...]
+
+# Cela va passer l'argument '-h' au script, et éviter que PHP ne le traite
+$ php -r 'var_dump($argv);' -- -h
+array(2) {
+ [0]=>
+ string(1) "-"
+ [1]=>
+ string(2) "-h"
+}
+]]>
+
+
+
+ Cependant, il y a une autre méthode pour utiliser PHP en script shell ;
+ la première ligne du script devra être #!/usr/bin/php
+ (à remplacer par le chemin vers le binaire PHP &cli; sur le système sous-jacent).
+ Le reste du fichier doit contenir le code PHP normal, compris entre les
+ balises ouvrantes/fermantes. Après avoir mis les droits d'exécution sur le
+ script (chmod +x test), il peut être exécuté comme un script
+ shell ou perl habituel :
+
+
+
+ Exécute un script PHP en tant que script shell
+
+
+]]>
+
+
+ En supposant que ce fichier s'appelle test, dans le
+ dossier courant, il est alors possible de faire ceci :
+
+
+
+ string(6) "./test"
+ [1]=>
+ string(2) "-h"
+ [2]=>
+ string(2) "--"
+ [3]=>
+ string(3) "foo"
+}
+]]>
+
+
+
+
+ Comme vous pouvez le voir, dans ce cas, vous n'avez pas besoin
+ de faire attention lors du passage de paramètres qui commencent par
+ - à votre script.
+
+
+
+ L'exécutable PHP peut être utilisé pour exécuter des scripts indépendants du
+ serveur web. Si vous êtes sur un système Unix, il est recommandé d'ajouter
+ la ligne spéciale en début de script, de le rendre exécutable de
+ manière que le système sache quel programme doit exécuter le script.
+ Sous Windows, vous pouvez associer l'exécutable php.exe
+ avec le double-clic sur les fichiers d'extension .php,
+ ou bien vous pouvez faire un fichier batch pour exécuter le script grâce
+ à PHP. La première ligne utilisée dans le monde Unix ne perturbera pas
+ l'exécution sous Windows, ce qui rend les scripts facilement portables. Un exemple
+ complet est disponible ci-dessous :
+
+
+
+ Script prévu pour être exécuté en ligne de commande (script.php)
+
+
+
+C'est une ligne de commande à une option.
+
+ Utilisation :
+
+
+
+
+
+ Le script ci-dessus inclut la première ligne spéciale indiquant que ce fichier
+ doit être exécuté par PHP. Nous travaillons ici avec la version &cli;, aussi,
+ aucun en-tête HTTP ne sera affiché.
+
+
+
+ Le programme commence par vérifier que l'argument requis est spécifié
+ (en plus du nom du script, qui est aussi compté). S'il n'est pas présent,
+ ou si l'argument est , ,
+ ou , un message d'aide sera affiché,
+ en utilisant $argv[0] pour afficher dynamiquement le nom
+ du script tel qu'entré dans la ligne de commande. Sinon, l'argument est affiché
+ tel qu'il a été entré dans le terminal.
+
+
+
+ Pour exécuter le script ci-dessus sous Unix, vous devez le rendre
+ exécutable, puis l'appeler avec une commande comme :
+ script.php echothis ou
+ script.php -h. Sous Windows, vous pouvez faire un
+ fichier batch pour cela :
+
+
+
+
+ Fichier batch pour exécuter un script PHP en ligne de commande (script.bat)
+
+
+
+
+
+
+
+ En supposant que le programme ci-dessus est nommé
+ script.php, et que l'exécutable &cli;
+ php.exe se trouve dans
+ C:\php\php.exe, ce fichier batch l'exécutera
+ avec les options que vous lui passez :
+ script.bat echothis ou
+ script.bat -h.
+
+
+
+ Voir aussi l'extension Readline,
+ qui dispose de nombreuses fonctions pour améliorer la convivialité
+ des applications PHP en ligne de commande.
+
+
+
+ Sous Windows, PHP peut être configuré pour fonctionner sans avoir
+ besoin de fournir les extensions C:\php\php.exe
+ ou .php, tel que décrit dans
+ la ligne de commande PHP sous
+ Microsoft Windows.
+
+
+
+
+ Sous Windows, il est recommandé d'exécuter PHP sous un compte utilisateur.
+ Lorsque PHP est exécuté sous un service réseau, certaines opérations peuvent
+ échouer, car "Aucun lien entre les noms de compte et les identifiants de
+ sécurité n'est réalisé".
+
+
+
+
+
+
+
+
+ Flux d'entrée/sortie
+ Flux I/O
+
+
+ Le &cli.sapi; définit quelques constantes pour les flux I/O pour
+ rendre la programmation en ligne de commande plus facile.
+
+
+
+
+ Constantes spécifiques CLI
+
+
+
+ Constante
+ Description
+
+
+
+
+ STDIN
+
+
+ Un flux déjà ouvert vers stdin. Ceci évite de
+ l'ouvrir explicitement avec
+
+
+]]>
+
+ Si vous voulez lire une seule ligne depuis stdin,
+ vous pouvez utiliser
+
+
+]]>
+
+
+
+
+
+ STDOUT
+
+
+ Un flux déjà ouvert vers stdout. Ceci évite de
+ l'ouvrir explicitement avec
+
+
+]]>
+
+
+
+
+
+ STDERR
+
+
+ Un flux déjà ouvert vers stderr.
+ Ceci évite de l'ouvrir explicitement avec
+
+
+]]>
+
+
+
+
+
+
+
+
+
+
+ Ainsi, vous n'avez pas besoin d'ouvrir un flux spécifique pour, par exemple,
+ stderr mais vous pouvez simplement utiliser la constante
+ correspondante à ce flux :
+
+
+
+ Vous n'avez pas à clore explicitement ces flux, sachant qu'ils le seront
+ automatiquement par PHP à la fin de votre script.
+
+
+
+
+ Ces constantes ne sont pas disponibles lors d'une lecture d'un
+ script PHP depuis stdin.
+
+
+
+
+
+
+
+ Shell Interactif
+
+
+ Le &cli.sapi; fournit un shell interactif lors de l'utilisation
+ de l'option si PHP a été compilé avec l'option .
+ Depuis PHP 7.1.0 le shell interactif est également disponible sur Windows,
+ si l'extension readline est activée.
+
+
+
+ En utilisant le shell interactif, vous avez la possibilité de taper du code PHP
+ et qu'il soit exécuté directement.
+
+
+
+ Exécution de code en utilisant le shell interactif
+
+ echo 5+8;
+13
+php > function addTwo($n)
+php > {
+php { return $n + 2;
+php { }
+php > var_dump(addtwo(2));
+int(4)
+php >
+]]>
+
+
+
+
+ Le shell interactif fournit également une autocomplétion des fonctions,
+ des constantes, des noms de classes, des variables, des appels aux méthodes
+ statiques et des constantes de classes en utilisant la touche de tabulation.
+ Depuis PHP 8.4.0, le chemin vers le fichier d'historique peut être défini en utilisant la
+ variable d'environnement PHP_HISTFILE.
+
+
+
+ Auto-complétion en utilisant la touche de tabulation
+
+ Le fait de presser deux fois la touche de tabulation lorsqu'il y a plusieurs
+ complétions possibles affichera une liste de ces complétions :
+
+
+ strp[TAB][TAB]
+strpbrk strpos strptime
+php > strp
+]]>
+
+
+ Lorsqu'il n'y a qu'une seule complétion possible, presser la touche de tabulation
+ une seule fois complétera le reste sur la même ligne :
+
+
+ strpt[TAB]ime(
+]]>
+
+
+ La complétion fonctionnera aussi pour les noms qui ont été définis lors
+ de la session courante du shell interactif :
+
+
+ $fooThisIsAReallyLongVariableName = 42;
+php > $foo[TAB]ThisIsAReallyLongVariableName
+]]>
+
+
+
+
+ Le shell interactif stocke votre historique et peut y accéder en utilisant les touches
+ haut et bas. L'historique est sauvegardé dans le fichier ~/.php_history.
+
+
+
+ Le &cli.sapi; fournit 2 directives du &php.ini; :
+ cli.pager et cli.prompt.
+ La directive cli.pager permet la définition d'un programme
+ externe (comme less) à utiliser comme pager pour la sortie
+ au lieu d'afficher directement sur l'écran. La directive
+ cli.prompt autorise la modification du prompte
+ php >.
+
+
+
+ Il est également possible de définir des directives du &php.ini;
+ dans un shell interactif en utilisant des notations raccourcies.
+
+
+
+ Définition de directives du &php.ini; dans un shell interactif
+
+ La définition de la directive cli.prompt :
+
+
+ #cli.prompt=hello world :>
+hello world :>
+]]>
+
+
+ En utilisant des backticks, il est possible d'exécuter du code PHP
+ dans le prompte :
+
+
+ #cli.prompt=`echo date('H:i:s');` php >
+15:49:35 php > echo 'hi';
+hi
+15:49:43 php > sleep(2);
+15:49:45 php >
+]]>
+
+
+ Définition du pager à less :
+
+
+ #cli.pager=less
+php > phpinfo();
+(sortie affichée avec less)
+php >
+]]>
+
+
+
+
+ La directive cli.prompt supporte quelques séquences d'échappements :
+
+ Séquences d'échappements de cli.prompt
+
+
+
+ Séquence :
+ Description :
+
+
+
+
+ \e
+
+ utilisé pour ajouter des couleurs au prompte. Exemple :
+ \e[032m\v \e[031m\b \e[34m\> \e[0m
+
+
+
+ \v
+ La version de PHP.
+
+
+ \b
+
+ Indique dans quel bloc de PHP nous nous trouvons.
+ Par exemple, /* permet d'indiquer que nous
+ sommes dans un commentaire multilignes. Le scope externe est représenté
+ par php.
+
+
+
+ \>
+
+ Indique le caractère utilisé pour le prompte. Par défaut, ce sera
+ >, mais peut être modifié lorsque le shell se
+ trouve dans un bloc indéterminé ou dans une chaîne de caractères.
+ Les caractères possibles sont : ' " {
+ ( >
+
+
+
+
+
+
+
+
+
+ Les fichiers inclus via auto_prepend_file et auto_append_file sont analysés
+ dans ce mode, mais avec quelques restrictions - c.-à-d. les fonctions
+ doivent avoir été définies avant l'appel.
+
+
+
+
+ Mode interactif
+
+ Si l'extension readline n'est pas disponible, antérieur à PHP 8.1.0,
+ invoquer le &cli.sapi; avec l'option fournit le mode interactif.
+ Dans ce mode, un script PHP complet est supposé être donné via STDIN,
+ et après l'interruption
+ avec
+
+ CTRL
+ D
+
+ (POSIX) ou
+
+ CTRL
+ Z
+
+ suivi de ENTER (Windows), ce script sera évalué.
+ Ceci est basiquement identique à invoquer le &cli.sapi; sans l'option .
+
+
+ À partir de PHP 8.1.0, invoquer le &cli.sapi; avec l'option
+ échoue, si l'extension readline n'est pas disponible.
+
+
+
+
+
+
+
+ Serveur web interne
+
+
+
+ Ce serveur web est prévu pour aider dans le développement des applications.
+ Il peut également être utile pour les tests, et pour les démonstrations
+ d'applications qui sont exécutées dans des environnements contrôlés.
+ Mais par contre, il n'a pas été conçu pour être un serveur web complet.
+ Aussi, il ne devrait pas être utilisé dans un réseau public.
+
+
+
+
+ Le &cli.sapi; fournit un serveur web interne.
+
+
+
+ Le serveur web s'exécute sur un seul processus single-threaded,
+ les applications PHP seront retardées/suspendues si une requête est bloquée.
+
+
+
+ Les requêtes URI sont servies depuis le dossier de travail courant
+ où PHP a été démarré, à moins que l'option -t ne soit utilisée pour spécifier
+ explicitement un document racine. Si une requête URI ne spécifie
+ pas un fichier, alors le fichier index.php ou le fichier
+ index.html du dossier courant sera retourné. Si aucun de ces fichiers n'existe,
+ la recherche d'un fichier index.php et index.html se poursuivra dans le dossier
+ parent et ainsi de suite jusqu'à ce qu'un de ces fichier ne soit trouvé ou
+ que le dossier racine ne soit atteint. Si un fichier index.php ou index.html
+ est trouvé, il sera retourné et $_SERVER['PATH_INFO'] sera défini comme la
+ dernière partie de l'URI. Sinon, un code réponse 404 sera retourné.
+
+
+
+ Si un fichier PHP est fourni dans la ligne de commande lorsque le serveur web
+ est démarré, il sera traité comme un script "routeur".
+ Le script sera exécuté au début de chaque requête HTTP. Si ce script retourne
+ &false;, alors la ressource demandée est retournée telle quelle.
+ Sinon, la sortie du script est retournée au navigateur.
+
+
+
+ Les types MIME standards sont retournés pour les fichiers avec les extensions :
+
+ .3gp
+ .apk
+ .avi
+ .bmp
+ .css
+ .csv
+ .doc
+ .docx
+ .flac
+ .gif
+ .gz
+ .gzip
+ .htm
+ .html
+ .ics
+ .jpe
+ .jpeg
+ .jpg
+ .js
+ .kml
+ .kmz
+ .m4a
+ .mov
+ .mp3
+ .mp4
+ .mpeg
+ .mpg
+ .odp
+ .ods
+ .odt
+ .oga
+ .ogg
+ .ogv
+ .pdf
+ .png
+ .pps
+ .pptx
+ .qt
+ .svg
+ .swf
+ .tar
+ .text
+ .tif
+ .txt
+ .wav
+ .webm
+ .wmv
+ .xls
+ .xlsx
+ .xml
+ .xsl
+ .xsd
+ .zip
+
+ .
+
+
+
+ À partir de PHP 7.4.0, le serveur web intégré peut être configuré pour bifurquer plusieurs
+ travailleurs afin de tester du code nécessitant plusieurs requêtes concurrentes
+ au serveur web intégré.
+ Définissez la variable d'environnement PHP_CLI_SERVER_WORKERS sur le
+ nombre de travailleurs souhaité avant de démarrer le serveur.
+
+
+
+ Cette fonctionnalité n'est pas prise en charge sur Windows.
+
+
+
+
+ Cette fonctionnalité expérimentale n'est pas
+ destinée à une utilisation en production. En général, le Serveur Web intégré
+ n'est pas destiné à une utilisation en production.
+
+
+
+
+ Démarrage du serveur web
+
+
+
+
+ Le terminal affichera :
+
+
+
+
+
+ Après des requêtes URI sur http://localhost:8000/ et
+ http://localhost:8000/myscript.html, le terminal affichera quelques choses
+ comme :
+
+
+
+
+
+ Noter qu'avant PHP 7.4.0, les ressources statiques en lien symbolique
+ ne sont pas accessibles sous Windows, tant que le script routeur
+ ne le gère pas.
+
+
+
+
+ Démarrage avec un dossier racine spécifique
+
+
+
+
+ Le terminal affichera :
+
+
+
+
+
+
+
+ Utilisation d'un script routeur
+
+ Dans cet exemple, le fait de demander des images les affichera,
+ mais les requêtes pour les fichiers HTML afficheront
+ "Bienvenue chez PHP !".
+
+
+Bienvenue chez PHP !";
+}
+?>]]>
+
+
+
+
+
+
+
+ Vérification de l'utilisation CLI du serveur Web
+
+ Pour ré-utiliser un script router du framework lors du
+ développement avec le CLI du serveur web et ensuite, continuez
+ de l'utiliser avec un serveur web de production :
+
+
+]]>
+
+
+
+
+
+
+
+ Gestion des types de fichiers non supportés
+
+ Si vous devez servir une ressource statique pour laquelle le type
+ MIME n'est pas géré par le CLI du serveur web, utilisez ceci :
+
+
+]]>
+
+
+
+
+
+
+
+ Accès au CLI du serveur web depuis une machine distante
+
+ Vous pouvez rendre le serveur web accessible sur le port 8000
+ pour toutes les interfaces avec :
+
+
+
+
+
+
+ Le serveur web intégré ne doit pas être utilisé sur un réseau public.
+
+
+
+
+
+
+
+
+ Configurations INI
+
+
+
+
+ &ini.descriptions.title;
+
+
+
+
+
+ cli_server.color
+ bool
+
+
+
+ Active le serveur web de développement interne à utiliser
+ la coloration ANSI du code dans la sortie du terminal.
+
+
+
+
+
+
+
+
+
+
From 09e5464dd875513f605c4cc9790d9ddbf51c3187 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:38:07 +0100
Subject: [PATCH 16/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20features/gc.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
features/gc.xml | 1340 +++++++++++++++++++++++------------------------
1 file changed, 670 insertions(+), 670 deletions(-)
diff --git a/features/gc.xml b/features/gc.xml
index 1e8005917e..55f22cb3ac 100644
--- a/features/gc.xml
+++ b/features/gc.xml
@@ -1,670 +1,670 @@
-
-
-
-
-
- Ramasse-miettes (Garbage Collection)
-
-
- Cette section explique les mérites du nouveau mécanisme ramasse-miettes (aussi appelé
- GC, du terme anglais Garbage Collection) fourni à partir de PHP 5.3.
-
-
-
- Bases sur le comptage des références
-
- Une variable PHP est stockée en interne dans un conteneur appelé "zval". Un conteneur
- zval contient, outre le type de la variable et sa valeur, deux informations supplémentaires.
- La première se nomme "is_ref" et est une valeur booléenne qui indique si
- une variable fait partie d'une référence ou non. Grâce à cette information, le moteur de
- PHP sait différencier les variables normales des références. Comme PHP autorise
- le programmeur à utiliser des références, au moyen de l'opérateur &, un conteneur
- zval possède aussi un mécanisme de comptage des références afin d'optimiser l'utilisation
- de la mémoire. Cette seconde information, appelée "refcount", contient le nombre de
- variables (aussi appelées symboles) qui pointent vers ce conteneur zval. Tous les symboles
- sont stockés dans une table de symboles, et il y a une table par espace de visibilité
- (scope). Il y a un espace global pour le script principal (celui appelé par exemple via
- le navigateur) et un espace par fonction ou méthode.
-
-
- Un conteneur zval est créé lorsqu'une nouvelle variable est créée avec une valeur
- constante, comme par exemple :
-
- Création d'un nouveau conteneur zval
-
-
-]]>
-
-
-
-
- Dans ce cas, le nouveau symbole a est créé dans le scope global,
- et un nouveau conteneur est créé avec comme type string et comme valeur
- new string. Le bit "is_ref" est mis par défaut à &false; car aucune
- référence n'a été créée par le programmeur. Le compteur de références "refcount" est mis à
- 1 car il n'y a qu'un seul symbole qui utilise ce conteneur.
- Il est à noter que les références (c.à.d. "is_ref" est &true;) avec "refcount"
- 1, sont traitées comme si elles n'étaient pas des
- références (c.à.d. comme si "is_ref" était &false;). Si vous avez
- installé Xdebug, vous pouvez afficher cette
- information en appelant xdebug_debug_zval.
-
-
-
- Affichage des informations zval
-
-
-]]>
-
- &example.outputs;
-
-
-
-
-
-
- Assigner cette variable à un autre symbole va incrémenter le refcount.
-
-
-
- Incrémentation du refcount d'une zval
-
-
-]]>
-
- &example.outputs;
-
-
-
-
-
-
- Le refcount vaut 2 ici, car le même conteneur est lié à
- la fois à a et à b. PHP est suffisamment
- intelligent pour ne pas dupliquer le conteneur lorsque ce n'est pas nécessaire.
- Les conteneurs sont détruits lorsque leur "refcount" atteint zéro. Le
- "refcount" est décrémenté de un lorsque n'importe quel symbole lié à
- un conteneur sort du scope (ex. : lorsque la fonction se termine) ou
- lorsqu'un symbole est déalloué (ex. : par l'appel de unset).
- L'exemple qui suit le démontre :
-
-
-
- Décrémentation du refcount d'une zval
-
-
-]]>
-
- &example.outputs;
-
-
-
-
-
-
- Si, maintenant, nous appelons unset($a);, le conteneur zval, incluant
- le type et la valeur, va être supprimé de la mémoire.
-
-
-
- Types composés
-
-
- Les choses se compliquent dans le cas de types composés comme array et
- object. À la différence des valeurs scalar, les
- array et object stockent leurs propriétés dans une table de
- symboles qui leur est propre. Ceci signifie que l'exemple qui suit crée trois conteneurs
- zval :
-
-
-
- Création d'une zval array
-
- 'life', 'number' => 42 );
-xdebug_debug_zval( 'a' );
-?>
-]]>
-
- &example.outputs.similar;
-
- (refcount=1, is_ref=0)='life',
- 'number' => (refcount=1, is_ref=0)=42
-)
-]]>
-
- Ou graphiquement
-
- Zvals d'un tableau simple
-
-
-
-
-
-
-
- Les trois conteneurs zval sont : a, meaning, et
- number. Les mêmes règles s'appliquent pour l'incrémentation et la
- décrémentation des "refcounts". Ci-après, nous ajoutons un autre élément au tableau, et nous
- renseignons sa valeur avec le contenu d'un élément déjà existant du tableau :
-
-
-
- Ajout d'un élément déjà existant au tableau
-
- 'life', 'number' => 42 );
-$a['life'] = $a['meaning'];
-xdebug_debug_zval( 'a' );
-?>
-]]>
-
- &example.outputs.similar;
-
- (refcount=2, is_ref=0)='life',
- 'number' => (refcount=1, is_ref=0)=42,
- 'life' => (refcount=2, is_ref=0)='life'
-)
-]]>
-
- Ou graphiquement
-
- Zvals pour un tableau simple avec une référence
-
-
-
-
-
-
-
- La sortie Xdebug que nous voyons indique que l'ancien et le nouvel élément du tableau
- pointent maintenant tous deux vers un conteneur zval dont le "refcount" vaut 2.
- Même si la sortie XDebug montre deux conteneurs zval avec comme valeur 'life', ils sont les
- mêmes. La fonction xdebug_debug_zval ne montre pas cela, mais vous
- pourriez le voir en affichant aussi le pointeur de mémoire.
-
-
- Supprimer un élément du tableau est assimilable à la suppression d'un symbole depuis un
- espace. Ce faisant, le "refcount" du conteneur vers lequel l'élément du tableau pointe est
- décrémenté. Une fois encore, s'il atteint zéro, le conteneur zval est supprimé de la mémoire.
- Voici un exemple qui le démontre :
-
-
-
- Suppression d'un élément de tableau
-
- 'life', 'number' => 42 );
-$a['life'] = $a['meaning'];
-unset( $a['meaning'], $a['number'] );
-xdebug_debug_zval( 'a' );
-?>
-]]>
-
- &example.outputs.similar;
-
- (refcount=1, is_ref=0)='life'
-)
-]]>
-
-
-
-
- Maintenant, les choses deviennent intéressantes si nous ajoutons le tableau
- comme élément de lui-même. Nous faisons cela dans l'exemple qui suit, en utilisant un
- opérateur de référence pour éviter que PHP ne crée une copie :
-
-
-
- Ajout du tableau comme référence à lui-même en tant qu'élément
-
-
-]]>
-
- &example.outputs.similar;
-
- (refcount=1, is_ref=0)='one',
- 1 => (refcount=2, is_ref=1)=...
-)
-]]>
-
- Ou graphiquement
-
- Zvals dans un tableau avec référence circulaire
-
-
-
-
-
-
-
- Vous pouvez voir que la variable tableau (a) tout comme le second élément
- (1) pointent désormais vers un conteneur dont le "refcount" vaut
- 2. Les "..." sur l'affichage indiquent une récursion, qui, dans ce cas,
- signifie que le "..." pointe sur le tableau lui-même.
-
-
- Comme précédemment, supprimer une variable supprime son symbole, et le refcount du conteneur
- sur lequel il pointait est décrémenté. Donc, si nous supprimons la variable
- $a après avoir exécuté le code ci-dessus, le compteur de références du
- conteneur sur lequel pointent $a et l'élément "1" sera décrémenté de un,
- passant de "2" à "1". Ceci peut être représenté par :
-
-
-
- Suppression de $a
-
- (refcount=1, is_ref=0)='one',
- 1 => (refcount=1, is_ref=1)=...
-)
-]]>
-
- Ou graphiquement
-
- Zvals après suppression du tableau contenant une référence circulaire, fuite mémoire
-
-
-
-
-
-
-
-
-
- Problèmes de nettoyage
-
- Bien qu'il n'y ait plus aucun symbole dans l'espace de variables courant qui pointe
- vers cette structure, elle ne peut être nettoyée, car l'élément "1" du tableau
- pointe toujours vers ce même tableau. Comme il n'y a plus aucun symbole externe
- pointant vers cette structure, l'utilisateur ne peut pas la nettoyer manuellement ;
- il y a donc une fuite de mémoire. Heureusement, PHP va détruire cette structure à la fin de
- la requête, mais avant cette étape, la mémoire n'est pas libérée. Cette situation se
- produit souvent si vous implémentez un algorithme d'analyse ou d'autres idées où vous avez
- un enfant qui pointe vers son parent. La même chose peut bien entendu se produire avec les objets,
- et c'est même plus probable, puisqu'ils sont toujours implicitement utilisés par
- "référence".
-
-
- Ceci peut ne pas être gênant si cela n'arrive qu'une ou deux fois, mais s'il y a des
- milliers, ou même des millions, de ces fuites mémoires, alors cela risque évidemment
- de devenir un problème important. C'est particulièrement problématique pour les scripts
- qui durent longtemps, comme les démons pour lesquels la requête ne termine pour ainsi dire
- jamais, ou encore dans de grosses suites de tests unitaires.
- Ce dernier cas a été rencontré en lançant les tests unitaires du composant Template de la
- bibliothèque eZ Components. Dans certains cas, la suite de tests nécessitait plus de 2Go de
- mémoire, que le serveur de test n'avait pas vraiment à disposition.
-
-
-
-
-
- Nettoyage de Cycles
-
- Traditionnellement, les mécanismes de comptage de références, comme utilisés auparavant
- dans PHP, ne savent pas gérer les fuites mémoires dues à des références circulaires ;
- cependant depuis PHP 5.3.0, un algorithme synchrone issu de l'analyse
- Concurrent Cycle Collection in Reference Counted Systems
- est utilisé pour répondre à ce problème particulier.
-
-
- Une explication complète du fonctionnement de l'algorithme irait un peu au-delà du cadre de cette section,
- mais nous allons ici présenter les principes de base. Avant tout, nous allons établir quelques règles de base.
- Si un refcount est incrémenté, le conteneur est toujours utilisé, donc pas nettoyé. Si le refcount
- est décrémenté et atteint zéro, le conteneur zval peut être supprimé et la mémoire libérée. Premièrement, ceci signifie
- que les cycles perturbateurs ne peuvent être créés que lorsque le refcount est décrémenté vers une valeur
- différente de zéro. Ensuite, dans un cycle problématique, il est possible de détecter les déchets en
- vérifiant s'il est possible ou non de décrémenter leur refcount de un, en vérifiant ensuite quelles zvals
- ont un refcount à zéro.
-
-
-
- Algorithme de collecte des déchets
-
-
-
-
-
-
- Pour éviter d'avoir à appeler la routine de nettoyage à chaque décrémentation de refcount possible,
- l'algorithme place toutes les zval racines dans un "tampon de racines" (en les marquant en "violet").
- Il s'assure aussi que chaque racine n'apparaisse qu'une seule fois dans le tampon. Le
- mécanisme de nettoyage n'intervient alors que lorsque le tampon est plein. Voyez l'étape A
- sur la figure ci-dessus.
-
-
- A l'étape B, l'algorithme lance une recherche sur toutes les racines possibles, afin de
- décrémenter de une unité les refcounts de toutes les zvals qu'il trouve, en faisant bien
- attention de ne pas décrémenter deux fois le refcount de la même zval (en les marquant
- comme "grises"). A l'étape C, l'algorithme relance une recherche sur toutes les racines
- possibles et scrute la valeur de refcount de chaque zval. S'il trouve un refcount à zéro,
- la zval est marquée comme "blanche" (bleu sur la figure). S'il trouve une valeur supérieure à zéro,
- il annule la décrémentation du refcount en refaisant une recherche à partir de ce nœud, et les
- marque comme "noires" à nouveau. Dans la dernière étape, D, l'algorithme parcourt tout le
- tampon des racines et les supprime, tout en scrutant chaque zval ; toute zval marquée
- comme "blanche" à l'étape précédente sera alors supprimée de la mémoire.
-
-
- Maintenant que vous savez globalement comment l'algorithme fonctionne, nous allons
- voir comment il a été intégré dans PHP. Par défaut, le ramasse-miettes de PHP est
- activé. Il existe cependant une option de &php.ini; pour changer cela :
- zend.enable_gc.
-
-
- Lorsque le ramasse-miettes est activé, l'algorithme de recherche des cycles
- décrit ci-dessus est exécuté à chaque fois que le tampon est plein. Le tampon de
- racines a une taille fixée à 10.000 racines (ce paramètre est changeable grâce à
- GC_THRESHOLD_DEFAULT dans Zend/zend_gc.c
- dans le code source de PHP, une recompilation est donc nécessaire). Si le ramasse-
- miettes est désactivé, la recherche des cycles l'est aussi. Cependant, les racines
- possibles seront toujours enregistrées dans le tampon, ceci ne dépend pas de l'activation
- du ramasse-miettes.
-
-
- Si le tampon est plein alors que le mécanisme de nettoyage est désactivé, les racines
- ne seront plus enregistrées. Ces racines ne seront donc jamais analysées par l'algorithme,
- et si elles faisaient partie de références circulaires, elles ne seront jamais nettoyées,
- et elles causeront des fuites de mémoire.
-
-
- La raison pour laquelle les racines possibles sont enregistrées dans le tampon
- même si le mécanisme est désactivé est qu'il aurait été trop coûteux de vérifier l'activation
- éventuelle du mécanisme à chaque tentative d'ajout d'une racine dans le tampon. Le mécanisme
- de ramasse-miettes et d'analyse peut, lui, être très coûteux en temps.
-
-
- En plus de pouvoir changer la valeur du paramètre de configuration
- zend.enable_gc, vous pouvez aussi activer ou désactiver le mécanisme de
- ramasse-miettes en appelant les fonctions gc_enable ou
- gc_disable respectivement. Utiliser ces fonctions aura le même effet que de
- modifier le paramètre de configuration. Vous avez aussi la possibilité de forcer l'exécution du
- ramasse-miettes à un moment donné dans votre script, même si le tampon n'est pas encore
- complètement plein. Utilisez pour cela la fonction gc_collect_cycles,
- qui retournera le nombre de cycles alors collectés.
-
-
- Vous pouvez prendre le contrôle en désactivant le ramasse-miettes ou en le
- forçant à passer à un moment donné car certaines parties de votre application
- pourraient être fortement dépendantes du temps de traitement, auquel cas vous pourriez
- souhaiter que le ramasse-miettes ne se lance pas. Bien entendu, en désactivant le
- ramasse-miettes pour certaines parties de votre application, vous prenez le risque de créer
- des fuites de mémoire, puisque certaines racines probables pourraient ne pas être
- enregistrées dans le tampon mémoire de taille limitée.
- En conséquence, il est généralement recommandé de déclencher manuellement le processus grâce à
- gc_collect_cycles juste avant l'appel à
- gc_disable, pour libérer de la mémoire. Ceci laissera un tampon
- vidé, et il y aura plus d'espace pour des racines probables lorsque
- le mécanisme sera désactivé.
-
-
-
-
- Considérations sur les performances
-
- Nous avons déjà vu dans les sections précédentes que la collecte des racines probables
- avait un impact très léger sur les performances, mais c'est lorsque l'on compare PHP 5.2 à
- PHP 5.3. Même si l'enregistrement des racines probables est plus lent que de ne pas les
- enregistrer du tout, comme dans PHP 5.2, d'autres améliorations apportées par PHP 5.3
- font que cette opération ne se ressent pas au niveau des performances.
-
-
- Il y a principalement deux niveaux pour lesquels les performances sont affectées.
- Le premier est l'empreinte mémoire réduite, et le second est le délai à l'exécution,
- lorsque le mécanisme de nettoyage effectue son opération de libération de mémoire.
- Nous allons étudier ces deux axes.
-
-
-
- Empreinte mémoire réduite
-
- Avant tout, la raison principale de l'implémentation du mécanisme de collecte des déchets
- est la réduction de la mémoire consommée, en nettoyant les références circulaires lorsque
- les conditions requises sont remplies.
- Avec PHP, ceci arrive dès que le tampon de racines est plein, ou lorsque la
- fonction gc_collect_cycles est appelée. Sur le graphe ci-après, nous
- affichons l'utilisation mémoire du script suivant, avec PHP 5.2 et avec PHP 5.3, en excluant
- la mémoire obligatoire que PHP consomme pour lui-même au démarrage.
-
-
-
- Exemple d'utilisation mémoire
-
-self = $a;
- if ( $i % 500 === 0 )
- {
- echo sprintf( '%8d: ', $i ), memory_get_usage() - $baseMemory, "\n";
- }
-}
-?>
-]]>
-
-
- Comparaison de la consommation mémoire entre PHP 5.2 et PHP 5.3
-
-
-
-
-
-
-
- Dans cet exemple quelque peu académique, nous créons un objet possédant un attribut le référençant
- lui-même. Lorsque la variable $a dans le script est réassignée à
- l'itération suivante, une fuite mémoire apparaitra. Dans ce cas, les deux conteneurs zval
- fuient (la zval de l'objet et celle de l'attribut), mais une seule racine possible
- est trouvée : la variable qui a été supprimée. Lorsque le tampon de racines est plein après
- 10.000 itérations (avec un total de 10.000 racines possibles), le mécanisme de collecte des
- déchets entre en jeu et libère la mémoire associée à ces racines probables. Cela se voit
- très clairement sur les graphes d'utilisation mémoire de PHP 5.3. Après chaque 10.000
- itérations, le mécanisme se déclenche et libère la mémoire associée aux variables circulairement
- référencées. Le mécanisme en question n'a pas énormément de travail dans cet exemple, parce que
- la structure qui a fuit est extrêmement simple.
- Le diagramme montre que l'utilisation maximale de mémoire de PHP 5.3 est d'environ
- 9Mo, là où elle n'arrête pas d'augmenter avec PHP 5.2.
-
-
-
-
- Ralentissements durant l'exécution
-
- Le second point où le mécanisme de collecte des déchets (GC) affecte les performances
- est lorsqu'il est exécuté pour libérer la mémoire "gaspillée". Pour quantifier cet
- impact, nous modifions légèrement le script précédent afin d'avoir un nombre d'itérations
- plus élevé et de supprimer la collecte de l'usage mémoire intermédiaire.
- Le second script est reproduit ci-dessous :
-
-
-
- Impact de GC sur les performances
-
-self = $a;
-}
-
-echo memory_get_peak_usage(), "\n";
-?>
-]]>
-
-
-
-
- Nous allons lancer ce script 2 fois, une fois avec
- zend.enable_gc à on, et une fois à off:
-
-
-
- Lancement du script ci-dessus
-
-
-
-
-
-
- Sur ma machine, la première commande semble durer tout le temps 10,7 secondes,
- alors que la seconde commande prend environ 11,4 secondes. Cela correspond à un ralentissement
- de 7% approximativement. Cependant, la quantité totale de mémoire utilisée par le script est réduite
- de 98%, passant de 931Mo à 10Mo. Ce benchmark n'est pas très scientifique ou même
- représentatif d'applications réelles, mais il démontre concrètement en quoi le mécanisme
- de collecte des déchets peut être utile au niveau de la consommation mémoire. Le bon point
- est que le ralentissement est toujours de 7%, dans le cas particulier de ce script, alors
- que la mémoire préservée sera de plus en plus importante au fur et à mesure que
- des références circulaires apparaitront durant l'exécution.
-
-
-
-
- Statistiques internes du GC de PHP
-
- Il est possible d'obtenir quelques informations supplémentaires concernant le mécanisme de collecte
- des déchets interne à PHP. Mais pour cela, il vous faut recompiler PHP avec le support
- du benchmarking et de la collecte de données. Vous devrez renseigner la variable
- d'environnement CFLAGS avec -DGC_BENCH=1 avant
- de lancer ./configure avec les options qui vous intéressent.
- L'exemple suivant démontre cela :
-
-
-
- Recompiler PHP pour activer le support du benchmark du GC
-
-
-
-
-
-
- Lorsque vous ré-exécutez le code du script ci-dessus avec le binaire PHP fraichement
- reconstruit, vous devriez voir le résultat suivant après l'exécution :
-
-
-
- Statistiques GC
-
-
-
-
-
-
- Les statistiques les plus intéressantes sont affichées dans le premier bloc. Vous voyez ici
- que le mécanisme de collecte des déchets a été déclenché 110 fois, et qu'au total ce sont
- plus de 2 millions d'allocations mémoire qui ont été libérées durant ces 110 passages.
- Dès lors que le mécanisme est intervenu au moins une fois, le pic du buffer racine est toujours
- de 10000.
-
-
-
-
- Conclusion
-
- De manière générale, la collecte des déchets de PHP ne causera un ralentissement
- que lorsque l'algorithme de collecte de cycles tournera, ce qui signifie que dans les scripts
- normaux (plus courts), il ne devrait pas du tout y avoir d'impact sur les performances.
-
-
- Cependant, lorsque le mécanisme de collecte de cycles sera déclenché dans des scripts
- normaux, la réduction de l'empreinte mémoire permettra l'exécution parallèle d'un nombre plus
- important de ces scripts, puisque moins de mémoire sera utilisée au total.
-
-
- Les avantages se sentent plus nettement dans le cas de scripts démons ou devant tourner longtemps.
- Ainsi, pour les applications PHP-GTK qui tournent souvent
- plus longtemps que des scripts pour le Web, le nouveau mécanisme devrait réduire
- significativement les fuites mémoire sur le long terme.
-
-
-
-
-
-
+
+
+
+
+
+ Ramasse-miettes (Garbage Collection)
+
+
+ Cette section explique les mérites du nouveau mécanisme ramasse-miettes (aussi appelé
+ GC, du terme anglais Garbage Collection) fourni à partir de PHP 5.3.
+
+
+
+ Bases sur le comptage des références
+
+ Une variable PHP est stockée en interne dans un conteneur appelé "zval". Un conteneur
+ zval contient, outre le type de la variable et sa valeur, deux informations supplémentaires.
+ La première se nomme "is_ref" et est une valeur booléenne qui indique si
+ une variable fait partie d'une référence ou non. Grâce à cette information, le moteur de
+ PHP sait différencier les variables normales des références. Comme PHP autorise
+ le programmeur à utiliser des références, au moyen de l'opérateur &, un conteneur
+ zval possède aussi un mécanisme de comptage des références afin d'optimiser l'utilisation
+ de la mémoire. Cette seconde information, appelée "refcount", contient le nombre de
+ variables (aussi appelées symboles) qui pointent vers ce conteneur zval. Tous les symboles
+ sont stockés dans une table de symboles, et il y a une table par espace de visibilité
+ (scope). Il y a un espace global pour le script principal (celui appelé par exemple via
+ le navigateur) et un espace par fonction ou méthode.
+
+
+ Un conteneur zval est créé lorsqu'une nouvelle variable est créée avec une valeur
+ constante, comme par exemple :
+
+ Création d'un nouveau conteneur zval
+
+
+]]>
+
+
+
+
+ Dans ce cas, le nouveau symbole a est créé dans le scope global,
+ et un nouveau conteneur est créé avec comme type string et comme valeur
+ new string. Le bit "is_ref" est mis par défaut à &false; car aucune
+ référence n'a été créée par le programmeur. Le compteur de références "refcount" est mis à
+ 1 car il n'y a qu'un seul symbole qui utilise ce conteneur.
+ Il est à noter que les références (c.à.d. "is_ref" est &true;) avec "refcount"
+ 1, sont traitées comme si elles n'étaient pas des
+ références (c.à.d. comme si "is_ref" était &false;). Si vous avez
+ installé Xdebug, vous pouvez afficher cette
+ information en appelant xdebug_debug_zval.
+
+
+
+ Affichage des informations zval
+
+
+]]>
+
+ &example.outputs;
+
+
+
+
+
+
+ Assigner cette variable à un autre symbole va incrémenter le refcount.
+
+
+
+ Incrémentation du refcount d'une zval
+
+
+]]>
+
+ &example.outputs;
+
+
+
+
+
+
+ Le refcount vaut 2 ici, car le même conteneur est lié à
+ la fois à a et à b. PHP est suffisamment
+ intelligent pour ne pas dupliquer le conteneur lorsque ce n'est pas nécessaire.
+ Les conteneurs sont détruits lorsque leur "refcount" atteint zéro. Le
+ "refcount" est décrémenté de un lorsque n'importe quel symbole lié à
+ un conteneur sort du scope (ex. : lorsque la fonction se termine) ou
+ lorsqu'un symbole est déalloué (ex. : par l'appel de unset).
+ L'exemple qui suit le démontre :
+
+
+
+ Décrémentation du refcount d'une zval
+
+
+]]>
+
+ &example.outputs;
+
+
+
+
+
+
+ Si, maintenant, nous appelons unset($a);, le conteneur zval, incluant
+ le type et la valeur, va être supprimé de la mémoire.
+
+
+
+ Types composés
+
+
+ Les choses se compliquent dans le cas de types composés comme array et
+ object. À la différence des valeurs scalar, les
+ array et object stockent leurs propriétés dans une table de
+ symboles qui leur est propre. Ceci signifie que l'exemple qui suit crée trois conteneurs
+ zval :
+
+
+
+ Création d'une zval array
+
+ 'life', 'number' => 42 );
+xdebug_debug_zval( 'a' );
+?>
+]]>
+
+ &example.outputs.similar;
+
+ (refcount=1, is_ref=0)='life',
+ 'number' => (refcount=1, is_ref=0)=42
+)
+]]>
+
+ Ou graphiquement
+
+ Zvals d'un tableau simple
+
+
+
+
+
+
+
+ Les trois conteneurs zval sont : a, meaning, et
+ number. Les mêmes règles s'appliquent pour l'incrémentation et la
+ décrémentation des "refcounts". Ci-après, nous ajoutons un autre élément au tableau, et nous
+ renseignons sa valeur avec le contenu d'un élément déjà existant du tableau :
+
+
+
+ Ajout d'un élément déjà existant au tableau
+
+ 'life', 'number' => 42 );
+$a['life'] = $a['meaning'];
+xdebug_debug_zval( 'a' );
+?>
+]]>
+
+ &example.outputs.similar;
+
+ (refcount=2, is_ref=0)='life',
+ 'number' => (refcount=1, is_ref=0)=42,
+ 'life' => (refcount=2, is_ref=0)='life'
+)
+]]>
+
+ Ou graphiquement
+
+ Zvals pour un tableau simple avec une référence
+
+
+
+
+
+
+
+ La sortie Xdebug que nous voyons indique que l'ancien et le nouvel élément du tableau
+ pointent maintenant tous deux vers un conteneur zval dont le "refcount" vaut 2.
+ Même si la sortie XDebug montre deux conteneurs zval avec comme valeur 'life', ils sont les
+ mêmes. La fonction xdebug_debug_zval ne montre pas cela, mais vous
+ pourriez le voir en affichant aussi le pointeur de mémoire.
+
+
+ Supprimer un élément du tableau est assimilable à la suppression d'un symbole depuis un
+ espace. Ce faisant, le "refcount" du conteneur vers lequel l'élément du tableau pointe est
+ décrémenté. Une fois encore, s'il atteint zéro, le conteneur zval est supprimé de la mémoire.
+ Voici un exemple qui le démontre :
+
+
+
+ Suppression d'un élément de tableau
+
+ 'life', 'number' => 42 );
+$a['life'] = $a['meaning'];
+unset( $a['meaning'], $a['number'] );
+xdebug_debug_zval( 'a' );
+?>
+]]>
+
+ &example.outputs.similar;
+
+ (refcount=1, is_ref=0)='life'
+)
+]]>
+
+
+
+
+ Maintenant, les choses deviennent intéressantes si nous ajoutons le tableau
+ comme élément de lui-même. Nous faisons cela dans l'exemple qui suit, en utilisant un
+ opérateur de référence pour éviter que PHP ne crée une copie :
+
+
+
+ Ajout du tableau comme référence à lui-même en tant qu'élément
+
+
+]]>
+
+ &example.outputs.similar;
+
+ (refcount=1, is_ref=0)='one',
+ 1 => (refcount=2, is_ref=1)=...
+)
+]]>
+
+ Ou graphiquement
+
+ Zvals dans un tableau avec référence circulaire
+
+
+
+
+
+
+
+ Vous pouvez voir que la variable tableau (a) tout comme le second élément
+ (1) pointent désormais vers un conteneur dont le "refcount" vaut
+ 2. Les "..." sur l'affichage indiquent une récursion, qui, dans ce cas,
+ signifie que le "..." pointe sur le tableau lui-même.
+
+
+ Comme précédemment, supprimer une variable supprime son symbole, et le refcount du conteneur
+ sur lequel il pointait est décrémenté. Donc, si nous supprimons la variable
+ $a après avoir exécuté le code ci-dessus, le compteur de références du
+ conteneur sur lequel pointent $a et l'élément "1" sera décrémenté de un,
+ passant de "2" à "1". Ceci peut être représenté par :
+
+
+
+ Suppression de $a
+
+ (refcount=1, is_ref=0)='one',
+ 1 => (refcount=1, is_ref=1)=...
+)
+]]>
+
+ Ou graphiquement
+
+ Zvals après suppression du tableau contenant une référence circulaire, fuite mémoire
+
+
+
+
+
+
+
+
+
+ Problèmes de nettoyage
+
+ Bien qu'il n'y ait plus aucun symbole dans l'espace de variables courant qui pointe
+ vers cette structure, elle ne peut être nettoyée, car l'élément "1" du tableau
+ pointe toujours vers ce même tableau. Comme il n'y a plus aucun symbole externe
+ pointant vers cette structure, l'utilisateur ne peut pas la nettoyer manuellement ;
+ il y a donc une fuite de mémoire. Heureusement, PHP va détruire cette structure à la fin de
+ la requête, mais avant cette étape, la mémoire n'est pas libérée. Cette situation se
+ produit souvent si vous implémentez un algorithme d'analyse ou d'autres idées où vous avez
+ un enfant qui pointe vers son parent. La même chose peut bien entendu se produire avec les objets,
+ et c'est même plus probable, puisqu'ils sont toujours implicitement utilisés par
+ "référence".
+
+
+ Ceci peut ne pas être gênant si cela n'arrive qu'une ou deux fois, mais s'il y a des
+ milliers, ou même des millions, de ces fuites mémoires, alors cela risque évidemment
+ de devenir un problème important. C'est particulièrement problématique pour les scripts
+ qui durent longtemps, comme les démons pour lesquels la requête ne termine pour ainsi dire
+ jamais, ou encore dans de grosses suites de tests unitaires.
+ Ce dernier cas a été rencontré en lançant les tests unitaires du composant Template de la
+ bibliothèque eZ Components. Dans certains cas, la suite de tests nécessitait plus de 2Go de
+ mémoire, que le serveur de test n'avait pas vraiment à disposition.
+
+
+
+
+
+ Nettoyage de Cycles
+
+ Traditionnellement, les mécanismes de comptage de références, comme utilisés auparavant
+ dans PHP, ne savent pas gérer les fuites mémoires dues à des références circulaires ;
+ cependant depuis PHP 5.3.0, un algorithme synchrone issu de l'analyse
+ Concurrent Cycle Collection in Reference Counted Systems
+ est utilisé pour répondre à ce problème particulier.
+
+
+ Une explication complète du fonctionnement de l'algorithme irait un peu au-delà du cadre de cette section,
+ mais nous allons ici présenter les principes de base. Avant tout, nous allons établir quelques règles de base.
+ Si un refcount est incrémenté, le conteneur est toujours utilisé, donc pas nettoyé. Si le refcount
+ est décrémenté et atteint zéro, le conteneur zval peut être supprimé et la mémoire libérée. Premièrement, ceci signifie
+ que les cycles perturbateurs ne peuvent être créés que lorsque le refcount est décrémenté vers une valeur
+ différente de zéro. Ensuite, dans un cycle problématique, il est possible de détecter les déchets en
+ vérifiant s'il est possible ou non de décrémenter leur refcount de un, en vérifiant ensuite quelles zvals
+ ont un refcount à zéro.
+
+
+
+ Algorithme de collecte des déchets
+
+
+
+
+
+
+ Pour éviter d'avoir à appeler la routine de nettoyage à chaque décrémentation de refcount possible,
+ l'algorithme place toutes les zval racines dans un "tampon de racines" (en les marquant en "violet").
+ Il s'assure aussi que chaque racine n'apparaisse qu'une seule fois dans le tampon. Le
+ mécanisme de nettoyage n'intervient alors que lorsque le tampon est plein. Voyez l'étape A
+ sur la figure ci-dessus.
+
+
+ A l'étape B, l'algorithme lance une recherche sur toutes les racines possibles, afin de
+ décrémenter de une unité les refcounts de toutes les zvals qu'il trouve, en faisant bien
+ attention de ne pas décrémenter deux fois le refcount de la même zval (en les marquant
+ comme "grises"). A l'étape C, l'algorithme relance une recherche sur toutes les racines
+ possibles et scrute la valeur de refcount de chaque zval. S'il trouve un refcount à zéro,
+ la zval est marquée comme "blanche" (bleu sur la figure). S'il trouve une valeur supérieure à zéro,
+ il annule la décrémentation du refcount en refaisant une recherche à partir de ce nœud, et les
+ marque comme "noires" à nouveau. Dans la dernière étape, D, l'algorithme parcourt tout le
+ tampon des racines et les supprime, tout en scrutant chaque zval ; toute zval marquée
+ comme "blanche" à l'étape précédente sera alors supprimée de la mémoire.
+
+
+ Maintenant que vous savez globalement comment l'algorithme fonctionne, nous allons
+ voir comment il a été intégré dans PHP. Par défaut, le ramasse-miettes de PHP est
+ activé. Il existe cependant une option de &php.ini; pour changer cela :
+ zend.enable_gc.
+
+
+ Lorsque le ramasse-miettes est activé, l'algorithme de recherche des cycles
+ décrit ci-dessus est exécuté à chaque fois que le tampon est plein. Le tampon de
+ racines a une taille fixée à 10.000 racines (ce paramètre est changeable grâce à
+ GC_THRESHOLD_DEFAULT dans Zend/zend_gc.c
+ dans le code source de PHP, une recompilation est donc nécessaire). Si le ramasse-
+ miettes est désactivé, la recherche des cycles l'est aussi. Cependant, les racines
+ possibles seront toujours enregistrées dans le tampon, ceci ne dépend pas de l'activation
+ du ramasse-miettes.
+
+
+ Si le tampon est plein alors que le mécanisme de nettoyage est désactivé, les racines
+ ne seront plus enregistrées. Ces racines ne seront donc jamais analysées par l'algorithme,
+ et si elles faisaient partie de références circulaires, elles ne seront jamais nettoyées,
+ et elles causeront des fuites de mémoire.
+
+
+ La raison pour laquelle les racines possibles sont enregistrées dans le tampon
+ même si le mécanisme est désactivé est qu'il aurait été trop coûteux de vérifier l'activation
+ éventuelle du mécanisme à chaque tentative d'ajout d'une racine dans le tampon. Le mécanisme
+ de ramasse-miettes et d'analyse peut, lui, être très coûteux en temps.
+
+
+ En plus de pouvoir changer la valeur du paramètre de configuration
+ zend.enable_gc, vous pouvez aussi activer ou désactiver le mécanisme de
+ ramasse-miettes en appelant les fonctions gc_enable ou
+ gc_disable respectivement. Utiliser ces fonctions aura le même effet que de
+ modifier le paramètre de configuration. Vous avez aussi la possibilité de forcer l'exécution du
+ ramasse-miettes à un moment donné dans votre script, même si le tampon n'est pas encore
+ complètement plein. Utilisez pour cela la fonction gc_collect_cycles,
+ qui retournera le nombre de cycles alors collectés.
+
+
+ Vous pouvez prendre le contrôle en désactivant le ramasse-miettes ou en le
+ forçant à passer à un moment donné car certaines parties de votre application
+ pourraient être fortement dépendantes du temps de traitement, auquel cas vous pourriez
+ souhaiter que le ramasse-miettes ne se lance pas. Bien entendu, en désactivant le
+ ramasse-miettes pour certaines parties de votre application, vous prenez le risque de créer
+ des fuites de mémoire, puisque certaines racines probables pourraient ne pas être
+ enregistrées dans le tampon mémoire de taille limitée.
+ En conséquence, il est généralement recommandé de déclencher manuellement le processus grâce à
+ gc_collect_cycles juste avant l'appel à
+ gc_disable, pour libérer de la mémoire. Ceci laissera un tampon
+ vidé, et il y aura plus d'espace pour des racines probables lorsque
+ le mécanisme sera désactivé.
+
+
+
+
+ Considérations sur les performances
+
+ Nous avons déjà vu dans les sections précédentes que la collecte des racines probables
+ avait un impact très léger sur les performances, mais c'est lorsque l'on compare PHP 5.2 à
+ PHP 5.3. Même si l'enregistrement des racines probables est plus lent que de ne pas les
+ enregistrer du tout, comme dans PHP 5.2, d'autres améliorations apportées par PHP 5.3
+ font que cette opération ne se ressent pas au niveau des performances.
+
+
+ Il y a principalement deux niveaux pour lesquels les performances sont affectées.
+ Le premier est l'empreinte mémoire réduite, et le second est le délai à l'exécution,
+ lorsque le mécanisme de nettoyage effectue son opération de libération de mémoire.
+ Nous allons étudier ces deux axes.
+
+
+
+ Empreinte mémoire réduite
+
+ Avant tout, la raison principale de l'implémentation du mécanisme de collecte des déchets
+ est la réduction de la mémoire consommée, en nettoyant les références circulaires lorsque
+ les conditions requises sont remplies.
+ Avec PHP, ceci arrive dès que le tampon de racines est plein, ou lorsque la
+ fonction gc_collect_cycles est appelée. Sur le graphe ci-après, nous
+ affichons l'utilisation mémoire du script suivant, avec PHP 5.2 et avec PHP 5.3, en excluant
+ la mémoire obligatoire que PHP consomme pour lui-même au démarrage.
+
+
+
+ Exemple d'utilisation mémoire
+
+self = $a;
+ if ( $i % 500 === 0 )
+ {
+ echo sprintf( '%8d: ', $i ), memory_get_usage() - $baseMemory, "\n";
+ }
+}
+?>
+]]>
+
+
+ Comparaison de la consommation mémoire entre PHP 5.2 et PHP 5.3
+
+
+
+
+
+
+
+ Dans cet exemple quelque peu académique, nous créons un objet possédant un attribut le référençant
+ lui-même. Lorsque la variable $a dans le script est réassignée à
+ l'itération suivante, une fuite mémoire apparaitra. Dans ce cas, les deux conteneurs zval
+ fuient (la zval de l'objet et celle de l'attribut), mais une seule racine possible
+ est trouvée : la variable qui a été supprimée. Lorsque le tampon de racines est plein après
+ 10.000 itérations (avec un total de 10.000 racines possibles), le mécanisme de collecte des
+ déchets entre en jeu et libère la mémoire associée à ces racines probables. Cela se voit
+ très clairement sur les graphes d'utilisation mémoire de PHP 5.3. Après chaque 10.000
+ itérations, le mécanisme se déclenche et libère la mémoire associée aux variables circulairement
+ référencées. Le mécanisme en question n'a pas énormément de travail dans cet exemple, parce que
+ la structure qui a fuit est extrêmement simple.
+ Le diagramme montre que l'utilisation maximale de mémoire de PHP 5.3 est d'environ
+ 9Mo, là où elle n'arrête pas d'augmenter avec PHP 5.2.
+
+
+
+
+ Ralentissements durant l'exécution
+
+ Le second point où le mécanisme de collecte des déchets (GC) affecte les performances
+ est lorsqu'il est exécuté pour libérer la mémoire "gaspillée". Pour quantifier cet
+ impact, nous modifions légèrement le script précédent afin d'avoir un nombre d'itérations
+ plus élevé et de supprimer la collecte de l'usage mémoire intermédiaire.
+ Le second script est reproduit ci-dessous :
+
+
+
+ Impact de GC sur les performances
+
+self = $a;
+}
+
+echo memory_get_peak_usage(), "\n";
+?>
+]]>
+
+
+
+
+ Nous allons lancer ce script 2 fois, une fois avec
+ zend.enable_gc à on, et une fois à off:
+
+
+
+ Lancement du script ci-dessus
+
+
+
+
+
+
+ Sur ma machine, la première commande semble durer tout le temps 10,7 secondes,
+ alors que la seconde commande prend environ 11,4 secondes. Cela correspond à un ralentissement
+ de 7% approximativement. Cependant, la quantité totale de mémoire utilisée par le script est réduite
+ de 98%, passant de 931Mo à 10Mo. Ce benchmark n'est pas très scientifique ou même
+ représentatif d'applications réelles, mais il démontre concrètement en quoi le mécanisme
+ de collecte des déchets peut être utile au niveau de la consommation mémoire. Le bon point
+ est que le ralentissement est toujours de 7%, dans le cas particulier de ce script, alors
+ que la mémoire préservée sera de plus en plus importante au fur et à mesure que
+ des références circulaires apparaitront durant l'exécution.
+
+
+
+
+ Statistiques internes du GC de PHP
+
+ Il est possible d'obtenir quelques informations supplémentaires concernant le mécanisme de collecte
+ des déchets interne à PHP. Mais pour cela, il vous faut recompiler PHP avec le support
+ du benchmarking et de la collecte de données. Vous devrez renseigner la variable
+ d'environnement CFLAGS avec -DGC_BENCH=1 avant
+ de lancer ./configure avec les options qui vous intéressent.
+ L'exemple suivant démontre cela :
+
+
+
+ Recompiler PHP pour activer le support du benchmark du GC
+
+
+
+
+
+
+ Lorsque vous ré-exécutez le code du script ci-dessus avec le binaire PHP fraichement
+ reconstruit, vous devriez voir le résultat suivant après l'exécution :
+
+
+
+ Statistiques GC
+
+
+
+
+
+
+ Les statistiques les plus intéressantes sont affichées dans le premier bloc. Vous voyez ici
+ que le mécanisme de collecte des déchets a été déclenché 110 fois, et qu'au total ce sont
+ plus de 2 millions d'allocations mémoire qui ont été libérées durant ces 110 passages.
+ Dès lors que le mécanisme est intervenu au moins une fois, le pic du buffer racine est toujours
+ de 10000.
+
+
+
+
+ Conclusion
+
+ De manière générale, la collecte des déchets de PHP ne causera un ralentissement
+ que lorsque l'algorithme de collecte de cycles tournera, ce qui signifie que dans les scripts
+ normaux (plus courts), il ne devrait pas du tout y avoir d'impact sur les performances.
+
+
+ Cependant, lorsque le mécanisme de collecte de cycles sera déclenché dans des scripts
+ normaux, la réduction de l'empreinte mémoire permettra l'exécution parallèle d'un nombre plus
+ important de ces scripts, puisque moins de mémoire sera utilisée au total.
+
+
+ Les avantages se sentent plus nettement dans le cas de scripts démons ou devant tourner longtemps.
+ Ainsi, pour les applications PHP-GTK qui tournent souvent
+ plus longtemps que des scripts pour le Web, le nouveau mécanisme devrait réduire
+ significativement les fuites mémoire sur le long terme.
+
+
+
+
+
+
From c32836cc52cbe5370bdc74c84b652fe99eeb355a Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:38:11 +0100
Subject: [PATCH 17/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20install/fpm/configuration.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
install/fpm/configuration.xml | 2196 ++++++++++++++++-----------------
1 file changed, 1098 insertions(+), 1098 deletions(-)
diff --git a/install/fpm/configuration.xml b/install/fpm/configuration.xml
index 010cd93ad1..f50baf5d73 100644
--- a/install/fpm/configuration.xml
+++ b/install/fpm/configuration.xml
@@ -1,1098 +1,1098 @@
-
-
-
-
- Configuration
-
- FPM utilise la syntaxe &php.ini; pour son fichier de configuration
- - php-fpm.conf ainsi que les fichiers de configuration
- de la file d'attente.
-
-
- Liste des directives globales de php-fpm.conf
-
-
-
- pid
- &string;
-
-
-
- Chemin vers le fichier PID. Par défaut : none.
-
-
-
-
-
- error_log
- &string;
-
-
-
- Chemin vers le fichier de journal. Par défaut:
- #INSTALL_PREFIX#/log/php-fpm.log.
- Si défini à "syslog", le journal est envoyé vers syslogd au lieu d'être
- écrit dans un fichier local.
-
-
-
-
-
- log_level
- &string;
-
-
-
- Niveau de journalisation d'erreur. Valeurs possibles : alert, error, warning, notice,
- debug. Par défaut : notice.
-
-
-
-
-
- log_limit
- &integer;
-
-
-
- Limite d'historique pour les lignes enregistrées qui permet des messages d'événements plus longs que 1024 caractères sans s'emballer.
- Valeur par défaut : 1024
- Disponible à partir de PHP 7.3.0.
-
-
-
-
-
- log_buffering
- &boolean;
-
-
-
- Historique expérimental sans tampon.
- Valeur par défaut : yes.
- Disponible à partir de PHP 7.3.0.
-
-
-
-
-
- syslog.facility
- &string;
-
-
-
- Utilisé pour spécifier quel type de programme écrit le message.
- Valeur par défaut : daemon.
-
-
-
-
-
- syslog.ident
- &string;
-
-
-
- Ajoute au début de chaque message.
- Si vous avez de multiples instances FPM s'exécutant sur le même serveur,
- vous pouvez changer la valeur par défaut afin qu'elle convienne à vos besoins.
- Valeur par défaut : php-fpm.
-
-
-
-
-
- emergency_restart_threshold
- &integer;
-
-
-
- Si ce nombre de processus fils terminent avec un SIGSEGV ou SIGBUS dans l'intervalle
- de temps précisé dans emergency_restart_interval, alors FPM redémarrera.
- Une valeur de 0 signifie 'Off'. Valeur par défaut : 0 (Off).
-
-
-
-
-
- emergency_restart_interval
- &mixed;
-
-
-
- Intervalle de temps utilisé par emergency_restart_interval pour determiner lorsqu'un
- redémarrage doux doit être lancé. Ceci peut être utile pour contourner des corruptions
- accidentelles dans la mémoire partagée d'un accélérateur. Unités disponibles :
- s(econdes), m(inutes), h(eures), ou j(ours).
- Unité par défaut : secondes. Valeur par défaut : 0 (Off).
-
-
-
-
-
- process_control_timeout
- &mixed;
-
-
-
- Temps limite qu'attendront les processus fils pour réagir aux signaux du père.
- Unités disponibles : s(econdes), m(inutes), h(eures), ou j(ours)
- Unité par défaut : secondes. Valeur par défaut : 0.
-
-
-
-
-
- process.max
- &integer;
-
-
-
- Le nombre maximum de processus que FPM va forker. Ceci a été conçu pour
- contrôler le nombre global de processus lors de l'utilisation d'un
- gestionnaire de processus dynamique avec beaucoup de pools. À utiliser avec attention.
- Valeur par défaut : 0.
-
-
-
-
-
- process.priority
- &integer;
-
-
-
- Défini la priorité nice(2) à appliquer au processus principal (uniquement si défini)
- La valeur peut varier de -19 (priorité haute) à 20 (priorité basse).
- Valeur par défaut : non défini.
-
-
-
-
-
- daemonize
- &boolean;
-
-
-
- Envoie FPM en arrière-plan. Mettez 'no' pour garder FPM au premier plan lors du
- débogage. Valeur par défaut : yes.
-
-
-
-
-
- rlimit_files
- &integer;
-
-
-
- Défini la rlimit pour les descripteurs de fichiers ouverts pour le
- processus principal.
- Valeur par défaut : valeur définie par le système.
-
-
-
-
-
- rlimit_core
- &integer;
-
-
-
- Défini la taille maximale de rlimit pour le processus principal.
- Valeur par défaut : 0.
-
-
-
-
-
- events.mechanism
- &string;
-
-
-
- Spécifie le gestionnaire d’événement que FPM va utiliser.
- Les options suivantes sont disponibles: epoll, kqueue (*BSD), port (Solaris), poll, select.
- Valeur par défaut: non définie (détection automatique privilégiant epoll et kqueue).
-
-
-
-
-
- systemd_interval
- &integer;
-
-
-
- Quand FPM est construit avec le support de systemd, spécifie l'intervalle en
- seconde, entre les notifications de rapport de santé envoyé à systemd.
- Définir à 0 pour désactiver.
- Valeur par défaut : 10.
-
-
-
-
-
-
-
- Liste des directives de pool
-
- Avec FPM vous pouvez exécuter plusieurs pools de processus avec des paramètres différents.
- Voici les paramètres qui peuvent être ajustés par pool.
-
-
-
-
- listen
- &string;
-
-
-
- L'adresse pour accepter des requêtes FastCGI. Syntaxes valides :
- 'ip.add.re.ss:port', 'port', '/path/to/unix/socket'.
- Cette option est obligatoire pour chaque pool.
-
-
-
-
-
- listen.backlog
- &integer;
-
-
-
- Affecte listen(2) backlog.
- Une valeur de -1 signifie le maximum sur les systèmes BSD.
- Valeur par défaut : -1 (FreeBSD ou OpenBSD)
- ou 511 (Linux et autres plateformes).
-
-
-
-
-
- listen.allowed_clients
- &string;
-
-
-
- Liste des adresses IPv4 ou IPv6 des clients FastCGI autorisés à se connecter.
- C'est équivalent à la variable d'environnement FCGI_WEB_SERVER_ADDRS dans le
- système FastCGI original de PHP (5.2.2+). N'a de sens qu'avec un socket tcp en
- écoute. Chaque adresse doit être séparée par une virgule. Si cette valeur n'est
- pas précisée, les connexions seront acceptées depuis toute adresse ip.
- Valeur par défaut: non définie (toute adresse IP acceptée).
-
-
-
-
-
- listen.owner
- &string;
-
-
-
- Affecte les permissions pour le socket Unix si utilisé. Sous Linux, les permissions read/write
- doivent être affectées pour autoriser des connexions depuis un serveur web. Beaucoup de systèmes
- dérivés BSD autorisent les connexions quelles que soient les permissions.
- Valeurs par défaut : user et group sont ceux de l'utilisateur courant, le mode est 0660.
-
-
-
-
-
- listen.group
- &string;
-
-
-
- Voyez listen.owner.
-
-
-
-
-
- listen.mode
- &string;
-
-
-
- Voyez listen.owner.
-
-
-
-
-
- listen.acl_users
- &string;
-
-
-
- Quand les listes de contrôle d'accès POSIX sont supportées, vous pouvez les définir en utilisant cette option.
- Quand défini, listen.owner et listen.group
- sont ignorés.
- La valeur est une liste de noms d'utilisateurs séparés par des virgules.
-
-
-
-
-
- listen.acl_groups
- &string;
-
-
-
- Voir listen.acl_users.
- La valeur est une liste de noms de groupes séparés par des virgules.
-
-
-
-
-
- listen.setfib
- int
-
-
-
- Définit la table de routage associée (FIB). FreeBSD uniquement.
- Valeur par défaut : -1. Depuis PHP 8.2.0.
-
-
-
-
-
- user
- &string;
-
-
-
- Utilisateur Unix des processus FPM. Cette option est obligatoire.
-
-
-
-
-
- group
- &string;
-
-
-
- Groupe Unix des processus FPM. Si non précisé, le groupe de l'utilisateur est
- utilisé.
-
-
-
-
-
- pm
- &string;
-
-
-
- Choisi comment le gestionnaire de processus va contrôler le nombre de processus fils.
- Valeurs possibles : static, ondemand,
- dynamic. Option obligatoire.
-
-
- static - nombre de processus fils fixés (pm.max_children).
-
-
- ondemand - le processus se réactive à la demande
- (lorsque demandé, c'est l'opposé de dynamique où pm.start_servers
- sont démarrés lorsque le service démarre).
-
-
- dynamic - nombre de processus fils dynamiques basé sur les directives suivantes:
- pm.max_children, pm.start_servers,
- pm.min_spare_servers, pm.max_spare_servers.
-
-
-
-
-
- pm.max_children
- &integer;
-
-
-
- Nombre de processus fils à créer lorsque pm est réglé sur
- static. Nombre maximum de processus fils à créer lorsque
- pm est réglé sur dynamic. Option obligatoire.
-
-
- Cette option affecte la limite du nombre de requêtes simultanées qui seront servies. Equivalent à
- ApacheMaxClients avec mpm_prefork et à PHP_FCGI_CHILDREN dans l'implémentation originale
- de FastCGI de PHP.
-
-
-
-
-
- pm.start_servers
- &integer;
-
-
-
- Nombre de processus fils à créer au démarrage. Utilisé seulement si
- pm est réglé sur dynamic.
- Valeur par défaut : (min_spare_servers + max_spare_servers) / 2.
-
-
-
-
-
- pm.min_spare_servers
- &integer;
-
-
-
- Nombre minimum de processus au repos (idle) voulus. Utilisé seulement si
- pm est réglé sur dynamic. Obligatoire dans
- ce cas.
-
-
-
-
-
- pm.max_spare_servers
- &integer;
-
-
-
- Nombre maximum de processus au repos (idle) voulus. Utilisé seulement si
- pm est réglé sur dynamic. Obligatoire dans
- ce cas.
-
-
-
-
-
- pm.max_spawn_rate
- int
-
-
-
- Nombre maximum de taux de génération de processus enfants simultanés. Utilisé seulement si
- pm est défini à dynamic.
-
-
-
-
-
- pm.process_idle_timeout
- &mixed;
-
-
-
- Nombre de secondes après lesquelles un processus inactif sera tué.
- Utilisé uniquement quand pm est défini à
- ondemand.
- Unités disponibles : s (secondes)(par défaut), m (minutes), h (heure), ou d (jour).
- Valeur par défaut : 10s.
-
-
-
-
-
- pm.max_requests
- &integer;
-
-
-
- Nombre de requêtes que chaque processus fils devrait exécuter avant de renaitre.
- Ceci peut être utile pour contourner des fuites mémoires dans des librairies tierces.
- Pour un traitement sans fin des requêtes, précisez '0'. Equivalent à
- PHP_FCGI_MAX_REQUESTS. Par défaut : 0.
-
-
-
-
-
- pm.status_listen
- string
-
-
-
- L'adresse sur laquelle accepter la demande de statut FastCGI. Cela crée un nouveau pool invisible
- qui peut traiter les requêtes indépendamment. Ceci est utile si le pool principal est occupé par des
- requêtes de longue durée car il est toujours possible d'obtenir le statut
- FPM status page tant qu'elles ne sont pas terminées.
- La syntaxe est la même que pour la directive listen.
- Valeur par défaut : none.
-
-
-
-
-
- pm.status_path
- &string;
-
-
-
- L'URI vers la page de statut de FPM.
- Cette valeur doit commencer par une barre oblique (/). Si cette valeur n'est pas définie,
- aucun URI ne sera reconnu en tant qu'une page d'état. Valeur par défaut : none.
-
-
-
-
-
- ping.path
- &string;
-
-
-
- L'URI de ping pour appeler la page de monitoring de FPM. Si aucune valeur n'est précisée,
- aucune page de ping ne sera disponible. Ceci pourrait être utilisé pour tester depuis l'extérieur
- si FPM est toujours disponible et prêt à répondre. Notez que la valeur doit commencer par un
- slash (/).
-
-
-
-
-
- ping.response
- &string;
-
-
-
- Cette directive est utile pour personnaliser la réponse à une requête de ping.
- La réponse est formatée comme text/plain avec un code de réponse de 200.
- Valeur par défaut : pong.
-
-
-
-
-
- process.priority
- &integer;
-
-
-
- Spécifiez la priorité nice(2) à appliquer au processus de travail
- (uniquement s'il est défini). La valeur peut varier de -19 (priorité
- la plus élevée) à 20 (priorité la plus basse). Valeur par
- défaut: non définie.
-
-
-
-
-
- process.dumpable
- &boolean;
-
-
-
- Défini l'indicateur de processus dumpable (PR_SET_DUMPABLE prctl) même
- si l'utilisateur ou le groupe de processus est différent de
- l'utilisateur du processus maître. Il permet de créer un core dump du
- processus et ptrace le processus pour l'utilisateur de pool. Valeur par
- défaut : no. Depuis PHP 7.0.29, 7.1.17 et 7.2.5.
-
-
-
-
-
- prefix
- &string;
-
-
-
- Spécifier le préfixe pour l'évaluation du chemin
-
-
-
-
-
- request_terminate_timeout_track_finished
- bool
-
-
-
- Le timeout défini par
- request_terminate_timeout n'est pas engagé
- après un fastcgi_finish_request ou
- lorsque l'application s'est terminée et que les fonctions internes d'arrêt sont appelées. Cette directive
- permet d'appliquer la limite de temps sans condition.
- Valeur par défaut : no. À partir de PHP 7.3.0.
-
-
-
-
-
- request_terminate_timeout
- &mixed;
-
-
-
- Le timeout pour servir une requête après lequel le processus concerné sera
- tué. Cette option devrait être utilisée lorsque l'option 'max_execution_time'
- n'arrête pas l'exécution du script pour une raison quelconque.
- Une valeur de '0' signifie
- 'Off'. Unités disponibles : s(econdes)(défaut), m(inutes), h(eures), ou j(ours).
- Par défaut : 0.
-
-
-
-
-
- request_slowlog_timeout
- &mixed;
-
-
-
- Le timeout pour servir une requête dans laquelle la backtrace PHP sera vidée
- dans le fichier 'slowlog'. Une valeur de '0' signifie 'Off'.
- Unités disponibles : s(econdes)(défaut), m(inutes), h(eures), ou j(ours).
- Par défaut : 0.
-
-
-
-
-
- request_slowlog_trace_depth
- int
-
-
-
- Le niveau de profondeur de la trace de la pile de log slowlog.
- Valeur par défaut : 20. À partir de PHP 7.2.0.
-
-
-
-
-
- slowlog
- &string;
-
-
-
- Le journal pour les requêtes lentes, par défaut:
- #INSTALL_PREFIX#/log/php-fpm.log.slow.
-
-
-
-
-
- rlimit_files
- &integer;
-
-
-
- Affecte la rlimit pour les descripteurs de fichiers ouverts des processus
- enfants de ce pool. Valeur par défaut : valeur du système.
-
-
-
-
-
- rlimit_core
- &integer;
-
-
-
- Affecte la taille maximale de rlimit des processus enfants de ce pool.
- Valeurs possibles : 'unlimited' ou un entier plus grand ou égal à 0.
- Valeur par défaut : valeur définie par le système.
-
-
-
-
-
- chroot
- &string;
-
-
-
- Chroot vers ce dossier au démarrage. Cette valeur doit être un chemin absolu.
- Si cette valeur n'est pas définie, chroot n'est pas utilisé.
-
-
-
-
-
- chdir
- &string;
-
-
-
- Chdir vers ce dossier au démarrage. Cette valeur doit être un chemin absolu.
- Valeur par défaut : dossier courant ou / si chroot.
-
-
-
-
-
- catch_workers_output
- &boolean;
-
-
-
- Redirige stdout et stderr vers le journal d'erreur principal. Si non précisé,
- stdout et stderr seront redirigés vers /dev/null selon les specifications FastCGI.
- Valeur par défaut: no.
-
-
-
-
-
- decorate_workers_output
- &boolean;
-
-
-
- Active la décoration de sortie pour les travailleurs de sortie quand
- catch_workers_output est activé.
- Valeur par défaut : yes.
- Disponible à partir de PHP 7.3.0.
-
-
-
-
-
- clear_env
- &boolean;
-
-
-
- Nettoie l'environnement des agents FPM.
- Prévient que des variables d’environnement arbitraire puissent
- atteindre les processus FPM par le nettoyage de l'environnement
- de ces agents avant que les variables d'environnement spécifiées
- dans la configuration du pool ne soient ajoutées.
-
-
-
-
-
- security.limit_extensions
- &string;
-
-
-
- Limite les extensions que le script principal FPM va être autorisé à analyser.
- Ceci peut prévenir les erreurs de configuration côté serveur.
- Vous pouvez limiter FPM à exécuter seulement les extensions .php pour prévenir que des utilisateurs malicieux utilisent d'autres extensions pour exécuter du code.
- Valeur par défaut : .php .phar
-
-
-
-
-
- apparmor_hat
- string
-
-
-
- Si AppArmor est activé, permet de changer un hat (chapeau).
- Valeur par défaut : non défini
-
-
-
-
-
- access.log
- &string;
-
-
-
- Le fichier journal d'accès. Valeur par défaut : non définie
-
-
-
-
-
- access.format
- &string;
-
-
-
- Le format du journal d'accès.
- Valeur par défaut : "%R - %u %t \"%m %r\" %s":
-
- Options valide
-
-
-
- Placeholder
- &Description;
-
-
-
-
-
- %%
-
- Le caractère %
-
-
-
- %C
-
-
- %CPU utilisé par la requête. Les formats suivants sont acceptés :
- %{user}C pour la CPU utilisateur uniquement,
- %{system}C pour la CPU système uniquement,
- %{total}C pour la CPU utilisateur + système (par défaut)
-
-
-
-
- %d
-
-
- Temps pris pour traiter la requête.
- Les formats suivants sont acceptés pour la précision :
- %{seconds}d (par défaut), %{milliseconds}d,
- %{microseconds}d
-
-
-
-
- %{name}e
-
-
- Une variable d'environnement (identique à $_ENV ou $_SERVER).
- Un nom de variable doit être spécifié entre accolades pour indiquer le nom de la variable d'environnement.
- Par exemple, des informations spécifiques au serveur comme %{REQUEST_METHOD}e ou
- %{SERVER_PROTOCOL}e, des en-têtes HTTP tels que
- %{HTTP_HOST}e ou %{HTTP_USER_AGENT}e
-
-
-
-
- %f
-
- Nom du fichier script
-
-
-
- %l
-
-
- Content-Length de la requête (pour les requêtes HTTP POST uniquement)
-
-
-
-
- %m
-
- Méthode HTTP de la requête
-
-
-
- %M
-
-
- Pic de mémoire allouée par PHP.
- Accepte les formats suivants :
- %{bytes}M (défaut), %{kilobytes}M
- %{kilo}M, %{megabytes}M,
- %{mega}M
-
-
-
-
- %n
-
- Nom du pool
-
-
-
- %{name}o
-
-
- En-tête de sortie. Le nom de l'en-tête doit être spécifié entre accolades.
- Par exemple : %{Content-Type}o,
- %{X-Powered-By}o, %{Transfer-Encoding}o
-
-
-
-
- %p
-
- PID de l'enfant qui a traité la demande
-
-
-
- %P
-
- PID du parent de l'enfant qui a traité la demande
-
-
-
- %q
-
- Chaîne de requête
-
-
-
- %Q
-
-
- Le caractère '?', ou le lien entre %q et %r,
- si la chaîne de requête existe
-
-
-
-
- %r
-
-
- URI de la requête sans la chaîne de requête,
- voir %q et %Q
-
-
-
-
- %R
-
- Adresse IP remote
-
-
-
- %s
-
- Statut (code de réponse)
-
-
-
- %t
-
-
- Heure du serveur à laquelle la requête a été reçue. Elle peut
- accepter un format strftime(3) :
- %d/%b/%Y:%H:%M:%S %z (par défaut).
- Le format strftime(3) doit être encapsulé dans
- une balise %{<strftime_format>}t, par exemple, pour une chaîne de temps au format ISO8601, utilisez :
- %{%Y-%m-%dT%H:%M:%S%z}t
-
-
-
-
- %T
-
-
- Heure à laquelle le log a été écrit (lorsque la requête s'est terminée). Elle peut accepter un
- format strftime(3) :
- %d/%b/%Y:%H:%M:%S %z (par défaut).
- Le format strftime(3) doit être encapsulé dans une
- balise %{<strftime_format>}T, par exemple, pour une chaîne de temps au format ISO8601, utilisez :
- %{%Y-%m-%dT%H:%M:%S%z}T
-
-
-
-
- %u
-
- Utilisateur d'authentification basique, si spécifié dans l'en-tête Authorization
-
-
-
-
-
-
-
-
-
- access.suppress_path
- array
-
-
-
- Une liste de valeurs request_uri qui devraient être filtrées du journal d'accès.
- Valeur par défaut : non définie. Depuis PHP 8.2.0.
-
-
-
-
-
- Il est possible de passer des variables d'environnement additionnelles et mettre à jour les paramètres
- de PHP d'un pool. Pour ce faire, vous devez ajouter les options suivantes au
- fichier de configuration de la file d'attente.
-
- Passer des variables d'environnement et des paramètres PHP à un pool
-
-
-
-
- Les paramètres PHP passés avec php_value ou
- php_flag écraseront leur valeur précédente.
- Notez que définir
- disable_functions ou
- disable_classes n'écrasera pas
- les valeurs concernées précédemment définies dans php.ini,
- mais rajouteront les valeurs à la suite des anciennes.
-
-
- Les paramètres définis avec php_admin_value et php_admin_flag
- ne peuvent être surchargés via ini_set.
-
-
- Les paramètres de PHP peuvent être définis dans le serveur web.
-
- Définit les paramètres PHP dans le fichier nginx.conf
-
-
-
-
-
-
- En raison du fait que ces configurations sont passées à php-fpm
- comme en-têtes fastcgi, php-fpm ne doit pas être relié directement
- au web et ainsi y être directement accessible. Sinon, tout le monde
- pourra altérer les options de configuration de PHP.
- Voir aussi l'option
- listen.allowed_clients.
-
-
-
-
- Les pools ne sont pas un mécanisme de sécurité, car elles ne
- fournissent pas une séparation totale ; par exemple toutes les pools
- utiliseraient une seule instance OPcache.
-
-
-
-
-
-
-
-
+
+
+
+
+ Configuration
+
+ FPM utilise la syntaxe &php.ini; pour son fichier de configuration
+ - php-fpm.conf ainsi que les fichiers de configuration
+ de la file d'attente.
+
+
+ Liste des directives globales de php-fpm.conf
+
+
+
+ pid
+ &string;
+
+
+
+ Chemin vers le fichier PID. Par défaut : none.
+
+
+
+
+
+ error_log
+ &string;
+
+
+
+ Chemin vers le fichier de journal. Par défaut:
+ #INSTALL_PREFIX#/log/php-fpm.log.
+ Si défini à "syslog", le journal est envoyé vers syslogd au lieu d'être
+ écrit dans un fichier local.
+
+
+
+
+
+ log_level
+ &string;
+
+
+
+ Niveau de journalisation d'erreur. Valeurs possibles : alert, error, warning, notice,
+ debug. Par défaut : notice.
+
+
+
+
+
+ log_limit
+ &integer;
+
+
+
+ Limite d'historique pour les lignes enregistrées qui permet des messages d'événements plus longs que 1024 caractères sans s'emballer.
+ Valeur par défaut : 1024
+ Disponible à partir de PHP 7.3.0.
+
+
+
+
+
+ log_buffering
+ &boolean;
+
+
+
+ Historique expérimental sans tampon.
+ Valeur par défaut : yes.
+ Disponible à partir de PHP 7.3.0.
+
+
+
+
+
+ syslog.facility
+ &string;
+
+
+
+ Utilisé pour spécifier quel type de programme écrit le message.
+ Valeur par défaut : daemon.
+
+
+
+
+
+ syslog.ident
+ &string;
+
+
+
+ Ajoute au début de chaque message.
+ Si vous avez de multiples instances FPM s'exécutant sur le même serveur,
+ vous pouvez changer la valeur par défaut afin qu'elle convienne à vos besoins.
+ Valeur par défaut : php-fpm.
+
+
+
+
+
+ emergency_restart_threshold
+ &integer;
+
+
+
+ Si ce nombre de processus fils terminent avec un SIGSEGV ou SIGBUS dans l'intervalle
+ de temps précisé dans emergency_restart_interval, alors FPM redémarrera.
+ Une valeur de 0 signifie 'Off'. Valeur par défaut : 0 (Off).
+
+
+
+
+
+ emergency_restart_interval
+ &mixed;
+
+
+
+ Intervalle de temps utilisé par emergency_restart_interval pour determiner lorsqu'un
+ redémarrage doux doit être lancé. Ceci peut être utile pour contourner des corruptions
+ accidentelles dans la mémoire partagée d'un accélérateur. Unités disponibles :
+ s(econdes), m(inutes), h(eures), ou j(ours).
+ Unité par défaut : secondes. Valeur par défaut : 0 (Off).
+
+
+
+
+
+ process_control_timeout
+ &mixed;
+
+
+
+ Temps limite qu'attendront les processus fils pour réagir aux signaux du père.
+ Unités disponibles : s(econdes), m(inutes), h(eures), ou j(ours)
+ Unité par défaut : secondes. Valeur par défaut : 0.
+
+
+
+
+
+ process.max
+ &integer;
+
+
+
+ Le nombre maximum de processus que FPM va forker. Ceci a été conçu pour
+ contrôler le nombre global de processus lors de l'utilisation d'un
+ gestionnaire de processus dynamique avec beaucoup de pools. À utiliser avec attention.
+ Valeur par défaut : 0.
+
+
+
+
+
+ process.priority
+ &integer;
+
+
+
+ Défini la priorité nice(2) à appliquer au processus principal (uniquement si défini)
+ La valeur peut varier de -19 (priorité haute) à 20 (priorité basse).
+ Valeur par défaut : non défini.
+
+
+
+
+
+ daemonize
+ &boolean;
+
+
+
+ Envoie FPM en arrière-plan. Mettez 'no' pour garder FPM au premier plan lors du
+ débogage. Valeur par défaut : yes.
+
+
+
+
+
+ rlimit_files
+ &integer;
+
+
+
+ Défini la rlimit pour les descripteurs de fichiers ouverts pour le
+ processus principal.
+ Valeur par défaut : valeur définie par le système.
+
+
+
+
+
+ rlimit_core
+ &integer;
+
+
+
+ Défini la taille maximale de rlimit pour le processus principal.
+ Valeur par défaut : 0.
+
+
+
+
+
+ events.mechanism
+ &string;
+
+
+
+ Spécifie le gestionnaire d’événement que FPM va utiliser.
+ Les options suivantes sont disponibles: epoll, kqueue (*BSD), port (Solaris), poll, select.
+ Valeur par défaut: non définie (détection automatique privilégiant epoll et kqueue).
+
+
+
+
+
+ systemd_interval
+ &integer;
+
+
+
+ Quand FPM est construit avec le support de systemd, spécifie l'intervalle en
+ seconde, entre les notifications de rapport de santé envoyé à systemd.
+ Définir à 0 pour désactiver.
+ Valeur par défaut : 10.
+
+
+
+
+
+
+
+ Liste des directives de pool
+
+ Avec FPM vous pouvez exécuter plusieurs pools de processus avec des paramètres différents.
+ Voici les paramètres qui peuvent être ajustés par pool.
+
+
+
+
+ listen
+ &string;
+
+
+
+ L'adresse pour accepter des requêtes FastCGI. Syntaxes valides :
+ 'ip.add.re.ss:port', 'port', '/path/to/unix/socket'.
+ Cette option est obligatoire pour chaque pool.
+
+
+
+
+
+ listen.backlog
+ &integer;
+
+
+
+ Affecte listen(2) backlog.
+ Une valeur de -1 signifie le maximum sur les systèmes BSD.
+ Valeur par défaut : -1 (FreeBSD ou OpenBSD)
+ ou 511 (Linux et autres plateformes).
+
+
+
+
+
+ listen.allowed_clients
+ &string;
+
+
+
+ Liste des adresses IPv4 ou IPv6 des clients FastCGI autorisés à se connecter.
+ C'est équivalent à la variable d'environnement FCGI_WEB_SERVER_ADDRS dans le
+ système FastCGI original de PHP (5.2.2+). N'a de sens qu'avec un socket tcp en
+ écoute. Chaque adresse doit être séparée par une virgule. Si cette valeur n'est
+ pas précisée, les connexions seront acceptées depuis toute adresse ip.
+ Valeur par défaut: non définie (toute adresse IP acceptée).
+
+
+
+
+
+ listen.owner
+ &string;
+
+
+
+ Affecte les permissions pour le socket Unix si utilisé. Sous Linux, les permissions read/write
+ doivent être affectées pour autoriser des connexions depuis un serveur web. Beaucoup de systèmes
+ dérivés BSD autorisent les connexions quelles que soient les permissions.
+ Valeurs par défaut : user et group sont ceux de l'utilisateur courant, le mode est 0660.
+
+
+
+
+
+ listen.group
+ &string;
+
+
+
+ Voyez listen.owner.
+
+
+
+
+
+ listen.mode
+ &string;
+
+
+
+ Voyez listen.owner.
+
+
+
+
+
+ listen.acl_users
+ &string;
+
+
+
+ Quand les listes de contrôle d'accès POSIX sont supportées, vous pouvez les définir en utilisant cette option.
+ Quand défini, listen.owner et listen.group
+ sont ignorés.
+ La valeur est une liste de noms d'utilisateurs séparés par des virgules.
+
+
+
+
+
+ listen.acl_groups
+ &string;
+
+
+
+ Voir listen.acl_users.
+ La valeur est une liste de noms de groupes séparés par des virgules.
+
+
+
+
+
+ listen.setfib
+ int
+
+
+
+ Définit la table de routage associée (FIB). FreeBSD uniquement.
+ Valeur par défaut : -1. Depuis PHP 8.2.0.
+
+
+
+
+
+ user
+ &string;
+
+
+
+ Utilisateur Unix des processus FPM. Cette option est obligatoire.
+
+
+
+
+
+ group
+ &string;
+
+
+
+ Groupe Unix des processus FPM. Si non précisé, le groupe de l'utilisateur est
+ utilisé.
+
+
+
+
+
+ pm
+ &string;
+
+
+
+ Choisi comment le gestionnaire de processus va contrôler le nombre de processus fils.
+ Valeurs possibles : static, ondemand,
+ dynamic. Option obligatoire.
+
+
+ static - nombre de processus fils fixés (pm.max_children).
+
+
+ ondemand - le processus se réactive à la demande
+ (lorsque demandé, c'est l'opposé de dynamique où pm.start_servers
+ sont démarrés lorsque le service démarre).
+
+
+ dynamic - nombre de processus fils dynamiques basé sur les directives suivantes:
+ pm.max_children, pm.start_servers,
+ pm.min_spare_servers, pm.max_spare_servers.
+
+
+
+
+
+ pm.max_children
+ &integer;
+
+
+
+ Nombre de processus fils à créer lorsque pm est réglé sur
+ static. Nombre maximum de processus fils à créer lorsque
+ pm est réglé sur dynamic. Option obligatoire.
+
+
+ Cette option affecte la limite du nombre de requêtes simultanées qui seront servies. Equivalent à
+ ApacheMaxClients avec mpm_prefork et à PHP_FCGI_CHILDREN dans l'implémentation originale
+ de FastCGI de PHP.
+
+
+
+
+
+ pm.start_servers
+ &integer;
+
+
+
+ Nombre de processus fils à créer au démarrage. Utilisé seulement si
+ pm est réglé sur dynamic.
+ Valeur par défaut : (min_spare_servers + max_spare_servers) / 2.
+
+
+
+
+
+ pm.min_spare_servers
+ &integer;
+
+
+
+ Nombre minimum de processus au repos (idle) voulus. Utilisé seulement si
+ pm est réglé sur dynamic. Obligatoire dans
+ ce cas.
+
+
+
+
+
+ pm.max_spare_servers
+ &integer;
+
+
+
+ Nombre maximum de processus au repos (idle) voulus. Utilisé seulement si
+ pm est réglé sur dynamic. Obligatoire dans
+ ce cas.
+
+
+
+
+
+ pm.max_spawn_rate
+ int
+
+
+
+ Nombre maximum de taux de génération de processus enfants simultanés. Utilisé seulement si
+ pm est défini à dynamic.
+
+
+
+
+
+ pm.process_idle_timeout
+ &mixed;
+
+
+
+ Nombre de secondes après lesquelles un processus inactif sera tué.
+ Utilisé uniquement quand pm est défini à
+ ondemand.
+ Unités disponibles : s (secondes)(par défaut), m (minutes), h (heure), ou d (jour).
+ Valeur par défaut : 10s.
+
+
+
+
+
+ pm.max_requests
+ &integer;
+
+
+
+ Nombre de requêtes que chaque processus fils devrait exécuter avant de renaitre.
+ Ceci peut être utile pour contourner des fuites mémoires dans des librairies tierces.
+ Pour un traitement sans fin des requêtes, précisez '0'. Equivalent à
+ PHP_FCGI_MAX_REQUESTS. Par défaut : 0.
+
+
+
+
+
+ pm.status_listen
+ string
+
+
+
+ L'adresse sur laquelle accepter la demande de statut FastCGI. Cela crée un nouveau pool invisible
+ qui peut traiter les requêtes indépendamment. Ceci est utile si le pool principal est occupé par des
+ requêtes de longue durée car il est toujours possible d'obtenir le statut
+ FPM status page tant qu'elles ne sont pas terminées.
+ La syntaxe est la même que pour la directive listen.
+ Valeur par défaut : none.
+
+
+
+
+
+ pm.status_path
+ &string;
+
+
+
+ L'URI vers la page de statut de FPM.
+ Cette valeur doit commencer par une barre oblique (/). Si cette valeur n'est pas définie,
+ aucun URI ne sera reconnu en tant qu'une page d'état. Valeur par défaut : none.
+
+
+
+
+
+ ping.path
+ &string;
+
+
+
+ L'URI de ping pour appeler la page de monitoring de FPM. Si aucune valeur n'est précisée,
+ aucune page de ping ne sera disponible. Ceci pourrait être utilisé pour tester depuis l'extérieur
+ si FPM est toujours disponible et prêt à répondre. Notez que la valeur doit commencer par un
+ slash (/).
+
+
+
+
+
+ ping.response
+ &string;
+
+
+
+ Cette directive est utile pour personnaliser la réponse à une requête de ping.
+ La réponse est formatée comme text/plain avec un code de réponse de 200.
+ Valeur par défaut : pong.
+
+
+
+
+
+ process.priority
+ &integer;
+
+
+
+ Spécifiez la priorité nice(2) à appliquer au processus de travail
+ (uniquement s'il est défini). La valeur peut varier de -19 (priorité
+ la plus élevée) à 20 (priorité la plus basse). Valeur par
+ défaut: non définie.
+
+
+
+
+
+ process.dumpable
+ &boolean;
+
+
+
+ Défini l'indicateur de processus dumpable (PR_SET_DUMPABLE prctl) même
+ si l'utilisateur ou le groupe de processus est différent de
+ l'utilisateur du processus maître. Il permet de créer un core dump du
+ processus et ptrace le processus pour l'utilisateur de pool. Valeur par
+ défaut : no. Depuis PHP 7.0.29, 7.1.17 et 7.2.5.
+
+
+
+
+
+ prefix
+ &string;
+
+
+
+ Spécifier le préfixe pour l'évaluation du chemin
+
+
+
+
+
+ request_terminate_timeout_track_finished
+ bool
+
+
+
+ Le timeout défini par
+ request_terminate_timeout n'est pas engagé
+ après un fastcgi_finish_request ou
+ lorsque l'application s'est terminée et que les fonctions internes d'arrêt sont appelées. Cette directive
+ permet d'appliquer la limite de temps sans condition.
+ Valeur par défaut : no. À partir de PHP 7.3.0.
+
+
+
+
+
+ request_terminate_timeout
+ &mixed;
+
+
+
+ Le timeout pour servir une requête après lequel le processus concerné sera
+ tué. Cette option devrait être utilisée lorsque l'option 'max_execution_time'
+ n'arrête pas l'exécution du script pour une raison quelconque.
+ Une valeur de '0' signifie
+ 'Off'. Unités disponibles : s(econdes)(défaut), m(inutes), h(eures), ou j(ours).
+ Par défaut : 0.
+
+
+
+
+
+ request_slowlog_timeout
+ &mixed;
+
+
+
+ Le timeout pour servir une requête dans laquelle la backtrace PHP sera vidée
+ dans le fichier 'slowlog'. Une valeur de '0' signifie 'Off'.
+ Unités disponibles : s(econdes)(défaut), m(inutes), h(eures), ou j(ours).
+ Par défaut : 0.
+
+
+
+
+
+ request_slowlog_trace_depth
+ int
+
+
+
+ Le niveau de profondeur de la trace de la pile de log slowlog.
+ Valeur par défaut : 20. À partir de PHP 7.2.0.
+
+
+
+
+
+ slowlog
+ &string;
+
+
+
+ Le journal pour les requêtes lentes, par défaut:
+ #INSTALL_PREFIX#/log/php-fpm.log.slow.
+
+
+
+
+
+ rlimit_files
+ &integer;
+
+
+
+ Affecte la rlimit pour les descripteurs de fichiers ouverts des processus
+ enfants de ce pool. Valeur par défaut : valeur du système.
+
+
+
+
+
+ rlimit_core
+ &integer;
+
+
+
+ Affecte la taille maximale de rlimit des processus enfants de ce pool.
+ Valeurs possibles : 'unlimited' ou un entier plus grand ou égal à 0.
+ Valeur par défaut : valeur définie par le système.
+
+
+
+
+
+ chroot
+ &string;
+
+
+
+ Chroot vers ce dossier au démarrage. Cette valeur doit être un chemin absolu.
+ Si cette valeur n'est pas définie, chroot n'est pas utilisé.
+
+
+
+
+
+ chdir
+ &string;
+
+
+
+ Chdir vers ce dossier au démarrage. Cette valeur doit être un chemin absolu.
+ Valeur par défaut : dossier courant ou / si chroot.
+
+
+
+
+
+ catch_workers_output
+ &boolean;
+
+
+
+ Redirige stdout et stderr vers le journal d'erreur principal. Si non précisé,
+ stdout et stderr seront redirigés vers /dev/null selon les specifications FastCGI.
+ Valeur par défaut: no.
+
+
+
+
+
+ decorate_workers_output
+ &boolean;
+
+
+
+ Active la décoration de sortie pour les travailleurs de sortie quand
+ catch_workers_output est activé.
+ Valeur par défaut : yes.
+ Disponible à partir de PHP 7.3.0.
+
+
+
+
+
+ clear_env
+ &boolean;
+
+
+
+ Nettoie l'environnement des agents FPM.
+ Prévient que des variables d’environnement arbitraire puissent
+ atteindre les processus FPM par le nettoyage de l'environnement
+ de ces agents avant que les variables d'environnement spécifiées
+ dans la configuration du pool ne soient ajoutées.
+
+
+
+
+
+ security.limit_extensions
+ &string;
+
+
+
+ Limite les extensions que le script principal FPM va être autorisé à analyser.
+ Ceci peut prévenir les erreurs de configuration côté serveur.
+ Vous pouvez limiter FPM à exécuter seulement les extensions .php pour prévenir que des utilisateurs malicieux utilisent d'autres extensions pour exécuter du code.
+ Valeur par défaut : .php .phar
+
+
+
+
+
+ apparmor_hat
+ string
+
+
+
+ Si AppArmor est activé, permet de changer un hat (chapeau).
+ Valeur par défaut : non défini
+
+
+
+
+
+ access.log
+ &string;
+
+
+
+ Le fichier journal d'accès. Valeur par défaut : non définie
+
+
+
+
+
+ access.format
+ &string;
+
+
+
+ Le format du journal d'accès.
+ Valeur par défaut : "%R - %u %t \"%m %r\" %s":
+
+ Options valide
+
+
+
+ Placeholder
+ &Description;
+
+
+
+
+
+ %%
+
+ Le caractère %
+
+
+
+ %C
+
+
+ %CPU utilisé par la requête. Les formats suivants sont acceptés :
+ %{user}C pour la CPU utilisateur uniquement,
+ %{system}C pour la CPU système uniquement,
+ %{total}C pour la CPU utilisateur + système (par défaut)
+
+
+
+
+ %d
+
+
+ Temps pris pour traiter la requête.
+ Les formats suivants sont acceptés pour la précision :
+ %{seconds}d (par défaut), %{milliseconds}d,
+ %{microseconds}d
+
+
+
+
+ %{name}e
+
+
+ Une variable d'environnement (identique à $_ENV ou $_SERVER).
+ Un nom de variable doit être spécifié entre accolades pour indiquer le nom de la variable d'environnement.
+ Par exemple, des informations spécifiques au serveur comme %{REQUEST_METHOD}e ou
+ %{SERVER_PROTOCOL}e, des en-têtes HTTP tels que
+ %{HTTP_HOST}e ou %{HTTP_USER_AGENT}e
+
+
+
+
+ %f
+
+ Nom du fichier script
+
+
+
+ %l
+
+
+ Content-Length de la requête (pour les requêtes HTTP POST uniquement)
+
+
+
+
+ %m
+
+ Méthode HTTP de la requête
+
+
+
+ %M
+
+
+ Pic de mémoire allouée par PHP.
+ Accepte les formats suivants :
+ %{bytes}M (défaut), %{kilobytes}M
+ %{kilo}M, %{megabytes}M,
+ %{mega}M
+
+
+
+
+ %n
+
+ Nom du pool
+
+
+
+ %{name}o
+
+
+ En-tête de sortie. Le nom de l'en-tête doit être spécifié entre accolades.
+ Par exemple : %{Content-Type}o,
+ %{X-Powered-By}o, %{Transfer-Encoding}o
+
+
+
+
+ %p
+
+ PID de l'enfant qui a traité la demande
+
+
+
+ %P
+
+ PID du parent de l'enfant qui a traité la demande
+
+
+
+ %q
+
+ Chaîne de requête
+
+
+
+ %Q
+
+
+ Le caractère '?', ou le lien entre %q et %r,
+ si la chaîne de requête existe
+
+
+
+
+ %r
+
+
+ URI de la requête sans la chaîne de requête,
+ voir %q et %Q
+
+
+
+
+ %R
+
+ Adresse IP remote
+
+
+
+ %s
+
+ Statut (code de réponse)
+
+
+
+ %t
+
+
+ Heure du serveur à laquelle la requête a été reçue. Elle peut
+ accepter un format strftime(3) :
+ %d/%b/%Y:%H:%M:%S %z (par défaut).
+ Le format strftime(3) doit être encapsulé dans
+ une balise %{<strftime_format>}t, par exemple, pour une chaîne de temps au format ISO8601, utilisez :
+ %{%Y-%m-%dT%H:%M:%S%z}t
+
+
+
+
+ %T
+
+
+ Heure à laquelle le log a été écrit (lorsque la requête s'est terminée). Elle peut accepter un
+ format strftime(3) :
+ %d/%b/%Y:%H:%M:%S %z (par défaut).
+ Le format strftime(3) doit être encapsulé dans une
+ balise %{<strftime_format>}T, par exemple, pour une chaîne de temps au format ISO8601, utilisez :
+ %{%Y-%m-%dT%H:%M:%S%z}T
+
+
+
+
+ %u
+
+ Utilisateur d'authentification basique, si spécifié dans l'en-tête Authorization
+
+
+
+
+
+
+
+
+
+ access.suppress_path
+ array
+
+
+
+ Une liste de valeurs request_uri qui devraient être filtrées du journal d'accès.
+ Valeur par défaut : non définie. Depuis PHP 8.2.0.
+
+
+
+
+
+ Il est possible de passer des variables d'environnement additionnelles et mettre à jour les paramètres
+ de PHP d'un pool. Pour ce faire, vous devez ajouter les options suivantes au
+ fichier de configuration de la file d'attente.
+
+ Passer des variables d'environnement et des paramètres PHP à un pool
+
+
+
+
+ Les paramètres PHP passés avec php_value ou
+ php_flag écraseront leur valeur précédente.
+ Notez que définir
+ disable_functions ou
+ disable_classes n'écrasera pas
+ les valeurs concernées précédemment définies dans php.ini,
+ mais rajouteront les valeurs à la suite des anciennes.
+
+
+ Les paramètres définis avec php_admin_value et php_admin_flag
+ ne peuvent être surchargés via ini_set.
+
+
+ Les paramètres de PHP peuvent être définis dans le serveur web.
+
+ Définit les paramètres PHP dans le fichier nginx.conf
+
+
+
+
+
+
+ En raison du fait que ces configurations sont passées à php-fpm
+ comme en-têtes fastcgi, php-fpm ne doit pas être relié directement
+ au web et ainsi y être directement accessible. Sinon, tout le monde
+ pourra altérer les options de configuration de PHP.
+ Voir aussi l'option
+ listen.allowed_clients.
+
+
+
+
+ Les pools ne sont pas un mécanisme de sécurité, car elles ne
+ fournissent pas une séparation totale ; par exemple toutes les pools
+ utiliseraient une seule instance OPcache.
+
+
+
+
+
+
+
+
From 2d8ae8cb33e3e1cd01a90f2cde41d3a18cb12902 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:38:15 +0100
Subject: [PATCH 18/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20install/windows/tools.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
install/windows/tools.xml | 66 +++++++++++++++++++--------------------
1 file changed, 33 insertions(+), 33 deletions(-)
diff --git a/install/windows/tools.xml b/install/windows/tools.xml
index 9dce15e030..b482ddb6a2 100644
--- a/install/windows/tools.xml
+++ b/install/windows/tools.xml
@@ -1,33 +1,33 @@
-
-
-
-
- Outils tiers pour l'installation de PHP
- &warn.install.third-party-support;
-
- XAMPP,
- WampServer, et
- Bitnami
- configurent également des applications PHP pour une utilisation avec Apache sur Windows.
-
-
-
+
+
+
+
+ Outils tiers pour l'installation de PHP
+ &warn.install.third-party-support;
+
+ XAMPP,
+ WampServer, et
+ Bitnami
+ configurent également des applications PHP pour une utilisation avec Apache sur Windows.
+
+
+
From fa9c52c9ecf57c64defc809288b3030edc3ecb99 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:38:19 +0100
Subject: [PATCH 19/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20language/operators/bitwise.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
language/operators/bitwise.xml | 1364 ++++++++++++++++----------------
1 file changed, 682 insertions(+), 682 deletions(-)
diff --git a/language/operators/bitwise.xml b/language/operators/bitwise.xml
index 698e2c6ac0..5c0c9302cb 100644
--- a/language/operators/bitwise.xml
+++ b/language/operators/bitwise.xml
@@ -1,682 +1,682 @@
-
-
-
-
- Opérateurs sur les bits
- Bitwise
-
- Les opérateurs sur les bits vous permettent de
- manipuler les bits dans un entier.
-
-
- Les opérateurs sur les bits
-
-
-
- Exemple
- Nom
- Résultat
-
-
-
-
- $a & $b
- And (Et)
-
- Les bits positionnés à 1 dans $a ET dans
- $b sont positionnés à 1.
-
-
-
- $a | $b
- Or (Ou)
-
- Les bits positionnés à 1 dans $a OU $b
- sont positionnés à 1.
-
-
-
- $a ^ $b
- Xor (ou exclusif)
-
- Les bits positionnés à 1 dans $a OU dans
- $b mais pas dans les deux sont positionnés à 1.
-
-
-
- ~ $a
- Not (Non)
-
- Les bits qui sont positionnés à 1 dans $a
- sont positionnés à 0, et vice-versa.
-
-
-
- $a << $b
- Décalage à gauche
-
- Décale les bits de $a, $b fois
- sur la gauche (chaque décalage équivaut à une multiplication par 2).
-
-
-
- $a >> $b
- Décalage à droite
-
- Décale les bits de $a, $b fois
- sur la droite (chaque décalage équivaut à une division par 2).
-
-
-
-
-
-
- Le décalage de bits en PHP est arithmétique.
- Les bits qui sont décalés hors de l'entier sont perdus.
- Les décalages à gauche font apparaître des zéros à droite,
- tandis que le bit de signe est décalé à gauche, ce qui signifie
- que le signe de l'entier n'est pas préservé.
- Les décalages à droite décalent aussi le bit de signe sur la
- droite, ce qui signifie que le signe est préservé.
-
-
-
- Utilisez des parenthèses pour vous assurer que la
- précédence
- voulue est bien appliquée. Par exemple,
- $a & $b == true applique d'abord
- l'égalité, et ensuite le ET logique, alors que
- ($a & $b) == true applique d'abord le
- ET logique, puis l'égalité.
-
-
-
- Si les deux opérandes pour les opérateurs &,
- | et ^ sont des chaînes de caractères,
- alors l'opération sera réalisée sur les valeurs ASCII des caractères et le
- résultat sera une chaîne de caractères. Dans tous les autres cas, les deux
- opérandes seront
- converties en entier
- et le résultat sera un entier.
-
-
- Si l'opérande pour l'opérateur ~ est une chaîne
- de caractères, l'opération sera effectuée sur les caractères ASCII composant
- la chaîne et le résultat sera une chaîne de caractères. Sinon l'opérande et
- le résultat seront traités comme des entiers.
-
-
- Les opérandes et le résultat des opérateurs << et
- >> sont traités comme des entiers.
-
-
- Le rapport d'erreur de PHP utilise des champs de bits,
- qui sont une illustration de l'extinction des bits.
- Pour afficher les erreurs, sauf les notices, les
- instructions du php.ini sont :
- E_ALL & ~E_NOTICE
-
-
-
-
-
-
- Cela se comprend en comparant avec E_ALL :
- 00000000000000000111011111111111
- Puis en éteignant la valeur de E_NOTICE...
- 00000000000000000000000000001000
- ... et en l'inversant via ~:
- 11111111111111111111111111110111
- Finalement, on utilise le ET logique (&) pour lire les bits activés
- dans les deux valeurs :
- 00000000000000000111011111110111
-
-
-
-
-
-
- Un autre moyen d'arriver à ce résultat est d'utiliser
- le OU exclusif (^), qui cherche
- les bits qui ne sont activés que dans l'une ou l'autre des
- valeurs, exclusivement :
- E_ALL ^ E_NOTICE
-
-
- error_reporting peut aussi être utilisé pour
- illustrer l'activation de bits. Pour afficher
- uniquement les erreurs et les erreurs recouvrables,
- on utilise :
- E_ERROR | E_RECOVERABLE_ERROR
-
-
-
-
-
- Cette approche combine E_ERROR
- 00000000000000000000000000000001
- et E_RECOVERABLE_ERROR
- 00000000000000000001000000000000
- Avec l'opérateur OR (|) pour s'assurer que
- les bits sont activés dans l'une ou l'autre valeur :
- 00000000000000000001000000000001
-
-
-
-
-
-
- Opérations sur les bits et les entiers
-
-
-]]>
-
- &example.outputs;
-
-
-
-
-
-
-
- Opération sur les bits et les chaînes
-
-
-]]>
-
-
-
-
-
- Décalage de bits sur les entiers
-
-> $places;
-p($res, $val, '>>', $places, 'copie du bit de signe maintenant à gauche');
-
-$val = 4;
-$places = 2;
-$res = $val >> $places;
-p($res, $val, '>>', $places);
-
-$val = 4;
-$places = 3;
-$res = $val >> $places;
-p($res, $val, '>>', $places, 'des bits sont sortis par la droite');
-
-$val = 4;
-$places = 4;
-$res = $val >> $places;
-p($res, $val, '>>', $places, 'même résultat que ci-dessus : pas de décalage au dela de 0');
-
-
-echo "\n--- Décalages à droite sur des entiers négatifs ---\n";
-
-$val = -4;
-$places = 1;
-$res = $val >> $places;
-p($res, $val, '>>', $places, 'copie du bit de signe maintenant à gauche');
-
-$val = -4;
-$places = 2;
-$res = $val >> $places;
-p($res, $val, '>>', $places, 'des bits sont sortis par la droite');
-
-$val = -4;
-$places = 3;
-$res = $val >> $places;
-p($res, $val, '>>', $places, 'même résultat que ci-dessus : pas de décalage au dela de -1');
-
-
-echo "\n--- Décalages à gauche sur des entiers positifs ---\n";
-
-$val = 4;
-$places = 1;
-$res = $val << $places;
-p($res, $val, '<<', $places, 'complément de zéros à droite');
-
-$val = 4;
-$places = (PHP_INT_SIZE * 8) - 4;
-$res = $val << $places;
-p($res, $val, '<<', $places);
-
-$val = 4;
-$places = (PHP_INT_SIZE * 8) - 3;
-$res = $val << $places;
-p($res, $val, '<<', $places, 'le bit de signe est sorti');
-
-$val = 4;
-$places = (PHP_INT_SIZE * 8) - 2;
-$res = $val << $places;
-p($res, $val, '<<', $places, 'des bits sont sortis à gauche');
-
-
-echo "\n--- Décalages à gauche sur des entiers négatifs ---\n";
-
-$val = -4;
-$places = 1;
-$res = $val << $places;
-p($res, $val, '<<', $places, 'complément de zéros à droite');
-
-$val = -4;
-$places = (PHP_INT_SIZE * 8) - 3;
-$res = $val << $places;
-p($res, $val, '<<', $places);
-
-$val = -4;
-$places = (PHP_INT_SIZE * 8) - 2;
-$res = $val << $places;
-p($res, $val, '<<', $places, 'des bits sont sortis à gauche, y compris le bit de signe');
-
-
-/*
- * Ignorez cette section
- * Elle contient du code pour le formatage de cet exemple
- */
-
-function p($res, $val, $op, $places, $note = '') {
- $format = '%0' . (PHP_INT_SIZE * 8) . "b\n";
-
- printf("Expression : %d = %d %s %d\n", $res, $val, $op, $places);
-
- echo " Décimal :\n";
- printf(" val=%d\n", $val);
- printf(" res=%d\n", $res);
-
- echo " Binaire :\n";
- printf(' val=' . $format, $val);
- printf(' res=' . $format, $res);
-
- if ($note) {
- echo " Note : $note\n";
- }
-
- echo "\n\n";
-}
-?>
-]]>
-
- &example.outputs.32bit;
-
-> 1
- Décimal :
- val=4
- res=2
- Binaire :
- val=00000000000000000000000000000100
- res=00000000000000000000000000000010
- Note : copie du bit de signe maintenant à gauche
-
-Expression : 1 = 4 >> 2
- Décimal :
- val=4
- res=1
- Binaire :
- val=00000000000000000000000000000100
- res=00000000000000000000000000000001
-
-Expression : 0 = 4 >> 3
- Décimal :
- val=4
- res=0
- Binaire :
- val=00000000000000000000000000000100
- res=00000000000000000000000000000000
- Note : des bits sont sortis par la droite
-
-Expression : 0 = 4 >> 4
- Décimal :
- val=4
- res=0
- Binaire :
- val=00000000000000000000000000000100
- res=00000000000000000000000000000000
- Note : même résultat que ci-dessus : pas de décalage au dela de 0
-
-
---- Décalages à droite sur des entiers négatifs ---
-Expression : -2 = -4 >> 1
- Décimal :
- val=-4
- res=-2
- Binaire :
- val=11111111111111111111111111111100
- res=11111111111111111111111111111110
- Note : copie du bit de signe à gauche
-
-Expression : -1 = -4 >> 2
- Décimal :
- val=-4
- res=-1
- Binaire :
- val=11111111111111111111111111111100
- res=11111111111111111111111111111111
- Note : des bits sont sortis par la droite
-
-Expression : -1 = -4 >> 3
- Décimal :
- val=-4
- res=-1
- Binaire :
- val=11111111111111111111111111111100
- res=11111111111111111111111111111111
- Note : même résultat que ci-dessus : pas de décalage au dela de -1
-
-
---- Décalages à gauche sur des entiers positifs ---
-Expression : 8 = 4 << 1
- Décimal :
- val=4
- res=8
- Binaire :
- val=00000000000000000000000000000100
- res=00000000000000000000000000001000
- Note : complément de zéros à droite
-
-Expression : 1073741824 = 4 << 28
- Décimal :
- val=4
- res=1073741824
- Binaire :
- val=00000000000000000000000000000100
- res=01000000000000000000000000000000
-
-Expression : -2147483648 = 4 << 29
- Décimal :
- val=4
- res=-2147483648
- Binaire :
- val=00000000000000000000000000000100
- res=10000000000000000000000000000000
- Note : le bit de signe est sorti
-
-Expression : 0 = 4 << 30
- Décimal :
- val=4
- res=0
- Binaire :
- val=00000000000000000000000000000100
- res=00000000000000000000000000000000
- Note : des bits sont sortis à gauche
-
-
---- Décalages à gauche sur des entiers négatifs ---
-Expression : -8 = -4 << 1
- Décimal :
- val=-4
- res=-8
- Binaire :
- val=11111111111111111111111111111100
- res=11111111111111111111111111111000
- Note : complément de zéros à droite
-
-Expression : -2147483648 = -4 << 29
- Décimal :
- val=-4
- res=-2147483648
- Binaire :
- val=11111111111111111111111111111100
- res=10000000000000000000000000000000
-
-Expression : 0 = -4 << 30
- Décimal :
- val=-4
- res=0
- Binaire :
- val=11111111111111111111111111111100
- res=00000000000000000000000000000000
- Note : des bits sont sortis à gauche, y compris le bit de signe
-]]>
-
- &example.outputs.64bit;
-
-> 1
- Décimal :
- val=4
- res=2
- Binaire :
- val=0000000000000000000000000000000000000000000000000000000000000100
- res=0000000000000000000000000000000000000000000000000000000000000010
- Note : copie du bit de signe maintenant à gauche
-
-Expression : 1 = 4 >> 2
- Décimal :
- val=4
- res=1
- Binaire :
- val=0000000000000000000000000000000000000000000000000000000000000100
- res=0000000000000000000000000000000000000000000000000000000000000001
-
-Expression : 0 = 4 >> 3
- Décimal :
- val=4
- res=0
- Binaire :
- val=0000000000000000000000000000000000000000000000000000000000000100
- res=0000000000000000000000000000000000000000000000000000000000000000
- Note : des bits sont sortis par la droite
-
-Expression : 0 = 4 >> 4
- Décimal :
- val=4
- res=0
- Binaire :
- val=0000000000000000000000000000000000000000000000000000000000000100
- res=0000000000000000000000000000000000000000000000000000000000000000
- Note : même résultat que ci-dessus : pas de décalage au dela de 0
-
-
---- Décalages à droite sur des entiers négatifs ---
-Expression : -2 = -4 >> 1
- Décimal :
- val=-4
- res=-2
- Binaire :
- val=1111111111111111111111111111111111111111111111111111111111111100
- res=1111111111111111111111111111111111111111111111111111111111111110
- Note : copie du bit de signe maintenant à gauche
-
-Expression : -1 = -4 >> 2
- Décimal :
- val=-4
- res=-1
- Binaire :
- val=1111111111111111111111111111111111111111111111111111111111111100
- res=1111111111111111111111111111111111111111111111111111111111111111
- Note : des bits sont sortis par la droite
-
-Expression : -1 = -4 >> 3
- Décimal :
- val=-4
- res=-1
- Binaire :
- val=1111111111111111111111111111111111111111111111111111111111111100
- res=1111111111111111111111111111111111111111111111111111111111111111
- Note : même résultat que ci-dessus : pas de décalage au dela de -1
-
-
---- Décalage à gauche sur les entiers positifs ---
-Expression : 8 = 4 << 1
- Décimal :
- val=4
- res=8
- Binaire :
- val=0000000000000000000000000000000000000000000000000000000000000100
- res=0000000000000000000000000000000000000000000000000000000000001000
- Note : complément de zéros à droite
-
-Expression : 4611686018427387904 = 4 << 60
- Décimal :
- val=4
- res=4611686018427387904
- Binaire :
- val=0000000000000000000000000000000000000000000000000000000000000100
- res=0100000000000000000000000000000000000000000000000000000000000000
-
-Expression : -9223372036854775808 = 4 << 61
- Décimal :
- val=4
- res=-9223372036854775808
- Binaire :
- val=0000000000000000000000000000000000000000000000000000000000000100
- res=1000000000000000000000000000000000000000000000000000000000000000
- Note : le bit de signe est sorti
-
-Expression : 0 = 4 << 62
- Décimal :
- val=4
- res=0
- Binaire :
- val=0000000000000000000000000000000000000000000000000000000000000100
- res=0000000000000000000000000000000000000000000000000000000000000000
- Note : des bits sont sortis à gauche
-
-
---- Décalage à gauche sur les entiers négatifs ---
-Expression : -8 = -4 << 1
- Décimal :
- val=-4
- res=-8
- Binaire :
- val=1111111111111111111111111111111111111111111111111111111111111100
- res=1111111111111111111111111111111111111111111111111111111111111000
- Note : complément de zéros à droite
-
-Expression : -9223372036854775808 = -4 << 61
- Décimal :
- val=-4
- res=-9223372036854775808
- Binaire :
- val=1111111111111111111111111111111111111111111111111111111111111100
- res=1000000000000000000000000000000000000000000000000000000000000000
-
-Expression : 0 = -4 << 62
- Décimal :
- val=-4
- res=0
- Binaire :
- val=1111111111111111111111111111111111111111111111111111111111111100
- res=0000000000000000000000000000000000000000000000000000000000000000
- Note : des bits sont sortis à gauche, y compris le bit de signe
-]]>
-
-
-
-
-
- Utilisez les fonctions de l'extension gmp
- pour les manipulations sur les bits, lorsque les entiers dépassent
- PHP_INT_MAX.
-
-
-
-
- &reftitle.seealso;
-
-
- pack
- unpack
- gmp_and
- gmp_or
- gmp_xor
- gmp_testbit
- gmp_clrbit
-
-
-
-
+
+
+
+
+ Opérateurs sur les bits
+ Bitwise
+
+ Les opérateurs sur les bits vous permettent de
+ manipuler les bits dans un entier.
+
+
+ Les opérateurs sur les bits
+
+
+
+ Exemple
+ Nom
+ Résultat
+
+
+
+
+ $a & $b
+ And (Et)
+
+ Les bits positionnés à 1 dans $a ET dans
+ $b sont positionnés à 1.
+
+
+
+ $a | $b
+ Or (Ou)
+
+ Les bits positionnés à 1 dans $a OU $b
+ sont positionnés à 1.
+
+
+
+ $a ^ $b
+ Xor (ou exclusif)
+
+ Les bits positionnés à 1 dans $a OU dans
+ $b mais pas dans les deux sont positionnés à 1.
+
+
+
+ ~ $a
+ Not (Non)
+
+ Les bits qui sont positionnés à 1 dans $a
+ sont positionnés à 0, et vice-versa.
+
+
+
+ $a << $b
+ Décalage à gauche
+
+ Décale les bits de $a, $b fois
+ sur la gauche (chaque décalage équivaut à une multiplication par 2).
+
+
+
+ $a >> $b
+ Décalage à droite
+
+ Décale les bits de $a, $b fois
+ sur la droite (chaque décalage équivaut à une division par 2).
+
+
+
+
+
+
+ Le décalage de bits en PHP est arithmétique.
+ Les bits qui sont décalés hors de l'entier sont perdus.
+ Les décalages à gauche font apparaître des zéros à droite,
+ tandis que le bit de signe est décalé à gauche, ce qui signifie
+ que le signe de l'entier n'est pas préservé.
+ Les décalages à droite décalent aussi le bit de signe sur la
+ droite, ce qui signifie que le signe est préservé.
+
+
+
+ Utilisez des parenthèses pour vous assurer que la
+ précédence
+ voulue est bien appliquée. Par exemple,
+ $a & $b == true applique d'abord
+ l'égalité, et ensuite le ET logique, alors que
+ ($a & $b) == true applique d'abord le
+ ET logique, puis l'égalité.
+
+
+
+ Si les deux opérandes pour les opérateurs &,
+ | et ^ sont des chaînes de caractères,
+ alors l'opération sera réalisée sur les valeurs ASCII des caractères et le
+ résultat sera une chaîne de caractères. Dans tous les autres cas, les deux
+ opérandes seront
+ converties en entier
+ et le résultat sera un entier.
+
+
+ Si l'opérande pour l'opérateur ~ est une chaîne
+ de caractères, l'opération sera effectuée sur les caractères ASCII composant
+ la chaîne et le résultat sera une chaîne de caractères. Sinon l'opérande et
+ le résultat seront traités comme des entiers.
+
+
+ Les opérandes et le résultat des opérateurs << et
+ >> sont traités comme des entiers.
+
+
+ Le rapport d'erreur de PHP utilise des champs de bits,
+ qui sont une illustration de l'extinction des bits.
+ Pour afficher les erreurs, sauf les notices, les
+ instructions du php.ini sont :
+ E_ALL & ~E_NOTICE
+
+
+
+
+
+
+ Cela se comprend en comparant avec E_ALL :
+ 00000000000000000111011111111111
+ Puis en éteignant la valeur de E_NOTICE...
+ 00000000000000000000000000001000
+ ... et en l'inversant via ~:
+ 11111111111111111111111111110111
+ Finalement, on utilise le ET logique (&) pour lire les bits activés
+ dans les deux valeurs :
+ 00000000000000000111011111110111
+
+
+
+
+
+
+ Un autre moyen d'arriver à ce résultat est d'utiliser
+ le OU exclusif (^), qui cherche
+ les bits qui ne sont activés que dans l'une ou l'autre des
+ valeurs, exclusivement :
+ E_ALL ^ E_NOTICE
+
+
+ error_reporting peut aussi être utilisé pour
+ illustrer l'activation de bits. Pour afficher
+ uniquement les erreurs et les erreurs recouvrables,
+ on utilise :
+ E_ERROR | E_RECOVERABLE_ERROR
+
+
+
+
+
+ Cette approche combine E_ERROR
+ 00000000000000000000000000000001
+ et E_RECOVERABLE_ERROR
+ 00000000000000000001000000000000
+ Avec l'opérateur OR (|) pour s'assurer que
+ les bits sont activés dans l'une ou l'autre valeur :
+ 00000000000000000001000000000001
+
+
+
+
+
+
+ Opérations sur les bits et les entiers
+
+
+]]>
+
+ &example.outputs;
+
+
+
+
+
+
+
+ Opération sur les bits et les chaînes
+
+
+]]>
+
+
+
+
+
+ Décalage de bits sur les entiers
+
+> $places;
+p($res, $val, '>>', $places, 'copie du bit de signe maintenant à gauche');
+
+$val = 4;
+$places = 2;
+$res = $val >> $places;
+p($res, $val, '>>', $places);
+
+$val = 4;
+$places = 3;
+$res = $val >> $places;
+p($res, $val, '>>', $places, 'des bits sont sortis par la droite');
+
+$val = 4;
+$places = 4;
+$res = $val >> $places;
+p($res, $val, '>>', $places, 'même résultat que ci-dessus : pas de décalage au dela de 0');
+
+
+echo "\n--- Décalages à droite sur des entiers négatifs ---\n";
+
+$val = -4;
+$places = 1;
+$res = $val >> $places;
+p($res, $val, '>>', $places, 'copie du bit de signe maintenant à gauche');
+
+$val = -4;
+$places = 2;
+$res = $val >> $places;
+p($res, $val, '>>', $places, 'des bits sont sortis par la droite');
+
+$val = -4;
+$places = 3;
+$res = $val >> $places;
+p($res, $val, '>>', $places, 'même résultat que ci-dessus : pas de décalage au dela de -1');
+
+
+echo "\n--- Décalages à gauche sur des entiers positifs ---\n";
+
+$val = 4;
+$places = 1;
+$res = $val << $places;
+p($res, $val, '<<', $places, 'complément de zéros à droite');
+
+$val = 4;
+$places = (PHP_INT_SIZE * 8) - 4;
+$res = $val << $places;
+p($res, $val, '<<', $places);
+
+$val = 4;
+$places = (PHP_INT_SIZE * 8) - 3;
+$res = $val << $places;
+p($res, $val, '<<', $places, 'le bit de signe est sorti');
+
+$val = 4;
+$places = (PHP_INT_SIZE * 8) - 2;
+$res = $val << $places;
+p($res, $val, '<<', $places, 'des bits sont sortis à gauche');
+
+
+echo "\n--- Décalages à gauche sur des entiers négatifs ---\n";
+
+$val = -4;
+$places = 1;
+$res = $val << $places;
+p($res, $val, '<<', $places, 'complément de zéros à droite');
+
+$val = -4;
+$places = (PHP_INT_SIZE * 8) - 3;
+$res = $val << $places;
+p($res, $val, '<<', $places);
+
+$val = -4;
+$places = (PHP_INT_SIZE * 8) - 2;
+$res = $val << $places;
+p($res, $val, '<<', $places, 'des bits sont sortis à gauche, y compris le bit de signe');
+
+
+/*
+ * Ignorez cette section
+ * Elle contient du code pour le formatage de cet exemple
+ */
+
+function p($res, $val, $op, $places, $note = '') {
+ $format = '%0' . (PHP_INT_SIZE * 8) . "b\n";
+
+ printf("Expression : %d = %d %s %d\n", $res, $val, $op, $places);
+
+ echo " Décimal :\n";
+ printf(" val=%d\n", $val);
+ printf(" res=%d\n", $res);
+
+ echo " Binaire :\n";
+ printf(' val=' . $format, $val);
+ printf(' res=' . $format, $res);
+
+ if ($note) {
+ echo " Note : $note\n";
+ }
+
+ echo "\n\n";
+}
+?>
+]]>
+
+ &example.outputs.32bit;
+
+> 1
+ Décimal :
+ val=4
+ res=2
+ Binaire :
+ val=00000000000000000000000000000100
+ res=00000000000000000000000000000010
+ Note : copie du bit de signe maintenant à gauche
+
+Expression : 1 = 4 >> 2
+ Décimal :
+ val=4
+ res=1
+ Binaire :
+ val=00000000000000000000000000000100
+ res=00000000000000000000000000000001
+
+Expression : 0 = 4 >> 3
+ Décimal :
+ val=4
+ res=0
+ Binaire :
+ val=00000000000000000000000000000100
+ res=00000000000000000000000000000000
+ Note : des bits sont sortis par la droite
+
+Expression : 0 = 4 >> 4
+ Décimal :
+ val=4
+ res=0
+ Binaire :
+ val=00000000000000000000000000000100
+ res=00000000000000000000000000000000
+ Note : même résultat que ci-dessus : pas de décalage au dela de 0
+
+
+--- Décalages à droite sur des entiers négatifs ---
+Expression : -2 = -4 >> 1
+ Décimal :
+ val=-4
+ res=-2
+ Binaire :
+ val=11111111111111111111111111111100
+ res=11111111111111111111111111111110
+ Note : copie du bit de signe à gauche
+
+Expression : -1 = -4 >> 2
+ Décimal :
+ val=-4
+ res=-1
+ Binaire :
+ val=11111111111111111111111111111100
+ res=11111111111111111111111111111111
+ Note : des bits sont sortis par la droite
+
+Expression : -1 = -4 >> 3
+ Décimal :
+ val=-4
+ res=-1
+ Binaire :
+ val=11111111111111111111111111111100
+ res=11111111111111111111111111111111
+ Note : même résultat que ci-dessus : pas de décalage au dela de -1
+
+
+--- Décalages à gauche sur des entiers positifs ---
+Expression : 8 = 4 << 1
+ Décimal :
+ val=4
+ res=8
+ Binaire :
+ val=00000000000000000000000000000100
+ res=00000000000000000000000000001000
+ Note : complément de zéros à droite
+
+Expression : 1073741824 = 4 << 28
+ Décimal :
+ val=4
+ res=1073741824
+ Binaire :
+ val=00000000000000000000000000000100
+ res=01000000000000000000000000000000
+
+Expression : -2147483648 = 4 << 29
+ Décimal :
+ val=4
+ res=-2147483648
+ Binaire :
+ val=00000000000000000000000000000100
+ res=10000000000000000000000000000000
+ Note : le bit de signe est sorti
+
+Expression : 0 = 4 << 30
+ Décimal :
+ val=4
+ res=0
+ Binaire :
+ val=00000000000000000000000000000100
+ res=00000000000000000000000000000000
+ Note : des bits sont sortis à gauche
+
+
+--- Décalages à gauche sur des entiers négatifs ---
+Expression : -8 = -4 << 1
+ Décimal :
+ val=-4
+ res=-8
+ Binaire :
+ val=11111111111111111111111111111100
+ res=11111111111111111111111111111000
+ Note : complément de zéros à droite
+
+Expression : -2147483648 = -4 << 29
+ Décimal :
+ val=-4
+ res=-2147483648
+ Binaire :
+ val=11111111111111111111111111111100
+ res=10000000000000000000000000000000
+
+Expression : 0 = -4 << 30
+ Décimal :
+ val=-4
+ res=0
+ Binaire :
+ val=11111111111111111111111111111100
+ res=00000000000000000000000000000000
+ Note : des bits sont sortis à gauche, y compris le bit de signe
+]]>
+
+ &example.outputs.64bit;
+
+> 1
+ Décimal :
+ val=4
+ res=2
+ Binaire :
+ val=0000000000000000000000000000000000000000000000000000000000000100
+ res=0000000000000000000000000000000000000000000000000000000000000010
+ Note : copie du bit de signe maintenant à gauche
+
+Expression : 1 = 4 >> 2
+ Décimal :
+ val=4
+ res=1
+ Binaire :
+ val=0000000000000000000000000000000000000000000000000000000000000100
+ res=0000000000000000000000000000000000000000000000000000000000000001
+
+Expression : 0 = 4 >> 3
+ Décimal :
+ val=4
+ res=0
+ Binaire :
+ val=0000000000000000000000000000000000000000000000000000000000000100
+ res=0000000000000000000000000000000000000000000000000000000000000000
+ Note : des bits sont sortis par la droite
+
+Expression : 0 = 4 >> 4
+ Décimal :
+ val=4
+ res=0
+ Binaire :
+ val=0000000000000000000000000000000000000000000000000000000000000100
+ res=0000000000000000000000000000000000000000000000000000000000000000
+ Note : même résultat que ci-dessus : pas de décalage au dela de 0
+
+
+--- Décalages à droite sur des entiers négatifs ---
+Expression : -2 = -4 >> 1
+ Décimal :
+ val=-4
+ res=-2
+ Binaire :
+ val=1111111111111111111111111111111111111111111111111111111111111100
+ res=1111111111111111111111111111111111111111111111111111111111111110
+ Note : copie du bit de signe maintenant à gauche
+
+Expression : -1 = -4 >> 2
+ Décimal :
+ val=-4
+ res=-1
+ Binaire :
+ val=1111111111111111111111111111111111111111111111111111111111111100
+ res=1111111111111111111111111111111111111111111111111111111111111111
+ Note : des bits sont sortis par la droite
+
+Expression : -1 = -4 >> 3
+ Décimal :
+ val=-4
+ res=-1
+ Binaire :
+ val=1111111111111111111111111111111111111111111111111111111111111100
+ res=1111111111111111111111111111111111111111111111111111111111111111
+ Note : même résultat que ci-dessus : pas de décalage au dela de -1
+
+
+--- Décalage à gauche sur les entiers positifs ---
+Expression : 8 = 4 << 1
+ Décimal :
+ val=4
+ res=8
+ Binaire :
+ val=0000000000000000000000000000000000000000000000000000000000000100
+ res=0000000000000000000000000000000000000000000000000000000000001000
+ Note : complément de zéros à droite
+
+Expression : 4611686018427387904 = 4 << 60
+ Décimal :
+ val=4
+ res=4611686018427387904
+ Binaire :
+ val=0000000000000000000000000000000000000000000000000000000000000100
+ res=0100000000000000000000000000000000000000000000000000000000000000
+
+Expression : -9223372036854775808 = 4 << 61
+ Décimal :
+ val=4
+ res=-9223372036854775808
+ Binaire :
+ val=0000000000000000000000000000000000000000000000000000000000000100
+ res=1000000000000000000000000000000000000000000000000000000000000000
+ Note : le bit de signe est sorti
+
+Expression : 0 = 4 << 62
+ Décimal :
+ val=4
+ res=0
+ Binaire :
+ val=0000000000000000000000000000000000000000000000000000000000000100
+ res=0000000000000000000000000000000000000000000000000000000000000000
+ Note : des bits sont sortis à gauche
+
+
+--- Décalage à gauche sur les entiers négatifs ---
+Expression : -8 = -4 << 1
+ Décimal :
+ val=-4
+ res=-8
+ Binaire :
+ val=1111111111111111111111111111111111111111111111111111111111111100
+ res=1111111111111111111111111111111111111111111111111111111111111000
+ Note : complément de zéros à droite
+
+Expression : -9223372036854775808 = -4 << 61
+ Décimal :
+ val=-4
+ res=-9223372036854775808
+ Binaire :
+ val=1111111111111111111111111111111111111111111111111111111111111100
+ res=1000000000000000000000000000000000000000000000000000000000000000
+
+Expression : 0 = -4 << 62
+ Décimal :
+ val=-4
+ res=0
+ Binaire :
+ val=1111111111111111111111111111111111111111111111111111111111111100
+ res=0000000000000000000000000000000000000000000000000000000000000000
+ Note : des bits sont sortis à gauche, y compris le bit de signe
+]]>
+
+
+
+
+
+ Utilisez les fonctions de l'extension gmp
+ pour les manipulations sur les bits, lorsque les entiers dépassent
+ PHP_INT_MAX.
+
+
+
+
+ &reftitle.seealso;
+
+
+ pack
+ unpack
+ gmp_and
+ gmp_or
+ gmp_xor
+ gmp_testbit
+ gmp_clrbit
+
+
+
+
From 8d1db531148c7803cb757a105c54085394b353e4 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:38:24 +0100
Subject: [PATCH 20/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20language/operators/precedence.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
language/operators/precedence.xml | 972 +++++++++++++++---------------
1 file changed, 486 insertions(+), 486 deletions(-)
diff --git a/language/operators/precedence.xml b/language/operators/precedence.xml
index 209fc16195..74ada2096c 100644
--- a/language/operators/precedence.xml
+++ b/language/operators/precedence.xml
@@ -1,486 +1,486 @@
-
-
-
-
- La priorité des opérateurs
- Priorité des opérateurs
-
- La priorité des opérateurs spécifie
- l'ordre dans lequel les valeurs doivent être analysées.
- Par exemple, dans l'expression 1 + 5 * 3, le résultat est
- 16 et non 18, car la multiplication
- ("*") a une priorité supérieure par rapport à l'addition ("+").
- Des parenthèses peuvent être utilisées pour forcer la priorité, si
- nécessaire. Par exemple : (1 + 5) * 3 donnera
- 18.
-
-
- Lorsque les opérateurs ont une priorité égale, leur association
- décide la façon dont les opérateurs sont groupés. Par exemple,
- "-" est une association par la gauche, ainsi 1 - 2 - 3
- est groupé comme ceci (1 - 2) - 3 et sera évalué
- à -4. D'un autre côté, "=" est une association par la
- droite, ainsi, $a = $b = $c est groupé comme ceci
- $a = ($b = $c).
-
-
-
- Les opérateurs, dont la priorité est égale, qui ne sont pas associatifs,
- ne peuvent pas être utilisés entre eux, par exemple,
- 1 < 2 > 1 est interdit en PHP. L'expression
- 1 <= 1 == 1 par contre, est autorisée, car l'opérateur
- == a une précédence inférieure que l'opérateur
- <=.
-
-
- L'associativité a uniquement du sens pour les opérateurs binaire (et ternaire).
- Les opérateurs unitaires sont soit préfixés, soit suffixés ainsi cette notion
- n'est pas applicable. Par exemple !!$a peut uniquement
- être groupé de la manière suivante !(!$a).
-
-
- L'utilisation des parenthèses, y compris lorsqu'elles ne sont pas nécessaires,
- permet de mieux lire le code en effectuant des groupements explicites
- plutôt qu'imaginer la priorité des opérateurs et leurs associations.
-
-
- Le tableau qui suit liste les opérateurs par ordre de priorité, avec la
- priorité la plus élevée en haut. Les opérateurs sur la même ligne ont
- une priorité équivalente (donc l'associativité décide du groupement).
-
-
-
-
- Associativité
-
- $a = 5, $b = 5
-var_dump($a, $b);
-?>
-]]>
-
-
-
-
- L'opérateur ternaire requiert spécifiquement l'utilisation de parenthèses
- pour lever l'ambiguïté de la priorité.
-
-
-
- Précédence explicite
-
-
-]]>
-
-
-
-
- La priorité et l'association de l'opérateur ne déterminent que
- la façon dont les expressions sont groupées ; ils ne spécifient
- pas l'ordre de l'évaluation. PHP ne spécifie pas (de manière générale)
- l'ordre dans lequel une expression est évaluée et le code qui suppose
- un ordre spécifique d'évaluation ne devrait pas exister, car le
- comportement peut changer entre les différentes versions de PHP
- ou suivant le code environnant.
-
- Ordre d'évaluation indéfini
-
-
-]]>
-
-
-
- Priorité de +, - et .
-
-
-]]>
-
- &example.outputs;
-
-
-
-
-
- Avant PHP 8, +, - et . avaient la même précédence
-
-
-]]>
-
- &example.outputs;
-
-
-
-
-
-
-
- Bien que = soit prioritaire sur
- la plupart des opérateurs, PHP va tout de même exécuter des
- expressions comme : if (!$a = foo()).
- Dans cette situation, le résultat de foo()
- sera placé dans la variable $a.
-
-
-
- &reftitle.changelog;
-
-
-
-
- &Version;
- &Description;
-
-
-
-
- 8.0.0
-
- La concaténation de chaînes de caractères (.) a désormais
- une précédence moins élevée que l'addition/soustraction arithmétique
- (+ et -) et les shifts bit-à-bit
- gauche/droite (<< et >>);
- auparavant ceci avait la même précédence que + et -,
- et une précédence plus élevée que << et >>.
-
-
-
- 8.0.0
-
- L'opérateur ternaire (? :) est désormais non associatif ;
- auparavant, il était gauche-associatif.
-
-
-
- 7.4.0
-
- Dépendre de la précédence de la concaténation de chaînes de caractères
- (.) relatif à l'addition/soustraction arithmétique
- (+ ou -) ou les shifts bit-à-bit
- gauche/droite (<< ou >>),
- c.-à-d. les utiliser ensemble dans une expression sans parenthèse, est obsolète.
-
-
-
- 7.4.0
-
- Dépendre de la gauche-associativité de l'opérateur ternaire (? :),
- c.-à-d. l'imbrication de plusieurs opérateurs ternaires qui ne sont pas
- entre parenthèse, est obsolète.
-
-
-
-
-
-
-
+
+
+
+
+ La priorité des opérateurs
+ Priorité des opérateurs
+
+ La priorité des opérateurs spécifie
+ l'ordre dans lequel les valeurs doivent être analysées.
+ Par exemple, dans l'expression 1 + 5 * 3, le résultat est
+ 16 et non 18, car la multiplication
+ ("*") a une priorité supérieure par rapport à l'addition ("+").
+ Des parenthèses peuvent être utilisées pour forcer la priorité, si
+ nécessaire. Par exemple : (1 + 5) * 3 donnera
+ 18.
+
+
+ Lorsque les opérateurs ont une priorité égale, leur association
+ décide la façon dont les opérateurs sont groupés. Par exemple,
+ "-" est une association par la gauche, ainsi 1 - 2 - 3
+ est groupé comme ceci (1 - 2) - 3 et sera évalué
+ à -4. D'un autre côté, "=" est une association par la
+ droite, ainsi, $a = $b = $c est groupé comme ceci
+ $a = ($b = $c).
+
+
+
+ Les opérateurs, dont la priorité est égale, qui ne sont pas associatifs,
+ ne peuvent pas être utilisés entre eux, par exemple,
+ 1 < 2 > 1 est interdit en PHP. L'expression
+ 1 <= 1 == 1 par contre, est autorisée, car l'opérateur
+ == a une précédence inférieure que l'opérateur
+ <=.
+
+
+ L'associativité a uniquement du sens pour les opérateurs binaire (et ternaire).
+ Les opérateurs unitaires sont soit préfixés, soit suffixés ainsi cette notion
+ n'est pas applicable. Par exemple !!$a peut uniquement
+ être groupé de la manière suivante !(!$a).
+
+
+ L'utilisation des parenthèses, y compris lorsqu'elles ne sont pas nécessaires,
+ permet de mieux lire le code en effectuant des groupements explicites
+ plutôt qu'imaginer la priorité des opérateurs et leurs associations.
+
+
+ Le tableau qui suit liste les opérateurs par ordre de priorité, avec la
+ priorité la plus élevée en haut. Les opérateurs sur la même ligne ont
+ une priorité équivalente (donc l'associativité décide du groupement).
+
+
+
+
+ Associativité
+
+ $a = 5, $b = 5
+var_dump($a, $b);
+?>
+]]>
+
+
+
+
+ L'opérateur ternaire requiert spécifiquement l'utilisation de parenthèses
+ pour lever l'ambiguïté de la priorité.
+
+
+
+ Précédence explicite
+
+
+]]>
+
+
+
+
+ La priorité et l'association de l'opérateur ne déterminent que
+ la façon dont les expressions sont groupées ; ils ne spécifient
+ pas l'ordre de l'évaluation. PHP ne spécifie pas (de manière générale)
+ l'ordre dans lequel une expression est évaluée et le code qui suppose
+ un ordre spécifique d'évaluation ne devrait pas exister, car le
+ comportement peut changer entre les différentes versions de PHP
+ ou suivant le code environnant.
+
+ Ordre d'évaluation indéfini
+
+
+]]>
+
+
+
+ Priorité de +, - et .
+
+
+]]>
+
+ &example.outputs;
+
+
+
+
+
+ Avant PHP 8, +, - et . avaient la même précédence
+
+
+]]>
+
+ &example.outputs;
+
+
+
+
+
+
+
+ Bien que = soit prioritaire sur
+ la plupart des opérateurs, PHP va tout de même exécuter des
+ expressions comme : if (!$a = foo()).
+ Dans cette situation, le résultat de foo()
+ sera placé dans la variable $a.
+
+
+
+ &reftitle.changelog;
+
+
+
+
+ &Version;
+ &Description;
+
+
+
+
+ 8.0.0
+
+ La concaténation de chaînes de caractères (.) a désormais
+ une précédence moins élevée que l'addition/soustraction arithmétique
+ (+ et -) et les shifts bit-à-bit
+ gauche/droite (<< et >>);
+ auparavant ceci avait la même précédence que + et -,
+ et une précédence plus élevée que << et >>.
+
+
+
+ 8.0.0
+
+ L'opérateur ternaire (? :) est désormais non associatif ;
+ auparavant, il était gauche-associatif.
+
+
+
+ 7.4.0
+
+ Dépendre de la précédence de la concaténation de chaînes de caractères
+ (.) relatif à l'addition/soustraction arithmétique
+ (+ ou -) ou les shifts bit-à-bit
+ gauche/droite (<< ou >>),
+ c.-à-d. les utiliser ensemble dans une expression sans parenthèse, est obsolète.
+
+
+
+ 7.4.0
+
+ Dépendre de la gauche-associativité de l'opérateur ternaire (? :),
+ c.-à-d. l'imbrication de plusieurs opérateurs ternaires qui ne sont pas
+ entre parenthèse, est obsolète.
+
+
+
+
+
+
+
From 3a1e81754ec37eb166e5539eefcddafd47989378 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:38:29 +0100
Subject: [PATCH 21/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/datetime/constants.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/datetime/constants.xml | 544 +++++++++++++++----------------
1 file changed, 272 insertions(+), 272 deletions(-)
diff --git a/reference/datetime/constants.xml b/reference/datetime/constants.xml
index 1b5b791c25..df2d7f3da4 100644
--- a/reference/datetime/constants.xml
+++ b/reference/datetime/constants.xml
@@ -1,272 +1,272 @@
-
-
-
-
-
-
- &reftitle.constants;
-
- Les constantes DATE_*
- sont définies et offrent des standards
- des dates, qui peuvent être utilisés avec toutes les fonctions
- de formatage de date (comme date).
-
-
-
- Formats de retour returnFormat disponibles pour
- date_sunrise et
- date_sunset
-
-
-
-
- Ces constantes sont dépréciées à partir de PHP 8.4.0.
- Les fonctions correspondantes date_sunrise et
- date_sunset sont dépréciées à partir de PHP 8.1.0.
-
-
-
-
-
- SUNFUNCS_RET_TIMESTAMP
- (int)
-
-
-
- Timestamp
-
-
-
-
-
- SUNFUNCS_RET_STRING
- (int)
-
-
-
- Heures:minutes (exemple: 08:02)
-
-
-
-
-
- SUNFUNCS_RET_DOUBLE
- (int)
-
-
-
- Heures en tant que nombre à point flottant (exemple 8.75)
-
-
-
-
-
- DATE_* constantes
-
-
- DATE_ATOM
- (string)
-
-
-
- Atom (exemple : 2005-08-15T15:52:01+00:00) ;
- compatible avec ISO-8601, RFC 3399 et XML Schema
-
-
-
-
-
-
- DATE_COOKIE
- (string)
-
-
-
- Cookies HTTP (exemple : Monday, 15-Aug-2005 15:52:01 UTC)
-
-
-
-
-
-
- DATE_ISO8601
- (string)
-
-
-
- Semblable à ISO-8601 (exemple : 2005-08-15T15:52:01+0000)
-
-
-
- Ce format n'est pas compatible avec ISO-8601, mais il est resté ainsi pour des raisons de compatibilité ascendante. Utilisez
- DATE_ISO8601_EXPANDED,
- DATE_ATOM pour une compatibilité avec ISO-8601 à la place (ref ISO8601:2004 section 4.3.3 clause d).
-
-
-
-
-
-
-
- DATE_ISO8601_EXPANDED
- (string)
-
-
-
- ISO-8601 Expanded (exemple : +10191-07-26T08:59:52+01:00)
-
-
-
- Ce format permet des plages d'années en dehors de la plage normale d'ISO-8601 de 0000 à 9999 en incluant toujours un caractère de signe. Il s'assure également de la compatibilité de la partie du fuseau horaire (+01:00) avec ISO-8601.
-
-
-
-
-
-
-
- DATE_RFC822
- (string)
-
-
-
- RFC 822 (exemple : Mon, 15 Aug 05 15:52:01 +0000)
-
-
-
-
-
-
- DATE_RFC850
- (string)
-
-
-
- RFC 850 (exemple : Monday, 15-Aug-05 15:52:01 UTC)
-
-
-
-
-
-
- DATE_RFC1036
- (string)
-
-
-
- RFC 1036 (exemple : Mon, 15 Aug 05 15:52:01 +0000)
-
-
-
-
-
-
- DATE_RFC1123
- (string)
-
-
-
- RFC 1123 (exemple : Mon, 15 Aug 2005 15:52:01 +0000)
-
-
-
-
-
-
- DATE_RFC7231
- (string)
-
-
-
- RFC 7231 (à partir de PHP 7.0.19 et 7.1.5)
- (exemple : Sat, 30 Apr 2016 17:52:13 GMT)
-
-
-
-
-
-
- DATE_RFC2822
- (string)
-
-
-
- RFC 2822 (exemple : Mon, 15 Aug 2005 15:52:01 +0000)
-
-
-
-
-
-
- DATE_RFC3339
- (string)
-
-
-
- Identique à DATE_ATOM.
-
-
-
-
-
-
- DATE_RFC3339_EXTENDED
- (string)
-
-
-
- Format étendu RFC 3339
- (exemple : 2005-08-15T15:52:01.000+00:00)
-
-
-
-
-
-
- DATE_RSS
- (string)
-
-
-
- RSS (exemple : Mon, 15 Aug 2005 15:52:01 +0000).
- &Alias; DATE_RFC1123.
-
-
-
-
-
-
- DATE_W3C
- (string)
-
-
-
- World Wide Web Consortium (exemple : 2005-08-15T15:52:01+00:00).
- &Alias; DATE_RFC3339.
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+ &reftitle.constants;
+
+ Les constantes DATE_*
+ sont définies et offrent des standards
+ des dates, qui peuvent être utilisés avec toutes les fonctions
+ de formatage de date (comme date).
+
+
+
+ Formats de retour returnFormat disponibles pour
+ date_sunrise et
+ date_sunset
+
+
+
+
+ Ces constantes sont dépréciées à partir de PHP 8.4.0.
+ Les fonctions correspondantes date_sunrise et
+ date_sunset sont dépréciées à partir de PHP 8.1.0.
+
+
+
+
+
+ SUNFUNCS_RET_TIMESTAMP
+ (int)
+
+
+
+ Timestamp
+
+
+
+
+
+ SUNFUNCS_RET_STRING
+ (int)
+
+
+
+ Heures:minutes (exemple: 08:02)
+
+
+
+
+
+ SUNFUNCS_RET_DOUBLE
+ (int)
+
+
+
+ Heures en tant que nombre à point flottant (exemple 8.75)
+
+
+
+
+
+ DATE_* constantes
+
+
+ DATE_ATOM
+ (string)
+
+
+
+ Atom (exemple : 2005-08-15T15:52:01+00:00) ;
+ compatible avec ISO-8601, RFC 3399 et XML Schema
+
+
+
+
+
+
+ DATE_COOKIE
+ (string)
+
+
+
+ Cookies HTTP (exemple : Monday, 15-Aug-2005 15:52:01 UTC)
+
+
+
+
+
+
+ DATE_ISO8601
+ (string)
+
+
+
+ Semblable à ISO-8601 (exemple : 2005-08-15T15:52:01+0000)
+
+
+
+ Ce format n'est pas compatible avec ISO-8601, mais il est resté ainsi pour des raisons de compatibilité ascendante. Utilisez
+ DATE_ISO8601_EXPANDED,
+ DATE_ATOM pour une compatibilité avec ISO-8601 à la place (ref ISO8601:2004 section 4.3.3 clause d).
+
+
+
+
+
+
+
+ DATE_ISO8601_EXPANDED
+ (string)
+
+
+
+ ISO-8601 Expanded (exemple : +10191-07-26T08:59:52+01:00)
+
+
+
+ Ce format permet des plages d'années en dehors de la plage normale d'ISO-8601 de 0000 à 9999 en incluant toujours un caractère de signe. Il s'assure également de la compatibilité de la partie du fuseau horaire (+01:00) avec ISO-8601.
+
+
+
+
+
+
+
+ DATE_RFC822
+ (string)
+
+
+
+ RFC 822 (exemple : Mon, 15 Aug 05 15:52:01 +0000)
+
+
+
+
+
+
+ DATE_RFC850
+ (string)
+
+
+
+ RFC 850 (exemple : Monday, 15-Aug-05 15:52:01 UTC)
+
+
+
+
+
+
+ DATE_RFC1036
+ (string)
+
+
+
+ RFC 1036 (exemple : Mon, 15 Aug 05 15:52:01 +0000)
+
+
+
+
+
+
+ DATE_RFC1123
+ (string)
+
+
+
+ RFC 1123 (exemple : Mon, 15 Aug 2005 15:52:01 +0000)
+
+
+
+
+
+
+ DATE_RFC7231
+ (string)
+
+
+
+ RFC 7231 (à partir de PHP 7.0.19 et 7.1.5)
+ (exemple : Sat, 30 Apr 2016 17:52:13 GMT)
+
+
+
+
+
+
+ DATE_RFC2822
+ (string)
+
+
+
+ RFC 2822 (exemple : Mon, 15 Aug 2005 15:52:01 +0000)
+
+
+
+
+
+
+ DATE_RFC3339
+ (string)
+
+
+
+ Identique à DATE_ATOM.
+
+
+
+
+
+
+ DATE_RFC3339_EXTENDED
+ (string)
+
+
+
+ Format étendu RFC 3339
+ (exemple : 2005-08-15T15:52:01.000+00:00)
+
+
+
+
+
+
+ DATE_RSS
+ (string)
+
+
+
+ RSS (exemple : Mon, 15 Aug 2005 15:52:01 +0000).
+ &Alias; DATE_RFC1123.
+
+
+
+
+
+
+ DATE_W3C
+ (string)
+
+
+
+ World Wide Web Consortium (exemple : 2005-08-15T15:52:01+00:00).
+ &Alias; DATE_RFC3339.
+
+
+
+
+
+
+
+
From 6187e4550cfe9232b4ff371c64c6a4ee10d3fcad Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:38:33 +0100
Subject: [PATCH 22/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/datetime/datetimeinterface.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/datetime/datetimeinterface.xml | 844 +++++++++++------------
1 file changed, 422 insertions(+), 422 deletions(-)
diff --git a/reference/datetime/datetimeinterface.xml b/reference/datetime/datetimeinterface.xml
index 2cc791cf24..dad205dc1f 100644
--- a/reference/datetime/datetimeinterface.xml
+++ b/reference/datetime/datetimeinterface.xml
@@ -1,422 +1,422 @@
-
-
-
-
-
-
- L'interface DateTimeInterface
- DateTimeInterface
-
-
-
-
-
- &reftitle.intro;
-
- DateTimeInterface a été créé pour que les
- déclarations de type de paramètre, retour, ou propriété puissent accepter
- soit DateTime soit DateTimeImmutable
- comme valeur. Il n'est pas possible d'implémenter cette interface dans les
- classes utilisateurs.
-
-
- Les constantes communes qui permettent de formater les objets
- DateTimeImmutable ou
- DateTime via
- DateTimeImmutable::format et
- DateTime::format sont également définies sur cette
- interface.
-
-
-
-
-
- &reftitle.interfacesynopsis;
-
-
-
-
- DateTimeInterface
-
-
- &Constants;
-
- public
- const
- string
- DateTimeInterface::ATOM
- "Y-m-d\\TH:i:sP"
-
-
- public
- const
- string
- DateTimeInterface::COOKIE
- "l, d-M-Y H:i:s T"
-
-
- public
- const
- string
- DateTimeInterface::ISO8601
- "Y-m-d\\TH:i:sO"
-
-
- public
- const
- string
- DateTimeInterface::ISO8601_EXPANDED
- "X-m-d\\TH:i:sP"
-
-
- public
- const
- string
- DateTimeInterface::RFC822
- "D, d M y H:i:s O"
-
-
- public
- const
- string
- DateTimeInterface::RFC850
- "l, d-M-y H:i:s T"
-
-
- public
- const
- string
- DateTimeInterface::RFC1036
- "D, d M y H:i:s O"
-
-
- public
- const
- string
- DateTimeInterface::RFC1123
- "D, d M Y H:i:s O"
-
-
- public
- const
- string
- DateTimeInterface::RFC7231
- "D, d M Y H:i:s \\G\\M\\T"
-
-
- public
- const
- string
- DateTimeInterface::RFC2822
- "D, d M Y H:i:s O"
-
-
- public
- const
- string
- DateTimeInterface::RFC3339
- "Y-m-d\\TH:i:sP"
-
-
- public
- const
- string
- DateTimeInterface::RFC3339_EXTENDED
- "Y-m-d\\TH:i:s.vP"
-
-
- public
- const
- string
- DateTimeInterface::RSS
- "D, d M Y H:i:s O"
-
-
- public
- const
- string
- DateTimeInterface::W3C
- "Y-m-d\\TH:i:sP"
-
-
- &Methods;
-
-
-
-
-
-
-
-
-
-
- &reftitle.constants;
-
-
-
- DateTimeInterface::ATOM
- string
-
- DATE_ATOM
-
-
- Atom (exemple: 2005-08-15T15:52:01+00:00) ;
- compatible avec ISO-8601, RFC 3399 et XML Schema
-
-
-
-
-
-
- DateTimeInterface::COOKIE
- string
-
- DATE_COOKIE
-
-
- HTTP Cookies (exemple: Monday, 15-Aug-2005 15:52:01 UTC)
-
-
-
-
-
-
- DateTimeInterface::ISO8601
- string
-
- DATE_ISO8601
-
-
- Semblable à ISO-8601 (exemple: 2005-08-15T15:52:01+0000)
-
-
-
- Ce format n'est pas compatible avec ISO-8601, mais reste ainsi pour des
- raisons de compatibilité ascendante. Utilisez DateTime::ISO8601_EXPANDED
- ou DateTimeInterface::ATOM pour assurer la compatibilité avec
- ISO-8601. (ref ISO8601:2004 section 4.3.3 clause d)
-
-
-
-
-
-
-
- DateTimeInterface::ISO8601_EXPANDED
- string
-
- DATE_ISO8601_EXPANDED
-
-
- ISO-8601 Expanded (exemple: +10191-07-26T08:59:52+01:00)
-
-
-
- Ce format permet des plages d'années en dehors de la plage normale de
- ISO-8601 allant de 0000 à 9999 en
- incluant toujours un caractère de signe. Il s'assure également que cette
- partie de fuseau horaire (+01:00) est compatible avec
- ISO-8601.
-
-
-
-
-
-
-
- DateTimeInterface::RFC822
- string
-
- DATE_RFC822
-
-
- RFC 822 (exemple: Mon, 15 Aug 05 15:52:01 +0000)
-
-
-
-
-
-
- DateTimeInterface::RFC850
- string
-
- DATE_RFC850
-
-
- RFC 850 (exemple: Monday, 15-Aug-05 15:52:01 UTC)
-
-
-
-
-
-
- DateTimeInterface::RFC1036
- string
-
- DATE_RFC1036
-
-
- RFC 1036 (exemple: Mon, 15 Aug 05 15:52:01 +0000)
-
-
-
-
-
-
- DateTimeInterface::RFC1123
- string
-
- DATE_RFC1123
-
-
- RFC 1123 (exemple: Mon, 15 Aug 2005 15:52:01 +0000)
-
-
-
-
-
-
- DateTimeInterface::RFC7231
- string
-
- DATE_RFC7231
-
-
- RFC 7231 (à partir de PHP 7.0.19 et 7.1.5)
- (exemple: Sat, 30 Apr 2016 17:52:13 GMT)
-
-
-
-
-
-
- DateTimeInterface::RFC2822
- string
-
- DATE_RFC2822
-
-
- RFC 2822 (exemple: Mon, 15 Aug 2005 15:52:01 +0000)
-
-
-
-
-
-
- DateTimeInterface::RFC3339
- string
-
- DATE_RFC3339
-
-
- Comme DATE_ATOM
-
-
-
-
-
-
- DateTimeInterface::RFC3339_EXTENDED
- string
-
- DATE_RFC3339_EXTENDED
-
-
- RFC 3339 EXTENDED format (exemple : 2005-08-15T15:52:01.000+00:00)
-
-
-
-
-
-
- DateTimeInterface::RSS
- string
-
- DATE_RSS
-
-
- RSS (exemple: Mon, 15 Aug 2005 15:52:01 +0000)
-
-
-
-
-
-
- DateTimeInterface::W3C
- string
-
- DATE_W3C
-
-
- World Wide Web Consortium (exemple : 2005-08-15T15:52:01+00:00)
-
-
-
-
-
-
-
-
- &reftitle.changelog;
-
-
-
-
-
- &Version;
- &Description;
-
-
-
-
- 8.4.0
-
- Les constantes de classe sont maintenant typées.
-
-
-
- 8.2.0
-
- La constante DateTimeInterface::ISO8601_EXPANDED
- a été ajoutée.
-
-
-
- 7.2.0
-
- Les constantes de classe de DateTime sont
- maintenant définies sur DateTimeInterface.
-
-
-
-
-
-
-
-
-
-
- &reference.datetime.entities.datetimeinterface;
-
-
-
+
+
+
+
+
+
+ L'interface DateTimeInterface
+ DateTimeInterface
+
+
+
+
+
+ &reftitle.intro;
+
+ DateTimeInterface a été créé pour que les
+ déclarations de type de paramètre, retour, ou propriété puissent accepter
+ soit DateTime soit DateTimeImmutable
+ comme valeur. Il n'est pas possible d'implémenter cette interface dans les
+ classes utilisateurs.
+
+
+ Les constantes communes qui permettent de formater les objets
+ DateTimeImmutable ou
+ DateTime via
+ DateTimeImmutable::format et
+ DateTime::format sont également définies sur cette
+ interface.
+
+
+
+
+
+ &reftitle.interfacesynopsis;
+
+
+
+
+ DateTimeInterface
+
+
+ &Constants;
+
+ public
+ const
+ string
+ DateTimeInterface::ATOM
+ "Y-m-d\\TH:i:sP"
+
+
+ public
+ const
+ string
+ DateTimeInterface::COOKIE
+ "l, d-M-Y H:i:s T"
+
+
+ public
+ const
+ string
+ DateTimeInterface::ISO8601
+ "Y-m-d\\TH:i:sO"
+
+
+ public
+ const
+ string
+ DateTimeInterface::ISO8601_EXPANDED
+ "X-m-d\\TH:i:sP"
+
+
+ public
+ const
+ string
+ DateTimeInterface::RFC822
+ "D, d M y H:i:s O"
+
+
+ public
+ const
+ string
+ DateTimeInterface::RFC850
+ "l, d-M-y H:i:s T"
+
+
+ public
+ const
+ string
+ DateTimeInterface::RFC1036
+ "D, d M y H:i:s O"
+
+
+ public
+ const
+ string
+ DateTimeInterface::RFC1123
+ "D, d M Y H:i:s O"
+
+
+ public
+ const
+ string
+ DateTimeInterface::RFC7231
+ "D, d M Y H:i:s \\G\\M\\T"
+
+
+ public
+ const
+ string
+ DateTimeInterface::RFC2822
+ "D, d M Y H:i:s O"
+
+
+ public
+ const
+ string
+ DateTimeInterface::RFC3339
+ "Y-m-d\\TH:i:sP"
+
+
+ public
+ const
+ string
+ DateTimeInterface::RFC3339_EXTENDED
+ "Y-m-d\\TH:i:s.vP"
+
+
+ public
+ const
+ string
+ DateTimeInterface::RSS
+ "D, d M Y H:i:s O"
+
+
+ public
+ const
+ string
+ DateTimeInterface::W3C
+ "Y-m-d\\TH:i:sP"
+
+
+ &Methods;
+
+
+
+
+
+
+
+
+
+
+ &reftitle.constants;
+
+
+
+ DateTimeInterface::ATOM
+ string
+
+ DATE_ATOM
+
+
+ Atom (exemple: 2005-08-15T15:52:01+00:00) ;
+ compatible avec ISO-8601, RFC 3399 et XML Schema
+
+
+
+
+
+
+ DateTimeInterface::COOKIE
+ string
+
+ DATE_COOKIE
+
+
+ HTTP Cookies (exemple: Monday, 15-Aug-2005 15:52:01 UTC)
+
+
+
+
+
+
+ DateTimeInterface::ISO8601
+ string
+
+ DATE_ISO8601
+
+
+ Semblable à ISO-8601 (exemple: 2005-08-15T15:52:01+0000)
+
+
+
+ Ce format n'est pas compatible avec ISO-8601, mais reste ainsi pour des
+ raisons de compatibilité ascendante. Utilisez DateTime::ISO8601_EXPANDED
+ ou DateTimeInterface::ATOM pour assurer la compatibilité avec
+ ISO-8601. (ref ISO8601:2004 section 4.3.3 clause d)
+
+
+
+
+
+
+
+ DateTimeInterface::ISO8601_EXPANDED
+ string
+
+ DATE_ISO8601_EXPANDED
+
+
+ ISO-8601 Expanded (exemple: +10191-07-26T08:59:52+01:00)
+
+
+
+ Ce format permet des plages d'années en dehors de la plage normale de
+ ISO-8601 allant de 0000 à 9999 en
+ incluant toujours un caractère de signe. Il s'assure également que cette
+ partie de fuseau horaire (+01:00) est compatible avec
+ ISO-8601.
+
+
+
+
+
+
+
+ DateTimeInterface::RFC822
+ string
+
+ DATE_RFC822
+
+
+ RFC 822 (exemple: Mon, 15 Aug 05 15:52:01 +0000)
+
+
+
+
+
+
+ DateTimeInterface::RFC850
+ string
+
+ DATE_RFC850
+
+
+ RFC 850 (exemple: Monday, 15-Aug-05 15:52:01 UTC)
+
+
+
+
+
+
+ DateTimeInterface::RFC1036
+ string
+
+ DATE_RFC1036
+
+
+ RFC 1036 (exemple: Mon, 15 Aug 05 15:52:01 +0000)
+
+
+
+
+
+
+ DateTimeInterface::RFC1123
+ string
+
+ DATE_RFC1123
+
+
+ RFC 1123 (exemple: Mon, 15 Aug 2005 15:52:01 +0000)
+
+
+
+
+
+
+ DateTimeInterface::RFC7231
+ string
+
+ DATE_RFC7231
+
+
+ RFC 7231 (à partir de PHP 7.0.19 et 7.1.5)
+ (exemple: Sat, 30 Apr 2016 17:52:13 GMT)
+
+
+
+
+
+
+ DateTimeInterface::RFC2822
+ string
+
+ DATE_RFC2822
+
+
+ RFC 2822 (exemple: Mon, 15 Aug 2005 15:52:01 +0000)
+
+
+
+
+
+
+ DateTimeInterface::RFC3339
+ string
+
+ DATE_RFC3339
+
+
+ Comme DATE_ATOM
+
+
+
+
+
+
+ DateTimeInterface::RFC3339_EXTENDED
+ string
+
+ DATE_RFC3339_EXTENDED
+
+
+ RFC 3339 EXTENDED format (exemple : 2005-08-15T15:52:01.000+00:00)
+
+
+
+
+
+
+ DateTimeInterface::RSS
+ string
+
+ DATE_RSS
+
+
+ RSS (exemple: Mon, 15 Aug 2005 15:52:01 +0000)
+
+
+
+
+
+
+ DateTimeInterface::W3C
+ string
+
+ DATE_W3C
+
+
+ World Wide Web Consortium (exemple : 2005-08-15T15:52:01+00:00)
+
+
+
+
+
+
+
+
+ &reftitle.changelog;
+
+
+
+
+
+ &Version;
+ &Description;
+
+
+
+
+ 8.4.0
+
+ Les constantes de classe sont maintenant typées.
+
+
+
+ 8.2.0
+
+ La constante DateTimeInterface::ISO8601_EXPANDED
+ a été ajoutée.
+
+
+
+ 7.2.0
+
+ Les constantes de classe de DateTime sont
+ maintenant définies sur DateTimeInterface.
+
+
+
+
+
+
+
+
+
+
+ &reference.datetime.entities.datetimeinterface;
+
+
+
From 995f1a8e583f96af2dc2921259f6e9f3acf074ea Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:38:39 +0100
Subject: [PATCH 23/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/datetime/examples.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/datetime/examples.xml | 316 ++++++++++++++++----------------
1 file changed, 158 insertions(+), 158 deletions(-)
diff --git a/reference/datetime/examples.xml b/reference/datetime/examples.xml
index 810ece6e82..2c94856f31 100644
--- a/reference/datetime/examples.xml
+++ b/reference/datetime/examples.xml
@@ -1,158 +1,158 @@
-
-
-
-
-
-
- &reftitle.examples;
-
-
- Arithmétique avec DateTime
-
- Les exemples suivants montrent quelques pièges de l'arithmétique de DateTime
- en ce qui concerne les transitions DST et les mois ayant un nombre différent
- de jours.
-
-
-
- DateTimeImmutable::add/sub ajout d'un interval de temps écoulé.
-
- Ajouter PT24H au dela d'une transition DST semblera ajouter 23/25 heures
- (pour la plupart des fuseaux horaires).
-
-
-format("Y-m-d H:i:s P"), PHP_EOL;
-$dt = $dt->add(new DateInterval("PT3H"));
-echo "End: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
-]]>
-
- &example.outputs;
-
-
-
-
-
-
-
- DateTimeImmutable::modify et strtotime incrémentation ou décrémentation de valeurs individuelles
-
- Ajouter +24 heures au dela d'une transition DST peut ajouter exactement 24
- heures comme vu avec la chaîne date/time
- (sauf si l'heure de début ou de fin est sur un point de transition).
-
-
-format("Y-m-d H:i:s P"), PHP_EOL;
-$dt = $dt->modify("+24 hours");
-echo "End: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
-]]>
-
- &example.outputs;
-
-
-
-
-
-
-
- L'ajout ou la soustraction de dates/heures peut dépasser
- (en plus ou en moins) des dates
-
- Comme pour 31 Janvier + 1 mois donnera comme résultat 2 Mars (année bisextile) ou
- 3 Mars (année normale).
-
-
-format("Y-m-d H:i:s P"), PHP_EOL;
-$dt = $dt->modify("+1 month");
-echo "End: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
-
-echo "Leap year:\n"; // February has 29 days
-$dt = new DateTimeImmutable("2016-01-31 00:00:00", new DateTimeZone("America/New_York"));
-echo "Start: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
-$dt = $dt->modify("+1 month");
-echo "End: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
-]]>
-
- &example.outputs;
-
-
-
-
- Pour obtenir le dernier du mois prochain (autrement dit pour prévenir le
- dépassement), le format last day of est disponible.
-
-
-format("Y-m-d H:i:s P"), PHP_EOL;
-$dt = $dt->modify("last day of next month");
-echo "End: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
-
-echo "Leap year:\n"; // February has 29 days
-$dt = new DateTimeImmutable("2016-01-31 00:00:00", new DateTimeZone("America/New_York"));
-echo "Start: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
-$dt = $dt->modify("last day of next month");
-echo "End: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
-]]>
-
- &example.outputs;
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+ &reftitle.examples;
+
+
+ Arithmétique avec DateTime
+
+ Les exemples suivants montrent quelques pièges de l'arithmétique de DateTime
+ en ce qui concerne les transitions DST et les mois ayant un nombre différent
+ de jours.
+
+
+
+ DateTimeImmutable::add/sub ajout d'un interval de temps écoulé.
+
+ Ajouter PT24H au dela d'une transition DST semblera ajouter 23/25 heures
+ (pour la plupart des fuseaux horaires).
+
+
+format("Y-m-d H:i:s P"), PHP_EOL;
+$dt = $dt->add(new DateInterval("PT3H"));
+echo "End: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
+]]>
+
+ &example.outputs;
+
+
+
+
+
+
+
+ DateTimeImmutable::modify et strtotime incrémentation ou décrémentation de valeurs individuelles
+
+ Ajouter +24 heures au dela d'une transition DST peut ajouter exactement 24
+ heures comme vu avec la chaîne date/time
+ (sauf si l'heure de début ou de fin est sur un point de transition).
+
+
+format("Y-m-d H:i:s P"), PHP_EOL;
+$dt = $dt->modify("+24 hours");
+echo "End: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
+]]>
+
+ &example.outputs;
+
+
+
+
+
+
+
+ L'ajout ou la soustraction de dates/heures peut dépasser
+ (en plus ou en moins) des dates
+
+ Comme pour 31 Janvier + 1 mois donnera comme résultat 2 Mars (année bisextile) ou
+ 3 Mars (année normale).
+
+
+format("Y-m-d H:i:s P"), PHP_EOL;
+$dt = $dt->modify("+1 month");
+echo "End: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
+
+echo "Leap year:\n"; // February has 29 days
+$dt = new DateTimeImmutable("2016-01-31 00:00:00", new DateTimeZone("America/New_York"));
+echo "Start: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
+$dt = $dt->modify("+1 month");
+echo "End: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
+]]>
+
+ &example.outputs;
+
+
+
+
+ Pour obtenir le dernier du mois prochain (autrement dit pour prévenir le
+ dépassement), le format last day of est disponible.
+
+
+format("Y-m-d H:i:s P"), PHP_EOL;
+$dt = $dt->modify("last day of next month");
+echo "End: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
+
+echo "Leap year:\n"; // February has 29 days
+$dt = new DateTimeImmutable("2016-01-31 00:00:00", new DateTimeZone("America/New_York"));
+echo "Start: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
+$dt = $dt->modify("last day of next month");
+echo "End: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
+]]>
+
+ &example.outputs;
+
+
+
+
+
+
+
+
+
+
From d7e2ceff9123c082fca22ea90f0264dd501463ea Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:38:42 +0100
Subject: [PATCH 24/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/dba/configure.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/dba/configure.xml | 548 ++++++++++++++++++------------------
1 file changed, 274 insertions(+), 274 deletions(-)
diff --git a/reference/dba/configure.xml b/reference/dba/configure.xml
index 7adb811c3b..fcba1dc38e 100644
--- a/reference/dba/configure.xml
+++ b/reference/dba/configure.xml
@@ -1,274 +1,274 @@
-
-
-
-
-
- &reftitle.install;
-
- En utilisant l'option de compilation ,
- vous pouvez compiler un module dynamique qui activera le support
- des bases de données de style DBM pour PHP. Vous devez aussi ajouter le support
- d'au moins l'un des gestionnaires suivants, en spécifiant l'option de
- configuration ou
- lors de la configuration de
- PHP.
-
-
-
- Après avoir configuré et compilé PHP, vous devez exécuter les tests
- suivants à partir de la ligne de commande : php run-tests.php
- ext/dba. Cela montre si votre combinaison de pilotes
- fonctionne. Les plus problématiques sont dbm et
- ndbm qui entrent en conflit avec nombre d'installations.
- Ceci est dû au fait que sur de nombreux systèmes, ces bibliothèques font
- parties de plus d'une bibliothèque. Le test de configuration vous empêche
- juste de configurer des descripteurs dont la combinaison est défectueuse
- alors qu'ils fonctionnent correctement séparément.
-
-
-
- Gestionnaires DBA supportés
-
-
-
- Gestionnaire
- Option de configuration
-
-
-
-
- dbm
-
-
- Pour activer le support de dbm, ajoutez l'option
- de compilation .
-
-
- dbm est une surcouche qui aboutit souvent à des échecs.
- Ainsi, vous ne devez utiliser dbm que si vous êtes sûr qu'il
- fonctionne et que vous avez besoin de ce format.
-
-
-
-
-
-
-
- ndbm
-
-
- Pour activer le support de ndbm, ajoutez l'option
- de compilation .
-
-
- ndbm est une surcouche qui aboutit souvent à des échecs.
- Ainsi, vous ne devez utiliser ndbm que si vous êtes sûr qu'il
- fonctionne et que vous avez besoin de ce format.
-
-
-
-
-
-
-
- gdbm
-
- Pour activer le support de gdbm, ajoutez l'option
- de compilation .
-
-
-
-
- db2
-
-
- Pour activer le support de Oracle Berkeley DB 2, ajoutez l'option
- de compilation .
-
-
- db2 entre en conflit avec db3 et db4.
-
-
-
-
-
-
-
- db3
-
-
- Pour activer le support de Oracle Berkeley DB 3, ajoutez l'option
- de compilation .
-
-
- db3 entre en conflit avec db2 et db4.
-
-
-
-
-
-
-
- db4
-
-
- Pour activer le support de Oracle Berkeley DB 4, ajoutez l'option
- de compilation .
-
-
- db4 entre en conflit avec db2 et db3.
-
-
-
-
- Les bibliothèques db avec des
- versions allant de 4.1 à 4.1.24 ne peuvent être utilisées avec aucune
- version de PHP.
-
-
- Le support DB5 a été ajouté en PHP 5.3.3.
-
-
-
-
-
-
-
- cdb
-
-
- Pour activer le support de cdb, ajoutez l'option
- de compilation .
-
-
- Vous pouvez omettre d'utiliser DIR, afin
- d'exploiter la bibliothèque cdb fournie avec PHP, qui ajoute un
- gestionnaire cdb_make, permet la création de fichier
- cdb et permet l'accès aux fichiers cbd via le réseau avec les
- flux de PHP.
-
-
-
-
-
-
-
- flatfile
-
-
- Pour activer le support des fichiers, ajoutez l'option
- de compilation
- .
- Antérieur à PHP 5.2.1 l'option
- devait être utilisé à la place.
-
-
- Ceci a été ajouté pour assurer la compatibilité avec l'extension
- dbm qui est obsolète.
- Utilisez ce gestionnaire seulement quand vous ne pouvez installer
- aucun autre gestionnaire et que vous ne pouvez pas utiliser le
- gestionnaire cdb intégré.
-
-
-
-
-
-
-
- inifile
-
-
- Pour activer le support de inifile, ajoutez l'option
- de compilation .
- Antérieur à PHP 5.2.1 l'option
- devait être utilisé à la place.
-
-
- Cette option a été ajoutée pour permettre de lire et écrire dans
- des fichiers d'initialisation de type Microsoft
- (.ini), comme le &php.ini; par exemple.
-
-
-
-
-
-
-
- qdbm
-
-
- Pour activer le support de qdbm, ajoutez l'option de compilation
- .
-
-
- qdbm entre en conflit avec dbm et gdbm.
-
-
-
-
- La bibliothèque qdbm peut être téléchargée depuis
- .
-
-
-
-
-
-
-
- tcadb
-
-
- Pour activer le support de Tokyo Cabinet, ajouter l'option de compilation
- .
-
-
- La bibliothèque Tokyo Cabinet peut être
- téléchargée depuis .
-
-
-
-
-
-
-
- lmdb
-
-
- Pour activer le support de Lightning Memory-Mapped Database ajoutez
- l'option de configuration
- .
-
-
- Ceci a été ajouté en PHP 7.2.0. La bibliothèque
- Lightning Memory-Mapped Database peut être téléchargée depuis
- .
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+ &reftitle.install;
+
+ En utilisant l'option de compilation ,
+ vous pouvez compiler un module dynamique qui activera le support
+ des bases de données de style DBM pour PHP. Vous devez aussi ajouter le support
+ d'au moins l'un des gestionnaires suivants, en spécifiant l'option de
+ configuration ou
+ lors de la configuration de
+ PHP.
+
+
+
+ Après avoir configuré et compilé PHP, vous devez exécuter les tests
+ suivants à partir de la ligne de commande : php run-tests.php
+ ext/dba. Cela montre si votre combinaison de pilotes
+ fonctionne. Les plus problématiques sont dbm et
+ ndbm qui entrent en conflit avec nombre d'installations.
+ Ceci est dû au fait que sur de nombreux systèmes, ces bibliothèques font
+ parties de plus d'une bibliothèque. Le test de configuration vous empêche
+ juste de configurer des descripteurs dont la combinaison est défectueuse
+ alors qu'ils fonctionnent correctement séparément.
+
+
+
+ Gestionnaires DBA supportés
+
+
+
+ Gestionnaire
+ Option de configuration
+
+
+
+
+ dbm
+
+
+ Pour activer le support de dbm, ajoutez l'option
+ de compilation .
+
+
+ dbm est une surcouche qui aboutit souvent à des échecs.
+ Ainsi, vous ne devez utiliser dbm que si vous êtes sûr qu'il
+ fonctionne et que vous avez besoin de ce format.
+
+
+
+
+
+
+
+ ndbm
+
+
+ Pour activer le support de ndbm, ajoutez l'option
+ de compilation .
+
+
+ ndbm est une surcouche qui aboutit souvent à des échecs.
+ Ainsi, vous ne devez utiliser ndbm que si vous êtes sûr qu'il
+ fonctionne et que vous avez besoin de ce format.
+
+
+
+
+
+
+
+ gdbm
+
+ Pour activer le support de gdbm, ajoutez l'option
+ de compilation .
+
+
+
+
+ db2
+
+
+ Pour activer le support de Oracle Berkeley DB 2, ajoutez l'option
+ de compilation .
+
+
+ db2 entre en conflit avec db3 et db4.
+
+
+
+
+
+
+
+ db3
+
+
+ Pour activer le support de Oracle Berkeley DB 3, ajoutez l'option
+ de compilation .
+
+
+ db3 entre en conflit avec db2 et db4.
+
+
+
+
+
+
+
+ db4
+
+
+ Pour activer le support de Oracle Berkeley DB 4, ajoutez l'option
+ de compilation .
+
+
+ db4 entre en conflit avec db2 et db3.
+
+
+
+
+ Les bibliothèques db avec des
+ versions allant de 4.1 à 4.1.24 ne peuvent être utilisées avec aucune
+ version de PHP.
+
+
+ Le support DB5 a été ajouté en PHP 5.3.3.
+
+
+
+
+
+
+
+ cdb
+
+
+ Pour activer le support de cdb, ajoutez l'option
+ de compilation .
+
+
+ Vous pouvez omettre d'utiliser DIR, afin
+ d'exploiter la bibliothèque cdb fournie avec PHP, qui ajoute un
+ gestionnaire cdb_make, permet la création de fichier
+ cdb et permet l'accès aux fichiers cbd via le réseau avec les
+ flux de PHP.
+
+
+
+
+
+
+
+ flatfile
+
+
+ Pour activer le support des fichiers, ajoutez l'option
+ de compilation
+ .
+ Antérieur à PHP 5.2.1 l'option
+ devait être utilisé à la place.
+
+
+ Ceci a été ajouté pour assurer la compatibilité avec l'extension
+ dbm qui est obsolète.
+ Utilisez ce gestionnaire seulement quand vous ne pouvez installer
+ aucun autre gestionnaire et que vous ne pouvez pas utiliser le
+ gestionnaire cdb intégré.
+
+
+
+
+
+
+
+ inifile
+
+
+ Pour activer le support de inifile, ajoutez l'option
+ de compilation .
+ Antérieur à PHP 5.2.1 l'option
+ devait être utilisé à la place.
+
+
+ Cette option a été ajoutée pour permettre de lire et écrire dans
+ des fichiers d'initialisation de type Microsoft
+ (.ini), comme le &php.ini; par exemple.
+
+
+
+
+
+
+
+ qdbm
+
+
+ Pour activer le support de qdbm, ajoutez l'option de compilation
+ .
+
+
+ qdbm entre en conflit avec dbm et gdbm.
+
+
+
+
+ La bibliothèque qdbm peut être téléchargée depuis
+ .
+
+
+
+
+
+
+
+ tcadb
+
+
+ Pour activer le support de Tokyo Cabinet, ajouter l'option de compilation
+ .
+
+
+ La bibliothèque Tokyo Cabinet peut être
+ téléchargée depuis .
+
+
+
+
+
+
+
+ lmdb
+
+
+ Pour activer le support de Lightning Memory-Mapped Database ajoutez
+ l'option de configuration
+ .
+
+
+ Ceci a été ajouté en PHP 7.2.0. La bibliothèque
+ Lightning Memory-Mapped Database peut être téléchargée depuis
+ .
+
+
+
+
+
+
+
+
+
+
+
From c942fe0176a134070fbd742fc3c552321f89c92e Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:38:47 +0100
Subject: [PATCH 25/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/eio/functions/eio-ftruncate.xm?=
=?UTF-8?q?l?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/eio/functions/eio-ftruncate.xml | 218 +++++++++++-----------
1 file changed, 109 insertions(+), 109 deletions(-)
diff --git a/reference/eio/functions/eio-ftruncate.xml b/reference/eio/functions/eio-ftruncate.xml
index bb64256625..38f4b02446 100644
--- a/reference/eio/functions/eio-ftruncate.xml
+++ b/reference/eio/functions/eio-ftruncate.xml
@@ -1,109 +1,109 @@
-
-
-
-
-
-
- eio_ftruncate
- Tronque un fichier
-
-
-
- &reftitle.description;
-
- resourceeio_ftruncate
- mixedfd
- intoffset0
- intpriEIO_PRI_DEFAULT
- callablecallbackNULL
- mixeddataNULL
-
-
- eio_ftruncate tronque un fichier régulier décrit
- par le descripteur fd à la position de
- length octets.
-
-
-
-
-
- &reftitle.parameters;
-
-
- fd
-
-
- Un flux, une ressource de socket, ou
- un descripteur de fichier.
-
-
-
-
- offset
-
-
- La position depuis le début du fichier.
-
-
-
-
- pri
-
- &eio.request.pri.values;
-
-
-
- callback
-
- &eio.callback.proto;
-
-
-
- data
-
-
- Variables arbitraires à passer à la fonction de rappel
- callback.
-
-
-
-
-
-
-
- &reftitle.returnvalues;
-
- eio_ftruncate retourne la ressource demandée
- en cas de succès,&return.falseforfailure;.
-
-
-
-
-
- &reftitle.seealso;
-
- eio_truncate
-
-
-
-
-
+
+
+
+
+
+
+ eio_ftruncate
+ Tronque un fichier
+
+
+
+ &reftitle.description;
+
+ resourceeio_ftruncate
+ mixedfd
+ intoffset0
+ intpriEIO_PRI_DEFAULT
+ callablecallbackNULL
+ mixeddataNULL
+
+
+ eio_ftruncate tronque un fichier régulier décrit
+ par le descripteur fd à la position de
+ length octets.
+
+
+
+
+
+ &reftitle.parameters;
+
+
+ fd
+
+
+ Un flux, une ressource de socket, ou
+ un descripteur de fichier.
+
+
+
+
+ offset
+
+
+ La position depuis le début du fichier.
+
+
+
+
+ pri
+
+ &eio.request.pri.values;
+
+
+
+ callback
+
+ &eio.callback.proto;
+
+
+
+ data
+
+
+ Variables arbitraires à passer à la fonction de rappel
+ callback.
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+
+ eio_ftruncate retourne la ressource demandée
+ en cas de succès,&return.falseforfailure;.
+
+
+
+
+
+ &reftitle.seealso;
+
+ eio_truncate
+
+
+
+
+
From d65622fa3357bbc48a497cd13d85957c81432295 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:38:52 +0100
Subject: [PATCH 26/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/ev/evsignal.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/ev/evsignal.xml | 236 +++++++++++++++++++-------------------
1 file changed, 118 insertions(+), 118 deletions(-)
diff --git a/reference/ev/evsignal.xml b/reference/ev/evsignal.xml
index b46f280e20..4d6801dc1c 100644
--- a/reference/ev/evsignal.xml
+++ b/reference/ev/evsignal.xml
@@ -1,118 +1,118 @@
-
-
-
-
-
- La classe EvSignal
- EvSignal
-
-
-
- &reftitle.intro;
-
- Les watchers EvSignal vont lancer un événement
- lorsque le processus reçoit un signal spécifique une ou plusieurs fois.
- Malgré le fait que les signaux soient asynchrones,
- libev va tenter de faire de son mieux pour
- délivrer les signaux de façon synchrone, i.e. tout comme n'importe quel
- autre événement.
-
-
- Il n'y a aucune limite pour le nombre de watchers pour le même signal,
- mais seulement dans la même boucle, i.e. un peu surveiller
- SIGINT dans la boucle par défaut, et pour
- SIGIO dans une autre boucle, mais il n'est pas
- autorisé de surveiller SIGINT à la fois dans
- la boucle par défaut, et dans une autre boucle au même moment.
- A ce moment, SIGCHLD est lié de façon permanente
- à la boucle par défaut.
-
-
- Si possible et si supporté, libev va installer son
- gestionnaire avec SA_RESTART (ou équivalent) activé,
- aussi, les appels système ne devraient pas être interrompus. Dans le cas
- d'un problème avec les appels système qui se verraient interrompus par
- des signaux, tous les signaux peuvent être bloqués dans un watcher
- EvCheck et débloqués dans un watcher
- EvPrepare.
-
-
-
-
- &reftitle.classsynopsis;
-
-
-
-
- EvSignal
-
-
-
-
- EvSignal
-
-
- extends
- EvWatcher
-
-
-
- &Properties;
-
- public
- signum
-
- &InheritedProperties;
-
- &Methods;
-
-
- &InheritedMethods;
-
-
-
-
-
-
- &reftitle.properties;
-
-
-
- signum
-
-
-
- Le numéro du signal. Voir les constantes exportées par l'extension
- pcntl. Voir aussi la page de manuel pour
- signal(7).
-
-
-
-
-
-
-
-
- &reference.ev.entities.evsignal;
-
-
-
+
+
+
+
+
+ La classe EvSignal
+ EvSignal
+
+
+
+ &reftitle.intro;
+
+ Les watchers EvSignal vont lancer un événement
+ lorsque le processus reçoit un signal spécifique une ou plusieurs fois.
+ Malgré le fait que les signaux soient asynchrones,
+ libev va tenter de faire de son mieux pour
+ délivrer les signaux de façon synchrone, i.e. tout comme n'importe quel
+ autre événement.
+
+
+ Il n'y a aucune limite pour le nombre de watchers pour le même signal,
+ mais seulement dans la même boucle, i.e. un peu surveiller
+ SIGINT dans la boucle par défaut, et pour
+ SIGIO dans une autre boucle, mais il n'est pas
+ autorisé de surveiller SIGINT à la fois dans
+ la boucle par défaut, et dans une autre boucle au même moment.
+ A ce moment, SIGCHLD est lié de façon permanente
+ à la boucle par défaut.
+
+
+ Si possible et si supporté, libev va installer son
+ gestionnaire avec SA_RESTART (ou équivalent) activé,
+ aussi, les appels système ne devraient pas être interrompus. Dans le cas
+ d'un problème avec les appels système qui se verraient interrompus par
+ des signaux, tous les signaux peuvent être bloqués dans un watcher
+ EvCheck et débloqués dans un watcher
+ EvPrepare.
+
+
+
+
+ &reftitle.classsynopsis;
+
+
+
+
+ EvSignal
+
+
+
+
+ EvSignal
+
+
+ extends
+ EvWatcher
+
+
+
+ &Properties;
+
+ public
+ signum
+
+ &InheritedProperties;
+
+ &Methods;
+
+
+ &InheritedMethods;
+
+
+
+
+
+
+ &reftitle.properties;
+
+
+
+ signum
+
+
+
+ Le numéro du signal. Voir les constantes exportées par l'extension
+ pcntl. Voir aussi la page de manuel pour
+ signal(7).
+
+
+
+
+
+
+
+
+ &reference.ev.entities.evsignal;
+
+
+
From b69a16c3aef20e09aca94322017c2f63c851d734 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:38:56 +0100
Subject: [PATCH 27/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/expect/setup.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/expect/setup.xml | 112 ++++++++++++++++++-------------------
1 file changed, 56 insertions(+), 56 deletions(-)
diff --git a/reference/expect/setup.xml b/reference/expect/setup.xml
index b080c980e6..f427c0b2fd 100644
--- a/reference/expect/setup.xml
+++ b/reference/expect/setup.xml
@@ -1,56 +1,56 @@
-
-
-
-
-
- &reftitle.setup;
-
-
-
- &reftitle.required;
-
- Ce module utilise les fonctions de la bibliothèque expect.
- Vous avez besoin de la libexpect version >= 5.43.0.
-
-
-
-
-
- &reference.expect.configure;
-
-
-
- &reference.expect.ini;
-
-
-
-
- &reftitle.resources;
-
- expect_popen retourne un flux ouvert PTY utilisé par la fonction
- expect_expectl.
-
-
-
-
-
-
+
+
+
+
+
+ &reftitle.setup;
+
+
+
+ &reftitle.required;
+
+ Ce module utilise les fonctions de la bibliothèque expect.
+ Vous avez besoin de la libexpect version >= 5.43.0.
+
+
+
+
+
+ &reference.expect.configure;
+
+
+
+ &reference.expect.ini;
+
+
+
+
+ &reftitle.resources;
+
+ expect_popen retourne un flux ouvert PTY utilisé par la fonction
+ expect_expectl.
+
+
+
+
+
+
From c2889cae5c7633235426ff4f9ff87298b389d840 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:39:03 +0100
Subject: [PATCH 28/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/fann/functions/fann-set-activa?=
=?UTF-8?q?tion-steepness.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../fann-set-activation-steepness.xml | 242 +++++++++---------
1 file changed, 121 insertions(+), 121 deletions(-)
diff --git a/reference/fann/functions/fann-set-activation-steepness.xml b/reference/fann/functions/fann-set-activation-steepness.xml
index d06ce4929c..8d9494d110 100644
--- a/reference/fann/functions/fann-set-activation-steepness.xml
+++ b/reference/fann/functions/fann-set-activation-steepness.xml
@@ -1,121 +1,121 @@
-
-
-
-
-
-
-
- fann_set_activation_steepness
- Défini la pente d'activation pour le neurone et le numéro de couche donnés
-
-
-
- &reftitle.description;
-
- boolfann_set_activation_steepness
- resourceann
- floatactivation_steepness
- intlayer
- intneuron
-
-
- Définit la pente d'activation pour le neurone numéro neuron
- dans la couche numéro layer, en comptant la couche d'entrée
- comme la couche numéro 0.
-
-
- Il n'est pas possible de définir la pente d'activation pour les neurones
- dans la couche d'entrée.
-
-
- La pente d'une fonction d'activation indique une valeur signifiant la rapidité de la fonction
- d'activation pour aller du minimum au maximum. Une valeur ahute pour la fonction
- d'activation va également produire un entrainement plus agressif.
-
-
- Lors d'un entrainement sur des réseaux neuronaux, où les valeurs de sortie doivent
- être aux extrèmes (habituellement, 0 et 1, suivant la fonction d'activation),
- une fonction de pente d'activation peut être utilisée (i.e. 1.0).
-
-
- La pente d'activation par défaut est 0.5.
-
-
-
-
- &reftitle.parameters;
-
-
- ann
-
- &fann.ann.description;
-
-
-
- activation_steepness
-
-
- La pente d'activation.
-
-
-
-
- layer
-
-
- Le numéro de la couche.
-
-
-
-
- neuron
-
-
- Le numéro du neurone.
-
-
-
-
-
-
-
- &reftitle.returnvalues;
- &fann.return.bool;
-
-
-
- &reftitle.seealso;
-
-
- fann_set_activation_steepness_layer
- fann_set_activation_steepness_hidden
- fann_set_activation_steepness_output
- fann_get_activation_steepness
- fann_set_activation_function
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+ fann_set_activation_steepness
+ Défini la pente d'activation pour le neurone et le numéro de couche donnés
+
+
+
+ &reftitle.description;
+
+ boolfann_set_activation_steepness
+ resourceann
+ floatactivation_steepness
+ intlayer
+ intneuron
+
+
+ Définit la pente d'activation pour le neurone numéro neuron
+ dans la couche numéro layer, en comptant la couche d'entrée
+ comme la couche numéro 0.
+
+
+ Il n'est pas possible de définir la pente d'activation pour les neurones
+ dans la couche d'entrée.
+
+
+ La pente d'une fonction d'activation indique une valeur signifiant la rapidité de la fonction
+ d'activation pour aller du minimum au maximum. Une valeur ahute pour la fonction
+ d'activation va également produire un entrainement plus agressif.
+
+
+ Lors d'un entrainement sur des réseaux neuronaux, où les valeurs de sortie doivent
+ être aux extrèmes (habituellement, 0 et 1, suivant la fonction d'activation),
+ une fonction de pente d'activation peut être utilisée (i.e. 1.0).
+
+
+ La pente d'activation par défaut est 0.5.
+
+
+
+
+ &reftitle.parameters;
+
+
+ ann
+
+ &fann.ann.description;
+
+
+
+ activation_steepness
+
+
+ La pente d'activation.
+
+
+
+
+ layer
+
+
+ Le numéro de la couche.
+
+
+
+
+ neuron
+
+
+ Le numéro du neurone.
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+ &fann.return.bool;
+
+
+
+ &reftitle.seealso;
+
+
+ fann_set_activation_steepness_layer
+ fann_set_activation_steepness_hidden
+ fann_set_activation_steepness_output
+ fann_get_activation_steepness
+ fann_set_activation_function
+
+
+
+
+
+
+
+
From c650e1dbf5f27cc3f0d5962034edb2f42ce6fdb2 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:39:07 +0100
Subject: [PATCH 29/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/fann/setup.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/fann/setup.xml | 374 +++++++++++++++++++--------------------
1 file changed, 187 insertions(+), 187 deletions(-)
diff --git a/reference/fann/setup.xml b/reference/fann/setup.xml
index f31ed9559a..2f8e5e822c 100644
--- a/reference/fann/setup.xml
+++ b/reference/fann/setup.xml
@@ -1,187 +1,187 @@
-
-
-
-
- &reftitle.setup;
-
-
- &reftitle.required;
-
- PHP >= 5.2.0 et libfann >= 2.1.0
-
-
-
-
- &reftitle.install;
-
- L'extension FANN PHP devrait fonctionner sur tous les systèmes Linux.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- FANN Library Installation
-
-
- Avant de commencer l'installation, assurez-vous que libfann est installé
- sur votre système. Il fait partie du dépôt principal dans la plupart des distributions Linux
- (recherchez fann). Vous avez besoin d'une version de développement.
-
-
- Si ce n'est pas installé, vous devez d'abord l'installer. Téléchargez-le depuis le
- site officiel ou obtenez-le depuis le dépôt de votre
- distribution. Par exemple sur Fedora:
-
-
-
- or Ubuntu:
-
-
-
-
-
- Si la bibliothèque est ré-installée manuellement, alors tous les anciens fichiers de la bibliothèque
- doivent être supprimés avant de ré-installer sinon l'ancienne version de la bibliothèque pourrait être liée.
-
-
-
-
-
- Installation PECL
-
-
- Cette extension est disponible sur PECL. L'installation est très simple. Exécutez simplement:
-
-
-
-
-
-
-
-
- Manuel d'installation
-
-
- Pour les développeurs et les personnes intéressées par les derniers changements, vous
- pouvez compiler le pilote à partir du code source le plus récent sur
- Github.
- Allez sur Github et cliquez sur le bouton "Download ZIP". Ensuite exécutez:
-
-
-
-
-
-
-
- Appliquez les changements suivants à php.ini:
-
-
-
-
- Assurez-vous que la variable extension_dir pointe vers
- le répertoire contenant fann.so. La construction affichera où
- il installe le pilote PHP avec une sortie qui ressemble à:
-
-
-
-
- Assurez-vous que c'est le même que le répertoire d'extension PHP en exécutant:
-
-
- /usr/lib/php/extensions/no-debug-non-zts-20060613 =>
- /usr/lib/php/extensions/no-debug-non-zts-20060613
-
-]]>
-
-
- Si ce n'est pas le cas, changez la variable extension_dir dans php.ini ou
- déplacez fann.so.
-
-
-
-
- Pour charger l'extension au démarrage de PHP, ajoutez une ligne:
-
-
-
-
-
-
-
-
-
-
-
-
-
- &reftitle.resources;
-
-
-
-
-
-
-
-
+
+
+
+
+ &reftitle.setup;
+
+
+ &reftitle.required;
+
+ PHP >= 5.2.0 et libfann >= 2.1.0
+
+
+
+
+ &reftitle.install;
+
+ L'extension FANN PHP devrait fonctionner sur tous les systèmes Linux.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FANN Library Installation
+
+
+ Avant de commencer l'installation, assurez-vous que libfann est installé
+ sur votre système. Il fait partie du dépôt principal dans la plupart des distributions Linux
+ (recherchez fann). Vous avez besoin d'une version de développement.
+
+
+ Si ce n'est pas installé, vous devez d'abord l'installer. Téléchargez-le depuis le
+ site officiel ou obtenez-le depuis le dépôt de votre
+ distribution. Par exemple sur Fedora:
+
+
+
+ or Ubuntu:
+
+
+
+
+
+ Si la bibliothèque est ré-installée manuellement, alors tous les anciens fichiers de la bibliothèque
+ doivent être supprimés avant de ré-installer sinon l'ancienne version de la bibliothèque pourrait être liée.
+
+
+
+
+
+ Installation PECL
+
+
+ Cette extension est disponible sur PECL. L'installation est très simple. Exécutez simplement:
+
+
+
+
+
+
+
+
+ Manuel d'installation
+
+
+ Pour les développeurs et les personnes intéressées par les derniers changements, vous
+ pouvez compiler le pilote à partir du code source le plus récent sur
+ Github.
+ Allez sur Github et cliquez sur le bouton "Download ZIP". Ensuite exécutez:
+
+
+
+
+
+
+
+ Appliquez les changements suivants à php.ini:
+
+
+
+
+ Assurez-vous que la variable extension_dir pointe vers
+ le répertoire contenant fann.so. La construction affichera où
+ il installe le pilote PHP avec une sortie qui ressemble à:
+
+
+
+
+ Assurez-vous que c'est le même que le répertoire d'extension PHP en exécutant:
+
+
+ /usr/lib/php/extensions/no-debug-non-zts-20060613 =>
+ /usr/lib/php/extensions/no-debug-non-zts-20060613
+
+]]>
+
+
+ Si ce n'est pas le cas, changez la variable extension_dir dans php.ini ou
+ déplacez fann.so.
+
+
+
+
+ Pour charger l'extension au démarrage de PHP, ajoutez une ligne:
+
+
+
+
+
+
+
+
+
+
+
+
+
+ &reftitle.resources;
+
+
+
+
+
+
+
+
From 5bb0beaa84e3b87b5ee733448d826041dc134ff7 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:39:11 +0100
Subject: [PATCH 30/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/filesystem/constants.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/filesystem/constants.xml | 1154 ++++++++++++++--------------
1 file changed, 577 insertions(+), 577 deletions(-)
diff --git a/reference/filesystem/constants.xml b/reference/filesystem/constants.xml
index 45707e4a64..131d92d1f3 100644
--- a/reference/filesystem/constants.xml
+++ b/reference/filesystem/constants.xml
@@ -1,577 +1,577 @@
-
-
-
-
-
-
- &reftitle.constants;
- &extension.constants;
-
-
-
- SEEK_SET
- (int)
-
-
-
-
-
-
-
-
-
- SEEK_CUR
- (int)
-
-
-
-
-
-
-
-
-
- SEEK_END
- (int)
-
-
-
-
-
-
-
-
-
- LOCK_SH
- (int)
-
-
-
-
-
-
-
-
-
- LOCK_EX
- (int)
-
-
-
-
-
-
-
-
-
- LOCK_UN
- (int)
-
-
-
-
-
-
-
-
-
- LOCK_NB
- (int)
-
-
-
-
-
-
-
-
-
-
- flags disponibles pour
- file
-
-
-
-
- FILE_USE_INCLUDE_PATH
- (int)
-
-
-
- Recherche le filename dans
- include_path.
-
-
-
-
-
-
- FILE_NO_DEFAULT_CONTEXT
- (int)
-
-
-
-
-
-
-
-
-
- FILE_APPEND
- (int)
-
-
-
- Ajoute du contenu au fichier existant.
-
-
-
-
-
-
- FILE_IGNORE_NEW_LINES
- (int)
-
-
-
- Supprime les caractères de fin de ligne.
-
-
-
-
-
-
- FILE_SKIP_EMPTY_LINES
- (int)
-
-
-
- Ignore les lignes vides.
-
-
-
-
-
-
- FILE_BINARY
- (int)
-
-
-
- Mode binaire.
-
-
- Cette constante n'a aucun effet et est dépréciée à partir de PHP 8.1.0.
-
-
-
-
-
-
-
-
- FILE_TEXT
- (int)
-
-
-
- Mode texte.
-
-
- Cette constante n'a aucun effet et est dépréciée à partir de PHP 8.1.0.
-
-
-
-
-
-
-
-
-
- flags disponibles pour
- glob
-
-
-
-
- GLOB_AVAILABLE_FLAGS
- (int)
-
-
-
- Tous les indicateurs GLOB_* combinés.
- Équivalent à 0 | GLOB_BRACE |
- GLOB_MARK | GLOB_NOSORT |
- GLOB_NOCHECK | GLOB_NOESCAPE |
- GLOB_ERR | GLOB_ONLYDIR
-
-
-
-
-
- GLOB_BRACE
- (int)
-
-
-
- Étend {a,b,c} pour correspondre à 'a', 'b' ou 'c'
-
-
-
- GLOB_BRACE n'est pas disponible sur certains systèmes non-GNU,
- comme Solaris ou Alpine Linux.
-
-
-
-
-
-
- GLOB_ERR
- (int)
-
-
-
- Arrête en cas d'erreurs de lecture (comme les répertoires illisibles),
- par défaut, les erreurs sont ignorées.
-
-
-
-
-
- GLOB_MARK
- (int)
-
-
-
- Ajoute une barre oblique (un antislash sur Windows) à chaque répertoire retourné.
-
-
-
-
-
- GLOB_NOCHECK
- (int)
-
-
-
- Renvoie le motif de recherche si aucun fichier correspondant n'a été trouvé.
-
-
-
-
-
- GLOB_NOESCAPE
- (int)
-
-
-
- Les barres obliques inverses ne citent pas les métacaractères.
-
-
-
-
-
- GLOB_NOSORT
- (int)
-
-
-
- Renvoie les fichiers tels qu'ils apparaissent dans le répertoire (sans tri).
- Lorsque ce drapeau n'est pas utilisé, les chemins sont triés par ordre alphabétique.
-
-
-
-
-
- GLOB_ONLYDIR
- (int)
-
-
-
- Renvoie uniquement les entrées de répertoire qui correspondent au modèle.
-
-
-
-
-
-
- flags disponibles pour
- pathinfo
-
-
-
- PATHINFO_ALL
- (int)
-
-
-
- Toutes les parties du chemin
- renvoyées sous forme de tableau associatif.
-
-
-
-
-
- PATHINFO_DIRNAME
- (int)
-
-
-
- Le chemin du répertoire ou du fichier.
-
-
-
-
-
- PATHINFO_BASENAME
- (int)
-
-
-
- Le nom du répertoire ou
- le nom et l'extension du fichier.
-
-
-
-
-
- PATHINFO_EXTENSION
- (int)
-
-
-
- L'extension du fichier.
-
-
-
-
-
- PATHINFO_FILENAME
- (int)
-
-
-
- Le nom du fichier (sans l'extension)
- ou du répertoire.
-
-
-
-
-
-
- scanner_mode disponibles pour
- parse_ini_file et
- parse_ini_string
-
-
-
- INI_SCANNER_NORMAL
- (int)
-
-
-
- Mode d'analyse normale des directives INI.
-
-
-
-
-
-
- INI_SCANNER_RAW
- (int)
-
-
-
- Mode d'analyse brut des directives INI.
-
-
-
-
-
-
- INI_SCANNER_TYPED
- (int)
-
-
-
- Mode scanner typé INI.
-
-
-
-
-
-
- flags disponibles pour
- fnmatch
-
-
-
-
- FNM_NOESCAPE
- (int)
-
-
-
- Désactive la protection des antislash.
-
-
-
-
-
-
- FNM_PATHNAME
- (int)
-
-
-
- Un slash dans la chaîne ne correspond qu'au
- slash final du motif.
-
-
-
-
-
-
- FNM_PERIOD
- (int)
-
-
-
- Le point initial dans la chaîne doit correspondre
- exactement au point dans le motif.
-
-
-
-
-
-
- FNM_CASEFOLD
- (int)
-
-
-
- Recherche sans casse. Une partie de l'extension GNU.
-
-
-
-
-
- Constantes de Téléversement de Fichiers PHP
-
-
- UPLOAD_ERR_CANT_WRITE
- (int)
-
-
-
- Échec de l'écriture du fichier sur le disque.
- La valeur de la constante est 7.
-
-
-
-
-
- UPLOAD_ERR_EXTENSION
- (int)
-
-
-
- Une extension PHP a interrompu le téléchargement du fichier. PHP ne fournit pas de moyen de savoir quelle extension a provoqué l'arrêt du téléchargement du fichier ; examiner la liste des extensions chargées avec la fonction phpinfo peut aider.
- La valeur de la constante est 8.
-
-
-
-
-
- UPLOAD_ERR_FORM_SIZE
- (int)
-
-
-
- Le fichier téléchargé dépasse la directive MAX_FILE_SIZE spécifiée dans le formulaire HTML.
- La valeur de la constante est 2.
-
-
-
-
-
- UPLOAD_ERR_INI_SIZE
- (int)
-
-
-
- Le fichier téléchargé dépasse la directive upload_max_filesize spécifiée dans le fichier &php.ini;.
- La valeur de la constante est 1.
-
-
-
-
-
- UPLOAD_ERR_NO_FILE
- (int)
-
-
-
- Aucun fichier n'a été téléchargé.
- La valeur de la constante est 4.
-
-
-
-
-
- UPLOAD_ERR_NO_TMP_DIR
- (int)
-
-
-
- Absence de dossier temporaire.
- La valeur de la constante est 6.
-
-
-
-
-
- UPLOAD_ERR_OK
- (int)
-
-
-
- Aucune erreur, le fichier a été téléchargé avec succès.
- La valeur de la constante est 0.
-
-
-
-
-
- UPLOAD_ERR_PARTIAL
- (int)
-
-
-
- Le fichier téléchargé n'a été que partiellement téléchargé.
- La valeur de la constante est 3.
-
-
-
-
-
-
+
+
+
+
+
+
+ &reftitle.constants;
+ &extension.constants;
+
+
+
+ SEEK_SET
+ (int)
+
+
+
+
+
+
+
+
+
+ SEEK_CUR
+ (int)
+
+
+
+
+
+
+
+
+
+ SEEK_END
+ (int)
+
+
+
+
+
+
+
+
+
+ LOCK_SH
+ (int)
+
+
+
+
+
+
+
+
+
+ LOCK_EX
+ (int)
+
+
+
+
+
+
+
+
+
+ LOCK_UN
+ (int)
+
+
+
+
+
+
+
+
+
+ LOCK_NB
+ (int)
+
+
+
+
+
+
+
+
+
+
+ flags disponibles pour
+ file
+
+
+
+
+ FILE_USE_INCLUDE_PATH
+ (int)
+
+
+
+ Recherche le filename dans
+ include_path.
+
+
+
+
+
+
+ FILE_NO_DEFAULT_CONTEXT
+ (int)
+
+
+
+
+
+
+
+
+
+ FILE_APPEND
+ (int)
+
+
+
+ Ajoute du contenu au fichier existant.
+
+
+
+
+
+
+ FILE_IGNORE_NEW_LINES
+ (int)
+
+
+
+ Supprime les caractères de fin de ligne.
+
+
+
+
+
+
+ FILE_SKIP_EMPTY_LINES
+ (int)
+
+
+
+ Ignore les lignes vides.
+
+
+
+
+
+
+ FILE_BINARY
+ (int)
+
+
+
+ Mode binaire.
+
+
+ Cette constante n'a aucun effet et est dépréciée à partir de PHP 8.1.0.
+
+
+
+
+
+
+
+
+ FILE_TEXT
+ (int)
+
+
+
+ Mode texte.
+
+
+ Cette constante n'a aucun effet et est dépréciée à partir de PHP 8.1.0.
+
+
+
+
+
+
+
+
+
+ flags disponibles pour
+ glob
+
+
+
+
+ GLOB_AVAILABLE_FLAGS
+ (int)
+
+
+
+ Tous les indicateurs GLOB_* combinés.
+ Équivalent à 0 | GLOB_BRACE |
+ GLOB_MARK | GLOB_NOSORT |
+ GLOB_NOCHECK | GLOB_NOESCAPE |
+ GLOB_ERR | GLOB_ONLYDIR
+
+
+
+
+
+ GLOB_BRACE
+ (int)
+
+
+
+ Étend {a,b,c} pour correspondre à 'a', 'b' ou 'c'
+
+
+
+ GLOB_BRACE n'est pas disponible sur certains systèmes non-GNU,
+ comme Solaris ou Alpine Linux.
+
+
+
+
+
+
+ GLOB_ERR
+ (int)
+
+
+
+ Arrête en cas d'erreurs de lecture (comme les répertoires illisibles),
+ par défaut, les erreurs sont ignorées.
+
+
+
+
+
+ GLOB_MARK
+ (int)
+
+
+
+ Ajoute une barre oblique (un antislash sur Windows) à chaque répertoire retourné.
+
+
+
+
+
+ GLOB_NOCHECK
+ (int)
+
+
+
+ Renvoie le motif de recherche si aucun fichier correspondant n'a été trouvé.
+
+
+
+
+
+ GLOB_NOESCAPE
+ (int)
+
+
+
+ Les barres obliques inverses ne citent pas les métacaractères.
+
+
+
+
+
+ GLOB_NOSORT
+ (int)
+
+
+
+ Renvoie les fichiers tels qu'ils apparaissent dans le répertoire (sans tri).
+ Lorsque ce drapeau n'est pas utilisé, les chemins sont triés par ordre alphabétique.
+
+
+
+
+
+ GLOB_ONLYDIR
+ (int)
+
+
+
+ Renvoie uniquement les entrées de répertoire qui correspondent au modèle.
+
+
+
+
+
+
+ flags disponibles pour
+ pathinfo
+
+
+
+ PATHINFO_ALL
+ (int)
+
+
+
+ Toutes les parties du chemin
+ renvoyées sous forme de tableau associatif.
+
+
+
+
+
+ PATHINFO_DIRNAME
+ (int)
+
+
+
+ Le chemin du répertoire ou du fichier.
+
+
+
+
+
+ PATHINFO_BASENAME
+ (int)
+
+
+
+ Le nom du répertoire ou
+ le nom et l'extension du fichier.
+
+
+
+
+
+ PATHINFO_EXTENSION
+ (int)
+
+
+
+ L'extension du fichier.
+
+
+
+
+
+ PATHINFO_FILENAME
+ (int)
+
+
+
+ Le nom du fichier (sans l'extension)
+ ou du répertoire.
+
+
+
+
+
+
+ scanner_mode disponibles pour
+ parse_ini_file et
+ parse_ini_string
+
+
+
+ INI_SCANNER_NORMAL
+ (int)
+
+
+
+ Mode d'analyse normale des directives INI.
+
+
+
+
+
+
+ INI_SCANNER_RAW
+ (int)
+
+
+
+ Mode d'analyse brut des directives INI.
+
+
+
+
+
+
+ INI_SCANNER_TYPED
+ (int)
+
+
+
+ Mode scanner typé INI.
+
+
+
+
+
+
+ flags disponibles pour
+ fnmatch
+
+
+
+
+ FNM_NOESCAPE
+ (int)
+
+
+
+ Désactive la protection des antislash.
+
+
+
+
+
+
+ FNM_PATHNAME
+ (int)
+
+
+
+ Un slash dans la chaîne ne correspond qu'au
+ slash final du motif.
+
+
+
+
+
+
+ FNM_PERIOD
+ (int)
+
+
+
+ Le point initial dans la chaîne doit correspondre
+ exactement au point dans le motif.
+
+
+
+
+
+
+ FNM_CASEFOLD
+ (int)
+
+
+
+ Recherche sans casse. Une partie de l'extension GNU.
+
+
+
+
+
+ Constantes de Téléversement de Fichiers PHP
+
+
+ UPLOAD_ERR_CANT_WRITE
+ (int)
+
+
+
+ Échec de l'écriture du fichier sur le disque.
+ La valeur de la constante est 7.
+
+
+
+
+
+ UPLOAD_ERR_EXTENSION
+ (int)
+
+
+
+ Une extension PHP a interrompu le téléchargement du fichier. PHP ne fournit pas de moyen de savoir quelle extension a provoqué l'arrêt du téléchargement du fichier ; examiner la liste des extensions chargées avec la fonction phpinfo peut aider.
+ La valeur de la constante est 8.
+
+
+
+
+
+ UPLOAD_ERR_FORM_SIZE
+ (int)
+
+
+
+ Le fichier téléchargé dépasse la directive MAX_FILE_SIZE spécifiée dans le formulaire HTML.
+ La valeur de la constante est 2.
+
+
+
+
+
+ UPLOAD_ERR_INI_SIZE
+ (int)
+
+
+
+ Le fichier téléchargé dépasse la directive upload_max_filesize spécifiée dans le fichier &php.ini;.
+ La valeur de la constante est 1.
+
+
+
+
+
+ UPLOAD_ERR_NO_FILE
+ (int)
+
+
+
+ Aucun fichier n'a été téléchargé.
+ La valeur de la constante est 4.
+
+
+
+
+
+ UPLOAD_ERR_NO_TMP_DIR
+ (int)
+
+
+
+ Absence de dossier temporaire.
+ La valeur de la constante est 6.
+
+
+
+
+
+ UPLOAD_ERR_OK
+ (int)
+
+
+
+ Aucune erreur, le fichier a été téléchargé avec succès.
+ La valeur de la constante est 0.
+
+
+
+
+
+ UPLOAD_ERR_PARTIAL
+ (int)
+
+
+
+ Le fichier téléchargé n'a été que partiellement téléchargé.
+ La valeur de la constante est 3.
+
+
+
+
+
+
From 4c9d79dae94f15a234cdf6699039869814c4ae36 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:39:15 +0100
Subject: [PATCH 31/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/filesystem/functions/delete.xm?=
=?UTF-8?q?l?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/filesystem/functions/delete.xml | 108 +++++++++++-----------
1 file changed, 54 insertions(+), 54 deletions(-)
diff --git a/reference/filesystem/functions/delete.xml b/reference/filesystem/functions/delete.xml
index cbfad95399..e4c2951b02 100644
--- a/reference/filesystem/functions/delete.xml
+++ b/reference/filesystem/functions/delete.xml
@@ -1,54 +1,54 @@
-
-
-
-
-
-
-
- delete
- Voir unlink ou unset
-
-
-
- &reftitle.description;
-
- Il n'y a pas de mot clé ou fonction delete dans le langage PHP.
- Si vous arrivez sur cette page en tentant de supprimer un fichier,
- essayez unlink.
- Pour supprimer une variable de la portée locale, regardez
- unset.
-
-
-
-
- &reftitle.seealso;
-
-
- unlink
- unset
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+ delete
+ Voir unlink ou unset
+
+
+
+ &reftitle.description;
+
+ Il n'y a pas de mot clé ou fonction delete dans le langage PHP.
+ Si vous arrivez sur cette page en tentant de supprimer un fichier,
+ essayez unlink.
+ Pour supprimer une variable de la portée locale, regardez
+ unset.
+
+
+
+
+ &reftitle.seealso;
+
+
+ unlink
+ unset
+
+
+
+
+
+
+
From 276bbb7a3b3e1312c9897d1f383150de1f40a05e Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:39:21 +0100
Subject: [PATCH 32/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/filesystem/functions/feof.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/filesystem/functions/feof.xml | 246 ++++++++++++------------
1 file changed, 123 insertions(+), 123 deletions(-)
diff --git a/reference/filesystem/functions/feof.xml b/reference/filesystem/functions/feof.xml
index 9f05e8fd0a..115c89cace 100644
--- a/reference/filesystem/functions/feof.xml
+++ b/reference/filesystem/functions/feof.xml
@@ -1,123 +1,123 @@
-
-
-
-
-
-
- feof
- Teste la fin du fichier
-
-
-
- &reftitle.description;
-
- boolfeof
- resourcestream
-
-
- Teste la fin du fichier.
-
-
-
-
- &reftitle.parameters;
-
-
-
- stream
-
- &fs.validfp.all;
-
-
-
-
-
-
-
- &reftitle.returnvalues;
-
- Retourne &true; si le pointeur
- stream est à la fin du fichier ou si
- une erreur survient (y compris les délais d'attente de socket), sinon, retourne &false;.
-
-
-
-
- &reftitle.notes;
-
-
- Si une connexion ouverte avec fsockopen n'est pas fermée
- par le serveur, feof se bloquera.
- Pour contourner ce comportement, reportez-vous à l'exemple ci-dessous :
-
- Gestion des délais d'attente dépassés feof
-
-
-]]>
-
-
-
-
-
-
- Si le pointeur de fichier passé n'est pas valide, vous obtiendrez une
- boucle infinie car feof échouera à retourner &true;.
-
- Exemple avec feof et un pointeur de fichier invalide
-
-
-]]>
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+ feof
+ Teste la fin du fichier
+
+
+
+ &reftitle.description;
+
+ boolfeof
+ resourcestream
+
+
+ Teste la fin du fichier.
+
+
+
+
+ &reftitle.parameters;
+
+
+
+ stream
+
+ &fs.validfp.all;
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+
+ Retourne &true; si le pointeur
+ stream est à la fin du fichier ou si
+ une erreur survient (y compris les délais d'attente de socket), sinon, retourne &false;.
+
+
+
+
+ &reftitle.notes;
+
+
+ Si une connexion ouverte avec fsockopen n'est pas fermée
+ par le serveur, feof se bloquera.
+ Pour contourner ce comportement, reportez-vous à l'exemple ci-dessous :
+
+ Gestion des délais d'attente dépassés feof
+
+
+]]>
+
+
+
+
+
+
+ Si le pointeur de fichier passé n'est pas valide, vous obtiendrez une
+ boucle infinie car feof échouera à retourner &true;.
+
+ Exemple avec feof et un pointeur de fichier invalide
+
+
+]]>
+
+
+
+
+
+
+
+
From 09dc88fc9f6eaac68ab5bac87dac42d80cb82817 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:39:25 +0100
Subject: [PATCH 33/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/gearman/gearmanclient/dohigh.x?=
=?UTF-8?q?ml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/gearman/gearmanclient/dohigh.xml | 190 ++++++++++-----------
1 file changed, 95 insertions(+), 95 deletions(-)
diff --git a/reference/gearman/gearmanclient/dohigh.xml b/reference/gearman/gearmanclient/dohigh.xml
index 2eb94024ce..96b39f9d72 100644
--- a/reference/gearman/gearmanclient/dohigh.xml
+++ b/reference/gearman/gearmanclient/dohigh.xml
@@ -1,95 +1,95 @@
-
-
-
-
-
- GearmanClient::doHigh
- Exécute une seule tâche en priorité haute
-
-
-
- &reftitle.description;
-
- publicstringGearmanClient::doHigh
- stringfunction
- stringworkload
- stringnullunique&null;
-
-
- Exécute une seule tâche en priorité haute et retourne une représentation
- du résultat sous la forme d'une &string;. C'est aux fonctions
- GearmanClient et GearmanWorker d'accorder
- le format du résultat. Les tâches en priorités hautes seront exécutées avant celles
- dont la priorité est normale, voire, basse dans la file d'attente.
-
-
-
-
- &reftitle.parameters;
-
-
- function
-
-
- &gearman.parameter.functionname;
-
-
-
-
- workload
-
-
- &gearman.parameter.workload;
-
-
-
-
- unique
-
-
- &gearman.parameter.unique;
-
-
-
-
-
-
-
- &reftitle.returnvalues;
-
- Le résultat de la tâche sous la forme d'une &string;.
-
-
-
-
- &reftitle.seealso;
-
- GearmanClient::doNormal
- GearmanClient::doLow
- GearmanClient::doBackground
- GearmanClient::doHighBackground
- GearmanClient::doLowBackground
-
-
-
-
-
+
+
+
+
+
+ GearmanClient::doHigh
+ Exécute une seule tâche en priorité haute
+
+
+
+ &reftitle.description;
+
+ publicstringGearmanClient::doHigh
+ stringfunction
+ stringworkload
+ stringnullunique&null;
+
+
+ Exécute une seule tâche en priorité haute et retourne une représentation
+ du résultat sous la forme d'une &string;. C'est aux fonctions
+ GearmanClient et GearmanWorker d'accorder
+ le format du résultat. Les tâches en priorités hautes seront exécutées avant celles
+ dont la priorité est normale, voire, basse dans la file d'attente.
+
+
+
+
+ &reftitle.parameters;
+
+
+ function
+
+
+ &gearman.parameter.functionname;
+
+
+
+
+ workload
+
+
+ &gearman.parameter.workload;
+
+
+
+
+ unique
+
+
+ &gearman.parameter.unique;
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+
+ Le résultat de la tâche sous la forme d'une &string;.
+
+
+
+
+ &reftitle.seealso;
+
+ GearmanClient::doNormal
+ GearmanClient::doLow
+ GearmanClient::doBackground
+ GearmanClient::doHighBackground
+ GearmanClient::doLowBackground
+
+
+
+
+
From 28ce5b0363159f91ed8aed1776429f045088a3c4 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:39:33 +0100
Subject: [PATCH 34/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/geoip/ini.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/geoip/ini.xml | 92 ++++++++++++++++++++---------------------
1 file changed, 46 insertions(+), 46 deletions(-)
diff --git a/reference/geoip/ini.xml b/reference/geoip/ini.xml
index 60ac6f9474..481a3206c0 100644
--- a/reference/geoip/ini.xml
+++ b/reference/geoip/ini.xml
@@ -1,46 +1,46 @@
-
-
-
-
-
- &reftitle.runtime;
- &extension.runtime;
-
-
- &ini.descriptions.title;
-
-
-
-
- geoip.custom_directory
- string
-
-
-
- Vide par défaut, mais peut être utilisé pour charger une base
- de données différente de celle incluse dans la bibliothèque.
-
-
-
-
-
+
+
+
+
+
+ &reftitle.runtime;
+ &extension.runtime;
+
+
+ &ini.descriptions.title;
+
+
+
+
+ geoip.custom_directory
+ string
+
+
+
+ Vide par défaut, mais peut être utilisé pour charger une base
+ de données différente de celle incluse dans la bibliothèque.
+
+
+
+
+
From fa957b54075a2130e6282e2e969e9babaf4399ad Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:39:37 +0100
Subject: [PATCH 35/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/gmp/setup.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/gmp/setup.xml | 106 ++++++++++++++++++++--------------------
1 file changed, 53 insertions(+), 53 deletions(-)
diff --git a/reference/gmp/setup.xml b/reference/gmp/setup.xml
index 684dec33f8..ee06b4a702 100644
--- a/reference/gmp/setup.xml
+++ b/reference/gmp/setup.xml
@@ -1,53 +1,53 @@
-
-
-
-
-
-
- &reftitle.setup;
-
-
-
- &reftitle.required;
-
- La bibliothèque GMP peut être téléchargée depuis le site de
- &url.gmp;. Ce site propose aussi un manuel
- GMP.
-
-
- Au moins la version 4.2 de GMP est requise, avec certaines
- fonctions nécessitant une version plus récente de la bibliothèque
- GMP.
-
-
- Sous Windows, MPIR est requis à la place de GMP.
-
-
-
-
-
- &reference.gmp.configure;
-
-
-
-
-
+
+
+
+
+
+
+ &reftitle.setup;
+
+
+
+ &reftitle.required;
+
+ La bibliothèque GMP peut être téléchargée depuis le site de
+ &url.gmp;. Ce site propose aussi un manuel
+ GMP.
+
+
+ Au moins la version 4.2 de GMP est requise, avec certaines
+ fonctions nécessitant une version plus récente de la bibliothèque
+ GMP.
+
+
+ Sous Windows, MPIR est requis à la place de GMP.
+
+
+
+
+
+ &reference.gmp.configure;
+
+
+
+
+
From 6c9d718b947ff97e3eb27afe4161b7e65ce5dc5c Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:39:42 +0100
Subject: [PATCH 36/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/imap/setup.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/imap/setup.xml | 178 +++++++++++++++++++--------------------
1 file changed, 89 insertions(+), 89 deletions(-)
diff --git a/reference/imap/setup.xml b/reference/imap/setup.xml
index 8e6e3bddd8..9d87fd49f5 100644
--- a/reference/imap/setup.xml
+++ b/reference/imap/setup.xml
@@ -1,89 +1,89 @@
-
-
-
-
- &reftitle.setup;
-
-
-
- &reftitle.required;
-
- Cette extension requiert la bibliothèque C cliente. Téléchargez
- cette dernière version à &url.imap;
- et compilez-la.
-
-
- Il est important de ne pas copier les fichiers sources IMAP directement
- dans le dossier d'inclusion système sous peine de conflits. À la place de cela,
- créez un nouveau dossier dans le dossier d'inclusion système, comme
- /usr/local/imap-2000b/ (le chemin et le nom
- dépendent de votre configuration et de votre version d'IMAP) et dans ce nouveau
- dossier, créez les dossiers nommés lib/ et
- include/. Depuis le dossier
- c-client des sources IMAP, copiez tous les fichiers
- *.h dans le dossier include/
- et tous les fichiers *.c dans le dossier
- lib/. Additionnellement, lorsque vous compilez IMAP, un
- fichier nommé c-client.a est crée. Mettez le également
- dans le dossier lib/ mais renommez le en
- libc-client.a.
-
-
-
- Pour compiler la bibliothèque C cliente avec
- SSL et/ou avec le support Kerberos, lisez la doc fournie dans
- la distribution.
-
-
-
-
- Sur Mandrake Linux, la bibliothèque IMAP
- (libc-client.a) est compilée sans le support
- Kerberos. Une version séparée avec SSL
- (client-PHP4.a) est installée. La bibliothèque doit
- être recompilée pour ajouter le support Kerberos.
-
-
-
-
-
-
- &reference.imap.configure;
-
-
-
- &reference.imap.ini;
-
-
-
-
- &reftitle.resources;
-
- Antérieur à PHP 8.1.0, cette extension utilisait un type de ressource
- imap retourné par imap_open qui
- fait référence à un flux IMAP ouvert.
-
-
-
-
-
-
+
+
+
+
+ &reftitle.setup;
+
+
+
+ &reftitle.required;
+
+ Cette extension requiert la bibliothèque C cliente. Téléchargez
+ cette dernière version à &url.imap;
+ et compilez-la.
+
+
+ Il est important de ne pas copier les fichiers sources IMAP directement
+ dans le dossier d'inclusion système sous peine de conflits. À la place de cela,
+ créez un nouveau dossier dans le dossier d'inclusion système, comme
+ /usr/local/imap-2000b/ (le chemin et le nom
+ dépendent de votre configuration et de votre version d'IMAP) et dans ce nouveau
+ dossier, créez les dossiers nommés lib/ et
+ include/. Depuis le dossier
+ c-client des sources IMAP, copiez tous les fichiers
+ *.h dans le dossier include/
+ et tous les fichiers *.c dans le dossier
+ lib/. Additionnellement, lorsque vous compilez IMAP, un
+ fichier nommé c-client.a est crée. Mettez le également
+ dans le dossier lib/ mais renommez le en
+ libc-client.a.
+
+
+
+ Pour compiler la bibliothèque C cliente avec
+ SSL et/ou avec le support Kerberos, lisez la doc fournie dans
+ la distribution.
+
+
+
+
+ Sur Mandrake Linux, la bibliothèque IMAP
+ (libc-client.a) est compilée sans le support
+ Kerberos. Une version séparée avec SSL
+ (client-PHP4.a) est installée. La bibliothèque doit
+ être recompilée pour ajouter le support Kerberos.
+
+
+
+
+
+
+ &reference.imap.configure;
+
+
+
+ &reference.imap.ini;
+
+
+
+
+ &reftitle.resources;
+
+ Antérieur à PHP 8.1.0, cette extension utilisait un type de ressource
+ imap retourné par imap_open qui
+ fait référence à un flux IMAP ouvert.
+
+
+
+
+
+
From 942a2c8b10f37fe96f4c72a1eff2757ef0cd1688 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:39:47 +0100
Subject: [PATCH 37/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/info/constants.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/info/constants.xml | 1202 +++++++++++++++++-----------------
1 file changed, 601 insertions(+), 601 deletions(-)
diff --git a/reference/info/constants.xml b/reference/info/constants.xml
index 2fc8f5e4b5..660caab3e7 100644
--- a/reference/info/constants.xml
+++ b/reference/info/constants.xml
@@ -1,601 +1,601 @@
-
-
-
-
-
- &reftitle.constants;
- &extension.constants.core;
-
-
- Constantes prédéfinies de phpcredits
-
-
- CREDITS_GROUP
- (int)
-
-
-
- Une liste des développeurs principaux
-
-
-
-
-
- CREDITS_GENERAL
- (int)
-
-
-
- Crédits généraux. Design du langage, concepts,
- auteurs de PHP et module SAPI.
-
-
-
-
-
- CREDITS_SAPI
- (int)
-
-
-
- Une liste des API de serveurs, et leurs auteurs.
-
-
-
-
-
- CREDITS_MODULES
- (int)
-
-
-
- Une liste des extensions de PHP, et leurs auteurs
-
-
-
-
-
- CREDITS_DOCS
- (int)
-
-
-
- Les crédits de l'équipe de documentation
-
-
-
-
-
- CREDITS_FULLPAGE
- (int)
-
-
-
- Généralement utilisé combiné avec d'autres options. Cette
- option indique qu'une page HTML complète doit être générée.
-
-
-
-
-
- CREDITS_QA
- (int)
-
-
-
- Les crédits pour le groupe d'assurance qualité.
-
-
-
-
-
- CREDITS_ALL
- (int)
-
-
-
- Tous les crédits. C'est l'équivalent de : CREDITS_DOCS
- | CREDITS_GENERAL | CREDITS_GROUP | CREDITS_MODULES | CREDITS_QA
- | CREDITS_FULLPAGE. Elle génère une page HTML complète
- et autonome. C'est la valeur par défaut.
-
-
-
-
-
-
- Constantes de phpinfo
-
-
- INFO_GENERAL
- (int)
-
-
-
- La ligne de configuration, le chemin du &php.ini;, la date de
- compilation, le système et plus encore.
-
-
-
-
-
- INFO_CREDITS
- (int)
-
-
-
- Crédits de PHP. Voir aussi phpcredits.
-
-
-
-
-
- INFO_CONFIGURATION
- (int)
-
-
-
- Valeurs locales et serveurs des directives PHP. Voir aussi
- ini_get.
-
-
-
-
-
- INFO_MODULES
- (int)
-
-
-
- Les modules chargés et leurs configurations respectives.
-
-
-
-
-
- INFO_ENVIRONMENT
- (int)
-
-
-
- Les variables d'environnement, qui sont aussi disponibles
- dans $_ENV.
-
-
-
-
-
- INFO_VARIABLES
- (int)
-
-
-
- Toutes les
- variables prédéfinies : EGPCS
- (Environnement, GET, POST, Cookie, Server).
-
-
-
-
-
- INFO_LICENSE
- (int)
-
-
-
- La licence PHP. Voir aussi la
- FAQ de la licence.
-
-
-
-
-
- INFO_ALL
- (int)
-
-
-
- Affiche toutes les valeurs citées ci-dessus. C'est la valeur
- par défaut.
-
-
-
-
-
-
- Constantes mode INI
-
-
- INI_USER
- (int)
-
-
-
- Cette entrée peut être définie dans les scripts utilisateur (comme avec ini_set)
- ou dans le registre Windows.
- L'entrée peut être définie dans le fichier &user-ini;.
-
-
-
-
-
- INI_PERDIR
- (int)
-
-
-
- Cette entrée peut être définie dans le fichier &php.ini;, &htaccess;, &httpd.conf; ou &user-ini;.
-
-
-
-
-
- INI_SYSTEM
- (int)
-
-
-
- Cette entrée peut être définie dans le fichier &php.ini; ou &httpd.conf;.
-
-
-
-
-
- INI_ALL
- (int)
-
-
-
- Cette entrée peut être définie n'importe où.
-
-
-
-
-
-
-
- Les constantes d'assertions servent avec la fonction
- assert_options.
-
-
- Constantes d'assert
-
-
- ASSERT_ACTIVE
- (int)
-
-
-
- Active l'évaluation assert.
-
- &warn.deprecated.feature-8-3-0;
-
-
-
-
- ASSERT_CALLBACK
- (int)
-
-
-
- Fonction de rappel des assertions échouées.
-
- &warn.deprecated.feature-8-3-0;
-
-
-
-
- ASSERT_BAIL
- (int)
-
-
-
- Termine l'exécution des assertions échouées.
-
- &warn.deprecated.feature-8-3-0;
-
-
-
-
- ASSERT_EXCEPTION
- (int)
-
-
-
- Lance une AssertionError pour chaque assertion échouée.
-
- &warn.deprecated.feature-8-3-0;
-
-
-
-
- ASSERT_WARNING
- (int)
-
-
-
- Émet une alerte PHP pour chaque assertion échouée.
-
- &warn.deprecated.feature-8-3-0;
-
-
-
-
- ASSERT_QUIET_EVAL
- (int)
-
-
-
- Désactive le error_reporting durant l'évaluation
- des expressions d'assertion.
- &warn.feature.removed-8-0-0;
-
-
-
-
-
-
-
- Les constantes suivantes ne sont disponibles que si le système
- d'hébergement est sur Windows, et peut vous donner des informations
- sur les versions, qui vous permettront de détecter la présence
- de fonctionnalités. Elles sont disponibles depuis PHP 5.3.0.
-
-
- Constantes particulières à Windows
-
-
- PHP_WINDOWS_VERSION_MAJOR
- (int)
-
-
-
- La version majeure de Windows, qui peut être 4 (NT4/Me/98/95),
- 5 (XP/2003 R2/2003/2000) ou 6 (Vista/2008/7/8/8.1).
-
-
-
-
-
- PHP_WINDOWS_VERSION_MINOR
- (int)
-
-
-
- La version mineure de Windows, qui peut être 0
- (Vista/2008/2000/NT4/95), 1 (XP), 2
- (2003 R2/2003/XP x64), 10 (98) ou 90 (ME).
-
-
-
-
-
- PHP_WINDOWS_VERSION_BUILD
- (int)
-
-
-
- Le numéro de compilation de Windows (par exemple,
- Windows Vista avec SP1 a le numéro 6001)
-
-
-
-
-
- PHP_WINDOWS_VERSION_PLATFORM
- (int)
-
-
-
- La plate-forme que PHP utilise actuellement : cette valeur peut être
- 2 sur Windows Vista/XP/2000/NT4, Server 2008/2003 et
- sur Windows ME/98/95 cette valeur est 1.
-
-
-
-
-
- PHP_WINDOWS_VERSION_SP_MAJOR
- (int)
-
-
-
- La version majeure du paquet de service installé : cette valeur vaut
- 0 si aucun paquet de service n'est disponible. Par
- exemple, Windows XP avec le paquet de service 3 donne la valeur
- 3 à cette constante.
-
-
-
-
-
- PHP_WINDOWS_VERSION_SP_MINOR
- (int)
-
-
-
- La version mineur du paquet de service installé. Cette valeur est
- 0 si aucun paquet de service n'est installé.
-
-
-
-
-
- PHP_WINDOWS_VERSION_SUITEMASK
- (int)
-
-
-
- Le masque est un champ de bits qui permet de connaître la présence
- de différentes fonctionnalités de Windows. Voyez la table ci-dessous
- pour connaître les différents champs.
-
-
-
-
-
- PHP_WINDOWS_VERSION_PRODUCTTYPE
- (int)
-
-
-
- Cette constante contient la valeur utilisée pour déterminer
- la valeur des constantes
- PHP_WINDOWS_NT_*.
- Cette valeur peut être l'une des constantes
- PHP_WINDOWS_NT_*,
- indiquant le type de plate-forme.
-
-
-
-
-
- PHP_WINDOWS_NT_DOMAIN_CONTROLLER
- (int)
-
-
-
- Le contrôleur de domaine.
-
-
-
-
-
- PHP_WINDOWS_NT_SERVER
- (int)
-
-
-
- Un serveur système (eg. Server 2008/2003/2000). Notez que
- si c'est un contrôleur de domaine, il est indiqué dans
- PHP_WINDOWS_NT_DOMAIN_CONTROLLER.
-
-
-
-
-
- PHP_WINDOWS_NT_WORKSTATION
- (int)
-
-
-
- Un poste de travail (eg. Vista/XP/2000/NT4)
-
-
-
-
-
- La table ci-desous présente les fonctionnalités qui peuvent être
- vérifiées dans le champ de bit de la constante
- PHP_WINDOWS_VERSION_SUITEMASK.
-
-
- Champs du masque Windows
-
-
-
- Bits
- Description
-
-
-
-
- 0x00000004
- Les composants Microsoft BackOffice sont installés.
-
-
- 0x00000400
- Windows Server 2003, Web Edition est installé.
-
-
- 0x00004000
- Windows Server 2003, Compute Cluster Edition est installé.
-
-
- 0x00000080
-
- Windows Server 2008 Datacenter, Windows Server 2003, Datacenter Edition ou
- Windows 2000 Datacenter Server est installé.
-
-
-
- 0x00000002
-
- Windows Server 2008 Enterprise, Windows Server 2003, Enterprise Edition,
- Windows 2000 Advanced Server, ou Windows NT Server 4.0 Enterprise Edition
- est installé.
-
-
-
- 0x00000040
- Windows XP Embedded est installé.
-
-
- 0x00000200
-
- Windows Vista Home Premium, Windows Vista Home Basic, ou Windows XP Home
- Edition est installé.
-
-
-
- 0x00000100
-
- Remote Desktop est supporté, mais une seule session interactive est
- supportée. Cette valeur est présente, à moins que le système ne fonctionne
- en mode serveur d'application.
-
-
-
- 0x00000001
-
- Microsoft Small Business Server a été installé sur le système, mais
- a été mis à joru vers une nouvelle version de Windows.
-
-
-
- 0x00000020
-
- Microsoft Small Business Server est installé avec la licence cliente
- restreinte.
-
-
-
- 0x00002000
- Windows Storage Server 2003 R2 ou Windows Storage Server 2003 est installé.
-
-
- 0x00000010
-
- Terminal Services est installé. Cette valeur est toujours activée. Si cette
- valeur est activée, mais 0x00000100 ne l'est pas, alors
- le système fonctionne en mode de serveur d'application.
-
-
-
- 0x00008000
- Windows Home Server est installé.
-
-
-
-
-
-
+
+
+
+
+
+ &reftitle.constants;
+ &extension.constants.core;
+
+
+ Constantes prédéfinies de phpcredits
+
+
+ CREDITS_GROUP
+ (int)
+
+
+
+ Une liste des développeurs principaux
+
+
+
+
+
+ CREDITS_GENERAL
+ (int)
+
+
+
+ Crédits généraux. Design du langage, concepts,
+ auteurs de PHP et module SAPI.
+
+
+
+
+
+ CREDITS_SAPI
+ (int)
+
+
+
+ Une liste des API de serveurs, et leurs auteurs.
+
+
+
+
+
+ CREDITS_MODULES
+ (int)
+
+
+
+ Une liste des extensions de PHP, et leurs auteurs
+
+
+
+
+
+ CREDITS_DOCS
+ (int)
+
+
+
+ Les crédits de l'équipe de documentation
+
+
+
+
+
+ CREDITS_FULLPAGE
+ (int)
+
+
+
+ Généralement utilisé combiné avec d'autres options. Cette
+ option indique qu'une page HTML complète doit être générée.
+
+
+
+
+
+ CREDITS_QA
+ (int)
+
+
+
+ Les crédits pour le groupe d'assurance qualité.
+
+
+
+
+
+ CREDITS_ALL
+ (int)
+
+
+
+ Tous les crédits. C'est l'équivalent de : CREDITS_DOCS
+ | CREDITS_GENERAL | CREDITS_GROUP | CREDITS_MODULES | CREDITS_QA
+ | CREDITS_FULLPAGE. Elle génère une page HTML complète
+ et autonome. C'est la valeur par défaut.
+
+
+
+
+
+
+ Constantes de phpinfo
+
+
+ INFO_GENERAL
+ (int)
+
+
+
+ La ligne de configuration, le chemin du &php.ini;, la date de
+ compilation, le système et plus encore.
+
+
+
+
+
+ INFO_CREDITS
+ (int)
+
+
+
+ Crédits de PHP. Voir aussi phpcredits.
+
+
+
+
+
+ INFO_CONFIGURATION
+ (int)
+
+
+
+ Valeurs locales et serveurs des directives PHP. Voir aussi
+ ini_get.
+
+
+
+
+
+ INFO_MODULES
+ (int)
+
+
+
+ Les modules chargés et leurs configurations respectives.
+
+
+
+
+
+ INFO_ENVIRONMENT
+ (int)
+
+
+
+ Les variables d'environnement, qui sont aussi disponibles
+ dans $_ENV.
+
+
+
+
+
+ INFO_VARIABLES
+ (int)
+
+
+
+ Toutes les
+ variables prédéfinies : EGPCS
+ (Environnement, GET, POST, Cookie, Server).
+
+
+
+
+
+ INFO_LICENSE
+ (int)
+
+
+
+ La licence PHP. Voir aussi la
+ FAQ de la licence.
+
+
+
+
+
+ INFO_ALL
+ (int)
+
+
+
+ Affiche toutes les valeurs citées ci-dessus. C'est la valeur
+ par défaut.
+
+
+
+
+
+
+ Constantes mode INI
+
+
+ INI_USER
+ (int)
+
+
+
+ Cette entrée peut être définie dans les scripts utilisateur (comme avec ini_set)
+ ou dans le registre Windows.
+ L'entrée peut être définie dans le fichier &user-ini;.
+
+
+
+
+
+ INI_PERDIR
+ (int)
+
+
+
+ Cette entrée peut être définie dans le fichier &php.ini;, &htaccess;, &httpd.conf; ou &user-ini;.
+
+
+
+
+
+ INI_SYSTEM
+ (int)
+
+
+
+ Cette entrée peut être définie dans le fichier &php.ini; ou &httpd.conf;.
+
+
+
+
+
+ INI_ALL
+ (int)
+
+
+
+ Cette entrée peut être définie n'importe où.
+
+
+
+
+
+
+
+ Les constantes d'assertions servent avec la fonction
+ assert_options.
+
+
+ Constantes d'assert
+
+
+ ASSERT_ACTIVE
+ (int)
+
+
+
+ Active l'évaluation assert.
+
+ &warn.deprecated.feature-8-3-0;
+
+
+
+
+ ASSERT_CALLBACK
+ (int)
+
+
+
+ Fonction de rappel des assertions échouées.
+
+ &warn.deprecated.feature-8-3-0;
+
+
+
+
+ ASSERT_BAIL
+ (int)
+
+
+
+ Termine l'exécution des assertions échouées.
+
+ &warn.deprecated.feature-8-3-0;
+
+
+
+
+ ASSERT_EXCEPTION
+ (int)
+
+
+
+ Lance une AssertionError pour chaque assertion échouée.
+
+ &warn.deprecated.feature-8-3-0;
+
+
+
+
+ ASSERT_WARNING
+ (int)
+
+
+
+ Émet une alerte PHP pour chaque assertion échouée.
+
+ &warn.deprecated.feature-8-3-0;
+
+
+
+
+ ASSERT_QUIET_EVAL
+ (int)
+
+
+
+ Désactive le error_reporting durant l'évaluation
+ des expressions d'assertion.
+ &warn.feature.removed-8-0-0;
+
+
+
+
+
+
+
+ Les constantes suivantes ne sont disponibles que si le système
+ d'hébergement est sur Windows, et peut vous donner des informations
+ sur les versions, qui vous permettront de détecter la présence
+ de fonctionnalités. Elles sont disponibles depuis PHP 5.3.0.
+
+
+ Constantes particulières à Windows
+
+
+ PHP_WINDOWS_VERSION_MAJOR
+ (int)
+
+
+
+ La version majeure de Windows, qui peut être 4 (NT4/Me/98/95),
+ 5 (XP/2003 R2/2003/2000) ou 6 (Vista/2008/7/8/8.1).
+
+
+
+
+
+ PHP_WINDOWS_VERSION_MINOR
+ (int)
+
+
+
+ La version mineure de Windows, qui peut être 0
+ (Vista/2008/2000/NT4/95), 1 (XP), 2
+ (2003 R2/2003/XP x64), 10 (98) ou 90 (ME).
+
+
+
+
+
+ PHP_WINDOWS_VERSION_BUILD
+ (int)
+
+
+
+ Le numéro de compilation de Windows (par exemple,
+ Windows Vista avec SP1 a le numéro 6001)
+
+
+
+
+
+ PHP_WINDOWS_VERSION_PLATFORM
+ (int)
+
+
+
+ La plate-forme que PHP utilise actuellement : cette valeur peut être
+ 2 sur Windows Vista/XP/2000/NT4, Server 2008/2003 et
+ sur Windows ME/98/95 cette valeur est 1.
+
+
+
+
+
+ PHP_WINDOWS_VERSION_SP_MAJOR
+ (int)
+
+
+
+ La version majeure du paquet de service installé : cette valeur vaut
+ 0 si aucun paquet de service n'est disponible. Par
+ exemple, Windows XP avec le paquet de service 3 donne la valeur
+ 3 à cette constante.
+
+
+
+
+
+ PHP_WINDOWS_VERSION_SP_MINOR
+ (int)
+
+
+
+ La version mineur du paquet de service installé. Cette valeur est
+ 0 si aucun paquet de service n'est installé.
+
+
+
+
+
+ PHP_WINDOWS_VERSION_SUITEMASK
+ (int)
+
+
+
+ Le masque est un champ de bits qui permet de connaître la présence
+ de différentes fonctionnalités de Windows. Voyez la table ci-dessous
+ pour connaître les différents champs.
+
+
+
+
+
+ PHP_WINDOWS_VERSION_PRODUCTTYPE
+ (int)
+
+
+
+ Cette constante contient la valeur utilisée pour déterminer
+ la valeur des constantes
+ PHP_WINDOWS_NT_*.
+ Cette valeur peut être l'une des constantes
+ PHP_WINDOWS_NT_*,
+ indiquant le type de plate-forme.
+
+
+
+
+
+ PHP_WINDOWS_NT_DOMAIN_CONTROLLER
+ (int)
+
+
+
+ Le contrôleur de domaine.
+
+
+
+
+
+ PHP_WINDOWS_NT_SERVER
+ (int)
+
+
+
+ Un serveur système (eg. Server 2008/2003/2000). Notez que
+ si c'est un contrôleur de domaine, il est indiqué dans
+ PHP_WINDOWS_NT_DOMAIN_CONTROLLER.
+
+
+
+
+
+ PHP_WINDOWS_NT_WORKSTATION
+ (int)
+
+
+
+ Un poste de travail (eg. Vista/XP/2000/NT4)
+
+
+
+
+
+ La table ci-desous présente les fonctionnalités qui peuvent être
+ vérifiées dans le champ de bit de la constante
+ PHP_WINDOWS_VERSION_SUITEMASK.
+
+
+ Champs du masque Windows
+
+
+
+ Bits
+ Description
+
+
+
+
+ 0x00000004
+ Les composants Microsoft BackOffice sont installés.
+
+
+ 0x00000400
+ Windows Server 2003, Web Edition est installé.
+
+
+ 0x00004000
+ Windows Server 2003, Compute Cluster Edition est installé.
+
+
+ 0x00000080
+
+ Windows Server 2008 Datacenter, Windows Server 2003, Datacenter Edition ou
+ Windows 2000 Datacenter Server est installé.
+
+
+
+ 0x00000002
+
+ Windows Server 2008 Enterprise, Windows Server 2003, Enterprise Edition,
+ Windows 2000 Advanced Server, ou Windows NT Server 4.0 Enterprise Edition
+ est installé.
+
+
+
+ 0x00000040
+ Windows XP Embedded est installé.
+
+
+ 0x00000200
+
+ Windows Vista Home Premium, Windows Vista Home Basic, ou Windows XP Home
+ Edition est installé.
+
+
+
+ 0x00000100
+
+ Remote Desktop est supporté, mais une seule session interactive est
+ supportée. Cette valeur est présente, à moins que le système ne fonctionne
+ en mode serveur d'application.
+
+
+
+ 0x00000001
+
+ Microsoft Small Business Server a été installé sur le système, mais
+ a été mis à joru vers une nouvelle version de Windows.
+
+
+
+ 0x00000020
+
+ Microsoft Small Business Server est installé avec la licence cliente
+ restreinte.
+
+
+
+ 0x00002000
+ Windows Storage Server 2003 R2 ou Windows Storage Server 2003 est installé.
+
+
+ 0x00000010
+
+ Terminal Services est installé. Cette valeur est toujours activée. Si cette
+ valeur est activée, mais 0x00000100 ne l'est pas, alors
+ le système fonctionne en mode de serveur d'application.
+
+
+
+ 0x00008000
+ Windows Home Server est installé.
+
+
+
+
+
+
From 1187ab25bfb637361e9c6cfaa62d46be739d2a64 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:39:51 +0100
Subject: [PATCH 38/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/inotify/constants.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/inotify/constants.xml | 590 ++++++++++++++++----------------
1 file changed, 295 insertions(+), 295 deletions(-)
diff --git a/reference/inotify/constants.xml b/reference/inotify/constants.xml
index 4cdc8c8e8e..9d29f58d18 100644
--- a/reference/inotify/constants.xml
+++ b/reference/inotify/constants.xml
@@ -1,295 +1,295 @@
-
-
-
-
-
-
- &reftitle.constants;
- &extension.constants;
-
- Les constantes Inotify sont utilisables avec les fonctions inotify_add_watch
- et/ou retournées par la fonction inotify_read
-
-
- IN_ACCESS
- (int)
-
-
-
- Le fichier a été accédé (lu) (*)
-
-
-
-
-
- IN_MODIFY
- (int)
-
-
-
- Le fichier a été modifié (*)
-
-
-
-
-
- IN_ATTRIB
- (int)
-
-
-
- Les métadonnées ont changé (e.g. les permissions, la date de modification, etc.) (*)
-
-
-
-
-
- IN_CLOSE_WRITE
- (int)
-
-
-
- Le fichier ouvert en écriture a été refermé (*)
-
-
-
-
-
- IN_CLOSE_NOWRITE
- (int)
-
-
-
- Le fichier non-ouvert en écriture a été refermé (*)
-
-
-
-
-
- IN_OPEN
- (int)
-
-
-
- Le fichier a été ouvert (*)
-
-
-
-
-
- IN_MOVED_TO
- (int)
-
-
-
- Fichier déplacé dans un dossier surveillé (*)
-
-
-
-
-
- IN_MOVED_FROM
- (int)
-
-
-
- Fichier déplacé depuis un dossier surveillé (*)
-
-
-
-
-
- IN_CREATE
- (int)
-
-
-
- Fichier ou dossier créé dans un dossier surveillé (*)
-
-
-
-
-
- IN_DELETE
- (int)
-
-
-
- Fichier ou dossier supprimé dans un dossier surveillé (*)
-
-
-
-
-
- IN_DELETE_SELF
- (int)
-
-
-
- Les fichiers ou dossiers surveillés ont été supprimés
-
-
-
-
-
- IN_MOVE_SELF
- (int)
-
-
-
- Les fichiers ou dossiers surveillés ont été déplacés
-
-
-
-
-
- IN_CLOSE
- (int)
-
-
-
- Égal à IN_CLOSE_WRITE | IN_CLOSE_NOWRITE
-
-
-
-
-
- IN_MOVE
- (int)
-
-
-
- Égal à IN_MOVED_FROM | IN_MOVED_TO
-
-
-
-
-
- IN_ALL_EVENTS
- (int)
-
-
-
- Composition de toutes les constantes précédentes
-
-
-
-
-
- IN_UNMOUNT
- (int)
-
-
-
- Le système de fichiers contenant les objets surveillés a été démonté
-
-
-
-
-
- IN_Q_OVERFLOW
- (int)
-
-
-
- Queue d'événements en dépassement de capacité (wd vaut -1 pour cet événement)
-
-
-
-
-
- IN_IGNORED
- (int)
-
-
-
- La surveillance a été retirée (explicitement par inotify_rm_watch
- ou par ce que le fichier a été supprimé, ou que le système de fichiers a été démonté)
-
-
-
-
-
- IN_ISDIR
- (int)
-
-
-
- Le sujet de cet événement est un dossier
-
-
-
-
-
- IN_ONLYDIR
- (int)
-
-
-
- Ne surveille que le chemin, si c'est un dossier (Depuis Linux 2.6.15)
-
-
-
-
-
- IN_DONT_FOLLOW
- (int)
-
-
-
- Ne déréférence pas le chemin si c'est un lien symbolique (Depuis Linux 2.6.15)
-
-
-
-
-
- IN_MASK_ADD
- (int)
-
-
-
- Ajoute les événements au masque de surveillance pour ce chemin, s'il existe déjà
- (au lieu de remplacer).
-
-
-
-
-
- IN_ONESHOT
- (int)
-
-
-
- Surveille le chemin de cet événement, puis le supprime de la liste de surveillance.
-
-
-
-
-
-
- Les événements marqués par un astérisque (*) ci-dessus peuvent survenir pour des fichiers
- dans des dossiers sous surveillance.
-
-
-
-
-
+
+
+
+
+
+
+ &reftitle.constants;
+ &extension.constants;
+
+ Les constantes Inotify sont utilisables avec les fonctions inotify_add_watch
+ et/ou retournées par la fonction inotify_read
+
+
+ IN_ACCESS
+ (int)
+
+
+
+ Le fichier a été accédé (lu) (*)
+
+
+
+
+
+ IN_MODIFY
+ (int)
+
+
+
+ Le fichier a été modifié (*)
+
+
+
+
+
+ IN_ATTRIB
+ (int)
+
+
+
+ Les métadonnées ont changé (e.g. les permissions, la date de modification, etc.) (*)
+
+
+
+
+
+ IN_CLOSE_WRITE
+ (int)
+
+
+
+ Le fichier ouvert en écriture a été refermé (*)
+
+
+
+
+
+ IN_CLOSE_NOWRITE
+ (int)
+
+
+
+ Le fichier non-ouvert en écriture a été refermé (*)
+
+
+
+
+
+ IN_OPEN
+ (int)
+
+
+
+ Le fichier a été ouvert (*)
+
+
+
+
+
+ IN_MOVED_TO
+ (int)
+
+
+
+ Fichier déplacé dans un dossier surveillé (*)
+
+
+
+
+
+ IN_MOVED_FROM
+ (int)
+
+
+
+ Fichier déplacé depuis un dossier surveillé (*)
+
+
+
+
+
+ IN_CREATE
+ (int)
+
+
+
+ Fichier ou dossier créé dans un dossier surveillé (*)
+
+
+
+
+
+ IN_DELETE
+ (int)
+
+
+
+ Fichier ou dossier supprimé dans un dossier surveillé (*)
+
+
+
+
+
+ IN_DELETE_SELF
+ (int)
+
+
+
+ Les fichiers ou dossiers surveillés ont été supprimés
+
+
+
+
+
+ IN_MOVE_SELF
+ (int)
+
+
+
+ Les fichiers ou dossiers surveillés ont été déplacés
+
+
+
+
+
+ IN_CLOSE
+ (int)
+
+
+
+ Égal à IN_CLOSE_WRITE | IN_CLOSE_NOWRITE
+
+
+
+
+
+ IN_MOVE
+ (int)
+
+
+
+ Égal à IN_MOVED_FROM | IN_MOVED_TO
+
+
+
+
+
+ IN_ALL_EVENTS
+ (int)
+
+
+
+ Composition de toutes les constantes précédentes
+
+
+
+
+
+ IN_UNMOUNT
+ (int)
+
+
+
+ Le système de fichiers contenant les objets surveillés a été démonté
+
+
+
+
+
+ IN_Q_OVERFLOW
+ (int)
+
+
+
+ Queue d'événements en dépassement de capacité (wd vaut -1 pour cet événement)
+
+
+
+
+
+ IN_IGNORED
+ (int)
+
+
+
+ La surveillance a été retirée (explicitement par inotify_rm_watch
+ ou par ce que le fichier a été supprimé, ou que le système de fichiers a été démonté)
+
+
+
+
+
+ IN_ISDIR
+ (int)
+
+
+
+ Le sujet de cet événement est un dossier
+
+
+
+
+
+ IN_ONLYDIR
+ (int)
+
+
+
+ Ne surveille que le chemin, si c'est un dossier (Depuis Linux 2.6.15)
+
+
+
+
+
+ IN_DONT_FOLLOW
+ (int)
+
+
+
+ Ne déréférence pas le chemin si c'est un lien symbolique (Depuis Linux 2.6.15)
+
+
+
+
+
+ IN_MASK_ADD
+ (int)
+
+
+
+ Ajoute les événements au masque de surveillance pour ce chemin, s'il existe déjà
+ (au lieu de remplacer).
+
+
+
+
+
+ IN_ONESHOT
+ (int)
+
+
+
+ Surveille le chemin de cet événement, puis le supprime de la liste de surveillance.
+
+
+
+
+
+
+ Les événements marqués par un astérisque (*) ci-dessus peuvent survenir pour des fichiers
+ dans des dossiers sous surveillance.
+
+
+
+
+
From b0715915b7a3c42e9dd004642e24391f6a2fbf39 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:40:26 +0100
Subject: [PATCH 39/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/mongodb/architecture.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/mongodb/architecture.xml | 2004 ++++++++++++++--------------
1 file changed, 1002 insertions(+), 1002 deletions(-)
diff --git a/reference/mongodb/architecture.xml b/reference/mongodb/architecture.xml
index 9f0845afd7..07e6d74b74 100644
--- a/reference/mongodb/architecture.xml
+++ b/reference/mongodb/architecture.xml
@@ -1,1002 +1,1002 @@
-
-
-
-
- Architecture et fonctionnalités spéciales
- Explications de l'architecture du pilote et des fonctionnalités spéciales
-
-
- Architecture
- Aperçu de l'architecture
-
-
- Cet article explique comment tous les différents composants du pilote PHP
- s'emboîtent, des bibliothèques système de base, à l'extension, et aux
- bibliothèques PHP en haut.
-
-
-
-
-
- Le diagramme d'architecture du pilote MongoDB PHP. Le niveau le plus bas
- du pilote est nos bibliothèques système : libmongoc, libbson, et
- libmongocrypt. Le niveau intermédiaire est l'extension PHP MongoDB. Le
- niveau supérieur est le code utilisateur PHP et inclut la bibliothèque
- MongoDB PHP et des packages de plus haut niveau tels que les intégrations
- de frameworks et les applications.
-
-
-
-
-
-
-
-
- En haut de cette pile se trouve une
- bibliothèque PHP,
- qui distribue un
- package Composer.
- Cette bibliothèque fournit une API cohérente avec d'autres
- drivers
- MongoDB et implémente diverses
- specifications
- croisées. Bien que l'extension puisse être utilisée directement, la bibliothèque
- a un surcoût minimal et devrait être une dépendance commune pour la plupart
- des applications construites avec MongoDB.
-
-
-
- En dessous de cette bibliothèque se trouve une extension PHP, qui est
- distribuée via
- PECL.
- L'extension forme la colle entre PHP et nos bibliothèques système
- (libmongoc,
- libbson, et
- libmongocrypt).
- Son API publique fournit uniquement les fonctionnalités les plus essentielles :
-
- Gestion de connexions
- Encodage et décoage BSON
- Sérialisation et désérialisation de documents (support des bibliothèques ODM)
- Exécution de commandes, requêtes, et opérations d'écriture
- Gestion des curseurs pour les résultats de commandes et de requêtes
-
-
-
-
-
-
-
-
-
- Connections
- Gestion de la connection et de la persistence
-
- &mongodb.note.forking;
-
-
- Connexions et topologie persistante (version PHP depuis 1.2.0)
-
-
- Toutes les versions de l'extension depuis 1.2.0 conservent l'objet client
- libmongoc dans le processus
- PHP, ce qui lui permet de réutiliser les connexions de base de données, les
- états d'authentification, et les informations de
- topologie à travers plusieurs requêtes.
-
-
-
- Lorsque MongoDB\Driver\Manager::__construct est
- invoqué, un hachage est créé à partir de ses arguments (c'est-à-dire la
- chaîne URI et le tableau d'options). L'extension tentera de trouver un objet
- client libmongoc persisté
- précédemment pour ce hachage. Si un client existant ne peut pas être trouvé
- pour le hachage, un nouveau client sera créé et persisté pour une utilisation
- future. Ce comportement peut être désactivé via l'option du pilote
- "disableClientPersistence".
-
-
-
- Chaque client contient ses propres connexions de base de données et une vue
- de la topologie du serveur (par exemple, autonome, ensemble de réplicas,
- grappe de fragments). En persistant le client entre les requêtes PHP,
- l'extension est capable de réutiliser les connexions de base de données
- établies et d'éliminer le besoin de
- découvrir la topologie du serveur
- à chaque requête.
-
-
-
- Considérez l'exemple suivant :
-
-
-
- 'myReplicaSet']),
-];
-
-foreach ($managers as $manager) {
- $manager->executeCommand('test', new MongoDB\Driver\Command(['ping' => 1]));
-}
-
-?>
-]]>
-
-
-
- Les deux premiers objets Manager partageront le même
- client libmongoc car leurs
- arguments de constructeur sont identiques. Les troisième et quatrième objets
- utiliseront chacun leur propre client. Au total, trois clients seront créés
- et le processus PHP exécutant ce script ouvrira deux connexions à
- 127.0.0.1 et une connexion à chacun de
- rs1.example.com et rs2.example.com.
- Si l'extension découvre des membres supplémentaires de l'ensemble de réplicas
- après avoir émis des commandes hello, elle ouvrira des
- connexions supplémentaires à ces serveurs également.
-
-
-
- Si les mêmes connexions sont réutilisées par le même processus PHP, les trois
- clients seront réutilisés et aucune nouvelle connexion ne sera établie. En
- fonction de la durée écoulée depuis la dernière requête servie, l'extension
- peut avoir besoin d'émettre des commandes hello supplémentaires
- pour mettre à jour sa vue des topologies.
-
-
-
-
- Persistance des sockets (versions PHP avant 1.2.0)
-
-
- Les versions de l'extension avant 1.2.0 utilisent l'API des flux PHP pour
- les connexions de base de données, utilisant une API dans
- libmongoc pour désigner des
- gestionnaires personnalisés pour la communication par socket ; cependant, un
- nouveau client libmongoc est créé pour chaque
- MongoDB\Driver\Manager. En conséquence, l'extension
- persiste les connexions de base de données individuelles mais pas l'état
- d'authentification ou les informations de topologie. Cela signifie que
- l'extension doit émettre des commandes au début de chaque requête pour
- s'authentifier et
- découvrir la topologie du serveur.
-
-
-
- Les connexions de base de données sont persistées par un hachage dérivé de
- l'hôte du serveur, du port et de la chaîne URI utilisée pour construire le
- MongoDB\Driver\Manager. Les options du tableau du
- constructeur ne sont pas incluses dans ce hachage.
-
-
-
-
- Les version de l'extension >= 1.1.8 et < 1.2.0 ne persistent pas les
- sockets pour les connexions SSL. Voir
- PHPC-720 pour plus
- d'informations.
-
-
-
-
- Malgré ses lacunes avec les connexions SSL persistantes et les informations
- de topologie, cette version de l'extension supporte toutes les
- options de contexte SSL puisqu'elle
- utilise l'API des flux PHP.
-
-
-
-
-
- Persister des données
- Sérialisation and déserialisation des variables PHP dans MongoDB
-
-
- Ce document explique comment les structures composées (c'est-à-dire les
- documents, les tableaux et les objets) sont converties entre les valeurs BSON et PHP.
-
-
-
- Sérialisation en BSON
-
-
- Tableaux
-
-
- Si un tableau est un tableau compact — c'est-à-dire un
- tableau vide ou les clés commencent à 0 et sont séquentielles sans trous :
- tableau BSON.
-
-
-
- Si le tableau n'est pas compact — c'est-à-dire qu'il a des clés
- associatives (chaînes), que les clés ne commencent pas à 0, ou qu'il y a
- des trous : objet BSON.
-
-
-
- Un document de niveau supérieur (racine), toujours
- sérialisé en tant que document BSON.
-
-
-
- Exemples
-
-
- Ces exemples sérialisent en tant que tableau BSON :
-
-
-
- [ 8, 5, 2, 3 ]
-[ 0 => 4, 1 => 9 ] => [ 4, 9 ]
-]]>
-
-
-
- Ces exemples sérialisent en tant qu'objet BSON :
-
-
-
- 1, 2 => 8, 3 => 12 ] => { "0" : 1, "2" : 8, "3" : 12 }
-[ "foo" => 42 ] => { "foo" : 42 }
-[ 1 => 9, 0 => 10 ] => { "1" : 9, "0" : 10 }
-]]>
-
-
-
- Il est à noter que les cinq exemples sont des extraits
- d'un document complet, et ne représentent qu'une valeur
- à l'intérieur d'un document.
-
-
-
-
-
-
- Objets
-
-
- Si un objet est de la classe stdClass, sérialiser
- en tant que document BSON.
-
-
-
- Si un objet est une classe supportée qui implémente
- MongoDB\BSON\Type, alors utiliser la logique
- de sérialisation BSON pour ce type spécifique.
- Les instances de MongoDB\BSON\Type (à
- l'exclusion de MongoDB\BSON\Serializable)
- ne peuvent être sérialisées que comme valeur de champ de document. Tenter
- de sérialiser un tel objet en tant que document racine lèvera une
- MongoDB\Driver\Exception\UnexpectedValueException.
-
-
-
- Si un objet est d'une classe inconnue implémentant l'interface
- MongoDB\BSON\Type, alors une
- MongoDB\Driver\Exception\UnexpectedValueException est lancée.
-
-
-
- Si un objet est d'une classe autre, sans implémenter une interface spéciale,
- sérialiser en tant que document BSON. Garder seulement
- les propriétés public, et ignorer les propriétés
- protected et private.
-
-
-
- Si un objet est d'une classe qui implémente
- MongoDB\BSON\Serializable, appeler
- MongoDB\BSON\Serializable::bsonSerialize et
- utiliser le tableau ou stdClass retourné pour
- sérialiser en tant que document BSON ou tableau. Le type BSON sera
- déterminé par les règles suivantes :
-
-
-
-
-
- Les documents racines doivent être sérialisés en tant que
- document BSON.
-
-
-
-
- Les objets MongoDB\BSON\Persistable doivent
- être sérialisés en tant que document BSON.
-
-
-
-
- Si MongoDB\BSON\Serializable::bsonSerialize
- retourne un tableau compact, sérialiser en tant que tableau BSON.
-
-
-
-
- Si MongoDB\BSON\Serializable::bsonSerialize
- retourne un tableau non-compact ou stdClass,
- sérialiser en tant qu'objet BSON.
-
-
-
-
- Si MongoDB\BSON\Serializable::bsonSerialize
- ne retourne pas un tableau ou stdClass, lance
- une exception
- MongoDB\Driver\Exception\UnexpectedValueException.
-
-
-
-
-
-
- Si un objet est d'une classe qui implémente l'interface
- MongoDB\BSON\Persistable (qui implique
- MongoDB\BSON\Serializable), obtenir les
- propriétés de manière similaire aux paragraphes précédents, mais
- aussi ajouter une propriété
- __pclass en tant que valeur binaire, avec un sous-type
- 0x80 et des données portant le nom de la classe
- entièrement qualifié de l'objet qui est sérialisé.
-
-
-
- La propriété __pclass est ajoutée au tableau ou à
- l'objet retourné par
- MongoDB\BSON\Serializable::bsonSerialize, ce qui
- signifie qu'elle écrasera toute clé/propriété __pclass
- dans la valeur de retour de
- MongoDB\BSON\Serializable::bsonSerialize. Si vous
- voulez éviter ce comportement et définir votre propre valeur
- __pclass,
- vous ne devez pas implémenter
- MongoDB\BSON\Persistable et devriez plutôt
- implémenter
- MongoDB\BSON\Serializable directement.
-
-
-
- Exemples
-
-
- {"foo": 42}
-
-class MyClass
-{
- public $foo = 42;
- protected $prot = 'wine';
- private $fpr = 'cheese';
-} // => {"foo": 42}
-
-class AnotherClass1 implements MongoDB\BSON\Serializable
-{
- public $foo = 42;
- protected $prot = 'wine';
- private $fpr = 'cheese';
-
- public function bsonSerialize(): array
- {
- return ['foo' => $this->foo, 'prot' => $this->prot];
- }
-} // => {"foo": 42, "prot": "wine"}
-
-class AnotherClass2 implements MongoDB\BSON\Serializable
-{
- public $foo = 42;
-
- public function bsonSerialize(): self
- {
- return $this;
- }
-} // => MongoDB\Driver\Exception\UnexpectedValueException("bsonSerialize() did not return an array or stdClass")
-
-class AnotherClass3 implements MongoDB\BSON\Serializable
-{
- private $elements = ['foo', 'bar'];
-
- public function bsonSerialize(): array
- {
- return $this->elements;
- }
-} // => {"0": "foo", "1": "bar"}
-
-/**
- * Nesting Serializable classes
- */
-
-class AnotherClass4 implements MongoDB\BSON\Serializable
-{
- private $elements = [0 => 'foo', 2 => 'bar'];
-
- public function bsonSerialize(): array
- {
- return $this->elements;
- }
-} // => {"0": "foo", "2": "bar"}
-
-class ContainerClass1 implements MongoDB\BSON\Serializable
-{
- public $things;
-
- public function __construct()
- {
- $this->things = new AnotherClass4();
- }
-
- function bsonSerialize(): array
- {
- return ['things' => $this->things];
- }
-} // => {"things": {"0": "foo", "2": "bar"}}
-
-
-class AnotherClass5 implements MongoDB\BSON\Serializable
-{
- private $elements = [0 => 'foo', 2 => 'bar'];
-
- public function bsonSerialize(): array
- {
- return array_values($this->elements);
- }
-} // => {"0": "foo", "1": "bar"} en tant que classe racine
- // ["foo", "bar"] en tant que valeur imbriquée
-
-class ContainerClass2 implements MongoDB\BSON\Serializable
-{
- public $things;
-
- public function __construct()
- {
- $this->things = new AnotherClass5();
- }
-
- public function bsonSerialize(): array
- {
- return ['things' => $this->things];
- }
-} // => {"things": ["foo", "bar"]}
-
-
-class AnotherClass6 implements MongoDB\BSON\Serializable
-{
- private $elements = ['foo', 'bar'];
-
- function bsonSerialize(): object
- {
- return (object) $this->elements;
- }
-} // => {"0": "foo", "1": "bar"}
-
-class ContainerClass3 implements MongoDB\BSON\Serializable
-{
- public $things;
-
- public function __construct()
- {
- $this->things = new AnotherClass6();
- }
-
- public function bsonSerialize(): array
- {
- return ['things' => $this->things];
- }
-} // => {"things": {"0": "foo", "1": "bar"}}
-
-class UpperClass implements MongoDB\BSON\Persistable
-{
- public $foo = 42;
- protected $prot = 'wine';
- private $fpr = 'cheese';
-
- private $data;
-
- public function bsonUnserialize(array $data): void
- {
- $this->data = $data;
- }
-
- public function bsonSerialize(): array
- {
- return ['foo' => $this->foo, 'prot' => $this->prot];
- }
-} // => {"foo": 42, "prot": "wine", "__pclass": {"$type": "80", "$binary": "VXBwZXJDbGFzcw=="}}
-
-?>
-]]>
-
-
-
-
-
-
- Deserialization from BSON
-
- &mongodb.warning.duplicate-keys;
-
-
- L'extension mongodb désérialise les documents BSON
- et les tableaux BSON en tant que tableaux PHP. Tant que les tableaux PHP sont
- pratiques à utiliser, ce comportement était problématique car différents
- types BSON pouvaient être désérialisés en la même valeur PHP (par exemple
- {"0": "foo"} et ["foo"]) et rendait
- impossible d'inférer le type BSON original. Par défaut, l'extension
- mongodb adresse cette préoccupation en s'assurant que les
- tableaux BSON et les documents BSON sont convertis en tableaux et objets PHP,
- respectivement.
-
-
- Pour les types composés, il existe trois types de données :
-
-
-
-
-
- root
-
-
- réfère à un document BSON de niveau supérieur seulement
-
-
-
-
- document
-
-
- réfère à des documents BSON imbriqués seulement
-
-
-
-
- array
-
-
- réfère à un tableau BSON
-
-
-
-
-
-
-
- A part les trois types collectifs, il est aussi possible de configurer des
- champs spécifiques dans votre document pour mapper les types de données
- mentionnés ci-dessous. Par exemple, le type de carte suivant vous permet de
- mapper chaque document intégré dans un tableau "addresses"
- à une classe Addresset chaque
- champ "city" dans ces documents d'adresse intégrés à une
- classe City:
-
-
- [
- 'addresses.$' => 'MyProject\Address',
- 'addresses.$.city' => 'MyProject\City',
- ],
-]
-]]>
-
-
-
-
- Chacun de ces trois types de données, ainsi que les mappages spécifiques
- aux champs, peuvent être mappés contre différents types PHP. Les valeurs de
- mappage possibles sont:
-
-
-
-
-
- non défini ou NULL (par défaut)
-
-
-
-
-
- Un tableau BSON sera désérialisé en un array PHP.
-
-
-
-
- Un document BSON (racine ou imbriqué) sans propriété
- __pclass
-
-
- Une propriété __pclass n'est considérée comme existante que si
- une propriété portant ce nom existe, et qu'elle est une valeur
- binaire, et que le sous-type de la valeur binaire est 0x80. Si
- une de ces trois conditions n'est pas remplie, la propriété
- __pclass n'existe pas et doit être traitée comme toute autre
- propriété normale.
-
-
- devient un objet stdClass, avec chaque clé de document
- BSON définie comme une propriété de stdClass
- publique.
-
-
-
-
- Un document BSON (racine ou imbriqué) avec une propriété
- __pclass devient un objet PHP de la classe
- nommée par la propriété __pclass.
-
-
- Si la classe nommée implémente l'interface
- MongoDB\BSON\Persistable, alors les
- propriétés du document BSON, y compris la propriété
- __pclass, sont envoyées sous forme de tableau
- associatif à la fonction
- MongoDB\BSON\Unserializable::bsonUnserialize
- pour initialiser les propriétés de l'objet.
-
-
- Si la classe nommée n'existe pas ou n'implémente pas
- l'interface MongoDB\BSON\Persistable,
- stdClass sera
- utilisé et chaque clé de document BSON (y compris __pclass)
- sera définie comme une propriété publique de stdClass.
-
-
- La fonctionnalité __pclass repose sur le fait
- que la propriété soit partie d'un document MongoDB récupéré. Si vous
- utilisez une
- projection
- lors de la recherche de documents, vous devez inclure le champ
- __pclass dans la projection pour que cette
- fonctionnalité fonctionne.
-
-
-
-
-
-
-
-
- "array"
-
-
- Transforme un tableau BSON en un array PHP. Il n'y aura
- pas de traitement spécial d'une propriété __pclass
- mais elle peut être définie comme un élément dans le tableau retourné
- si elle était présente dans le document BSON.
-
-
-
-
-
- "object" ou "stdClass"
-
-
- Transforme un tableau BSON ou un document BSON en un objet
- stdClass. Il n'y aura pas de traitement spécial d'une
- propriété __pclass
- mais elle peut être définie comme une propriété publique dans l'objet
- retourné si elle était présente dans le document BSON.
-
-
-
-
-
- "bson"
-
-
- Transforme un tableau BSON en un MongoDB\BSON\PackedArray
- et un document BSON en un MongoDB\BSON\Document,
- indépendamment du fait que le document BSON ait une propriété
- __pclass.
-
-
-
- La valeur bson n'est disponible que pour les trois
- types racines, et non dans les mappages spécifiques aux champs.
-
-
-
-
-
-
- toues les autres chaînes de caractères
-
-
- Définit le nom de la classe à laquelle le document BSON doit être
- désérialisé. Pour les documents BSON qui incluent des propriétés
- __pclass,
- cette classe prendra la priorité.
-
-
-
- Si la classe nommée n'existe pas ou n'implémente pas
- l'interface MongoDB\BSON\Unserializable,
- une exception
- MongoDB\Driver\Exception\InvalidArgumentException
- est lancée.
-
-
-
- Si l'objet BSON a une propriété __pclass et que
- cette classe existe et implémente
- MongoDB\BSON\Persistable, elle prendra
- le pas sur la classe fournie dans la carte de type.
-
-
-
- Les propriétés du document BSON, y compris la propriété
- __pclass,
- seront envoyées sous forme de tableau associatif à la fonction
- MongoDB\BSON\Unserializable::bsonUnserialize
- pour initialiser les propriétés de l'objet.
-
-
-
-
-
-
-
- TypeMaps
-
-
- Les TypeMaps peuvent être définis via la méthode
- MongoDB\Driver\Cursor::setTypeMap sur un objet
- MongoDB\Driver\Cursor, ou l'argument
- $typeMap de
- MongoDB\BSON\toPHP,
- MongoDB\BSON\Document::toPHP, et
- MongoDB\BSON\PackedArray::toPHP. Chacune des trois
- classes (racine, document, et
- array) peut être définie individuellement, en plus des
- types spécifiques aux champs.
-
-
-
- Si la valeur dans le TypeMap est NULL, cela signifie la même
- chose que la valeur par défaut pour cet élément.
-
-
-
-
- Exemples
-
-
- Ces exemples utilisent les classes suivantes:
-
-
-
-
-
- MyClass
-
-
- qui n'implémente aucune interface
-
-
-
-
- YourClass
-
-
- qui implémente
- MongoDB\BSON\Unserializable
-
-
-
-
- OurClass
-
-
- qui implémente
- MongoDB\BSON\Persistable
-
-
-
-
- TheirClass
-
-
- qui étends OurClass
-
-
-
-
-
-
-
- La méthode MongoDB\BSON\Unserializable::bsonUnserialize
- de YourClass, OurClass, TheirClass itère sur le tableau et définit les
- propriétés sans modifications. Elle ajoute aussi la
- propriété $unserialized à &true;:
-
-
- $value )
- {
- $this->$k = $value;
- }
- $this->unserialized = true;
-}
-]]>
-
-
-
-
-
- stdClass { $foo => 'yes', $bar => false }
-
-{ "foo": "no", "array" : [ 5, 6 ] }
- -> stdClass { $foo => 'no', $array => [ 5, 6 ] }
-
-{ "foo": "no", "obj" : { "embedded" : 3.14 } }
- -> stdClass { $foo => 'no', $obj => stdClass { $embedded => 3.14 } }
-
-{ "foo": "yes", "__pclass": "MyClass" }
- -> stdClass { $foo => 'yes', $__pclass => 'MyClass' }
-
-{ "foo": "yes", "__pclass": { "$type" : "80", "$binary" : "MyClass" } }
- -> stdClass { $foo => 'yes', $__pclass => Binary(0x80, 'MyClass') }
-
-{ "foo": "yes", "__pclass": { "$type" : "80", "$binary" : "YourClass") }
- -> stdClass { $foo => 'yes', $__pclass => Binary(0x80, 'YourClass') }
-
-{ "foo": "yes", "__pclass": { "$type" : "80", "$binary" : "OurClass") }
- -> OurClass { $foo => 'yes', $__pclass => Binary(0x80, 'OurClass'), $unserialized => true }
-
-{ "foo": "yes", "__pclass": { "$type" : "44", "$binary" : "YourClass") }
- -> stdClass { $foo => 'yes', $__pclass => Binary(0x44, 'YourClass') }
-]]>
-
-
-
-
-
- "MissingClass" ] */
-{ "foo": "yes" }
- -> MongoDB\Driver\Exception\InvalidArgumentException("MissingClass does not exist")
-
-/* typemap: [ "root" => "MyClass" ] */
-{ "foo": "yes", "__pclass" : { "$type": "80", "$binary": "MyClass" } }
- -> MongoDB\Driver\Exception\InvalidArgumentException("MyClass does not implement Unserializable interface")
-
-/* typemap: [ "root" => "MongoDB\BSON\Unserializable" ] */
-{ "foo": "yes" }
- -> MongoDB\Driver\Exception\InvalidArgumentException("Unserializable is not a concrete class")
-
-/* typemap: [ "root" => "YourClass" ] */
-{ "foo": "yes", "__pclass" : { "$type": "80", "$binary": "MongoDB\BSON\Unserializable" } }
- -> YourClass { $foo => "yes", $__pclass => Binary(0x80, "MongoDB\BSON\Unserializable"), $unserialized => true }
-
-/* typemap: [ "root" => "YourClass" ] */
-{ "foo": "yes", "__pclass" : { "$type": "80", "$binary": "MyClass" } }
- -> YourClass { $foo => "yes", $__pclass => Binary(0x80, "MyClass"), $unserialized => true }
-
-/* typemap: [ "root" => "YourClass" ] */
-{ "foo": "yes", "__pclass" : { "$type": "80", "$binary": "OurClass" } }
- -> OurClass { $foo => "yes", $__pclass => Binary(0x80, "OurClass"), $unserialized => true }
-
-/* typemap: [ "root" => "YourClass" ] */
-{ "foo": "yes", "__pclass" : { "$type": "80", "$binary": "TheirClass" } }
- -> TheirClass { $foo => "yes", $__pclass => Binary(0x80, "TheirClass"), $unserialized => true }
-
-/* typemap: [ "root" => "OurClass" ] */
-{ foo: "yes", "__pclass" : { "$type": "80", "$binary": "TheirClass" } }
- -> TheirClass { $foo => "yes", $__pclass => Binary(0x80, "TheirClass"), $unserialized => true }
-]]>
-
-
-
-
-
- 'YourClass' ] */
-{ foo: "yes", "__pclass" : { "$type": "80", "$binary": "YourClass" } }
- -> YourClass { $foo => 'yes', $__pclass => Binary(0x80, 'YourClass'), $unserialized => true }
-]]>
-
-
-
-
-
- 'array', 'document' => 'array' ] */
-{ "foo": "yes", "bar" : false }
- -> [ "foo" => "yes", "bar" => false ]
-
-{ "foo": "no", "array" : [ 5, 6 ] }
- -> [ "foo" => "no", "array" => [ 5, 6 ] ]
-
-{ "foo": "no", "obj" : { "embedded" : 3.14 } }
- -> [ "foo" => "no", "obj" => [ "embedded => 3.14 ] ]
-
-{ "foo": "yes", "__pclass": "MyClass" }
- -> [ "foo" => "yes", "__pclass" => "MyClass" ]
-
-{ "foo": "yes", "__pclass" : { "$type": "80", "$binary": "MyClass" } }
- -> [ "foo" => "yes", "__pclass" => Binary(0x80, "MyClass") ]
-
-{ "foo": "yes", "__pclass" : { "$type": "80", "$binary": "OurClass" } }
- -> [ "foo" => "yes", "__pclass" => Binary(0x80, "OurClass") ]
-]]>
-
-
-
-
-
- 'object', 'document' => 'object' ] */
-{ "foo": "yes", "__pclass": { "$type": "80", "$binary": "MyClass" } }
- -> stdClass { $foo => "yes", "__pclass" => Binary(0x80, "MyClass") }
-]]>
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ Architecture et fonctionnalités spéciales
+ Explications de l'architecture du pilote et des fonctionnalités spéciales
+
+
+ Architecture
+ Aperçu de l'architecture
+
+
+ Cet article explique comment tous les différents composants du pilote PHP
+ s'emboîtent, des bibliothèques système de base, à l'extension, et aux
+ bibliothèques PHP en haut.
+
+
+
+
+
+ Le diagramme d'architecture du pilote MongoDB PHP. Le niveau le plus bas
+ du pilote est nos bibliothèques système : libmongoc, libbson, et
+ libmongocrypt. Le niveau intermédiaire est l'extension PHP MongoDB. Le
+ niveau supérieur est le code utilisateur PHP et inclut la bibliothèque
+ MongoDB PHP et des packages de plus haut niveau tels que les intégrations
+ de frameworks et les applications.
+
+
+
+
+
+
+
+
+ En haut de cette pile se trouve une
+ bibliothèque PHP,
+ qui distribue un
+ package Composer.
+ Cette bibliothèque fournit une API cohérente avec d'autres
+ drivers
+ MongoDB et implémente diverses
+ specifications
+ croisées. Bien que l'extension puisse être utilisée directement, la bibliothèque
+ a un surcoût minimal et devrait être une dépendance commune pour la plupart
+ des applications construites avec MongoDB.
+
+
+
+ En dessous de cette bibliothèque se trouve une extension PHP, qui est
+ distribuée via
+ PECL.
+ L'extension forme la colle entre PHP et nos bibliothèques système
+ (libmongoc,
+ libbson, et
+ libmongocrypt).
+ Son API publique fournit uniquement les fonctionnalités les plus essentielles :
+
+ Gestion de connexions
+ Encodage et décoage BSON
+ Sérialisation et désérialisation de documents (support des bibliothèques ODM)
+ Exécution de commandes, requêtes, et opérations d'écriture
+ Gestion des curseurs pour les résultats de commandes et de requêtes
+
+
+
+
+
+
+
+
+
+ Connections
+ Gestion de la connection et de la persistence
+
+ &mongodb.note.forking;
+
+
+ Connexions et topologie persistante (version PHP depuis 1.2.0)
+
+
+ Toutes les versions de l'extension depuis 1.2.0 conservent l'objet client
+ libmongoc dans le processus
+ PHP, ce qui lui permet de réutiliser les connexions de base de données, les
+ états d'authentification, et les informations de
+ topologie à travers plusieurs requêtes.
+
+
+
+ Lorsque MongoDB\Driver\Manager::__construct est
+ invoqué, un hachage est créé à partir de ses arguments (c'est-à-dire la
+ chaîne URI et le tableau d'options). L'extension tentera de trouver un objet
+ client libmongoc persisté
+ précédemment pour ce hachage. Si un client existant ne peut pas être trouvé
+ pour le hachage, un nouveau client sera créé et persisté pour une utilisation
+ future. Ce comportement peut être désactivé via l'option du pilote
+ "disableClientPersistence".
+
+
+
+ Chaque client contient ses propres connexions de base de données et une vue
+ de la topologie du serveur (par exemple, autonome, ensemble de réplicas,
+ grappe de fragments). En persistant le client entre les requêtes PHP,
+ l'extension est capable de réutiliser les connexions de base de données
+ établies et d'éliminer le besoin de
+ découvrir la topologie du serveur
+ à chaque requête.
+
+
+
+ Considérez l'exemple suivant :
+
+
+
+ 'myReplicaSet']),
+];
+
+foreach ($managers as $manager) {
+ $manager->executeCommand('test', new MongoDB\Driver\Command(['ping' => 1]));
+}
+
+?>
+]]>
+
+
+
+ Les deux premiers objets Manager partageront le même
+ client libmongoc car leurs
+ arguments de constructeur sont identiques. Les troisième et quatrième objets
+ utiliseront chacun leur propre client. Au total, trois clients seront créés
+ et le processus PHP exécutant ce script ouvrira deux connexions à
+ 127.0.0.1 et une connexion à chacun de
+ rs1.example.com et rs2.example.com.
+ Si l'extension découvre des membres supplémentaires de l'ensemble de réplicas
+ après avoir émis des commandes hello, elle ouvrira des
+ connexions supplémentaires à ces serveurs également.
+
+
+
+ Si les mêmes connexions sont réutilisées par le même processus PHP, les trois
+ clients seront réutilisés et aucune nouvelle connexion ne sera établie. En
+ fonction de la durée écoulée depuis la dernière requête servie, l'extension
+ peut avoir besoin d'émettre des commandes hello supplémentaires
+ pour mettre à jour sa vue des topologies.
+
+
+
+
+ Persistance des sockets (versions PHP avant 1.2.0)
+
+
+ Les versions de l'extension avant 1.2.0 utilisent l'API des flux PHP pour
+ les connexions de base de données, utilisant une API dans
+ libmongoc pour désigner des
+ gestionnaires personnalisés pour la communication par socket ; cependant, un
+ nouveau client libmongoc est créé pour chaque
+ MongoDB\Driver\Manager. En conséquence, l'extension
+ persiste les connexions de base de données individuelles mais pas l'état
+ d'authentification ou les informations de topologie. Cela signifie que
+ l'extension doit émettre des commandes au début de chaque requête pour
+ s'authentifier et
+ découvrir la topologie du serveur.
+
+
+
+ Les connexions de base de données sont persistées par un hachage dérivé de
+ l'hôte du serveur, du port et de la chaîne URI utilisée pour construire le
+ MongoDB\Driver\Manager. Les options du tableau du
+ constructeur ne sont pas incluses dans ce hachage.
+
+
+
+
+ Les version de l'extension >= 1.1.8 et < 1.2.0 ne persistent pas les
+ sockets pour les connexions SSL. Voir
+ PHPC-720 pour plus
+ d'informations.
+
+
+
+
+ Malgré ses lacunes avec les connexions SSL persistantes et les informations
+ de topologie, cette version de l'extension supporte toutes les
+ options de contexte SSL puisqu'elle
+ utilise l'API des flux PHP.
+
+
+
+
+
+ Persister des données
+ Sérialisation and déserialisation des variables PHP dans MongoDB
+
+
+ Ce document explique comment les structures composées (c'est-à-dire les
+ documents, les tableaux et les objets) sont converties entre les valeurs BSON et PHP.
+
+
+
+ Sérialisation en BSON
+
+
+ Tableaux
+
+
+ Si un tableau est un tableau compact — c'est-à-dire un
+ tableau vide ou les clés commencent à 0 et sont séquentielles sans trous :
+ tableau BSON.
+
+
+
+ Si le tableau n'est pas compact — c'est-à-dire qu'il a des clés
+ associatives (chaînes), que les clés ne commencent pas à 0, ou qu'il y a
+ des trous : objet BSON.
+
+
+
+ Un document de niveau supérieur (racine), toujours
+ sérialisé en tant que document BSON.
+
+
+
+ Exemples
+
+
+ Ces exemples sérialisent en tant que tableau BSON :
+
+
+
+ [ 8, 5, 2, 3 ]
+[ 0 => 4, 1 => 9 ] => [ 4, 9 ]
+]]>
+
+
+
+ Ces exemples sérialisent en tant qu'objet BSON :
+
+
+
+ 1, 2 => 8, 3 => 12 ] => { "0" : 1, "2" : 8, "3" : 12 }
+[ "foo" => 42 ] => { "foo" : 42 }
+[ 1 => 9, 0 => 10 ] => { "1" : 9, "0" : 10 }
+]]>
+
+
+
+ Il est à noter que les cinq exemples sont des extraits
+ d'un document complet, et ne représentent qu'une valeur
+ à l'intérieur d'un document.
+
+
+
+
+
+
+ Objets
+
+
+ Si un objet est de la classe stdClass, sérialiser
+ en tant que document BSON.
+
+
+
+ Si un objet est une classe supportée qui implémente
+ MongoDB\BSON\Type, alors utiliser la logique
+ de sérialisation BSON pour ce type spécifique.
+ Les instances de MongoDB\BSON\Type (à
+ l'exclusion de MongoDB\BSON\Serializable)
+ ne peuvent être sérialisées que comme valeur de champ de document. Tenter
+ de sérialiser un tel objet en tant que document racine lèvera une
+ MongoDB\Driver\Exception\UnexpectedValueException.
+
+
+
+ Si un objet est d'une classe inconnue implémentant l'interface
+ MongoDB\BSON\Type, alors une
+ MongoDB\Driver\Exception\UnexpectedValueException est lancée.
+
+
+
+ Si un objet est d'une classe autre, sans implémenter une interface spéciale,
+ sérialiser en tant que document BSON. Garder seulement
+ les propriétés public, et ignorer les propriétés
+ protected et private.
+
+
+
+ Si un objet est d'une classe qui implémente
+ MongoDB\BSON\Serializable, appeler
+ MongoDB\BSON\Serializable::bsonSerialize et
+ utiliser le tableau ou stdClass retourné pour
+ sérialiser en tant que document BSON ou tableau. Le type BSON sera
+ déterminé par les règles suivantes :
+
+
+
+
+
+ Les documents racines doivent être sérialisés en tant que
+ document BSON.
+
+
+
+
+ Les objets MongoDB\BSON\Persistable doivent
+ être sérialisés en tant que document BSON.
+
+
+
+
+ Si MongoDB\BSON\Serializable::bsonSerialize
+ retourne un tableau compact, sérialiser en tant que tableau BSON.
+
+
+
+
+ Si MongoDB\BSON\Serializable::bsonSerialize
+ retourne un tableau non-compact ou stdClass,
+ sérialiser en tant qu'objet BSON.
+
+
+
+
+ Si MongoDB\BSON\Serializable::bsonSerialize
+ ne retourne pas un tableau ou stdClass, lance
+ une exception
+ MongoDB\Driver\Exception\UnexpectedValueException.
+
+
+
+
+
+
+ Si un objet est d'une classe qui implémente l'interface
+ MongoDB\BSON\Persistable (qui implique
+ MongoDB\BSON\Serializable), obtenir les
+ propriétés de manière similaire aux paragraphes précédents, mais
+ aussi ajouter une propriété
+ __pclass en tant que valeur binaire, avec un sous-type
+ 0x80 et des données portant le nom de la classe
+ entièrement qualifié de l'objet qui est sérialisé.
+
+
+
+ La propriété __pclass est ajoutée au tableau ou à
+ l'objet retourné par
+ MongoDB\BSON\Serializable::bsonSerialize, ce qui
+ signifie qu'elle écrasera toute clé/propriété __pclass
+ dans la valeur de retour de
+ MongoDB\BSON\Serializable::bsonSerialize. Si vous
+ voulez éviter ce comportement et définir votre propre valeur
+ __pclass,
+ vous ne devez pas implémenter
+ MongoDB\BSON\Persistable et devriez plutôt
+ implémenter
+ MongoDB\BSON\Serializable directement.
+
+
+
+ Exemples
+
+
+ {"foo": 42}
+
+class MyClass
+{
+ public $foo = 42;
+ protected $prot = 'wine';
+ private $fpr = 'cheese';
+} // => {"foo": 42}
+
+class AnotherClass1 implements MongoDB\BSON\Serializable
+{
+ public $foo = 42;
+ protected $prot = 'wine';
+ private $fpr = 'cheese';
+
+ public function bsonSerialize(): array
+ {
+ return ['foo' => $this->foo, 'prot' => $this->prot];
+ }
+} // => {"foo": 42, "prot": "wine"}
+
+class AnotherClass2 implements MongoDB\BSON\Serializable
+{
+ public $foo = 42;
+
+ public function bsonSerialize(): self
+ {
+ return $this;
+ }
+} // => MongoDB\Driver\Exception\UnexpectedValueException("bsonSerialize() did not return an array or stdClass")
+
+class AnotherClass3 implements MongoDB\BSON\Serializable
+{
+ private $elements = ['foo', 'bar'];
+
+ public function bsonSerialize(): array
+ {
+ return $this->elements;
+ }
+} // => {"0": "foo", "1": "bar"}
+
+/**
+ * Nesting Serializable classes
+ */
+
+class AnotherClass4 implements MongoDB\BSON\Serializable
+{
+ private $elements = [0 => 'foo', 2 => 'bar'];
+
+ public function bsonSerialize(): array
+ {
+ return $this->elements;
+ }
+} // => {"0": "foo", "2": "bar"}
+
+class ContainerClass1 implements MongoDB\BSON\Serializable
+{
+ public $things;
+
+ public function __construct()
+ {
+ $this->things = new AnotherClass4();
+ }
+
+ function bsonSerialize(): array
+ {
+ return ['things' => $this->things];
+ }
+} // => {"things": {"0": "foo", "2": "bar"}}
+
+
+class AnotherClass5 implements MongoDB\BSON\Serializable
+{
+ private $elements = [0 => 'foo', 2 => 'bar'];
+
+ public function bsonSerialize(): array
+ {
+ return array_values($this->elements);
+ }
+} // => {"0": "foo", "1": "bar"} en tant que classe racine
+ // ["foo", "bar"] en tant que valeur imbriquée
+
+class ContainerClass2 implements MongoDB\BSON\Serializable
+{
+ public $things;
+
+ public function __construct()
+ {
+ $this->things = new AnotherClass5();
+ }
+
+ public function bsonSerialize(): array
+ {
+ return ['things' => $this->things];
+ }
+} // => {"things": ["foo", "bar"]}
+
+
+class AnotherClass6 implements MongoDB\BSON\Serializable
+{
+ private $elements = ['foo', 'bar'];
+
+ function bsonSerialize(): object
+ {
+ return (object) $this->elements;
+ }
+} // => {"0": "foo", "1": "bar"}
+
+class ContainerClass3 implements MongoDB\BSON\Serializable
+{
+ public $things;
+
+ public function __construct()
+ {
+ $this->things = new AnotherClass6();
+ }
+
+ public function bsonSerialize(): array
+ {
+ return ['things' => $this->things];
+ }
+} // => {"things": {"0": "foo", "1": "bar"}}
+
+class UpperClass implements MongoDB\BSON\Persistable
+{
+ public $foo = 42;
+ protected $prot = 'wine';
+ private $fpr = 'cheese';
+
+ private $data;
+
+ public function bsonUnserialize(array $data): void
+ {
+ $this->data = $data;
+ }
+
+ public function bsonSerialize(): array
+ {
+ return ['foo' => $this->foo, 'prot' => $this->prot];
+ }
+} // => {"foo": 42, "prot": "wine", "__pclass": {"$type": "80", "$binary": "VXBwZXJDbGFzcw=="}}
+
+?>
+]]>
+
+
+
+
+
+
+ Deserialization from BSON
+
+ &mongodb.warning.duplicate-keys;
+
+
+ L'extension mongodb désérialise les documents BSON
+ et les tableaux BSON en tant que tableaux PHP. Tant que les tableaux PHP sont
+ pratiques à utiliser, ce comportement était problématique car différents
+ types BSON pouvaient être désérialisés en la même valeur PHP (par exemple
+ {"0": "foo"} et ["foo"]) et rendait
+ impossible d'inférer le type BSON original. Par défaut, l'extension
+ mongodb adresse cette préoccupation en s'assurant que les
+ tableaux BSON et les documents BSON sont convertis en tableaux et objets PHP,
+ respectivement.
+
+
+ Pour les types composés, il existe trois types de données :
+
+
+
+
+
+ root
+
+
+ réfère à un document BSON de niveau supérieur seulement
+
+
+
+
+ document
+
+
+ réfère à des documents BSON imbriqués seulement
+
+
+
+
+ array
+
+
+ réfère à un tableau BSON
+
+
+
+
+
+
+
+ A part les trois types collectifs, il est aussi possible de configurer des
+ champs spécifiques dans votre document pour mapper les types de données
+ mentionnés ci-dessous. Par exemple, le type de carte suivant vous permet de
+ mapper chaque document intégré dans un tableau "addresses"
+ à une classe Addresset chaque
+ champ "city" dans ces documents d'adresse intégrés à une
+ classe City:
+
+
+ [
+ 'addresses.$' => 'MyProject\Address',
+ 'addresses.$.city' => 'MyProject\City',
+ ],
+]
+]]>
+
+
+
+
+ Chacun de ces trois types de données, ainsi que les mappages spécifiques
+ aux champs, peuvent être mappés contre différents types PHP. Les valeurs de
+ mappage possibles sont:
+
+
+
+
+
+ non défini ou NULL (par défaut)
+
+
+
+
+
+ Un tableau BSON sera désérialisé en un array PHP.
+
+
+
+
+ Un document BSON (racine ou imbriqué) sans propriété
+ __pclass
+
+
+ Une propriété __pclass n'est considérée comme existante que si
+ une propriété portant ce nom existe, et qu'elle est une valeur
+ binaire, et que le sous-type de la valeur binaire est 0x80. Si
+ une de ces trois conditions n'est pas remplie, la propriété
+ __pclass n'existe pas et doit être traitée comme toute autre
+ propriété normale.
+
+
+ devient un objet stdClass, avec chaque clé de document
+ BSON définie comme une propriété de stdClass
+ publique.
+
+
+
+
+ Un document BSON (racine ou imbriqué) avec une propriété
+ __pclass devient un objet PHP de la classe
+ nommée par la propriété __pclass.
+
+
+ Si la classe nommée implémente l'interface
+ MongoDB\BSON\Persistable, alors les
+ propriétés du document BSON, y compris la propriété
+ __pclass, sont envoyées sous forme de tableau
+ associatif à la fonction
+ MongoDB\BSON\Unserializable::bsonUnserialize
+ pour initialiser les propriétés de l'objet.
+
+
+ Si la classe nommée n'existe pas ou n'implémente pas
+ l'interface MongoDB\BSON\Persistable,
+ stdClass sera
+ utilisé et chaque clé de document BSON (y compris __pclass)
+ sera définie comme une propriété publique de stdClass.
+
+
+ La fonctionnalité __pclass repose sur le fait
+ que la propriété soit partie d'un document MongoDB récupéré. Si vous
+ utilisez une
+ projection
+ lors de la recherche de documents, vous devez inclure le champ
+ __pclass dans la projection pour que cette
+ fonctionnalité fonctionne.
+
+
+
+
+
+
+
+
+ "array"
+
+
+ Transforme un tableau BSON en un array PHP. Il n'y aura
+ pas de traitement spécial d'une propriété __pclass
+ mais elle peut être définie comme un élément dans le tableau retourné
+ si elle était présente dans le document BSON.
+
+
+
+
+
+ "object" ou "stdClass"
+
+
+ Transforme un tableau BSON ou un document BSON en un objet
+ stdClass. Il n'y aura pas de traitement spécial d'une
+ propriété __pclass
+ mais elle peut être définie comme une propriété publique dans l'objet
+ retourné si elle était présente dans le document BSON.
+
+
+
+
+
+ "bson"
+
+
+ Transforme un tableau BSON en un MongoDB\BSON\PackedArray
+ et un document BSON en un MongoDB\BSON\Document,
+ indépendamment du fait que le document BSON ait une propriété
+ __pclass.
+
+
+
+ La valeur bson n'est disponible que pour les trois
+ types racines, et non dans les mappages spécifiques aux champs.
+
+
+
+
+
+
+ toues les autres chaînes de caractères
+
+
+ Définit le nom de la classe à laquelle le document BSON doit être
+ désérialisé. Pour les documents BSON qui incluent des propriétés
+ __pclass,
+ cette classe prendra la priorité.
+
+
+
+ Si la classe nommée n'existe pas ou n'implémente pas
+ l'interface MongoDB\BSON\Unserializable,
+ une exception
+ MongoDB\Driver\Exception\InvalidArgumentException
+ est lancée.
+
+
+
+ Si l'objet BSON a une propriété __pclass et que
+ cette classe existe et implémente
+ MongoDB\BSON\Persistable, elle prendra
+ le pas sur la classe fournie dans la carte de type.
+
+
+
+ Les propriétés du document BSON, y compris la propriété
+ __pclass,
+ seront envoyées sous forme de tableau associatif à la fonction
+ MongoDB\BSON\Unserializable::bsonUnserialize
+ pour initialiser les propriétés de l'objet.
+
+
+
+
+
+
+
+ TypeMaps
+
+
+ Les TypeMaps peuvent être définis via la méthode
+ MongoDB\Driver\Cursor::setTypeMap sur un objet
+ MongoDB\Driver\Cursor, ou l'argument
+ $typeMap de
+ MongoDB\BSON\toPHP,
+ MongoDB\BSON\Document::toPHP, et
+ MongoDB\BSON\PackedArray::toPHP. Chacune des trois
+ classes (racine, document, et
+ array) peut être définie individuellement, en plus des
+ types spécifiques aux champs.
+
+
+
+ Si la valeur dans le TypeMap est NULL, cela signifie la même
+ chose que la valeur par défaut pour cet élément.
+
+
+
+
+ Exemples
+
+
+ Ces exemples utilisent les classes suivantes:
+
+
+
+
+
+ MyClass
+
+
+ qui n'implémente aucune interface
+
+
+
+
+ YourClass
+
+
+ qui implémente
+ MongoDB\BSON\Unserializable
+
+
+
+
+ OurClass
+
+
+ qui implémente
+ MongoDB\BSON\Persistable
+
+
+
+
+ TheirClass
+
+
+ qui étends OurClass
+
+
+
+
+
+
+
+ La méthode MongoDB\BSON\Unserializable::bsonUnserialize
+ de YourClass, OurClass, TheirClass itère sur le tableau et définit les
+ propriétés sans modifications. Elle ajoute aussi la
+ propriété $unserialized à &true;:
+
+
+ $value )
+ {
+ $this->$k = $value;
+ }
+ $this->unserialized = true;
+}
+]]>
+
+
+
+
+
+ stdClass { $foo => 'yes', $bar => false }
+
+{ "foo": "no", "array" : [ 5, 6 ] }
+ -> stdClass { $foo => 'no', $array => [ 5, 6 ] }
+
+{ "foo": "no", "obj" : { "embedded" : 3.14 } }
+ -> stdClass { $foo => 'no', $obj => stdClass { $embedded => 3.14 } }
+
+{ "foo": "yes", "__pclass": "MyClass" }
+ -> stdClass { $foo => 'yes', $__pclass => 'MyClass' }
+
+{ "foo": "yes", "__pclass": { "$type" : "80", "$binary" : "MyClass" } }
+ -> stdClass { $foo => 'yes', $__pclass => Binary(0x80, 'MyClass') }
+
+{ "foo": "yes", "__pclass": { "$type" : "80", "$binary" : "YourClass") }
+ -> stdClass { $foo => 'yes', $__pclass => Binary(0x80, 'YourClass') }
+
+{ "foo": "yes", "__pclass": { "$type" : "80", "$binary" : "OurClass") }
+ -> OurClass { $foo => 'yes', $__pclass => Binary(0x80, 'OurClass'), $unserialized => true }
+
+{ "foo": "yes", "__pclass": { "$type" : "44", "$binary" : "YourClass") }
+ -> stdClass { $foo => 'yes', $__pclass => Binary(0x44, 'YourClass') }
+]]>
+
+
+
+
+
+ "MissingClass" ] */
+{ "foo": "yes" }
+ -> MongoDB\Driver\Exception\InvalidArgumentException("MissingClass does not exist")
+
+/* typemap: [ "root" => "MyClass" ] */
+{ "foo": "yes", "__pclass" : { "$type": "80", "$binary": "MyClass" } }
+ -> MongoDB\Driver\Exception\InvalidArgumentException("MyClass does not implement Unserializable interface")
+
+/* typemap: [ "root" => "MongoDB\BSON\Unserializable" ] */
+{ "foo": "yes" }
+ -> MongoDB\Driver\Exception\InvalidArgumentException("Unserializable is not a concrete class")
+
+/* typemap: [ "root" => "YourClass" ] */
+{ "foo": "yes", "__pclass" : { "$type": "80", "$binary": "MongoDB\BSON\Unserializable" } }
+ -> YourClass { $foo => "yes", $__pclass => Binary(0x80, "MongoDB\BSON\Unserializable"), $unserialized => true }
+
+/* typemap: [ "root" => "YourClass" ] */
+{ "foo": "yes", "__pclass" : { "$type": "80", "$binary": "MyClass" } }
+ -> YourClass { $foo => "yes", $__pclass => Binary(0x80, "MyClass"), $unserialized => true }
+
+/* typemap: [ "root" => "YourClass" ] */
+{ "foo": "yes", "__pclass" : { "$type": "80", "$binary": "OurClass" } }
+ -> OurClass { $foo => "yes", $__pclass => Binary(0x80, "OurClass"), $unserialized => true }
+
+/* typemap: [ "root" => "YourClass" ] */
+{ "foo": "yes", "__pclass" : { "$type": "80", "$binary": "TheirClass" } }
+ -> TheirClass { $foo => "yes", $__pclass => Binary(0x80, "TheirClass"), $unserialized => true }
+
+/* typemap: [ "root" => "OurClass" ] */
+{ foo: "yes", "__pclass" : { "$type": "80", "$binary": "TheirClass" } }
+ -> TheirClass { $foo => "yes", $__pclass => Binary(0x80, "TheirClass"), $unserialized => true }
+]]>
+
+
+
+
+
+ 'YourClass' ] */
+{ foo: "yes", "__pclass" : { "$type": "80", "$binary": "YourClass" } }
+ -> YourClass { $foo => 'yes', $__pclass => Binary(0x80, 'YourClass'), $unserialized => true }
+]]>
+
+
+
+
+
+ 'array', 'document' => 'array' ] */
+{ "foo": "yes", "bar" : false }
+ -> [ "foo" => "yes", "bar" => false ]
+
+{ "foo": "no", "array" : [ 5, 6 ] }
+ -> [ "foo" => "no", "array" => [ 5, 6 ] ]
+
+{ "foo": "no", "obj" : { "embedded" : 3.14 } }
+ -> [ "foo" => "no", "obj" => [ "embedded => 3.14 ] ]
+
+{ "foo": "yes", "__pclass": "MyClass" }
+ -> [ "foo" => "yes", "__pclass" => "MyClass" ]
+
+{ "foo": "yes", "__pclass" : { "$type": "80", "$binary": "MyClass" } }
+ -> [ "foo" => "yes", "__pclass" => Binary(0x80, "MyClass") ]
+
+{ "foo": "yes", "__pclass" : { "$type": "80", "$binary": "OurClass" } }
+ -> [ "foo" => "yes", "__pclass" => Binary(0x80, "OurClass") ]
+]]>
+
+
+
+
+
+ 'object', 'document' => 'object' ] */
+{ "foo": "yes", "__pclass": { "$type": "80", "$binary": "MyClass" } }
+ -> stdClass { $foo => "yes", "__pclass" => Binary(0x80, "MyClass") }
+]]>
+
+
+
+
+
+
+
+
+
+
From 790bca6b29ecc414f4323560732a200b328df91b Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:40:26 +0100
Subject: [PATCH 40/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/mongodb/book.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/mongodb/book.xml | 138 ++++++++++++++++++-------------------
1 file changed, 69 insertions(+), 69 deletions(-)
diff --git a/reference/mongodb/book.xml b/reference/mongodb/book.xml
index 234f438733..5904c37d7a 100644
--- a/reference/mongodb/book.xml
+++ b/reference/mongodb/book.xml
@@ -1,69 +1,69 @@
-
-
-
-
-
- L'extension MongoDB
- MongoDB
-
-
-
-
- Cette extension est développée au-dessus des bibliothèques
- libmongoc et
- libbson.
- Elle fournit une API minimale pour les fonctionnalités de base du pilote :
- commandes,
- requêtes,
- écritures,
- gestion de connexion,
- et serialization BSON.
-
-
- Les bibliothèques PHP côté utilisateur qui dépendent de cette extension
- peuvent fournir des API de plus haut niveau, telles que des constructeurs
- de requêtes, des méthodes d'aide pour les commandes individuelles, et
- GridFS. Les développeurs d'applications devraient envisager d'utiliser
- cette extension en conjonction avec la
- bibliothèque MongoDB PHP,
- qui implémente les mêmes API de plus haut niveau que l'on trouve dans les
- pilotes MongoDB pour d'autres langages. Cette séparation des préoccupations
- permet à l'extension de se concentrer sur les fonctionnalités essentielles
- pour lesquelles une implémentation d'extension est primordiale pour les
- performances.
-
-
-
-
- &reference.mongodb.setup;
- &reference.mongodb.constants;
- &reference.mongodb.tutorial;
- &reference.mongodb.architecture;
- &reference.mongodb.security;
-
- &reference.mongodb.mongodb;
- &reference.mongodb.bson;
- &reference.mongodb.monitoring;
- &reference.mongodb.exceptions;
-
-
-
+
+
+
+
+
+ L'extension MongoDB
+ MongoDB
+
+
+
+
+ Cette extension est développée au-dessus des bibliothèques
+ libmongoc et
+ libbson.
+ Elle fournit une API minimale pour les fonctionnalités de base du pilote :
+ commandes,
+ requêtes,
+ écritures,
+ gestion de connexion,
+ et serialization BSON.
+
+
+ Les bibliothèques PHP côté utilisateur qui dépendent de cette extension
+ peuvent fournir des API de plus haut niveau, telles que des constructeurs
+ de requêtes, des méthodes d'aide pour les commandes individuelles, et
+ GridFS. Les développeurs d'applications devraient envisager d'utiliser
+ cette extension en conjonction avec la
+ bibliothèque MongoDB PHP,
+ qui implémente les mêmes API de plus haut niveau que l'on trouve dans les
+ pilotes MongoDB pour d'autres langages. Cette séparation des préoccupations
+ permet à l'extension de se concentrer sur les fonctionnalités essentielles
+ pour lesquelles une implémentation d'extension est primordiale pour les
+ performances.
+
+
+
+
+ &reference.mongodb.setup;
+ &reference.mongodb.constants;
+ &reference.mongodb.tutorial;
+ &reference.mongodb.architecture;
+ &reference.mongodb.security;
+
+ &reference.mongodb.mongodb;
+ &reference.mongodb.bson;
+ &reference.mongodb.monitoring;
+ &reference.mongodb.exceptions;
+
+
+
From 1d392383f177bfdea9289054a5313d2d7a21626f Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:40:27 +0100
Subject: [PATCH 41/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/mongodb/configure.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/mongodb/configure.xml | 664 ++++++++++++++++----------------
1 file changed, 332 insertions(+), 332 deletions(-)
diff --git a/reference/mongodb/configure.xml b/reference/mongodb/configure.xml
index 2a3fd7a4b7..39d614cd48 100644
--- a/reference/mongodb/configure.xml
+++ b/reference/mongodb/configure.xml
@@ -1,332 +1,332 @@
-
-
-
-
- &reftitle.install;
-
-
- Installer l'extension de MongoDB PHP avec PIE
-
- &pecl.moving.to.pie;
-
-
- Pour installer l'extension MongoDB avec PIE, exécutez la commande suivante :
-
-
-
-
-
-
-
-
-
- Installe l'extension de MongoDB PHP avec PECL
-
-
- &pecl.info;
- &url.pecl.package;mongodb
-
-
-
- Linux, Unix et les utilisateurs de macOS peuvent exécuter la commande suivante pour
- installer l'extension :
-
-
-
-
-
-
- Sur les systèmes avec plusieurs versions de PHP installées (par exemple, macOS par défaut,
- Homebrew, XAMPP), chaque version de PHP
- aura sa propre commande pecl
- et fichier &php.ini;. De plus, chaque environnement PHP (par exemple
- CLI, web) peut utiliser des fichiers &php.ini; séparés.
-
-
-
- Depuis la version 1.17.0 de l'extension, PECL demandera diverses options de
- configurations. Pour installer l'extension avec les options par défaut
- dans un script non interactif, une entrée vide peut être envoyée à
- pecl install en utilisant la commande yes :
-
-
-
-
-
-
- Une liste complète des options configure supportées peut être
- trouvée dans le fichier package.xml inclus dans le paquet PECL.
- Pour installer l'extension avec des options de configurations spécifiques
- dans un script non interactif, l'option
- --configureoptions pour
- pecl install peut être utilisée :
-
-
-
-
-
-
- Par défaut l'installation de l'extension via PECL utilisera les versions incluses de
- libbson,
- libmongoc, et
- libmongocrypt et essayera automatiquement
- de les configurer.
-
-
-
-
- Si le processus de construction échoue à trouver une bibliothèque SSL, vérifiez que les
- paquets de développement (par exemple libssl-dev) et
- pkg-config sont tous deux
- installés. Si cela ne résout pas le problème, envisagez d'utiliser le
- processus
- d'installation manuel.
-
-
-
-
- Pour finir, ajoutez la ligne suivante au fichier &php.ini; pour chaque environnement
- qui aura besoin d'utiliser l'extension :
-
-
-
-
-
-
-
- Installer l'extension de MongoDB PHP sur macOS avec Homebrew
-
-
- Homebrew 1.5.0
- a déprécié le tap Homebrew/php
- et a supprimé les formules pour les extensions PHP individuelles. À l'avenir, les utilisateurs
- de macOS sont invités à installer la formule
- php et à suivre les instructions
- d'installation standard de PECL
- en utilisant la commande pecl
- fournie par l'installation PHP Homebrew.
-
-
- Sinon, le
- tap shivammathur/extensions
- fourni des formules pour les extensions PHP individuelles. Par exemple, pour installer
- l'extension pour PHP 8.4, exécutez :
-
-
-
- Il est a noter que seule la dernière version de l'extension est disponible dans brew.
-
-
- Installer les dépendances requises
-
- Pour garantir que le support SSL peut être configuré correctement, assurez-vous que les
- formules openssl et pkgconf sont
- installées. Si l'un de ces paquets est manquant, l'extension sera compilée
- avec Secure Transport, ce qui peut entraîner des problèmes de compatibilité.
-
-
-
-
-
- Installer l'extension de MongoDB PHP sur Windows
-
-
- Les binaires précompilés sont attachés aux
- versions Github
- du projet. Les archives sont publiées pour diverses combinaisons de version PHP,
- de sécurité des threads (TS ou NTS) et d'architecture (x86 ou x64). Déterminez
- l'archive correcte pour l'environnement PHP et extrayez le fichier
- php_mongodb.dll dans le répertoire d'extension ("ext" par défaut).
-
-
-
- Ajouter la ligne suivante au fichier &php.ini; pour chaque environnement qui aura
- besoin d'utiliser l'extension :
-
-
-
-
-
-
- L'échec de sélection du binaire correct entraînera une erreur lors de la tentative
- de chargement de l'extension DLL à l'exécution :
-
-
-
-
-
-
- Assurez-vous que la DLL téléchargée correspond aux propriétés d'exécution PHP
- suivantes :
-
- Version de PHP(PHP_VERSION)
- Sécurité des threads (PHP_ZTS)
- Architecture (PHP_INT_SIZE)
-
-
-
-
- En plus des constantes mentionnées ci-dessus, ces propriétés peuvent également être
- déduites de phpinfo. Si un système a plusieurs exécutions PHP
- installées, vérifiez que la sortie de phpinfo est pour
- l'environnement correct.
-
-
-
- Dépendences additionnelles DLL pour les utilisateurs Windows
-
- &ext.windows.path.dll;
- libsasl.dll
-
-
-
-
-
- Installation manuelle de l'extension de MongoDB PHP
-
-
- Pour les développeurs et les utilisateurs intéressés par les dernières corrections de bogues,
- l'extension peut être compilée à partir du dernier code source sur
- Github. Exécutez les commandes suivantes
- pour cloner et construire le projet :
-
-
-
-
-
-
- Sur les systèmes avec plusieurs versions de PHP installées (par exemple, macOS par défaut,
- Homebrew, XAMPP), chaque version de PHP
- aura sa propre commande phpize
- et fichier &php.ini;. De plus, chaque environnement PHP (par exemple
- CLI, web) peut utiliser des fichiers &php.ini; séparés.
-
-
-
- Par défaut, l'extension utilisera les versions incluses de
- libbson,
- libmongoc, et
- libmongocrypt et
- essayera de les configurer automatiquement. Si ces bibliothèques sont déjà
- installées en tant que bibliothèques système, l'extension peut les utiliser en
- spécifiant --with-mongodb-system-libs=yes comme option à
- configure.
-
-
-
- Pour une liste complète des options configure, exécutez
- configure --help.
-
-
-
- Lorsque vous utilisez les versions groupées de libmongoc et libmongocrypt,
- l'extension tentera également de sélectionner une bibliothèque SSL selon
- l'option de configuration--with-mongodb-ssl.
- À partir de la version 1.17.0 de l'extension, OpenSSL est toujours préféré par défaut.
- Auparavant, Secure Transport était le défaut sur macOS et OpenSSL était le défaut
- sur toutes les autres plates-formes.
-
-
-
-
- Si le processus de construction échoue à trouver une bibliothèque SSL, vérifiez que les
- paquets de développement (par exemple libssl-dev) et
- pkg-config sont tous deux
- installés.
-
-
-
- Lorsque vous utilisez Homebrew sur macOS, il est courant qu'un système ait
- plusieurs versions d'OpenSSL installées. Pour garantir que la version d'OpenSSL
- souhaitée est sélectionnée, la variable d'environnement PKG_CONFIG_PATH
- peut être utilisée pour contrôler le chemin de recherche de pkg-config.
-
-
-
-
- La dernière étape de construction, make install, indiquera où
- mongodb.so a été installé, similaire à :
-
-
-
-
-
-
- Assurez-vous que l'option extension_dir
- dans &php.ini; pointe vers le répertoire où mongodb.so
- a été installé. L'option peut être interrogée en exécutant :
-
- /usr/lib/php/extensions/debug-non-zts-20220829 =>
- /usr/lib/php/extensions/debug-non-zts-20220829
-]]>
-
-
-
-
- Si les répertoires diffèrent, modifiez
- extension_dir dans &php.ini; ou
- déplacez manuellement mongodb.so dans le répertoire correct.
-
-
-
- Pour finir, ajoutez la ligne suivante au fichier &php.ini; pour chaque environnement
- qui aura besoin d'utiliser l'extension :
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ &reftitle.install;
+
+
+ Installer l'extension de MongoDB PHP avec PIE
+
+ &pecl.moving.to.pie;
+
+
+ Pour installer l'extension MongoDB avec PIE, exécutez la commande suivante :
+
+
+
+
+
+
+
+
+
+ Installe l'extension de MongoDB PHP avec PECL
+
+
+ &pecl.info;
+ &url.pecl.package;mongodb
+
+
+
+ Linux, Unix et les utilisateurs de macOS peuvent exécuter la commande suivante pour
+ installer l'extension :
+
+
+
+
+
+
+ Sur les systèmes avec plusieurs versions de PHP installées (par exemple, macOS par défaut,
+ Homebrew, XAMPP), chaque version de PHP
+ aura sa propre commande pecl
+ et fichier &php.ini;. De plus, chaque environnement PHP (par exemple
+ CLI, web) peut utiliser des fichiers &php.ini; séparés.
+
+
+
+ Depuis la version 1.17.0 de l'extension, PECL demandera diverses options de
+ configurations. Pour installer l'extension avec les options par défaut
+ dans un script non interactif, une entrée vide peut être envoyée à
+ pecl install en utilisant la commande yes :
+
+
+
+
+
+
+ Une liste complète des options configure supportées peut être
+ trouvée dans le fichier package.xml inclus dans le paquet PECL.
+ Pour installer l'extension avec des options de configurations spécifiques
+ dans un script non interactif, l'option
+ --configureoptions pour
+ pecl install peut être utilisée :
+
+
+
+
+
+
+ Par défaut l'installation de l'extension via PECL utilisera les versions incluses de
+ libbson,
+ libmongoc, et
+ libmongocrypt et essayera automatiquement
+ de les configurer.
+
+
+
+
+ Si le processus de construction échoue à trouver une bibliothèque SSL, vérifiez que les
+ paquets de développement (par exemple libssl-dev) et
+ pkg-config sont tous deux
+ installés. Si cela ne résout pas le problème, envisagez d'utiliser le
+ processus
+ d'installation manuel.
+
+
+
+
+ Pour finir, ajoutez la ligne suivante au fichier &php.ini; pour chaque environnement
+ qui aura besoin d'utiliser l'extension :
+
+
+
+
+
+
+
+ Installer l'extension de MongoDB PHP sur macOS avec Homebrew
+
+
+ Homebrew 1.5.0
+ a déprécié le tap Homebrew/php
+ et a supprimé les formules pour les extensions PHP individuelles. À l'avenir, les utilisateurs
+ de macOS sont invités à installer la formule
+ php et à suivre les instructions
+ d'installation standard de PECL
+ en utilisant la commande pecl
+ fournie par l'installation PHP Homebrew.
+
+
+ Sinon, le
+ tap shivammathur/extensions
+ fourni des formules pour les extensions PHP individuelles. Par exemple, pour installer
+ l'extension pour PHP 8.4, exécutez :
+
+
+
+ Il est a noter que seule la dernière version de l'extension est disponible dans brew.
+
+
+ Installer les dépendances requises
+
+ Pour garantir que le support SSL peut être configuré correctement, assurez-vous que les
+ formules openssl et pkgconf sont
+ installées. Si l'un de ces paquets est manquant, l'extension sera compilée
+ avec Secure Transport, ce qui peut entraîner des problèmes de compatibilité.
+
+
+
+
+
+ Installer l'extension de MongoDB PHP sur Windows
+
+
+ Les binaires précompilés sont attachés aux
+ versions Github
+ du projet. Les archives sont publiées pour diverses combinaisons de version PHP,
+ de sécurité des threads (TS ou NTS) et d'architecture (x86 ou x64). Déterminez
+ l'archive correcte pour l'environnement PHP et extrayez le fichier
+ php_mongodb.dll dans le répertoire d'extension ("ext" par défaut).
+
+
+
+ Ajouter la ligne suivante au fichier &php.ini; pour chaque environnement qui aura
+ besoin d'utiliser l'extension :
+
+
+
+
+
+
+ L'échec de sélection du binaire correct entraînera une erreur lors de la tentative
+ de chargement de l'extension DLL à l'exécution :
+
+
+
+
+
+
+ Assurez-vous que la DLL téléchargée correspond aux propriétés d'exécution PHP
+ suivantes :
+
+ Version de PHP(PHP_VERSION)
+ Sécurité des threads (PHP_ZTS)
+ Architecture (PHP_INT_SIZE)
+
+
+
+
+ En plus des constantes mentionnées ci-dessus, ces propriétés peuvent également être
+ déduites de phpinfo. Si un système a plusieurs exécutions PHP
+ installées, vérifiez que la sortie de phpinfo est pour
+ l'environnement correct.
+
+
+
+ Dépendences additionnelles DLL pour les utilisateurs Windows
+
+ &ext.windows.path.dll;
+ libsasl.dll
+
+
+
+
+
+ Installation manuelle de l'extension de MongoDB PHP
+
+
+ Pour les développeurs et les utilisateurs intéressés par les dernières corrections de bogues,
+ l'extension peut être compilée à partir du dernier code source sur
+ Github. Exécutez les commandes suivantes
+ pour cloner et construire le projet :
+
+
+
+
+
+
+ Sur les systèmes avec plusieurs versions de PHP installées (par exemple, macOS par défaut,
+ Homebrew, XAMPP), chaque version de PHP
+ aura sa propre commande phpize
+ et fichier &php.ini;. De plus, chaque environnement PHP (par exemple
+ CLI, web) peut utiliser des fichiers &php.ini; séparés.
+
+
+
+ Par défaut, l'extension utilisera les versions incluses de
+ libbson,
+ libmongoc, et
+ libmongocrypt et
+ essayera de les configurer automatiquement. Si ces bibliothèques sont déjà
+ installées en tant que bibliothèques système, l'extension peut les utiliser en
+ spécifiant --with-mongodb-system-libs=yes comme option à
+ configure.
+
+
+
+ Pour une liste complète des options configure, exécutez
+ configure --help.
+
+
+
+ Lorsque vous utilisez les versions groupées de libmongoc et libmongocrypt,
+ l'extension tentera également de sélectionner une bibliothèque SSL selon
+ l'option de configuration--with-mongodb-ssl.
+ À partir de la version 1.17.0 de l'extension, OpenSSL est toujours préféré par défaut.
+ Auparavant, Secure Transport était le défaut sur macOS et OpenSSL était le défaut
+ sur toutes les autres plates-formes.
+
+
+
+
+ Si le processus de construction échoue à trouver une bibliothèque SSL, vérifiez que les
+ paquets de développement (par exemple libssl-dev) et
+ pkg-config sont tous deux
+ installés.
+
+
+
+ Lorsque vous utilisez Homebrew sur macOS, il est courant qu'un système ait
+ plusieurs versions d'OpenSSL installées. Pour garantir que la version d'OpenSSL
+ souhaitée est sélectionnée, la variable d'environnement PKG_CONFIG_PATH
+ peut être utilisée pour contrôler le chemin de recherche de pkg-config.
+
+
+
+
+ La dernière étape de construction, make install, indiquera où
+ mongodb.so a été installé, similaire à :
+
+
+
+
+
+
+ Assurez-vous que l'option extension_dir
+ dans &php.ini; pointe vers le répertoire où mongodb.so
+ a été installé. L'option peut être interrogée en exécutant :
+
+ /usr/lib/php/extensions/debug-non-zts-20220829 =>
+ /usr/lib/php/extensions/debug-non-zts-20220829
+]]>
+
+
+
+
+ Si les répertoires diffèrent, modifiez
+ extension_dir dans &php.ini; ou
+ déplacez manuellement mongodb.so dans le répertoire correct.
+
+
+
+ Pour finir, ajoutez la ligne suivante au fichier &php.ini; pour chaque environnement
+ qui aura besoin d'utiliser l'extension :
+
+
+
+
+
+
+
+
+
+
From b44e927ad2041da1ae4d5d629270e18a2488ca3f Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:40:27 +0100
Subject: [PATCH 42/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/mqseries/constants.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/mqseries/constants.xml | 136 +++++++++++++++----------------
1 file changed, 68 insertions(+), 68 deletions(-)
diff --git a/reference/mqseries/constants.xml b/reference/mqseries/constants.xml
index 6fa52cc6d6..310d963130 100644
--- a/reference/mqseries/constants.xml
+++ b/reference/mqseries/constants.xml
@@ -1,68 +1,68 @@
-
-
-
-
-
- &reftitle.constants;
-
- Pour chaque constante WebSphere MQ Constant, il y a un équivalent mqseries.
-
- Pour les définitions et utilisation, reportez-vous au
- "WebSphere MQ Application Programming Guide" et "WebSphere MQ
- Application Programming Reference red books".
-
- Le nom des constantes mqseries est fait en préfixant le nom de la constante
- WebSphere MQ avec MQSERIES_. Par exemple, les constantes
- de CompletionCode sont :
-
-
-
-
-
+
+
+
+
+
+ &reftitle.constants;
+
+ Pour chaque constante WebSphere MQ Constant, il y a un équivalent mqseries.
+
+ Pour les définitions et utilisation, reportez-vous au
+ "WebSphere MQ Application Programming Guide" et "WebSphere MQ
+ Application Programming Reference red books".
+
+ Le nom des constantes mqseries est fait en préfixant le nom de la constante
+ WebSphere MQ avec MQSERIES_. Par exemple, les constantes
+ de CompletionCode sont :
+
+
- &ini.php.constants;
-
-
- &ini.descriptions.title;
-
-
-
-
- mysqlnd.collect_statistics
- bool
-
-
-
- Active la collecte de différentes statistiques du client auxquelles vous
- pouvez accéder via mysqli_get_client_stats,
- mysqli_get_connection_stats,
- et qui sont aussi décrites
- dans la section mysqlnd de la sortie de la fonction
- phpinfo.
-
-
- Ce paramètre active toutes
- les statistiques de MySQL Native Driver
- sauf celles relatives à la gestion de la mémoire.
-
-
-
-
-
- mysqlnd.collect_memory_statistics
- bool
-
-
-
- Active la collecte de différentes statistiques concernant la mémoire
- qui peuvent être consultées via
- mysqli_get_client_stats,
- mysqli_get_connection_stats,
- et qui sont aussi montrées dans
- la section mysqlnd de la sortie de la fonction
- phpinfo.
-
-
- Ce paramètre active les statistiques de gestion de la mémoire parmi
- les statistiques fournies par MySQL
- Native Driver.
-
-
-
-
-
- mysqlnd.debugstring
-
-
-
- Journalise les communications en provenance de toute extension utilisant
- mysqlnd.
-
-
- Le format de cette directive est mysqlnd.debug =
- "option1[,parameter_option1][:option2[,parameter_option2]]".
-
-
- Les options de formatage des chaînes sont les suivantes:
-
-
-
-
- A[,file] - Ajoute la trace à un fichier. S'assure que les données sont écrites
- après chaque écriture en fermant puis rouvrant le fichier de trace (lent). Ceci
- aide à s'assurer que le fichier de traces sera complet même si l'application crash.
-
-
-
-
- a[,file] - Ajoute la trace à un fichier.
-
-
-
-
- d - Active la sortie depuis les macros DBUG_<N> pour l'état actuel.
- Peut être suivi d'une liste de mots-clés qui selectionnent la sortie seulement
- pour les macros DBUG avec ce mot-clé (filtre). Une liste vide de mot-clé
- sélectionnera tout.
-
-
-
-
- f[,functions] - Limite les actions du débogueur à une liste spécifique de fonctions.
- Une liste vide fera en sorte que toutes les fonctions seront utilisées.
-
-
-
-
- F - Marque chaque ligne de débogage du nom du fichier source contenant la macro
- causant cette sortie.
-
-
-
-
- i - Marque chaque ligne de débogage du PID.
-
-
-
-
- L - Marque chaque ligne de débogage du nom du fichier source ainsi que de la ligne
- de la macro qui cause cette sortie.
-
-
-
-
- n - Marque chaque ligne de débogage de la profondeur actuelle de la fonction.
-
-
-
-
- o[,file] - Similaire à a[,file] mais écrase les fichiers plutôt que de les
- compléter.
-
-
-
-
- O[,file] - Similaire à A[,file] mais écrase les fichiers plutôt que de les
- compléter.
-
-
-
-
- t[,N] - Active le traçage du flux de contrôle des fonctions. La profondeur maximale
- est précisée par N, par défaut 200.
-
-
-
-
- x - Active le profilage.
-
-
-
-
- m - Trace les allocations et désallocations de mémoire.
-
-
-
-
- Exemple:
-
-
-
-
-
-
- Cette caractéristique n'est disponible que pour les versions debug de PHP.
-
-
-
-
-
-
-
- mysqlnd.log_mask
- int
-
-
-
- Définit quelle requête sera historisée. Par défaut, vaut 0, ce qui signifie
- que les logs sont désactivés. Il convient de définir cette option en utilisant
- un entier, et non une constante PHP. Par exemple, une valeur de
- 48 (16 + 32) va historiser les requêtes lentes qui utilisent soit 'no good index'
- (SERVER_QUERY_NO_GOOD_INDEX_USED = 16) soit aucun index du tout (SERVER_QUERY_NO_INDEX_USED = 32).
- Une valeur de 2043 (1 + 2 + 8 + ... + 1024) historisera tout type de requêtes lentes.
-
-
- Les types sont les suivants : SERVER_STATUS_IN_TRANS=1, SERVER_STATUS_AUTOCOMMIT=2,
- SERVER_MORE_RESULTS_EXISTS=8, SERVER_QUERY_NO_GOOD_INDEX_USED=16, SERVER_QUERY_NO_INDEX_USED=32,
- SERVER_STATUS_CURSOR_EXISTS=64, SERVER_STATUS_LAST_ROW_SENT=128, SERVER_STATUS_DB_DROPPED=256,
- SERVER_STATUS_NO_BACKSLASH_ESCAPES=512, et SERVER_QUERY_WAS_SLOW=1024.
-
-
-
-
-
- mysqlnd.mempool_default_size
- int
-
-
-
- Taille par défaut de la file d'attente mémoire mysqlnd, utilisée par les jeux
- de résultats.
-
-
-
-
-
- mysqlnd.net_read_timeout
- int
-
-
-
- mysqlnd et la MySQL Client Library,
- libmysqlclient utilise des API réseau différentes.
- mysqlnd utilise les flux PHP, alors que
- libmysqlclient utilise sa propre implémentation basée sur
- le système. PHP, par défaut, utilise un timeout en lecture de 60s. Ceci
- en utilisant le paramètre de php.ini,
- default_socket_timeout. Ceci s'applique à tous les flux
- qui ne précisent pas de timeout par défaut.
- mysqlnd n'affecte aucune autre valeur et donc des requêtes
- longues peuvent se voir déconnectées après
- default_socket_timeout secondes avec comme résultat
- un message d'erreur 2006 - MySQL Server has gone
- away. La MySQL Client Library affecte un timeout par défaut de
- 24 * 3600 secondes (1 jour) et attend les autres timeout, comme ceux de
- TCP/IP. mysqlnd utilise maintenant le même timeout très long.
- La valeur est configurable via le paramètre php.ini
- mysqlnd.net_read_timeout.
- mysqlnd.net_read_timeout est donc utilisé par toute extension
- (ext/mysql, ext/mysqli,
- PDO_MySQL) qui se repose sur
- mysqlnd. mysqlnd indique aux flux PHP d'utiliser
- mysqlnd.net_read_timeout. Notez qu'il peut y avoir des différences
- subtiles entre
- MYSQL_OPT_READ_TIMEOUT de la MySQL Client Library et les flux
- PHP, par exemple MYSQL_OPT_READ_TIMEOUT est dite fonctionnelle
- uniquement avec des connexions TCP/IP et, avant MySQL 5.1.2, seulement sous Windows.
- Les flux PHP, eux, n'ont pas cette limite. Voyez la documentation des flux en cas
- de doute.
-
-
-
-
-
- mysqlnd.net_cmd_buffer_size
- int
-
-
-
- mysqlnd alloue un buffer interne pour le réseau d'une taille
- de mysqlnd.net_cmd_buffer_size (dans
- php.ini) octets pour chaque connexion. Si une commande du
- protocole MySQL Client Server, par exemple,
- COM_QUERY (requête normale), ne rentre pas dans
- le buffer, mysqlnd va agrandir celui-ci à la taille requise.
- A chaque fois que le buffer est agrandi pour une connexion,
- command_buffer_too_small va être incrémenté de un.
-
-
- Si mysqlnd doit agrandir le buffer au-delà de sa taille initiale de
- mysqlnd.net_cmd_buffer_size octets pour presque toutes les connexions,
- vous devriez alors augmenter cette taille par défaut afin d'éviter les ré-allocations.
-
-
- La taille par défaut du buffer est de 4096 octets.
-
-
- La valeur peut aussi être changée au moyen de mysqli_options(link,
- MYSQLI_OPT_NET_CMD_BUFFER_SIZE, size).
-
-
-
-
-
- mysqlnd.net_read_buffer_size
- int
-
-
-
- Taille maximale du segment en lecture lors de la lecture du corps d'un
- paquet de commande MySQL. Le protocole serveur de MySQL encapsule toutes
- ses commandes dans des paquets. Les paquets consistent en un en-tête court
- suivi d'un corps contenant les infos. La taille du corps est encodée dans
- l'en-tête. mysqlnd lit le corps sous forme de segments
- de MIN(header.size, mysqlnd.net_read_buffer_size)
- octets. Si le corps d'un paquet est plus grand que
- mysqlnd.net_read_buffer_size octets,
- mysqlnd doit alors appeler read()
- plusieurs fois.
-
-
- La valeur peut aussi être changée au moyen de mysqli_options(link,
- MYSQLI_OPT_NET_READ_BUFFER_SIZE, size).
-
-
-
-
-
- mysqlnd.sha256_server_public_key
- string
-
-
-
- En rapport avec le plugin d'authentification SHA-256.
- Fichier contenant la clé publique RSA sur serveur MySQL.
-
-
- Les clients peuvent soit ommettre de définir une clé publique RSA et spécifier
- la clé via la directive de configuration PHP, ou bien, définir la clé
- au moment de l'exécution en utilisant la fonction mysqli_options.
- Si aucun fichier de clé publique RSA n'est fourni par le client, alors la clé
- sera échangé conformément à la procédure du plugin d'authentification standard
- SHA-256.
-
-
-
-
-
- mysqlnd.trace_alloc
- string
-
-
-
-
-
-
-
-
- mysqlnd.fetch_data_copy
- int
-
-
-
- Impose la copie des jeux de résultats depuis les tampons internes vers
- des variables PHP au lieu d'utiliser le mécanisme par défaut de référence
- et de copie sur écriture. Veuillez vous référer aux,
- notes d'implémentation sur la gestion de mémoire
- pour plus de détails.
-
-
- Copier les jeux de résultats au lieu d'avoir des variables PHP les référençant permet de libérer au plus tôt la mémoire occupée par les variables PHP. En fonction du code de l'API cliente, les requêtes actuelles et de la taille de leurs jeux de résultats, ceci peut réduire l'empreinte mémoire de mysqlnd.
-
-
- Ne pas activer avec PDO_MySQL. PDO_MySQL ne supporte pas encore ce mode.
-
-
- Supprimé à partir de PHP 8.1.0
-
-
-
-
-
-
-
+
+
+
+
+
+
+ &reftitle.runtime;
+ &extension.runtime;
+
+
+
+ &ini.php.constants;
+
+
+ &ini.descriptions.title;
+
+
+
+
+ mysqlnd.collect_statistics
+ bool
+
+
+
+ Active la collecte de différentes statistiques du client auxquelles vous
+ pouvez accéder via mysqli_get_client_stats,
+ mysqli_get_connection_stats,
+ et qui sont aussi décrites
+ dans la section mysqlnd de la sortie de la fonction
+ phpinfo.
+
+
+ Ce paramètre active toutes
+ les statistiques de MySQL Native Driver
+ sauf celles relatives à la gestion de la mémoire.
+
+
+
+
+
+ mysqlnd.collect_memory_statistics
+ bool
+
+
+
+ Active la collecte de différentes statistiques concernant la mémoire
+ qui peuvent être consultées via
+ mysqli_get_client_stats,
+ mysqli_get_connection_stats,
+ et qui sont aussi montrées dans
+ la section mysqlnd de la sortie de la fonction
+ phpinfo.
+
+
+ Ce paramètre active les statistiques de gestion de la mémoire parmi
+ les statistiques fournies par MySQL
+ Native Driver.
+
+
+
+
+
+ mysqlnd.debugstring
+
+
+
+ Journalise les communications en provenance de toute extension utilisant
+ mysqlnd.
+
+
+ Le format de cette directive est mysqlnd.debug =
+ "option1[,parameter_option1][:option2[,parameter_option2]]".
+
+
+ Les options de formatage des chaînes sont les suivantes:
+
+
+
+
+ A[,file] - Ajoute la trace à un fichier. S'assure que les données sont écrites
+ après chaque écriture en fermant puis rouvrant le fichier de trace (lent). Ceci
+ aide à s'assurer que le fichier de traces sera complet même si l'application crash.
+
+
+
+
+ a[,file] - Ajoute la trace à un fichier.
+
+
+
+
+ d - Active la sortie depuis les macros DBUG_<N> pour l'état actuel.
+ Peut être suivi d'une liste de mots-clés qui selectionnent la sortie seulement
+ pour les macros DBUG avec ce mot-clé (filtre). Une liste vide de mot-clé
+ sélectionnera tout.
+
+
+
+
+ f[,functions] - Limite les actions du débogueur à une liste spécifique de fonctions.
+ Une liste vide fera en sorte que toutes les fonctions seront utilisées.
+
+
+
+
+ F - Marque chaque ligne de débogage du nom du fichier source contenant la macro
+ causant cette sortie.
+
+
+
+
+ i - Marque chaque ligne de débogage du PID.
+
+
+
+
+ L - Marque chaque ligne de débogage du nom du fichier source ainsi que de la ligne
+ de la macro qui cause cette sortie.
+
+
+
+
+ n - Marque chaque ligne de débogage de la profondeur actuelle de la fonction.
+
+
+
+
+ o[,file] - Similaire à a[,file] mais écrase les fichiers plutôt que de les
+ compléter.
+
+
+
+
+ O[,file] - Similaire à A[,file] mais écrase les fichiers plutôt que de les
+ compléter.
+
+
+
+
+ t[,N] - Active le traçage du flux de contrôle des fonctions. La profondeur maximale
+ est précisée par N, par défaut 200.
+
+
+
+
+ x - Active le profilage.
+
+
+
+
+ m - Trace les allocations et désallocations de mémoire.
+
+
+
+
+ Exemple:
+
+
+
+
+
+
+ Cette caractéristique n'est disponible que pour les versions debug de PHP.
+
+
+
+
+
+
+
+ mysqlnd.log_mask
+ int
+
+
+
+ Définit quelle requête sera historisée. Par défaut, vaut 0, ce qui signifie
+ que les logs sont désactivés. Il convient de définir cette option en utilisant
+ un entier, et non une constante PHP. Par exemple, une valeur de
+ 48 (16 + 32) va historiser les requêtes lentes qui utilisent soit 'no good index'
+ (SERVER_QUERY_NO_GOOD_INDEX_USED = 16) soit aucun index du tout (SERVER_QUERY_NO_INDEX_USED = 32).
+ Une valeur de 2043 (1 + 2 + 8 + ... + 1024) historisera tout type de requêtes lentes.
+
+
+ Les types sont les suivants : SERVER_STATUS_IN_TRANS=1, SERVER_STATUS_AUTOCOMMIT=2,
+ SERVER_MORE_RESULTS_EXISTS=8, SERVER_QUERY_NO_GOOD_INDEX_USED=16, SERVER_QUERY_NO_INDEX_USED=32,
+ SERVER_STATUS_CURSOR_EXISTS=64, SERVER_STATUS_LAST_ROW_SENT=128, SERVER_STATUS_DB_DROPPED=256,
+ SERVER_STATUS_NO_BACKSLASH_ESCAPES=512, et SERVER_QUERY_WAS_SLOW=1024.
+
+
+
+
+
+ mysqlnd.mempool_default_size
+ int
+
+
+
+ Taille par défaut de la file d'attente mémoire mysqlnd, utilisée par les jeux
+ de résultats.
+
+
+
+
+
+ mysqlnd.net_read_timeout
+ int
+
+
+
+ mysqlnd et la MySQL Client Library,
+ libmysqlclient utilise des API réseau différentes.
+ mysqlnd utilise les flux PHP, alors que
+ libmysqlclient utilise sa propre implémentation basée sur
+ le système. PHP, par défaut, utilise un timeout en lecture de 60s. Ceci
+ en utilisant le paramètre de php.ini,
+ default_socket_timeout. Ceci s'applique à tous les flux
+ qui ne précisent pas de timeout par défaut.
+ mysqlnd n'affecte aucune autre valeur et donc des requêtes
+ longues peuvent se voir déconnectées après
+ default_socket_timeout secondes avec comme résultat
+ un message d'erreur 2006 - MySQL Server has gone
+ away. La MySQL Client Library affecte un timeout par défaut de
+ 24 * 3600 secondes (1 jour) et attend les autres timeout, comme ceux de
+ TCP/IP. mysqlnd utilise maintenant le même timeout très long.
+ La valeur est configurable via le paramètre php.ini
+ mysqlnd.net_read_timeout.
+ mysqlnd.net_read_timeout est donc utilisé par toute extension
+ (ext/mysql, ext/mysqli,
+ PDO_MySQL) qui se repose sur
+ mysqlnd. mysqlnd indique aux flux PHP d'utiliser
+ mysqlnd.net_read_timeout. Notez qu'il peut y avoir des différences
+ subtiles entre
+ MYSQL_OPT_READ_TIMEOUT de la MySQL Client Library et les flux
+ PHP, par exemple MYSQL_OPT_READ_TIMEOUT est dite fonctionnelle
+ uniquement avec des connexions TCP/IP et, avant MySQL 5.1.2, seulement sous Windows.
+ Les flux PHP, eux, n'ont pas cette limite. Voyez la documentation des flux en cas
+ de doute.
+
+
+
+
+
+ mysqlnd.net_cmd_buffer_size
+ int
+
+
+
+ mysqlnd alloue un buffer interne pour le réseau d'une taille
+ de mysqlnd.net_cmd_buffer_size (dans
+ php.ini) octets pour chaque connexion. Si une commande du
+ protocole MySQL Client Server, par exemple,
+ COM_QUERY (requête normale), ne rentre pas dans
+ le buffer, mysqlnd va agrandir celui-ci à la taille requise.
+ A chaque fois que le buffer est agrandi pour une connexion,
+ command_buffer_too_small va être incrémenté de un.
+
+
+ Si mysqlnd doit agrandir le buffer au-delà de sa taille initiale de
+ mysqlnd.net_cmd_buffer_size octets pour presque toutes les connexions,
+ vous devriez alors augmenter cette taille par défaut afin d'éviter les ré-allocations.
+
+
+ La taille par défaut du buffer est de 4096 octets.
+
+
+ La valeur peut aussi être changée au moyen de mysqli_options(link,
+ MYSQLI_OPT_NET_CMD_BUFFER_SIZE, size).
+
+
+
+
+
+ mysqlnd.net_read_buffer_size
+ int
+
+
+
+ Taille maximale du segment en lecture lors de la lecture du corps d'un
+ paquet de commande MySQL. Le protocole serveur de MySQL encapsule toutes
+ ses commandes dans des paquets. Les paquets consistent en un en-tête court
+ suivi d'un corps contenant les infos. La taille du corps est encodée dans
+ l'en-tête. mysqlnd lit le corps sous forme de segments
+ de MIN(header.size, mysqlnd.net_read_buffer_size)
+ octets. Si le corps d'un paquet est plus grand que
+ mysqlnd.net_read_buffer_size octets,
+ mysqlnd doit alors appeler read()
+ plusieurs fois.
+
+
+ La valeur peut aussi être changée au moyen de mysqli_options(link,
+ MYSQLI_OPT_NET_READ_BUFFER_SIZE, size).
+
+
+
+
+
+ mysqlnd.sha256_server_public_key
+ string
+
+
+
+ En rapport avec le plugin d'authentification SHA-256.
+ Fichier contenant la clé publique RSA sur serveur MySQL.
+
+
+ Les clients peuvent soit ommettre de définir une clé publique RSA et spécifier
+ la clé via la directive de configuration PHP, ou bien, définir la clé
+ au moment de l'exécution en utilisant la fonction mysqli_options.
+ Si aucun fichier de clé publique RSA n'est fourni par le client, alors la clé
+ sera échangé conformément à la procédure du plugin d'authentification standard
+ SHA-256.
+
+
+
+
+
+ mysqlnd.trace_alloc
+ string
+
+
+
+
+
+
+
+
+ mysqlnd.fetch_data_copy
+ int
+
+
+
+ Impose la copie des jeux de résultats depuis les tampons internes vers
+ des variables PHP au lieu d'utiliser le mécanisme par défaut de référence
+ et de copie sur écriture. Veuillez vous référer aux,
+ notes d'implémentation sur la gestion de mémoire
+ pour plus de détails.
+
+
+ Copier les jeux de résultats au lieu d'avoir des variables PHP les référençant permet de libérer au plus tôt la mémoire occupée par les variables PHP. En fonction du code de l'API cliente, les requêtes actuelles et de la taille de leurs jeux de résultats, ceci peut réduire l'empreinte mémoire de mysqlnd.
+
+
+ Ne pas activer avec PDO_MySQL. PDO_MySQL ne supporte pas encore ce mode.
+
+
+ Supprimé à partir de PHP 8.1.0
+
+
+
+
+
+
+
From d5e41b52e0817e60c76263a6c31e616f6ae1205b Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:40:28 +0100
Subject: [PATCH 44/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/mysqlnd/notes.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/mysqlnd/notes.xml | 76 ++++++++++++++++++-------------------
1 file changed, 38 insertions(+), 38 deletions(-)
diff --git a/reference/mysqlnd/notes.xml b/reference/mysqlnd/notes.xml
index edbb3cd9ae..5b201038e9 100644
--- a/reference/mysqlnd/notes.xml
+++ b/reference/mysqlnd/notes.xml
@@ -1,38 +1,38 @@
-
-
-
-
-
- Notes
-
- Cette section fournit une compilation de notes diverses sur l'utilisation du
- pilote natif MySQL.
-
-
- Utiliser mysqlnd signifie utiliser les flux PHP
- pour la connexion sous-jascente. Avec mysqlnd, la documentation
- des flux PHP () devrait être consultée en ce qui concerne
- les notions comme les timeouts et non pas la documentation de la bibliothèque cliente MySQL.
-
-
-
-
+
+
+
+
+
+ Notes
+
+ Cette section fournit une compilation de notes diverses sur l'utilisation du
+ pilote natif MySQL.
+
+
+ Utiliser mysqlnd signifie utiliser les flux PHP
+ pour la connexion sous-jascente. Avec mysqlnd, la documentation
+ des flux PHP () devrait être consultée en ce qui concerne
+ les notions comme les timeouts et non pas la documentation de la bibliothèque cliente MySQL.
+
+
+
+
From 3d532295046319d23caf42361c8f843094f113d9 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:40:28 +0100
Subject: [PATCH 45/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/mysqlnd/plugin.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/mysqlnd/plugin.xml | 2924 +++++++++++++++++-----------------
1 file changed, 1462 insertions(+), 1462 deletions(-)
diff --git a/reference/mysqlnd/plugin.xml b/reference/mysqlnd/plugin.xml
index 546a53385c..52bbdf5251 100644
--- a/reference/mysqlnd/plugin.xml
+++ b/reference/mysqlnd/plugin.xml
@@ -1,1462 +1,1462 @@
-
-
-
-
- API du plugin du driver natif MySQL
-
- L'API du plugin du driver natif MySQL est une fonctionnalité
- du driver natif MySQL, ou mysqlnd.
- Le plugin Mysqlnd opère sur la couche entre
- les applications PHP et le serveur MySQL. Il est comparable
- à un proxy MySQL. Un proxy MySQL opère sur une couche entre toutes
- les applications clientes MySQL, par exemple, une application PHP
- et un serveur MySQL. Le plugin Mysqlnd
- peut entreprendre des tâches typiques de proxy MySQL comme
- l'équilibrage de charge, ainsi que le suivi et l'optimisation
- des performances. En raison d'une architecture et d'une localisation
- différente, le plugin mysqlnd n'a pas tous les
- inconvénients d'un proxy MySQL. Par exemple, avec le plugin, il
- n'y a pas qu'un seul point d'échec, pas de serveur de proxy dédié
- à déployer, et pas de nouveau langage à apprendre (Lua).
-
-
- Un plugin mysqlnd peut être exécuté comme une extension
- à mysqlnd. Un plugin peut intercepter la majorité des
- fonctions mysqlnd. Les fonctions mysqlnd
- sont appelées par l'extension PHP MySQL comme
- ext/mysql, ext/mysqli, et
- PDO_MYSQL. Comme résultat, il est possible pour un
- plugin mysqlnd d'intercepter tous les appels effectués
- par ces extensions depuis une application cliente.
-
-
- Les appels aux fonctions internes mysqlnd peuvent
- également être interceptés ou remplacés. Il n'y a aucune restriction
- sur la manipulation des tables de fonctions internes mysqlnd.
- Il est possible de définir des actions pour faire que lorsque
- certaines fonctions mysqlnd sont appelées
- par l'extension qui utilise mysqlnd, l'appel
- est redirigé vers la fonction appropriée du plugin
- mysqlnd. La possibilité de manipuler les tables
- de fonctions internes mysqlnd dans ce sens permet
- un maximum de flexibilité.
-
-
- Le plugin Mysqlnd est en faite, une extension PHP,
- écrit en C, qui utilise l'API du plugin mysqlnd
- (qui est compilé dans le driver natif MySQL, mysqlnd).
- Le plugin peut être à 100% transparent pour les applications PHP. Aucune
- modification aux applications n'est nécessaire car le plugin opère
- sur une couche différente. Le plugin mysqlnd
- peut être utilisé dans une couche en dessous de mysqlnd.
-
-
- La liste suivante représente quelques applications possibles
- du plugin mysqlnd.
-
-
-
-
- L'équilibrage de charge.
-
-
-
-
- Séparation des lectures et des écritures. Un exemple de cette fonctionnalité
- est l'extension PECL/mysqlnd_ms (Maître/esclave). Cette extension sépare
- les requêtes de lecture et d'écriture pour une configuration de réplication.
-
-
-
-
- Basculement
-
-
-
-
- Round-Robin, le moins chargé
-
-
-
-
-
-
- Surveillance
-
-
-
-
- Journalisation des requêtes
-
-
-
-
- Analyse de requêtes
-
-
-
-
- Audite de requêtes. Un exemple de ceci est l'extension
- PECL/mysqlnd_sip (SQL Injection Protection). Cette extension
- inspecte les requêtes et exécute uniquement celles qui sont
- autorisées suivants des ensembles de règles.
-
-
-
-
-
-
- Performance
-
-
-
-
- La mise en cache. Un exemple de ceci est l'extension
- PECL/mysqlnd_qc (Query Cache).
-
-
-
-
- Étranglement
-
-
-
-
- Fragmentation. Un exemple de ceci est l'extension
- PECL/mysqlnd_mc (Multi Connect). Cette extension tente
- de séparer une requête SELECT en n parties, en utilisant
- des requêtes du type SELECT ... LIMIT part_1, SELECT LIMIT part_n.
- L'extension envoie les requêtes à des serveurs MySQL distincts
- et fusionne ensuite le résultat à destination du client.
-
-
-
-
-
-
- PLugins du driver natif MySQL disponibles
-
-
- Il y a déjà plusieurs plugins mysqlnd de disponible.
-
-
-
-
- PECL/mysqlnd_mc -Plugin Multi Connexion.
-
-
-
-
- PECL/mysqlnd_ms - Plugin Maître Esclave.
-
-
-
-
- PECL/mysqlnd_qc - Plugin de mise en cache de requêtes.
-
-
-
-
- PECL/mysqlnd_pscache - Plugin de mise en cache de gestionnaire
- de requêtes préparées.
-
-
-
-
- PECL/mysqlnd_sip - Plugin permettant la protection
- contre les injections SQL.
-
-
-
-
- PECL/mysqlnd_uh - Plugin de gestionnaire d'utilisateurs.
-
-
-
-
- Comparaison des plugins mysqlnd avec proxy MySQL
-
- Les plugins Mysqlnd et le proxy MySQL sont
- des technologies différentes utilisant différentes approches.
- Les deux sont des outils valides pour résoudre bon nombre
- de tâches classiques, comme l'équilibrage de charge, la surveillance,
- et l'amélioration des performances. Une importante différence est
- que le proxy MySQL fonctionne avec tous les clients MySQL alors que
- les plugins mysqlnd sont spécifiques aux
- applications PHP.
-
-
- Comme une extension PHP, un plugin mysqlnd
- doit être installé sur le serveur d'applications PHP, en plus du
- reste de PHP. Un proxy MySQL peut soit fonctionner sur le serveur
- d'applications PHP, soit être installé sur une machine dédiée pour
- gérer plusieurs serveurs d'applications PHP.
-
-
- Le déploiement d'un proxy MySQL sur un serveur d'applications
- a 2 avantages :
-
-
-
-
- Pas un seul point d'échec
-
-
-
-
- Facile à redimensionner (redimensionnement horizontal,
- redimensionnement par le client)
-
-
-
-
- Un proxy MySQL (et les plugins mysqlnd) peut
- résoudre des problèmes facilement, qui sinon, auraient dû nécessiter
- des modifications aux applications existantes.
-
-
- Cependant, un proxy MySQL a quelques désavantages :
-
-
-
-
- Un proxy MySQL est un nouveau composant, une nouvelle technologie à
- appliquer au maître et à déployer.
-
-
-
-
- Un proxy MySQL nécessite la connaissance du langage de script Lua.
-
-
-
-
- Un proxy MySQL peut être personnalisé en utilisant les langages de
- programmation C et Lua. Lua est le langage préféré pour un proxy MySQL.
- Pour la plupart des experts PHP, Lua est un nouveau langage à apprendre.
- Un plugin mysqlnd peut être écrit en C. Il est également
- possible d'écrire un plugin en PHP en utilisant
- PECL/mysqlnd_uh.
-
-
- Un proxy MySQL fonctionne comme un démon - un processus en arrière-plan.
- Un proxy MySQL peut rappeler des décisions prises antérieurement,
- vu que tous les états peuvent être conservés. Cependant, un plugin
- mysqlnd est lié au cycle de vie d'une requête PHP.
- Un proxy MySQL peut également partager des résultats calculés une seule fois
- sur plusieurs serveurs d'applications. Un plugin mysqlnd
- peut donc avoir besoin de stocker des données dans un médium persistant.
- Un autre démon peut être utilisé dans ce but, comme par exemple,
- Memcache. Ce mécanisme donne un avantage au proxy MySQL.
-
-
- Un proxy MySQL fonctionne au-dessus de la couche physique. Avec un
- proxy MySQL, vous devez analyser et effectuer du "reverse engineering"
- du protocole client serveur MySQL. Les actions sont limitées à celles
- qui peuvent être effectuées par la manipulation du protocole
- de communication. Si la couche physique change (ce qui arrive très rarement),
- les scripts du proxy MySQL peut devoir être adaptés.
-
-
- Les plugins Mysqlnd fonctionnent au-dessus de l'API C,
- reflétant ainsi les APIs client libmysqlclient.
- Cette API C est essentiellement une enveloppe du protocole Serveur Client MySQL,
- ou de la couche physique, vu qu'elle est appelée quelques fois. Vous pouvez
- intercepter tous les appels à l'API C. PHP utilise l'API C, toutefois,
- vous pouvez connecter tous les appels PHP, sans avoir besoin de programmer
- au niveau de la couche physique.
-
-
- Mysqlnd implémente la couche physique. Les plugins
- peuvent toutefois analyser, effectuer un "reverse engineering", manipuler
- et toujours remplacer le protocole de communication. Cependant, ce n'est
- généralement pas nécessaire.
-
-
- Vu que les plugins vous autorisent à créer des implémentations qui
- utilisent les 2 niveaux (API C et couche physique), ils ont plus de flexibilité
- que le proxy MySQL. Si un plugin mysqlnd est implémenté
- en utilisant l'API C, toutes les modifications ultérieures à la couche
- physique ne nécessiteront pas de modification au plugin en tant que tel.
-
-
-
- Obtenir l'API du plugin mysqlnd
-
- L'API du plugin mysqlnd est simplement une partie
- de l'extension du driver PHP Natif MySQL, ext/mysqlnd.
- Le développement de l'API du plugin mysqlnd commença
- en Décembre 2009. Il est développé comme une partie du dépôt source de PHP,
- et ainsi, est disponible depuis soit le dépôt public Git, soit depuis
- le téléchargement des sources.
-
-
- Les développeurs de plugin peuvent déterminer la version de
- mysqlnd via la variable
- MYSQLND_VERSION,
- au format mysqlnd 8.3.17,
- ou via MYSQLND_VERSION_ID, qui est un entier
- comme par exemple 50007. Les développeurs peuvent calculer le numéro
- de version comme ceci :
-
-
-
- Lors du développement, les développeurs doivent se référer
- au numéro de version mysqlnd pour des tests
- de compatibilité et de version, sachant que plusieurs
- versions de mysqlnd peuvent survenir durant
- un cycle de vie de la branche de développement de PHP.
-
-
-
- Architecture du plugin du driver natif
-
- Cette section fournit un aperçu de l'architecture du plugin
- mysqlnd.
-
-
- Aperçu du driver natif MySQL
-
-
- Avant de développer des plugins mysqlnd,
- il est utile d'avoir une connaissance minimale sur l'organisation
- de mysqlnd. Mysqlnd est composé
- des modules suivants :
-
-
- Schéma de l'organisation mysqlnd, par module
-
-
-
- Modules de statistiques
- mysqlnd_statistics.c
-
-
-
-
- Connexion
- mysqlnd.c
-
-
- Jeu de résultats
- mysqlnd_result.c
-
-
- Données méta du jeu de résultats
- mysqlnd_result_meta.c
-
-
- Requête
- mysqlnd_ps.c
-
-
- Réseau
- mysqlnd_net.c
-
-
- Couche physique
- mysqlnd_wireprotocol.c
-
-
-
-
-
- Objet C orienté paradigme
-
-
- Au niveau du code, mysqlnd utilise un masque C
- pour implémenter l'orientation de l'objet.
-
-
- En C, vous utilisez une structure (struct)
- pour représenter un objet. Les membres de cette structure
- représentent les propriétés de l'objet. Les membres de la
- structure pointant vers des fonctions représentent les méthodes.
-
-
- Contrairement aux autres langages comme C++ ou Java, il n'y a
- pas de règles fixes sur l'héritage dans les objets C orientés paradigme.
- Cependant, il y a quelques conventions qui doivent être suivies
- qui seront abordées ultérieurement.
-
-
- Le cycle de vie PHP
-
-
- Le cycle de vie de PHP comporte 2 cycles basiques :
-
-
-
-
- Le cycle de démarrage et d'arrêt du moteur PHP
-
-
-
-
- Le cycle d'une demande
-
-
-
-
- Lorsque le moteur PHP démarre, il appelle la fonction d'initialisation
- du module (MINIT) de chaque extension enregistrée. Ceci
- permet à chaque module de définir les variables et d'allouer les
- ressources qui doivent exister pour la durée de vie du processus
- correspondant au moteur PHP. Lorsque le moteur PHP s'arrête,
- il appelle la fonction d'arrêt du module (MSHUTDOWN) pour chaque extension.
-
-
- Pendant la durée de vie du moteur PHP, il recevra des demandes.
- Chaque demande constitue un autre cycle de vie. Pour chaque
- requête, le moteur PHP appellera la fonction d'initialisation
- de chaque extension. L'extension peut effectuer toutes les définitions
- de variables ainsi que les allocations de ressources nécessaires pour
- traiter la demande. Lorsque le cycle de la demande se termine, le moteur
- appelle la fonction d'arrêt (RSHUTDOWN) pour chaque extension,
- ainsi, l'extension peut lancer tout le nettoyage nécessaire.
-
-
- Comment fonctionne un plugin
-
-
- Un plugin mysqlnd fonctionne en interceptant les appels
- effectués à mysqlnd par les extensions qui utilisent
- mysqlnd. Ceci est possible en obtenant la table
- de fonction mysqlnd, en la sauvegardant, et en la
- remplaçant par une table de fonction personnalisé, qui appelle les fonctions
- du plugin.
-
-
- Le code suivant montre la façon dont la table de fonction
- mysqlnd est remplacée :
-
-
-query = MYSQLND_METHOD(my_conn_class, query);
-}
-]]>
-
-
- Les manipulations de la table de fonction de connexion doivent
- être effectuées lors de l'initialisation du module (MINIT).
- La table de fonction est une ressource globale partagée. Dans
- un environnement multithread, avec une compilation TSRM, la
- manipulation d'une ressource globale partagée lors d'un processus
- de demande entraînera la plupart du temps des conflits.
-
-
-
- N'utilisez aucune logique de taille fixe lors de la manipulation
- de la table de fonction mysqlnd : les nouvelles
- méthodes peuvent être ajoutées à la fin de la table de fonction.
- La table de fonction peut être modifiée à tout moment par la suite.
-
-
-
- Appel des méthodes parents
-
-
- Si la table de fonction originale est sauvegardée, il est toujours
- possible d'appeler les entrées de la table de fonction originale -
- les méthodes parents.
-
-
- Dans ce cas, tout comme pour Connection::stmt_init(),
- il est vital d'appeler la méthode parent avant toute autre activité
- dans la méthode dérivée.
-
-
-
-
-
- Étendre des propriétés
-
-
- Un objet mysqlnd est représenté par une structure C.
- Il n'est pas possible d'ajouter un membre à une structure C au moment
- de l'exécution. Les utilisateurs d'objets mysqlnd
- ne peuvent pas ajouter simplement des propriétés aux objets.
-
-
- Les données arbitraires (propriétés) peuvent être ajoutées aux objets
- mysqlnd en utilisant une fonction appropriée de la
- famille mysqlnd_plugin_get_plugin_<object>_data().
- Lors de l'allocation d'un objet, mysqlnd réserve
- un espace à la fin de l'objet pour accueillir un pointeur
- void * vers des données arbitraires.
- mysqlnd réserve un espace pour un pointeur
- void * par plugin.
-
-
- La table suivante montre comment calculer la position d'un pointeur
- pour un plugin spécifique :
-
-
- Calcul des pointeurs pour mysqlnd
-
-
-
- Adresse mémoire
- Contenus
-
-
-
-
- 0
- Début de la structure C de l'objet mysqlnd
-
-
- n
- Fin de la structure C de l'objet mysqlnd
-
-
- n + (m x sizeof(void*))
- void* vers les données de l'objet du m-ème plugin
-
-
-
-
-
- Si vous prévoyez de faire des sous-classes des constructeurs
- des objets mysqlnd, ce qui est autorisé,
- vous devez conserver ceci en mémoire !
-
-
- Le code suivant montre la façon dont on étend des propriétés :
-
-
-persistent);
- (*props)->query_counter = 0;
- }
- return props;
-}
-]]>
-
-
- Le développeur du plugin est responsable de la gestion de la mémoire
- associée aux données du plugin.
-
-
- L'utilisation de l'allocateur de mémoire mysqlnd
- est recommandée pour les données du plugin. Ces fonctions sont nommées
- en utilisant la convention suivante : mnd_*loc().
- L'allocateur mysqlnd a quelques fonctionnalités bien utiles,
- comme la possibilité d'utiliser un allocateur de débogage dans une compilation
- non-débogue.
-
-
- Quand et comment faire une sous-classe
-
-
-
-
- Quand faire une sous-classe ?
- Est-ce que chaque instance a sa table de fonction privée ?
- Comment faire une sous-classe ?
-
-
-
-
- Connexion (MYSQLND)
- MINIT
- Non
- mysqlnd_conn_get_methods()
-
-
- Jeu de résultats (MYSQLND_RES)
- MINIT ou après
- Oui
- mysqlnd_result_get_methods() ou méthode de l'objet de manipulation de la table de fonction
-
-
- Méta du jeu de résultats (MYSQLND_RES_METADATA)
- MINIT
- Non
- mysqlnd_result_metadata_get_methods()
-
-
- Requête (MYSQLND_STMT)
- MINIT
- Non
- mysqlnd_stmt_get_methods()
-
-
- Réseau (MYSQLND_NET)
- MINIT ou après
- Oui
- mysqlnd_net_get_methods() ou méthode de l'objet de manipulation de la table de fonction
-
-
- Couche physique (MYSQLND_PROTOCOL)
- MINIT ou après
- Oui
- mysqlnd_protocol_get_methods() ou méthode de l'objet de manipulation de la table de fonction
-
-
-
-
-
- Vous ne devez pas manipuler les tables de fonction après MINIT si
- ce n'est pas autorisé suivant la table ci-dessus.
-
-
- Quelques classes contiennent un pointeur vers une méthode de la table
- de fonction. Toutes les instances d'une telle classe partageront
- la même table de fonction. Pour éviter le chaos, en particulier
- dans les environnements threadés, ce genre de tables de fonction
- ne doit être manipulé que lors du MINIT.
-
-
- Les autres classes utilisent une copie de la table de fonction
- globale partagée. Cette copie est créée en même temps que l'objet.
- Chaque objet utilise sa propre table de fonction. Ceci vous donne
- 2 options : vous pouvez manipuler la table de fonction par défaut
- d'un objet au moment du MINIT, et vous pouvez aussi affiner des
- méthodes d'un objet sans impacter les autres instances de la même
- classe.
-
-
- L'avantage de l'approche avec une table de fonction partagée est
- la performance. Il n'est pas nécessaire de copier une table de fonction
- pour chaque objet.
-
-
- Statut du constructeur
-
-
-
- Type
- Allocation, construction, réinitialisation
- Peut-être modifié ?
- Appelant
-
-
-
-
- Connexion (MYSQLND)
- mysqlnd_init()
- Non
- mysqlnd_connect()
-
-
- Jeu de résultats(MYSQLND_RES)
-
- Allocation :
-
-
-
-
- Connection::result_init()
-
-
-
-
- Reset et ré-initialisation lors de :
-
-
-
-
- Result::use_result()
-
-
-
-
- Result::store_result
-
-
-
- Oui, mais appel du parent !
-
-
-
- Connection::list_fields()
-
-
-
-
- Statement::get_result()
-
-
-
-
- Statement::prepare() (Méta-données uniquement)
-
-
-
-
- Statement::resultMetaData()
-
-
-
-
-
- Méta du jeu de résultats (MYSQLND_RES_METADATA)
- Connection::result_meta_init()
- Oui, mais appel du parent !
- Result::read_result_metadata()
-
-
- Statement (MYSQLND_STMT)
- Connection::stmt_init()
- Oui, mais appel du parent !
- Connection::stmt_init()
-
-
- Réseau (MYSQLND_NET)
- mysqlnd_net_init()
- Non
- Connection::init()
-
-
- Couche physique (MYSQLND_PROTOCOL)
- mysqlnd_protocol_init()
- Non
- Connection::init()
-
-
-
-
-
- Il est vivement recommandé de ne pas remplacer entièrement un constructeur.
- Les constructeurs effectuent les allocations mémoires. Les allocations
- mémoires sont vitales pour l'API du plugin mysqlnd
- ainsi que pour la logique de l'objet mysqlnd. Si
- vous ne vous souciez pas des alertes et que vous insistez pour
- remplacer les constructeurs, vous devriez au moins appeler
- le constructeur parent avant de faire quoi que ce soit dans votre
- constructeur.
-
-
- Au niveau de toutes les alertes, il peut être utile de faire des
- sous-classes des constructeurs. Les constructeurs sont les endroits
- parfaits pour modifier les tables de fonction des objets avec les
- tables d'objets non partagés, comme les jeux de résultats, le
- réseau ou encore la couche physique.
-
-
- Statut du destructeur
-
-
-
- Type
- La méthode dérivée doit appeler le parent ?
- Destructeur
-
-
-
-
- Connexion
- oui, après l'exécution de la méthode
- free_contents(), end_psession()
-
-
- Jeu de résultats
- oui, après l'exécution de la méthode
- free_result()
-
-
- Méta du jeu de résultats
- oui, après l'exécution de la méthode
- free()
-
-
- Requête
- oui, après l'exécution de la méthode
- dtor(), free_stmt_content()
-
-
- Réseau
- oui, après l'exécution de la méthode
- free()
-
-
- Couche physique
- oui, après l'exécution de la méthode
- free()
-
-
-
-
-
- Les destructeurs sont les endroits parfaits pour libérer les propriétés,
- mysqlnd_plugin_get_plugin_<object>_data().
-
-
- Les destructeurs listés peuvent ne pas être les équivalents aux
- méthodes actuelles mysqlnd libérant l'objet lui-même.
- Cependant, ils sont les meilleurs endroits pour vous pour libérer
- les données de votre plugin. Tout comme les constructeurs, vous
- pouvez remplacer les méthodes entières mais ce n'est pas recommandé.
- Si plusieurs méthodes sont listées dans la table ci-dessus, vous devez
- modifier toutes les méthodes listées et libérer les données de votre
- plugin dans la méthode appelée en premier par mysqlnd.
-
-
- La méthode recommandée pour les plugins est de modifier simplement les méthodes,
- libérer votre mémoire et appeler l'implémentation du parent immédiatement après.
-
-
-
- L'API du plugin mysqlnd
-
- Voici la liste des fonctions fournies dans l'API plugin
- mysqlnd :
-
-
-
-
- mysqlnd_plugin_register()
-
-
-
-
- mysqlnd_plugin_count()
-
-
-
-
- mysqlnd_plugin_get_plugin_connection_data()
-
-
-
-
- mysqlnd_plugin_get_plugin_result_data()
-
-
-
-
- mysqlnd_plugin_get_plugin_stmt_data()
-
-
-
-
- mysqlnd_plugin_get_plugin_net_data()
-
-
-
-
- mysqlnd_plugin_get_plugin_protocol_data()
-
-
-
-
- mysqlnd_conn_get_methods()
-
-
-
-
- mysqlnd_result_get_methods()
-
-
-
-
- mysqlnd_result_meta_get_methods()
-
-
-
-
- mysqlnd_stmt_get_methods()
-
-
-
-
- mysqlnd_net_get_methods()
-
-
-
-
- mysqlnd_protocol_get_methods()
-
-
-
-
- Il n'y a pas de définition formelle de ce qu'est un plugin
- ainsi de la façon dont fonctionne un plugin.
-
-
- Les composants les plus souvent trouvés dans les mécanismes de plugin sont :
-
-
-
-
- Un gestionnaire de plugin
-
-
-
-
- Une API du plugin
-
-
-
-
- Les services applicatifs (ou modules)
-
-
-
-
- Les APIs des services applicatifs (ou APIs du module)
-
-
-
-
- Le concept d'un plugin mysqlnd utilise ces fonctionnalités,
- ainsi que d'autres joyeusetés d'architecture ouverte.
-
-
- Aucune restriction
-
-
- Un plugin a un accès total aux travaux internes de
- mysqlnd. Il n'y a aucune limite de sécurité
- ou de restrictions. Tout peut être écrasé pour implémenter des
- algorithmes utiles ou hostiles. Il est recommandé de ne déployer
- que des plugins depuis des sources de confiance.
-
-
- Tel que discuté précédemment, les plugins peuvent utiliser librement
- des pointeurs. Ces pointeurs ne sont restreints en aucune manière,
- aussi, vous pouvez pointer vers les données d'un autre plugin.
- Une simple position arithmétique peut être utilisée pour lire
- les données d'un autre plugin.
-
-
- Il est recommandé d'écrire des plugins coopératifs, et ainsi, appeler
- toujours la méthode parent. Les plugins devraient toujours coopérer avec
- mysqlnd.
-
-
-
- Dans ce scénario, un plugin cache (ext/mysqlnd_cache) et
- un plugin de surveillance (ext/mysqlnd_monitor)
- sont chargés. Les 2 ont une sous-classe de Connection::query().
- L'enregistrement du plugin survient lors du MINIT
- en utilisant la logique évoquée précédemment. PHP appelle les extensions
- dans un ordre alphabétique par défaut. Les plugins ne sont pas au courant
- les uns les autres et ne peuvent fixer de dépendances.
-
-
- Par défaut, les plugins appellent l'implémentation du parent de la
- méthode de requête dans leur version de la méthode dérivée.
-
-
- Récapitulatif de l'extension PHP
-
-
- Voici un récapitulatif de ce qui survient lors de l'utilisation
- d'un plugin d'exemple, ext/mysqlnd_plugin,
- qui expose l'API C du plugin mysqlnd à PHP :
-
-
-
-
- Toutes les applications PHP MySQL tente d'établir une connexion
- à l'adresse 192.168.2.29
-
-
-
-
- L'application PHP utilisera ext/mysql,
- ext/mysqli ou PDO_MYSQL.
- Ces 3 extensions PHP MySQL utilisent mysqlnd pour
- établir la connexion à l'adresse 192.168.2.29.
-
-
-
-
- Mysqlnd appelle sa méthode de connexion, qui a été sous-classée
- par ext/mysqlnd_plugin.
-
-
-
-
- ext/mysqlnd_plugin appelle la méthode de l'espace utilisateur
- proxy::connect() enregistrée par l'utilisateur.
-
-
-
-
- L'espace utilisateur modifie l'hôte de connexion de 192.168.2.29
- à 127.0.0.1 et retourne la connexion établie par
- parent::connect().
-
-
-
-
- ext/mysqlnd_plugin exécute l'équivalent de
- parent::connect(127.0.0.1) en appelant la méthode
- originale de mysqlnd pour établir une connexion.
-
-
-
-
- ext/mysqlnd établit une connexion et redonne la main
- à ext/mysqlnd_plugin.
- ext/mysqlnd_plugin retourne également.
-
-
-
-
- Quelle que soit l'extension PHP MySQL utilisée par l'application,
- elle reçoit une connexion à 127.0.0.1. L'extension PHP MySQL
- redonne la main à l'application PHP. Le cycle est clos.
-
-
-
-
-
- Bien commencer la compilation d'un plugin mysqlnd
-
- Il est important de se souvenir qu'un plugin mysqlnd
- est lui-même une extension PHP.
-
-
- Le code suivant montre la structure basique d'une fonction MINIT
- utilisée dans un plugin typique mysqlnd :
-
-
-query = MYSQLND_METHOD(mysqlnd_plugin_conn, query);
- conn_m->connect = MYSQLND_METHOD(mysqlnd_plugin_conn, connect);
-}
-]]>
-
-
-
-
-
- Tâche d'analyse : depuis C vers l'espace utilisateur
-
-
-
-
-
- Process:
-
-
-
-
- PHP : l'utilisateur enregistre une fonction de rappel pour le plugin
-
-
-
-
- PHP : l'utilisateur appelle une méthode de l'API PHP MySQL pour se connecter à MySQL
-
-
-
-
- C : ext/*mysql* appelle la méthode mysqlnd
-
-
-
-
- C : mysqlnd se termine dans ext/mysqlnd_plugin
-
-
-
-
- C : ext/mysqlnd_plugin
-
-
-
- Appel de la fonction de rappel de l'espace utilisateur
-
-
-
-
- Ou la méthode originale mysqlnd, si l'espace
- utilisateur n'a pas défini de fonction de rappel
-
-
-
-
-
-
-
- Vous devez effectuer les opérations suivantes :
-
-
-
-
- Écrire une classe "mysqlnd_plugin_connection" en C
-
-
-
-
- Accepter et enregistrer l'objet proxy via
- "mysqlnd_plugin_set_conn_proxy()"
-
-
-
-
- Appeler les méthodes de proxy de l'espace utilisateur
- depuis C (optimisation - zend_interfaces.h)
-
-
-
-
- Les méthodes de l'objet de l'espace utilisateur peuvent soit être
- appelées en utilisant call_user_function(),
- soit vous pouvez opérer à un niveau en dessous du moteur Zend et
- utiliser zend_call_method().
-
-
- Optimisation : appel des méthodes depuis C en utilisant
- zend_call_method
-
-
- Le code suivant montre un prototype pour la fonction
- zend_call_method, issue de
- zend_interfaces.h.
-
-
-
-
-
- L'API Zend supporte 2 arguments. Vous pouvez en avoir besoin de plus, par
- exemple :
-
-
-
-
-
- Pour contourner ce problème, vous devrez faire une copie
- de zend_call_method() et ajouter une
- fonctionnalité pour ajouter des paramètres. Vous pouvez
- réaliser ceci en créant un jeu de macros
- MY_ZEND_CALL_METHOD_WRAPPER.
-
-
- Appel de l'espace utilisateur PHP
-
-
- Le code ci-dessous montre la méthode optimisée pour effectuer un
- appel à une fonction de l'espace utilisateur depuis C :
-
-
-
-
-
- Appel de l'espace utilisateur: arguments simples
-
-
-
-
-
- Appel de l'espace utilisateur : structures comme arguments
-
-
-
-
-
- Le premier argument de toutes les méthodes mysqlnd
- est un objet C. Par exemple, le premier argument de la méthode
- connect() est un pointeur vers MYSQLND.
- La structure MYSQLND représente un objet de connexion
- mysqlnd.
-
-
- Le pointeur de l'objet de connexion mysqlnd
- peut être comparé à un pointeur de fichier standard I/O.
- Tout comme un pointeur de fichier standard I/O, un objet de
- connexion mysqlnd doit être lié à l'espace
- utilisateur en utilisant une variable PHP de type ressource.
-
-
- Depuis C vers l'espace utilisateur, puis, retour
-
-
-
-
-
- Les utilisateurs PHP doivent pouvoir appeler l'implémentation
- du parent d'une méthode écrasée.
-
-
- Comme résultat d'un sous-classement, il est possible de
- redéfinir uniquement les méthodes sélectionnées, et vous
- pouvez choisir d'avoir des actions "pre" ou "post".
-
-
- Construction d'une classe : mysqlnd_plugin_connection::connect()
-
-
-
-
-
-
-
+
+
+
+
+ API du plugin du driver natif MySQL
+
+ L'API du plugin du driver natif MySQL est une fonctionnalité
+ du driver natif MySQL, ou mysqlnd.
+ Le plugin Mysqlnd opère sur la couche entre
+ les applications PHP et le serveur MySQL. Il est comparable
+ à un proxy MySQL. Un proxy MySQL opère sur une couche entre toutes
+ les applications clientes MySQL, par exemple, une application PHP
+ et un serveur MySQL. Le plugin Mysqlnd
+ peut entreprendre des tâches typiques de proxy MySQL comme
+ l'équilibrage de charge, ainsi que le suivi et l'optimisation
+ des performances. En raison d'une architecture et d'une localisation
+ différente, le plugin mysqlnd n'a pas tous les
+ inconvénients d'un proxy MySQL. Par exemple, avec le plugin, il
+ n'y a pas qu'un seul point d'échec, pas de serveur de proxy dédié
+ à déployer, et pas de nouveau langage à apprendre (Lua).
+
+
+ Un plugin mysqlnd peut être exécuté comme une extension
+ à mysqlnd. Un plugin peut intercepter la majorité des
+ fonctions mysqlnd. Les fonctions mysqlnd
+ sont appelées par l'extension PHP MySQL comme
+ ext/mysql, ext/mysqli, et
+ PDO_MYSQL. Comme résultat, il est possible pour un
+ plugin mysqlnd d'intercepter tous les appels effectués
+ par ces extensions depuis une application cliente.
+
+
+ Les appels aux fonctions internes mysqlnd peuvent
+ également être interceptés ou remplacés. Il n'y a aucune restriction
+ sur la manipulation des tables de fonctions internes mysqlnd.
+ Il est possible de définir des actions pour faire que lorsque
+ certaines fonctions mysqlnd sont appelées
+ par l'extension qui utilise mysqlnd, l'appel
+ est redirigé vers la fonction appropriée du plugin
+ mysqlnd. La possibilité de manipuler les tables
+ de fonctions internes mysqlnd dans ce sens permet
+ un maximum de flexibilité.
+
+
+ Le plugin Mysqlnd est en faite, une extension PHP,
+ écrit en C, qui utilise l'API du plugin mysqlnd
+ (qui est compilé dans le driver natif MySQL, mysqlnd).
+ Le plugin peut être à 100% transparent pour les applications PHP. Aucune
+ modification aux applications n'est nécessaire car le plugin opère
+ sur une couche différente. Le plugin mysqlnd
+ peut être utilisé dans une couche en dessous de mysqlnd.
+
+
+ La liste suivante représente quelques applications possibles
+ du plugin mysqlnd.
+
+
+
+
+ L'équilibrage de charge.
+
+
+
+
+ Séparation des lectures et des écritures. Un exemple de cette fonctionnalité
+ est l'extension PECL/mysqlnd_ms (Maître/esclave). Cette extension sépare
+ les requêtes de lecture et d'écriture pour une configuration de réplication.
+
+
+
+
+ Basculement
+
+
+
+
+ Round-Robin, le moins chargé
+
+
+
+
+
+
+ Surveillance
+
+
+
+
+ Journalisation des requêtes
+
+
+
+
+ Analyse de requêtes
+
+
+
+
+ Audite de requêtes. Un exemple de ceci est l'extension
+ PECL/mysqlnd_sip (SQL Injection Protection). Cette extension
+ inspecte les requêtes et exécute uniquement celles qui sont
+ autorisées suivants des ensembles de règles.
+
+
+
+
+
+
+ Performance
+
+
+
+
+ La mise en cache. Un exemple de ceci est l'extension
+ PECL/mysqlnd_qc (Query Cache).
+
+
+
+
+ Étranglement
+
+
+
+
+ Fragmentation. Un exemple de ceci est l'extension
+ PECL/mysqlnd_mc (Multi Connect). Cette extension tente
+ de séparer une requête SELECT en n parties, en utilisant
+ des requêtes du type SELECT ... LIMIT part_1, SELECT LIMIT part_n.
+ L'extension envoie les requêtes à des serveurs MySQL distincts
+ et fusionne ensuite le résultat à destination du client.
+
+
+
+
+
+
+ PLugins du driver natif MySQL disponibles
+
+
+ Il y a déjà plusieurs plugins mysqlnd de disponible.
+
+
+
+
+ PECL/mysqlnd_mc -Plugin Multi Connexion.
+
+
+
+
+ PECL/mysqlnd_ms - Plugin Maître Esclave.
+
+
+
+
+ PECL/mysqlnd_qc - Plugin de mise en cache de requêtes.
+
+
+
+
+ PECL/mysqlnd_pscache - Plugin de mise en cache de gestionnaire
+ de requêtes préparées.
+
+
+
+
+ PECL/mysqlnd_sip - Plugin permettant la protection
+ contre les injections SQL.
+
+
+
+
+ PECL/mysqlnd_uh - Plugin de gestionnaire d'utilisateurs.
+
+
+
+
+ Comparaison des plugins mysqlnd avec proxy MySQL
+
+ Les plugins Mysqlnd et le proxy MySQL sont
+ des technologies différentes utilisant différentes approches.
+ Les deux sont des outils valides pour résoudre bon nombre
+ de tâches classiques, comme l'équilibrage de charge, la surveillance,
+ et l'amélioration des performances. Une importante différence est
+ que le proxy MySQL fonctionne avec tous les clients MySQL alors que
+ les plugins mysqlnd sont spécifiques aux
+ applications PHP.
+
+
+ Comme une extension PHP, un plugin mysqlnd
+ doit être installé sur le serveur d'applications PHP, en plus du
+ reste de PHP. Un proxy MySQL peut soit fonctionner sur le serveur
+ d'applications PHP, soit être installé sur une machine dédiée pour
+ gérer plusieurs serveurs d'applications PHP.
+
+
+ Le déploiement d'un proxy MySQL sur un serveur d'applications
+ a 2 avantages :
+
+
+
+
+ Pas un seul point d'échec
+
+
+
+
+ Facile à redimensionner (redimensionnement horizontal,
+ redimensionnement par le client)
+
+
+
+
+ Un proxy MySQL (et les plugins mysqlnd) peut
+ résoudre des problèmes facilement, qui sinon, auraient dû nécessiter
+ des modifications aux applications existantes.
+
+
+ Cependant, un proxy MySQL a quelques désavantages :
+
+
+
+
+ Un proxy MySQL est un nouveau composant, une nouvelle technologie à
+ appliquer au maître et à déployer.
+
+
+
+
+ Un proxy MySQL nécessite la connaissance du langage de script Lua.
+
+
+
+
+ Un proxy MySQL peut être personnalisé en utilisant les langages de
+ programmation C et Lua. Lua est le langage préféré pour un proxy MySQL.
+ Pour la plupart des experts PHP, Lua est un nouveau langage à apprendre.
+ Un plugin mysqlnd peut être écrit en C. Il est également
+ possible d'écrire un plugin en PHP en utilisant
+ PECL/mysqlnd_uh.
+
+
+ Un proxy MySQL fonctionne comme un démon - un processus en arrière-plan.
+ Un proxy MySQL peut rappeler des décisions prises antérieurement,
+ vu que tous les états peuvent être conservés. Cependant, un plugin
+ mysqlnd est lié au cycle de vie d'une requête PHP.
+ Un proxy MySQL peut également partager des résultats calculés une seule fois
+ sur plusieurs serveurs d'applications. Un plugin mysqlnd
+ peut donc avoir besoin de stocker des données dans un médium persistant.
+ Un autre démon peut être utilisé dans ce but, comme par exemple,
+ Memcache. Ce mécanisme donne un avantage au proxy MySQL.
+
+
+ Un proxy MySQL fonctionne au-dessus de la couche physique. Avec un
+ proxy MySQL, vous devez analyser et effectuer du "reverse engineering"
+ du protocole client serveur MySQL. Les actions sont limitées à celles
+ qui peuvent être effectuées par la manipulation du protocole
+ de communication. Si la couche physique change (ce qui arrive très rarement),
+ les scripts du proxy MySQL peut devoir être adaptés.
+
+
+ Les plugins Mysqlnd fonctionnent au-dessus de l'API C,
+ reflétant ainsi les APIs client libmysqlclient.
+ Cette API C est essentiellement une enveloppe du protocole Serveur Client MySQL,
+ ou de la couche physique, vu qu'elle est appelée quelques fois. Vous pouvez
+ intercepter tous les appels à l'API C. PHP utilise l'API C, toutefois,
+ vous pouvez connecter tous les appels PHP, sans avoir besoin de programmer
+ au niveau de la couche physique.
+
+
+ Mysqlnd implémente la couche physique. Les plugins
+ peuvent toutefois analyser, effectuer un "reverse engineering", manipuler
+ et toujours remplacer le protocole de communication. Cependant, ce n'est
+ généralement pas nécessaire.
+
+
+ Vu que les plugins vous autorisent à créer des implémentations qui
+ utilisent les 2 niveaux (API C et couche physique), ils ont plus de flexibilité
+ que le proxy MySQL. Si un plugin mysqlnd est implémenté
+ en utilisant l'API C, toutes les modifications ultérieures à la couche
+ physique ne nécessiteront pas de modification au plugin en tant que tel.
+
+
+
+ Obtenir l'API du plugin mysqlnd
+
+ L'API du plugin mysqlnd est simplement une partie
+ de l'extension du driver PHP Natif MySQL, ext/mysqlnd.
+ Le développement de l'API du plugin mysqlnd commença
+ en Décembre 2009. Il est développé comme une partie du dépôt source de PHP,
+ et ainsi, est disponible depuis soit le dépôt public Git, soit depuis
+ le téléchargement des sources.
+
+
+ Les développeurs de plugin peuvent déterminer la version de
+ mysqlnd via la variable
+ MYSQLND_VERSION,
+ au format mysqlnd 8.3.17,
+ ou via MYSQLND_VERSION_ID, qui est un entier
+ comme par exemple 50007. Les développeurs peuvent calculer le numéro
+ de version comme ceci :
+
+
+
+ Lors du développement, les développeurs doivent se référer
+ au numéro de version mysqlnd pour des tests
+ de compatibilité et de version, sachant que plusieurs
+ versions de mysqlnd peuvent survenir durant
+ un cycle de vie de la branche de développement de PHP.
+
+
+
+ Architecture du plugin du driver natif
+
+ Cette section fournit un aperçu de l'architecture du plugin
+ mysqlnd.
+
+
+ Aperçu du driver natif MySQL
+
+
+ Avant de développer des plugins mysqlnd,
+ il est utile d'avoir une connaissance minimale sur l'organisation
+ de mysqlnd. Mysqlnd est composé
+ des modules suivants :
+
+
+ Schéma de l'organisation mysqlnd, par module
+
+
+
+ Modules de statistiques
+ mysqlnd_statistics.c
+
+
+
+
+ Connexion
+ mysqlnd.c
+
+
+ Jeu de résultats
+ mysqlnd_result.c
+
+
+ Données méta du jeu de résultats
+ mysqlnd_result_meta.c
+
+
+ Requête
+ mysqlnd_ps.c
+
+
+ Réseau
+ mysqlnd_net.c
+
+
+ Couche physique
+ mysqlnd_wireprotocol.c
+
+
+
+
+
+ Objet C orienté paradigme
+
+
+ Au niveau du code, mysqlnd utilise un masque C
+ pour implémenter l'orientation de l'objet.
+
+
+ En C, vous utilisez une structure (struct)
+ pour représenter un objet. Les membres de cette structure
+ représentent les propriétés de l'objet. Les membres de la
+ structure pointant vers des fonctions représentent les méthodes.
+
+
+ Contrairement aux autres langages comme C++ ou Java, il n'y a
+ pas de règles fixes sur l'héritage dans les objets C orientés paradigme.
+ Cependant, il y a quelques conventions qui doivent être suivies
+ qui seront abordées ultérieurement.
+
+
+ Le cycle de vie PHP
+
+
+ Le cycle de vie de PHP comporte 2 cycles basiques :
+
+
+
+
+ Le cycle de démarrage et d'arrêt du moteur PHP
+
+
+
+
+ Le cycle d'une demande
+
+
+
+
+ Lorsque le moteur PHP démarre, il appelle la fonction d'initialisation
+ du module (MINIT) de chaque extension enregistrée. Ceci
+ permet à chaque module de définir les variables et d'allouer les
+ ressources qui doivent exister pour la durée de vie du processus
+ correspondant au moteur PHP. Lorsque le moteur PHP s'arrête,
+ il appelle la fonction d'arrêt du module (MSHUTDOWN) pour chaque extension.
+
+
+ Pendant la durée de vie du moteur PHP, il recevra des demandes.
+ Chaque demande constitue un autre cycle de vie. Pour chaque
+ requête, le moteur PHP appellera la fonction d'initialisation
+ de chaque extension. L'extension peut effectuer toutes les définitions
+ de variables ainsi que les allocations de ressources nécessaires pour
+ traiter la demande. Lorsque le cycle de la demande se termine, le moteur
+ appelle la fonction d'arrêt (RSHUTDOWN) pour chaque extension,
+ ainsi, l'extension peut lancer tout le nettoyage nécessaire.
+
+
+ Comment fonctionne un plugin
+
+
+ Un plugin mysqlnd fonctionne en interceptant les appels
+ effectués à mysqlnd par les extensions qui utilisent
+ mysqlnd. Ceci est possible en obtenant la table
+ de fonction mysqlnd, en la sauvegardant, et en la
+ remplaçant par une table de fonction personnalisé, qui appelle les fonctions
+ du plugin.
+
+
+ Le code suivant montre la façon dont la table de fonction
+ mysqlnd est remplacée :
+
+
+query = MYSQLND_METHOD(my_conn_class, query);
+}
+]]>
+
+
+ Les manipulations de la table de fonction de connexion doivent
+ être effectuées lors de l'initialisation du module (MINIT).
+ La table de fonction est une ressource globale partagée. Dans
+ un environnement multithread, avec une compilation TSRM, la
+ manipulation d'une ressource globale partagée lors d'un processus
+ de demande entraînera la plupart du temps des conflits.
+
+
+
+ N'utilisez aucune logique de taille fixe lors de la manipulation
+ de la table de fonction mysqlnd : les nouvelles
+ méthodes peuvent être ajoutées à la fin de la table de fonction.
+ La table de fonction peut être modifiée à tout moment par la suite.
+
+
+
+ Appel des méthodes parents
+
+
+ Si la table de fonction originale est sauvegardée, il est toujours
+ possible d'appeler les entrées de la table de fonction originale -
+ les méthodes parents.
+
+
+ Dans ce cas, tout comme pour Connection::stmt_init(),
+ il est vital d'appeler la méthode parent avant toute autre activité
+ dans la méthode dérivée.
+
+
+
+
+
+ Étendre des propriétés
+
+
+ Un objet mysqlnd est représenté par une structure C.
+ Il n'est pas possible d'ajouter un membre à une structure C au moment
+ de l'exécution. Les utilisateurs d'objets mysqlnd
+ ne peuvent pas ajouter simplement des propriétés aux objets.
+
+
+ Les données arbitraires (propriétés) peuvent être ajoutées aux objets
+ mysqlnd en utilisant une fonction appropriée de la
+ famille mysqlnd_plugin_get_plugin_<object>_data().
+ Lors de l'allocation d'un objet, mysqlnd réserve
+ un espace à la fin de l'objet pour accueillir un pointeur
+ void * vers des données arbitraires.
+ mysqlnd réserve un espace pour un pointeur
+ void * par plugin.
+
+
+ La table suivante montre comment calculer la position d'un pointeur
+ pour un plugin spécifique :
+
+
+ Calcul des pointeurs pour mysqlnd
+
+
+
+ Adresse mémoire
+ Contenus
+
+
+
+
+ 0
+ Début de la structure C de l'objet mysqlnd
+
+
+ n
+ Fin de la structure C de l'objet mysqlnd
+
+
+ n + (m x sizeof(void*))
+ void* vers les données de l'objet du m-ème plugin
+
+
+
+
+
+ Si vous prévoyez de faire des sous-classes des constructeurs
+ des objets mysqlnd, ce qui est autorisé,
+ vous devez conserver ceci en mémoire !
+
+
+ Le code suivant montre la façon dont on étend des propriétés :
+
+
+persistent);
+ (*props)->query_counter = 0;
+ }
+ return props;
+}
+]]>
+
+
+ Le développeur du plugin est responsable de la gestion de la mémoire
+ associée aux données du plugin.
+
+
+ L'utilisation de l'allocateur de mémoire mysqlnd
+ est recommandée pour les données du plugin. Ces fonctions sont nommées
+ en utilisant la convention suivante : mnd_*loc().
+ L'allocateur mysqlnd a quelques fonctionnalités bien utiles,
+ comme la possibilité d'utiliser un allocateur de débogage dans une compilation
+ non-débogue.
+
+
+ Quand et comment faire une sous-classe
+
+
+
+
+ Quand faire une sous-classe ?
+ Est-ce que chaque instance a sa table de fonction privée ?
+ Comment faire une sous-classe ?
+
+
+
+
+ Connexion (MYSQLND)
+ MINIT
+ Non
+ mysqlnd_conn_get_methods()
+
+
+ Jeu de résultats (MYSQLND_RES)
+ MINIT ou après
+ Oui
+ mysqlnd_result_get_methods() ou méthode de l'objet de manipulation de la table de fonction
+
+
+ Méta du jeu de résultats (MYSQLND_RES_METADATA)
+ MINIT
+ Non
+ mysqlnd_result_metadata_get_methods()
+
+
+ Requête (MYSQLND_STMT)
+ MINIT
+ Non
+ mysqlnd_stmt_get_methods()
+
+
+ Réseau (MYSQLND_NET)
+ MINIT ou après
+ Oui
+ mysqlnd_net_get_methods() ou méthode de l'objet de manipulation de la table de fonction
+
+
+ Couche physique (MYSQLND_PROTOCOL)
+ MINIT ou après
+ Oui
+ mysqlnd_protocol_get_methods() ou méthode de l'objet de manipulation de la table de fonction
+
+
+
+
+
+ Vous ne devez pas manipuler les tables de fonction après MINIT si
+ ce n'est pas autorisé suivant la table ci-dessus.
+
+
+ Quelques classes contiennent un pointeur vers une méthode de la table
+ de fonction. Toutes les instances d'une telle classe partageront
+ la même table de fonction. Pour éviter le chaos, en particulier
+ dans les environnements threadés, ce genre de tables de fonction
+ ne doit être manipulé que lors du MINIT.
+
+
+ Les autres classes utilisent une copie de la table de fonction
+ globale partagée. Cette copie est créée en même temps que l'objet.
+ Chaque objet utilise sa propre table de fonction. Ceci vous donne
+ 2 options : vous pouvez manipuler la table de fonction par défaut
+ d'un objet au moment du MINIT, et vous pouvez aussi affiner des
+ méthodes d'un objet sans impacter les autres instances de la même
+ classe.
+
+
+ L'avantage de l'approche avec une table de fonction partagée est
+ la performance. Il n'est pas nécessaire de copier une table de fonction
+ pour chaque objet.
+
+
+ Statut du constructeur
+
+
+
+ Type
+ Allocation, construction, réinitialisation
+ Peut-être modifié ?
+ Appelant
+
+
+
+
+ Connexion (MYSQLND)
+ mysqlnd_init()
+ Non
+ mysqlnd_connect()
+
+
+ Jeu de résultats(MYSQLND_RES)
+
+ Allocation :
+
+
+
+
+ Connection::result_init()
+
+
+
+
+ Reset et ré-initialisation lors de :
+
+
+
+
+ Result::use_result()
+
+
+
+
+ Result::store_result
+
+
+
+ Oui, mais appel du parent !
+
+
+
+ Connection::list_fields()
+
+
+
+
+ Statement::get_result()
+
+
+
+
+ Statement::prepare() (Méta-données uniquement)
+
+
+
+
+ Statement::resultMetaData()
+
+
+
+
+
+ Méta du jeu de résultats (MYSQLND_RES_METADATA)
+ Connection::result_meta_init()
+ Oui, mais appel du parent !
+ Result::read_result_metadata()
+
+
+ Statement (MYSQLND_STMT)
+ Connection::stmt_init()
+ Oui, mais appel du parent !
+ Connection::stmt_init()
+
+
+ Réseau (MYSQLND_NET)
+ mysqlnd_net_init()
+ Non
+ Connection::init()
+
+
+ Couche physique (MYSQLND_PROTOCOL)
+ mysqlnd_protocol_init()
+ Non
+ Connection::init()
+
+
+
+
+
+ Il est vivement recommandé de ne pas remplacer entièrement un constructeur.
+ Les constructeurs effectuent les allocations mémoires. Les allocations
+ mémoires sont vitales pour l'API du plugin mysqlnd
+ ainsi que pour la logique de l'objet mysqlnd. Si
+ vous ne vous souciez pas des alertes et que vous insistez pour
+ remplacer les constructeurs, vous devriez au moins appeler
+ le constructeur parent avant de faire quoi que ce soit dans votre
+ constructeur.
+
+
+ Au niveau de toutes les alertes, il peut être utile de faire des
+ sous-classes des constructeurs. Les constructeurs sont les endroits
+ parfaits pour modifier les tables de fonction des objets avec les
+ tables d'objets non partagés, comme les jeux de résultats, le
+ réseau ou encore la couche physique.
+
+
+ Statut du destructeur
+
+
+
+ Type
+ La méthode dérivée doit appeler le parent ?
+ Destructeur
+
+
+
+
+ Connexion
+ oui, après l'exécution de la méthode
+ free_contents(), end_psession()
+
+
+ Jeu de résultats
+ oui, après l'exécution de la méthode
+ free_result()
+
+
+ Méta du jeu de résultats
+ oui, après l'exécution de la méthode
+ free()
+
+
+ Requête
+ oui, après l'exécution de la méthode
+ dtor(), free_stmt_content()
+
+
+ Réseau
+ oui, après l'exécution de la méthode
+ free()
+
+
+ Couche physique
+ oui, après l'exécution de la méthode
+ free()
+
+
+
+
+
+ Les destructeurs sont les endroits parfaits pour libérer les propriétés,
+ mysqlnd_plugin_get_plugin_<object>_data().
+
+
+ Les destructeurs listés peuvent ne pas être les équivalents aux
+ méthodes actuelles mysqlnd libérant l'objet lui-même.
+ Cependant, ils sont les meilleurs endroits pour vous pour libérer
+ les données de votre plugin. Tout comme les constructeurs, vous
+ pouvez remplacer les méthodes entières mais ce n'est pas recommandé.
+ Si plusieurs méthodes sont listées dans la table ci-dessus, vous devez
+ modifier toutes les méthodes listées et libérer les données de votre
+ plugin dans la méthode appelée en premier par mysqlnd.
+
+
+ La méthode recommandée pour les plugins est de modifier simplement les méthodes,
+ libérer votre mémoire et appeler l'implémentation du parent immédiatement après.
+
+
+
+ L'API du plugin mysqlnd
+
+ Voici la liste des fonctions fournies dans l'API plugin
+ mysqlnd :
+
+
+
+
+ mysqlnd_plugin_register()
+
+
+
+
+ mysqlnd_plugin_count()
+
+
+
+
+ mysqlnd_plugin_get_plugin_connection_data()
+
+
+
+
+ mysqlnd_plugin_get_plugin_result_data()
+
+
+
+
+ mysqlnd_plugin_get_plugin_stmt_data()
+
+
+
+
+ mysqlnd_plugin_get_plugin_net_data()
+
+
+
+
+ mysqlnd_plugin_get_plugin_protocol_data()
+
+
+
+
+ mysqlnd_conn_get_methods()
+
+
+
+
+ mysqlnd_result_get_methods()
+
+
+
+
+ mysqlnd_result_meta_get_methods()
+
+
+
+
+ mysqlnd_stmt_get_methods()
+
+
+
+
+ mysqlnd_net_get_methods()
+
+
+
+
+ mysqlnd_protocol_get_methods()
+
+
+
+
+ Il n'y a pas de définition formelle de ce qu'est un plugin
+ ainsi de la façon dont fonctionne un plugin.
+
+
+ Les composants les plus souvent trouvés dans les mécanismes de plugin sont :
+
+
+
+
+ Un gestionnaire de plugin
+
+
+
+
+ Une API du plugin
+
+
+
+
+ Les services applicatifs (ou modules)
+
+
+
+
+ Les APIs des services applicatifs (ou APIs du module)
+
+
+
+
+ Le concept d'un plugin mysqlnd utilise ces fonctionnalités,
+ ainsi que d'autres joyeusetés d'architecture ouverte.
+
+
+ Aucune restriction
+
+
+ Un plugin a un accès total aux travaux internes de
+ mysqlnd. Il n'y a aucune limite de sécurité
+ ou de restrictions. Tout peut être écrasé pour implémenter des
+ algorithmes utiles ou hostiles. Il est recommandé de ne déployer
+ que des plugins depuis des sources de confiance.
+
+
+ Tel que discuté précédemment, les plugins peuvent utiliser librement
+ des pointeurs. Ces pointeurs ne sont restreints en aucune manière,
+ aussi, vous pouvez pointer vers les données d'un autre plugin.
+ Une simple position arithmétique peut être utilisée pour lire
+ les données d'un autre plugin.
+
+
+ Il est recommandé d'écrire des plugins coopératifs, et ainsi, appeler
+ toujours la méthode parent. Les plugins devraient toujours coopérer avec
+ mysqlnd.
+
+
+
+ Dans ce scénario, un plugin cache (ext/mysqlnd_cache) et
+ un plugin de surveillance (ext/mysqlnd_monitor)
+ sont chargés. Les 2 ont une sous-classe de Connection::query().
+ L'enregistrement du plugin survient lors du MINIT
+ en utilisant la logique évoquée précédemment. PHP appelle les extensions
+ dans un ordre alphabétique par défaut. Les plugins ne sont pas au courant
+ les uns les autres et ne peuvent fixer de dépendances.
+
+
+ Par défaut, les plugins appellent l'implémentation du parent de la
+ méthode de requête dans leur version de la méthode dérivée.
+
+
+ Récapitulatif de l'extension PHP
+
+
+ Voici un récapitulatif de ce qui survient lors de l'utilisation
+ d'un plugin d'exemple, ext/mysqlnd_plugin,
+ qui expose l'API C du plugin mysqlnd à PHP :
+
+
+
+
+ Toutes les applications PHP MySQL tente d'établir une connexion
+ à l'adresse 192.168.2.29
+
+
+
+
+ L'application PHP utilisera ext/mysql,
+ ext/mysqli ou PDO_MYSQL.
+ Ces 3 extensions PHP MySQL utilisent mysqlnd pour
+ établir la connexion à l'adresse 192.168.2.29.
+
+
+
+
+ Mysqlnd appelle sa méthode de connexion, qui a été sous-classée
+ par ext/mysqlnd_plugin.
+
+
+
+
+ ext/mysqlnd_plugin appelle la méthode de l'espace utilisateur
+ proxy::connect() enregistrée par l'utilisateur.
+
+
+
+
+ L'espace utilisateur modifie l'hôte de connexion de 192.168.2.29
+ à 127.0.0.1 et retourne la connexion établie par
+ parent::connect().
+
+
+
+
+ ext/mysqlnd_plugin exécute l'équivalent de
+ parent::connect(127.0.0.1) en appelant la méthode
+ originale de mysqlnd pour établir une connexion.
+
+
+
+
+ ext/mysqlnd établit une connexion et redonne la main
+ à ext/mysqlnd_plugin.
+ ext/mysqlnd_plugin retourne également.
+
+
+
+
+ Quelle que soit l'extension PHP MySQL utilisée par l'application,
+ elle reçoit une connexion à 127.0.0.1. L'extension PHP MySQL
+ redonne la main à l'application PHP. Le cycle est clos.
+
+
+
+
+
+ Bien commencer la compilation d'un plugin mysqlnd
+
+ Il est important de se souvenir qu'un plugin mysqlnd
+ est lui-même une extension PHP.
+
+
+ Le code suivant montre la structure basique d'une fonction MINIT
+ utilisée dans un plugin typique mysqlnd :
+
+
+query = MYSQLND_METHOD(mysqlnd_plugin_conn, query);
+ conn_m->connect = MYSQLND_METHOD(mysqlnd_plugin_conn, connect);
+}
+]]>
+
+
+
+
+
+ Tâche d'analyse : depuis C vers l'espace utilisateur
+
+
+
+
+
+ Process:
+
+
+
+
+ PHP : l'utilisateur enregistre une fonction de rappel pour le plugin
+
+
+
+
+ PHP : l'utilisateur appelle une méthode de l'API PHP MySQL pour se connecter à MySQL
+
+
+
+
+ C : ext/*mysql* appelle la méthode mysqlnd
+
+
+
+
+ C : mysqlnd se termine dans ext/mysqlnd_plugin
+
+
+
+
+ C : ext/mysqlnd_plugin
+
+
+
+ Appel de la fonction de rappel de l'espace utilisateur
+
+
+
+
+ Ou la méthode originale mysqlnd, si l'espace
+ utilisateur n'a pas défini de fonction de rappel
+
+
+
+
+
+
+
+ Vous devez effectuer les opérations suivantes :
+
+
+
+
+ Écrire une classe "mysqlnd_plugin_connection" en C
+
+
+
+
+ Accepter et enregistrer l'objet proxy via
+ "mysqlnd_plugin_set_conn_proxy()"
+
+
+
+
+ Appeler les méthodes de proxy de l'espace utilisateur
+ depuis C (optimisation - zend_interfaces.h)
+
+
+
+
+ Les méthodes de l'objet de l'espace utilisateur peuvent soit être
+ appelées en utilisant call_user_function(),
+ soit vous pouvez opérer à un niveau en dessous du moteur Zend et
+ utiliser zend_call_method().
+
+
+ Optimisation : appel des méthodes depuis C en utilisant
+ zend_call_method
+
+
+ Le code suivant montre un prototype pour la fonction
+ zend_call_method, issue de
+ zend_interfaces.h.
+
+
+
+
+
+ L'API Zend supporte 2 arguments. Vous pouvez en avoir besoin de plus, par
+ exemple :
+
+
+
+
+
+ Pour contourner ce problème, vous devrez faire une copie
+ de zend_call_method() et ajouter une
+ fonctionnalité pour ajouter des paramètres. Vous pouvez
+ réaliser ceci en créant un jeu de macros
+ MY_ZEND_CALL_METHOD_WRAPPER.
+
+
+ Appel de l'espace utilisateur PHP
+
+
+ Le code ci-dessous montre la méthode optimisée pour effectuer un
+ appel à une fonction de l'espace utilisateur depuis C :
+
+
+
+
+
+ Appel de l'espace utilisateur: arguments simples
+
+
+
+
+
+ Appel de l'espace utilisateur : structures comme arguments
+
+
+
+
+
+ Le premier argument de toutes les méthodes mysqlnd
+ est un objet C. Par exemple, le premier argument de la méthode
+ connect() est un pointeur vers MYSQLND.
+ La structure MYSQLND représente un objet de connexion
+ mysqlnd.
+
+
+ Le pointeur de l'objet de connexion mysqlnd
+ peut être comparé à un pointeur de fichier standard I/O.
+ Tout comme un pointeur de fichier standard I/O, un objet de
+ connexion mysqlnd doit être lié à l'espace
+ utilisateur en utilisant une variable PHP de type ressource.
+
+
+ Depuis C vers l'espace utilisateur, puis, retour
+
+
+
+
+
+ Les utilisateurs PHP doivent pouvoir appeler l'implémentation
+ du parent d'une méthode écrasée.
+
+
+ Comme résultat d'un sous-classement, il est possible de
+ redéfinir uniquement les méthodes sélectionnées, et vous
+ pouvez choisir d'avoir des actions "pre" ou "post".
+
+
+ Construction d'une classe : mysqlnd_plugin_connection::connect()
+
+
+
+
+
+
+
From 3bbcf022afcf1a56528fe6ab5aca85c76d695d4c Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:40:28 +0100
Subject: [PATCH 46/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/oci8/setup.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/oci8/setup.xml | 182 +++++++++++++++++++--------------------
1 file changed, 91 insertions(+), 91 deletions(-)
diff --git a/reference/oci8/setup.xml b/reference/oci8/setup.xml
index b387e2f4e4..e297184aa1 100644
--- a/reference/oci8/setup.xml
+++ b/reference/oci8/setup.xml
@@ -1,91 +1,91 @@
-
-
-
-
-
-
- &reftitle.setup;
-
-
-
- &reftitle.required;
-
- OCI8 3.0 est incluse avec PHP 8. Elle est également disponible depuis
- &link.pecl;. Pour PHP 7, utilisez OCI8 2.2 depuis &link.pecl;.
- OCI8 requiert Oracle 10g
- ou bibliothèques cliente ultérieures.
-
-
- Si la base de données Oracle est sur la même machine que PHP, le logiciel
- de base de données contient déjà les bibliothèques et en-têtes nécessaires.
- Lorsque PHP est sur une machine différente, utilisez les bibliothèques gratuites
- Oracle Instant Client.
-
-
- Pour utiliser Oracle Instant Client, installez le fichier
- compressé ZIP Basic ou Basic Light de
- Oracle Instant Client, le paquet RPM, ou le paquet DMG.
- Lors de la compilation de OCI8 depuis le code source, installez aussi le
- SDK de Instant Client.
-
-
- Vous devez exécuter PHP avec la même version ou une version plus récente des
- bibliothèques clients Oracle utilisées pour construire OCI8.
-
-
-
- L'interopérabilité standard du réseau client-serveur d'Oracle permet des
- connexions entre différentes versions de Oracle Client et Oracle Database.
- Pour des configurations certifiées voir la documentation Oracle Support
- ID ID 207303.1. En résumé, Oracle Client 19, 18 et 12.2 peuvent se
- connecter à Oracle Database 11.2 ou supérieur. Oracle Client 12.1 peut se
- connecter à Oracle Database 10.2 ou supérieur. Oracle Client 11.2 peut se
- connecter à Oracle Database 9.2 ou supérieur.
-
-
-
-
- Le support de toutes les fonctionnalités OCI8 n'est disponible que
- lors de l'utilisation des versions les plus récentes des bibliothèques
- clientes Oracle mais aussi de la base de données la plus récente.
-
-
-
-
-
-
- &reference.oci8.configure;
-
-
-
- &reference.oci8.testing;
-
-
-
- &reference.oci8.ini;
-
-
-
-
-
-
-
+
+
+
+
+
+
+ &reftitle.setup;
+
+
+
+ &reftitle.required;
+
+ OCI8 3.0 est incluse avec PHP 8. Elle est également disponible depuis
+ &link.pecl;. Pour PHP 7, utilisez OCI8 2.2 depuis &link.pecl;.
+ OCI8 requiert Oracle 10g
+ ou bibliothèques cliente ultérieures.
+
+
+ Si la base de données Oracle est sur la même machine que PHP, le logiciel
+ de base de données contient déjà les bibliothèques et en-têtes nécessaires.
+ Lorsque PHP est sur une machine différente, utilisez les bibliothèques gratuites
+ Oracle Instant Client.
+
+
+ Pour utiliser Oracle Instant Client, installez le fichier
+ compressé ZIP Basic ou Basic Light de
+ Oracle Instant Client, le paquet RPM, ou le paquet DMG.
+ Lors de la compilation de OCI8 depuis le code source, installez aussi le
+ SDK de Instant Client.
+
+
+ Vous devez exécuter PHP avec la même version ou une version plus récente des
+ bibliothèques clients Oracle utilisées pour construire OCI8.
+
+
+
+ L'interopérabilité standard du réseau client-serveur d'Oracle permet des
+ connexions entre différentes versions de Oracle Client et Oracle Database.
+ Pour des configurations certifiées voir la documentation Oracle Support
+ ID ID 207303.1. En résumé, Oracle Client 19, 18 et 12.2 peuvent se
+ connecter à Oracle Database 11.2 ou supérieur. Oracle Client 12.1 peut se
+ connecter à Oracle Database 10.2 ou supérieur. Oracle Client 11.2 peut se
+ connecter à Oracle Database 9.2 ou supérieur.
+
+
+
+
+ Le support de toutes les fonctionnalités OCI8 n'est disponible que
+ lors de l'utilisation des versions les plus récentes des bibliothèques
+ clientes Oracle mais aussi de la base de données la plus récente.
+
+
+
+
+
+
+ &reference.oci8.configure;
+
+
+
+ &reference.oci8.testing;
+
+
+
+ &reference.oci8.ini;
+
+
+
+
+
+
+
From 292c8babc5543c701c64f104d3aec1c3c33fb6f0 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:40:28 +0100
Subject: [PATCH 47/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/opcache/ini.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/opcache/ini.xml | 2974 ++++++++++++++++++-------------------
1 file changed, 1487 insertions(+), 1487 deletions(-)
diff --git a/reference/opcache/ini.xml b/reference/opcache/ini.xml
index 6fb9253123..f79a7dc7c7 100644
--- a/reference/opcache/ini.xml
+++ b/reference/opcache/ini.xml
@@ -1,1487 +1,1487 @@
-
-
-
-
- &reftitle.runtime;
- &extension.runtime;
-
-
- Options de configuration d'OPcache
-
-
-
- &Name;
- &Default;
- &Changeable;
- &Changelog;
-
-
-
-
- opcache.enable
- 1
- INI_ALL
-
-
-
- opcache.enable_cli
- 0
- INI_SYSTEM
- Entre PHP 7.1.2 et 7.1.6 inclusivement, la valeur par défaut était de 1
-
-
- opcache.memory_consumption
- "128"
- INI_SYSTEM
-
-
-
- opcache.interned_strings_buffer
- "8"
- INI_SYSTEM
-
-
-
- opcache.max_accelerated_files
- "10000"
- INI_SYSTEM
-
-
-
- opcache.max_wasted_percentage
- "5"
- INI_SYSTEM
-
-
-
- opcache.use_cwd
- 1
- INI_SYSTEM
-
-
-
- opcache.validate_timestamps
- 1
- INI_ALL
-
-
-
- opcache.revalidate_freq
- "2"
- INI_ALL
-
-
-
- opcache.revalidate_path
- 0
- INI_ALL
-
-
-
- opcache.save_comments
- 1
- INI_SYSTEM
-
-
-
- opcache.fast_shutdown
- 0
- INI_SYSTEM
- Supprimé en PHP 7.2.0.
-
-
- opcache.enable_file_override
- 0
- INI_SYSTEM
-
-
-
- opcache.optimization_level
- "0x7FFEBFFF"
- INI_SYSTEM
- Modifié depuis 0x7FFFBFFF en PHP 7.3.0
-
-
- opcache.inherited_hack
- 1
- INI_SYSTEM
- Supprimé en PHP 7.3.0
-
-
- opcache.dups_fix
- 0
- INI_ALL
-
-
-
- opcache.blacklist_filename
- ""
- INI_SYSTEM
-
-
-
- opcache.max_file_size
- 0
- INI_SYSTEM
-
-
-
- opcache.consistency_checks
- 0
- INI_ALL
- >Désactivé à partir de PHP 8.1.18 et 8.2.5. Supprimé à partir de PHP 8.3.0.
-
-
- opcache.force_restart_timeout
- "180"
- INI_SYSTEM
-
-
-
- opcache.error_log
- ""
- INI_SYSTEM
-
-
-
- opcache.log_verbosity_level
- 1
- INI_SYSTEM
-
-
-
- opcache.record_warnings
- 0
- INI_SYSTEM
- Disponible à partir de PHP 8.0.0.
-
-
- opcache.preferred_memory_model
- ""
- INI_SYSTEM
-
-
-
- opcache.protect_memory
- 0
- INI_SYSTEM
-
-
-
- opcache.mmap_base
- &null;
- INI_SYSTEM
-
-
-
- opcache.restrict_api
- ""
- INI_SYSTEM
-
-
-
- opcache.file_update_protection
- "2"
- INI_ALL
-
-
-
- opcache.huge_code_pages
- 0
- INI_SYSTEM
-
-
-
- opcache.lockfile_path
- "/tmp"
- INI_SYSTEM
-
-
-
- opcache.opt_debug_level
- 0
- INI_SYSTEM
- Disponible à partir de PHP 7.1.0
-
-
- opcache.file_cache
- NULL
- INI_SYSTEM
-
-
-
- opcache.file_cache_only
- 0
- INI_SYSTEM
-
-
-
- opcache.file_cache_consistency_checks
- 1
- INI_SYSTEM
-
-
-
- opcache.file_cache_fallback
- 1
- INI_SYSTEM
- Windows uniquement.
-
-
- opcache.validate_permission
- 0
- INI_SYSTEM
- Disponible à partir de PHP 7.0.14
-
-
- opcache.validate_root
- 0
- INI_SYSTEM
- Disponible à partir de PHP 7.0.14
-
-
- opcache.preload
- ""
- INI_SYSTEM
- Disponible à partir de PHP 7.4.0
-
-
- opcache.preload_user
- ""
- INI_SYSTEM
- Disponible à partir de PHP 7.4.0
-
-
- opcache.cache_id
- ""
- INI_SYSTEM
- Windows uniquement. Disponible à partir de PHP 7.4.0
-
-
- opcache.jit
- "disable"
- INI_ALL
- Disponible à partir de PHP 8.0.0. Auparavant à PHP 8.4.0, la valeur par défaut était "tracing"
-
-
- opcache.jit_buffer_size
- 0
- INI_SYSTEM
- Disponible à partir de PHP 8.0.0
-
-
- opcache.jit_debug
- 0
- INI_ALL
- Disponible à partir de PHP 8.0.0
-
-
- opcache.jit_bisect_limit
- 0
- INI_ALL
- Disponible à partir de PHP 8.0.0
-
-
- opcache.jit_prof_threshold
- "0.005"
- INI_ALL
- Disponible à partir de PHP 8.0.0
-
-
- opcache.jit_max_root_traces
- "1024"
- INI_SYSTEM
- Disponible à partir de PHP 8.0.0
-
-
- opcache.jit_max_side_traces
- "128"
- INI_SYSTEM
- Disponible à partir de PHP 8.0.0
-
-
- opcache.jit_max_exit_counters
- "8192"
- INI_SYSTEM
- Disponible à partir de PHP 8.0.0
-
-
- opcache.jit_hot_loop
- "64"
- INI_SYSTEM
- Disponible à partir de PHP 8.0.0
-
-
- opcache.jit_hot_func
- "127"
- INI_SYSTEM
- Disponible à partir de PHP 8.0.0
-
-
- opcache.jit_hot_return
- "8"
- INI_SYSTEM
- Disponible à partir de PHP 8.0.0
-
-
- opcache.jit_hot_side_exit
- "8"
- INI_SYSTEM
- Disponible à partir de PHP 8.0.0
-
-
- opcache.jit_blacklist_root_trace
- "16"
- INI_ALL
- Disponible à partir de PHP 8.0.0
-
-
- opcache.jit_blacklist_side_trace
- "8"
- INI_ALL
- Disponible à partir de PHP 8.0.0
-
-
- opcache.jit_max_loop_unrolls
- "8"
- INI_ALL
- Disponible à partir de PHP 8.0.0
-
-
- opcache.jit_max_recursive_calls
- "2"
- INI_ALL
- Disponible à partir de PHP 8.0.0
-
-
- opcache.jit_max_recursive_returns
- "2"
- INI_ALL
- Disponible à partir de PHP 8.0.0
-
-
- opcache.jit_max_polymorphic_calls
- "2"
- INI_ALL
- Disponible à partir de PHP 8.0.0
-
-
-
-
- &ini.php.constants;
-
-
- &ini.descriptions.title;
-
-
-
-
- opcache.enable
- bool
-
-
-
- Active le cache d'opcode. Lorsqu'il est désactivé, le code n'est
- ni optimisé, ni mis en cache. Le paramétrage de opcache.enable
- ne peut être activé pendant l'exécution via la fonction
- ini_set, il ne peut être que désactivé. Tenter de l'activer
- dans un script va générer une alerte.
-
-
-
-
-
- opcache.enable_cli
- bool
-
-
-
- Active le cache d'opcode pour la version CLI de PHP.
-
-
-
-
-
- opcache.memory_consumption
- int
-
-
-
- La taille de la mémoire partagée utilisée par OPcache, en mégaoctets.
- La valeur minimale permissible est "8",
- qui est forcé si une valeur plus petite est définie.
-
-
-
-
-
- opcache.interned_strings_buffer
- int
-
-
-
- La quantité de mémoire utilisée pour stocker des chaînes internes, en mégaoctets.
- La valeur maximale est de 32767 sur les architectures 64 bits, et de 4095 sur les architectures 32 bits.
-
-
-
- Avant PHP 8.4.0, la valeur maximale était de 4095 mégaoctets sur toutes les architectures.
-
-
-
-
-
-
- opcache.max_accelerated_files
- int
-
-
-
- Le nombre maximal de clés (et donc, de scripts) dans la table de hachage d'OPcache.
- La valeur actuellement utilisée sera le premier nombre du jeu des
- nombres premiers
- { 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987, 262237, 524521, 1048793 }
- qui est plus grand ou égal que la valeur configurée. La valeur minimale est 200.
- La valeur maximale est 100000 dans PHP < 5.5.6, et 1000000 dans les versions
- ultérieures.
- Les valeurs hors de cet intervalle sont fixées à l'intervalle autorisé.
-
-
-
-
-
- opcache.max_wasted_percentage
- int
-
-
-
- Le pourcentage maximum de mémoire gaspillée autorisée avant qu'un redémarrage
- ne soit programmé, s'il n'y a pas assez de mémoire disponible.
- La valeur maximale permissible est "50",
- qui est forcé si une valeur plus large est définie.
-
-
-
-
-
- opcache.use_cwd
- bool
-
-
-
- Si activé, OPcache ajoute le dossier de travail courant à la clé du script,
- éliminant ainsi les collisions possibles entre les fichiers dont le nom
- de base est identique. Le fait de désactiver cette fonctionnalité améliore
- les performances, mais peut casser les applications existantes.
-
-
-
-
-
- opcache.validate_timestamps
- bool
-
-
-
- Si activé, OPcache va vérifier les mises à jour des scripts toutes les
- opcache.revalidate_freq
- secondes. Lorsque cette directive est désactivée, vous devez réinitialiser
- OPcache manuellement via la fonction opcache_reset,
- la fonction opcache_invalidate ou en redémarrant le serveur
- Web pour que les modifications du système de fichiers ne prennent effet.
-
-
- OPcache peut toujours valider l'horodatage d'un fichier lors de la compilation si les options
- opcache.file_update_protection
- ou opcache.max_file_size
- sont définies sur des valeurs non nulles.
-
-
-
-
-
-
-
- opcache.revalidate_freq
- int
-
-
-
- La fréquence de vérification du timestamp du script afin de détecter
- les possibles mises à jour, en secondes. La valeur 0
- fera qu'OPcache vérifiera les mises à jour à chaque requête.
-
-
- Cette directive de configuration est ignorée si
- opcache.validate_timestamps
- est désactivé.
-
-
-
-
-
- opcache.revalidate_path
- bool
-
-
-
- Si désactivé, les fichiers en cache existant utilisant le même
- include_path seront réutilisés.
- Aussi, si un fichier avec le même nom est quelque part ailleurs dans le
- include_path, il ne sera pas trouvé.
-
-
-
-
-
- opcache.save_comments
- bool
-
-
-
- Si désactivé, tous les commentaires de documentation seront supprimés
- du cache opcode afin de réduire la taille du code optimisé.
- La désactivation de cette directive peut casser des applications
- et des frameworks qui s'appuient sur l'analyse des commentaires
- pour les annotations, comme Doctrine, Zend Framework 2 et PHPUnit.
-
-
-
-
-
- opcache.fast_shutdown
- bool
-
-
-
- Si activé, une séquence d'arrêt rapide sera utilisée, qui ne libère pas
- chaque bloc alloué, mais s'appuie sur le gestionnaire de mémoire
- Zend Engine pour désallouer le jeu entier des variables de requêtes, en masse.
-
-
- Cette directive a été supprimée dans PHP 7.2.0. Une variante de la
- séquence d'arrêt rapide a été intégrée dans PHP et sera automatiquement
- utilisée si possible.
-
-
-
-
-
- opcache.enable_file_override
- bool
-
-
-
- Lorsqu'activé, le cache opcode sera vérifié pour savoir si un fichier
- a déjà été mis en cache lorsque les fonctions file_exists,
- is_file et is_readable sont appelées.
- Ceci peut accroître les performances des applications qui vérifient l'existence
- et la lisibilité des scripts PHP, mais risque de retourner des données
- périmées si
- opcache.validate_timestamps
- est désactivé.
-
-
-
-
-
- opcache.optimization_level
- int
-
-
-
- Un masque de bits qui contrôle quelles passes d'optimisation sont exécutées.
- La valeur par défaut est 0x7FFEBFFF, qui active toutes les
- optimisations sûres. Désactiver des optimisations ou activer des optimisations
- non sûres est surtout utile pour déboguer/développer l'optimiseur.
-
-
- Chaque bit dans le masque de bits active une passe d'optimisation spécifique :
-
-
- Masque de bits des passes d'optimisation
-
-
-
- Bit
- Nom de la passe
- &Description;
- Défaut
-
-
-
-
- 0
- PASS_1
- Optimisations peephole simples
- Activé
-
-
- 1
- PASS_2
- Inutilisé (a été fusionné dans PASS_1)
- Activé
-
-
- 2
- PASS_3
- Optimisation de saut simple
- Activé
-
-
- 3
- PASS_4
- Optimisation des appels
- Activé
-
-
- 4
- PASS_5
- Optimisation basée sur le graphe de flux de contrôle
- Activé
-
-
- 5
- PASS_6
- Optimisation basée sur l'analyse de flux de données
- Activé
-
-
- 6
- PASS_7
- Indique si le graphe d'appels doit être utilisé pour les optimisations SSA
- Activé
-
-
- 7
- PASS_8
- Propagation conditionnelle de constantes creuses
- Activé
-
-
- 8
- PASS_9
- Optimisation des variables temporaires
- Activé
-
-
- 9
- PASS_10
- Suppression des opcodes NOP
- Activé
-
-
- 10
- PASS_11
- Compactage des littéraux
- Activé
-
-
- 11
- PASS_12
- Pré-calcul de la taille de la pile d'appels
- Activé
-
-
- 12
- PASS_13
- Suppression des variables inutilisées
- Activé
-
-
- 13
- PASS_14
- Élimination du code mort
- Activé
-
-
- 14
- PASS_15
- Collecte et substitution des déclarations de constantes (non sûr)
- Désactivé
-
-
- 15
- PASS_16
- Inlining de fonctions triviales (partie de l'optimisation des appels)
- Activé
-
-
- 16
- (Drapeau)
- Ignorer la possibilité de surcharge d'opérateur (non sûr)
- Désactivé
-
-
-
-
-
- Optimisations sûres vs non sûres
-
- Les optimisations sûres (activées par défaut) préservent le
- comportement exact du code PHP tout en améliorant les performances. Elles incluent
- l'élimination du code mort, le repliement de constantes et l'optimisation des sauts.
-
-
- Les optimisations non sûres (désactivées par défaut) peuvent
- altérer le comportement dans des cas particuliers :
-
-
-
-
- Bit 14 : Collecte des constantes. Les constantes sont substituées
- à la compilation, ignorant l'ordre de déclaration à l'exécution :
-
-
-
-
-
-
-
-
-
- Bit 16 : Ignorer la surcharge d'opérateur.
- Non sûr lors de l'utilisation de classes avec do_operation
- (par exemple GMP,
- BCMath) dans des opérations arithmétiques.
- Avec des déclarations de type, l'optimiseur peut appliquer les mêmes
- optimisations en toute sécurité.
-
-
-
-
-
-
-
-
- opcache.inherited_hack
- bool
-
-
-
- Cette directive de configuration est ignorée.
-
-
-
-
-
- opcache.dups_fix
- bool
-
-
-
- Ce hack ne doit être activé que comme solution de contournement des erreurs
- "Cannot redeclare class".
-
-
-
-
-
- opcache.blacklist_filename
- string
-
-
-
- L'endroit de stockage du fichier gérant la liste noire OPcache.
- Un fichier de liste noire est un fichier texte contenant des noms
- de fichiers qui ne doivent pas être accélérés ; un par ligne.
- Les jokers sont autorisés, et les préfixes peuvent également
- être fournis. Les lignes commençant par un point-virgule
- sont vues comme des commentaires et seront donc ignorées.
-
-
- Un fichier de liste noire simple ressemble à ceci :
-
-
-
-
-
-
-
-
-
-
- opcache.max_file_size
- int
-
-
-
- La taille maximale du fichier pouvant être mis en cache, en octets.
- Si vaut 0, tous les fichiers pourront être mis en cache.
-
-
-
-
-
- opcache.consistency_checks
- int
-
-
-
- Si vaut différent de zéro, OPcache va vérifier la somme de contrôle
- du cache toutes les N requêtes, où N est la valeur de cette directive
- de configuration. Ceci ne doit être activé que lors du débogage, sachant
- qu'il impacte fortement les performances.
-
-
-
- Désactivé à partir de PHP 8.1.18 et 8.2.5. Supprimé à partir de PHP 8.3.0.
-
-
-
-
-
-
- opcache.force_restart_timeout
- int
-
-
-
- La durée à attendre pour le début d'un redémarrage programmé, si le
- cache n'est pas activé, en secondes. Si ce délai d'attente est atteint,
- alors OPcache imagine que quelque chose se passe mal, et va tuer les
- processus gérant les verrous sur le cache pour permettre un
- redémarrage.
-
-
- Si
- opcache.log_verbosity_level
- vaut 2 ou plus, un avertissement sera enregistré dans le journal d'événements
- des erreurs lorsque ce comportement survient.
-
-
- Cette directive n'est pas supportée sur Windows.
-
-
-
-
-
- opcache.error_log
- string
-
-
-
- Le log d'erreurs pour les erreurs OPcache. Une chaîne vide sera vue comme
- stderr, et les erreurs seront envoyées vers la sortie
- d'erreurs standard (qui sera le log des erreurs du serveur Web dans la
- plupart des cas).
-
-
-
-
-
- opcache.log_verbosity_level
- int
-
-
-
- Le niveau de verbosité des logs. Par défaut, seules les erreurs fatales
- (niveau 0) et les erreurs (niveau 1) seront enregistrées. Les autres
- niveaux disponibles sont les alertes (niveau 2), les messages
- d'information (niveau 3), et les messages de débogage (niveau 4).
-
-
-
-
-
- opcache.record_warnings
- bool
-
-
-
- Si cette option est activée, OPcache enregistrera les avertissements de compilation
- et les rejouera lors du prochain include, même s'il est servi depuis le cache.
-
-
-
-
-
- opcache.preferred_memory_model
- string
-
-
-
- Le modèle de mémoire préféré pour OPcache, à utiliser. Si laissé vide,
- OPcache va choisir le modèle le plus approprié, ce qui est la meilleure
- façon de faire dans la plupart des cas.
-
-
- Les valeurs possibles sont mmap, shm,
- posix et win32.
-
-
-
-
-
- opcache.protect_memory
- bool
-
-
-
- Protège la mémoire partagée des écritures non-approuvées pendant l'exécution
- des scripts. Ceci est utile uniquement pour du débogage interne.
-
-
-
-
-
- opcache.mmap_base
- string
-
-
-
- La base utilisée pour les segments de mémoire partagée sous Windows.
- Tous les processus PHP doivent lier la mémoire partagée dans le même espace
- d'adresse. L'utilisation de cette directive permet de corriger les erreurs
- "Unable to reattach to base address".
-
-
-
-
-
- opcache.restrict_api
- string
-
-
-
- Autorise l'appel aux fonctions de l'API d'OPcache uniquement depuis
- des scripts PHP dont le chemin commence par une chaîne spécifique.
- La valeur par défaut, "", signifie "aucune restriction".
-
-
-
-
-
- opcache.file_update_protection
- string
-
-
-
- Empêche la mise en cache des fichiers datant moins que ce nombre de secondes.
- Ceci protège de la mise en cache des fichiers incomplètement mis à jour.
- Si toutes les mises à jour de fichiers sont atomiques, les performances
- peuvent être augmentées en le définissant à 0.
- Cela permettra de mettre en cache les fichiers immédiatement.
-
-
-
-
-
- opcache.huge_code_pages
- bool
-
-
-
- Active ou désactive la copie de code PHP (segment de texte) dans des HUGE PAGES.
- Ceci devrait améliorer les performances, mais nécessite une configuration
- appropriée du système d'exploitation.
- Disponible sur Linux à partir de PHP 7.0.0,
- et sur FreeBSD à partir de PHP 7.4.0.
-
-
-
-
-
- opcache.lockfile_path
- string
-
-
-
- Chemin absolu utilisé pour enregistrer les lockfiles partagés (pour *nix uniquement)
-
-
-
-
-
- opcache.opt_debug_level
- string
-
-
-
- Produit un vidage opcode pour déboguer les différentes étapes d'optimisation.
- 0x10000 affichera les opcodes tels que le compilateur les produit avant qu'aucune
- optimisation ne se produise alors que 0x20000 affichera les codes optimisés.
-
-
-
-
-
- opcache.file_cache
- string
-
-
-
- Active et définit le répertoire de cache de second niveau. Ceci devrait
- améliorer les performances quand la mémoire SHM est pleine, au redémarrage
- du serveur ou réinitialisation de SHM.
- La valeur par défaut "" désactive la mise en cache basée sur les fichiers.
-
-
-
-
-
- opcache.file_cache_only
- bool
-
-
-
- Active ou désactive la mise en cache de l'opcode dans la mémoire partagée.
-
-
-
- Antérieur à PHP 8.1.0, désactiver cette directive avec un fichier de
- cache déjà rempli nécessite le vidage manuel du cache.
-
-
-
-
-
-
- opcache.file_cache_consistency_checks
- bool
-
-
-
- Active ou désactive la validation de la somme de contrôle lorsque le script
- est chargé à partir du cache de fichiers.
-
-
-
-
-
- opcache.file_cache_fallback
- bool
-
-
-
- Insinue opcache.file_cache_only=1 pour un certain processus qui a échoué de
- se rattacher à la mémoire partagée (pour Windows uniquement).
- Le cache de fichiers activé explicitement est requis.
-
-
-
- Désactiver cette option de configuration peut empêcher les processus
- de démarrer, et est donc découragé.
-
-
-
-
-
-
- opcache.validate_permission
- bool
-
-
-
- Valide les permissions des fichiers mises en cache par rapport à
- l'utilisateur actuel.
-
-
-
-
-
- opcache.validate_root
- bool
-
-
-
- Empêche la collision de noms dans les environnements `chroot`ées. Ceci devrait
- être activé dans tous les environnements `chroot`ées pour empêcher l'accès
- aux fichiers en-dehors du chroot.
-
-
-
-
-
- opcache.preload
- string
-
-
-
- Spécifie un script PHP qui sera compilé et exécuté lors du démarrage du serveur,
- et qui peut précharger d'autres fichiers, soit grâce à include
- ou en utilisant la fonction opcache_compile_file. Toutes
- les entités (par exemple fonctions et classes) définies dans ces fichiers seront
- disponibles aux requêtes prêt à l'emploi, jusqu'à ce que le serveur soit éteint.
-
-
-
- Le préchargement n'est pas supporté sur Windows.
-
-
-
-
-
-
- opcache.preload_user
- string
-
-
-
- Permet au préchargement d'être exécuté en tant qu'utilisateur système
- spécifié. Ceci est utile pour les serveurs qui démarrent en tant que root
- avant de passer à un utilisateur système non privilégié. Le préchargement
- en tant que root n'est pas autorisé par défaut pour des raisons de sécurité,
- sauf si cette directive est explicitement définie sur root.
- À partir de PHP 8.3.0, cette directive n'a plus besoin d'être définie afin d'autoriser le préchargement
- lors de l'exécution en tant que root avec &cli.sapi; ou phpdbg SAPI.
-
-
-
-
-
- opcache.cache_id
- string
-
-
-
- Sur Windows, tous les processus exécutant le même PHP
- SAPI sous le même compte utilisateur ayant le même ID
- de cache partage une instance unique de OPcache.
- La valeur de l'ID de cache peut être choisie librement.
-
-
-
- Pour IIS, des pools d'applications différentes peuvent avoir leur propre
- instance OPcache en utilisant la variable d'environnement
- APP_POOL_ID comme opcache.cache_id.
-
-
-
-
-
-
- opcache.jit
- stringint
-
-
-
- Pour un usage typique, cette option accepte une des quatre valeurs de chaîne suivantes :
-
-
- disable: Désactivé complètement, ne peut pas
- être activé lors du runtime.
- off: Désactivé, mais peut être activé lors du runtime.
-
- tracing/on: Utilise le tracing JIT.
- Activé par défaut et recommandé pour la plupart des utilisateurs.
-
- function: Utilise le function JIT.
-
-
- Pour un usage avancé, cette option accepte un entier à 4 chiffres
- CRTO, où les chiffres signifient :
-
-
- C (Drapeaux d'optimisation spécifique au CPU)
-
-
- 0: Désactive les optimisations spécifiques au CPU.
- 1: Active l'usage d'AVX, si le CPU le supporte.
-
-
-
-
- R (allocation de registre)
-
-
- 0: N'accomplit aucune allocation de registres
- 1: Accomplit des allocations de registres au niveau d'un bloc.
- 2: Accomplit des allocations de registres globales.
-
-
-
-
- T (trigger/déclencheur)
-
-
- 0: Compile toutes les fonctions lors du chargement du script.
- 1: Compile les fonctions lors de leur première exécution.
-
- 2: Profile les fonctions lors de la première requête et compile les fonctions
- les plus chaudes juste après.
-
- 3: Profile à la volée et compile les fonctions chaudes.
- 4: Actuellement inutilisé.
-
- 5: Utilise le tracing JIT. Profile à la volée et
- compile les traces pour les segments de code chaud.
-
-
-
-
-
- O (niveau d'optimisation)
-
-
- 0: Pas de JIT.
- 1: JIT minimal (appelle les handlers standard de la VM).
- 2: Inline les handlers de la VM.
- 3: Utilise l'inférence de type.
- 4: Utilise un graphe d'appel.
- 5: Optimise le script entier.
-
-
-
-
- Le mode "tracing" correspond à CRTO = 1254,
- le mode "function" correspond à CRTO = 1205.
-
-
-
-
-
- opcache.jit_buffer_size
- int
-
-
-
- La quantité de mémoire partagée réservée pour du code compilé JIT. Une valeur de zéro désactive le JIT.
-
- &ini.shorthandbytes;
-
-
-
-
- opcache.jit_debug
- int
-
-
-
- Un masque de bits spécifiant quelle sortie de débogage de JIT activer
- Pour les valeurs possibles, consultez zend_jit.h
- (voir les définitions de macro commençant par ZEND_JIT_DEBUG).
-
-
-
-
-
- opcache.jit_bisect_limit
- int
-
-
-
- Option de débogage qui désactive la compilation JIT après la compilation d'un certain nombre
- de fonctions.
- Ceci peut être utile pour bisect la source d'une mauvaise compilation JIT.
- Remarque : cette option ne fonctionne que lorsque le déclencheur JIT est défini
- à 0 (compilation au chargement du script) ou 1 (compilation à la première exécution),
- par exemple, opcache.jit=1215.
- Voir plus dans l'option opcache.jit.
-
-
-
-
-
- opcache.jit_prof_threshold
- float
-
-
-
- Lors de l'utilisation du mode de déclencheur "profile les fonctions lors de la première requête",
- cette limite détermine si une fonction est considérée chaude. Le nombre d'appels à la fonction
- divisé par le nombre d'appels à toutes les fonctions doit être supérieur à cette limite.
- Par exemple, une limite de 0.005 signifie qu'une fonction qui correspond à plus de 0.5% de tous
- les appels sera compilée JIT.
-
-
-
-
-
- opcache.jit_max_root_traces
- int
-
-
-
- Nombre maximal de traces racines (root traces). La trace racine est un flux d'exécution prenant
- d'abord un chemin à travers le code, qui est une unité de la compilation JIT. JIT ne compilera
- pas de nouveau code s'il atteint cette limite.
-
-
-
-
-
- opcache.jit_max_side_traces
- int
-
-
-
- Nombre maximal de traces adjacentes (side trace) une trace racine peut avoir.
- La trace adjacente est un autre flux d'exécution qui ne suit pas le chemin de la trace
- racine compilée. Les traces adjacentes appartenant à la même trace racine ne seront pas compilées
- si elles atteignent cette limite.
-
-
-
-
-
- opcache.jit_max_exit_counters
- int
-
-
-
- Nombre maximal de compteurs de sortie de trace adjacente. Ceci limite le nombre total de
- traces adjacentes qu'il peut y avoir, à travers toutes les traces racines.
-
-
-
-
-
- opcache.jit_hot_loop
- int
-
-
-
- Après combien d'itérations une boucle est considérée chaude.
- L'intervalle de valeurs valides est [0,255] ;
- pour tout paramètre hors de cette plage, par exemple -1 ou 256, la valeur par défaut sera utilisée à la place.
- Spécialement, une valeur nulle désactivera le JIT pour tracer et compiler toutes les boucles.
-
-
-
-
-
- opcache.jit_hot_func
- int
-
-
-
- Après combien d'appels une fonction est considérée chaude.
- La plage de valeurs valides est [0,255] ;
- pour tout paramètre hors de cette plage, par exemple -1 ou 256, la valeur par défaut sera utilisée à la place.
- Spécialement, une valeur nulle désactivera le JIT pour tracer et compiler toutes les fonctions.
-
-
-
-
-
- opcache.jit_hot_return
- int
-
-
-
- Après combien de retours un retour est considéré chaud.
- La plage de valeurs valides est [0,255] ;
- pour tout paramètre hors de cette plage, par exemple -1 ou 256, la valeur par défaut sera utilisée à la place.
- Spécialement, une valeur nulle désactivera le JIT pour tracer et compiler tous les retours.
-
-
-
-
-
- opcache.jit_hot_side_exit
- int
-
-
-
- Après combien de sortie, une sortie adjacente est considérée chaude.
- La plage de valeurs valides est [0,255] ;
- pour tout paramètre hors de cette plage, par exemple -1 ou 256, la valeur par défaut sera utilisée à la place.
- Spécialement, une valeur nulle désactivera le JIT pour tracer et compiler toutes les sorties latérales.
-
-
-
-
-
- opcache.jit_blacklist_root_trace
- int
-
-
-
- Nombre maximal de tentatives de compilation d'une trace racine avant que celle-ci ne soit exclue.
-
-
-
-
-
- opcache.jit_blacklist_side_trace
- int
-
-
-
- Nombre maximal de tentatives de compilation d'une trace adjacente avant que celle-ci ne soit exclue.
-
-
-
-
-
- opcache.jit_max_loop_unrolls
- int
-
-
-
- Nombre maximal de tentatives pour dérouler une boucle dans une trace adjacente,
- tentant d'atteindre la trace racine et de fermer la boucle extérieure.
-
-
-
-
-
- opcache.jit_max_recursive_calls
- int
-
-
-
-
- Nombre maximal d'appels récursifs déroulés dans une boucle.
-
-
-
-
-
- opcache.jit_max_recursive_returns
- int
-
-
-
-
- Nombre maximal de retours récursifs déroulés dans une boucle.
-
-
-
-
-
- opcache.jit_max_polymorphic_calls
- int
-
-
-
- Nombre maximal de tentatives pour inliner un appel polymorphe (dynamique ou méthode).
- Les appels au-dessus de cette limite sont traités comme mégamorphes et ne sont pas inlinés.
-
-
-
-
-
-
+
+
+
+
+ &reftitle.runtime;
+ &extension.runtime;
+
+
+ Options de configuration d'OPcache
+
+
+
+ &Name;
+ &Default;
+ &Changeable;
+ &Changelog;
+
+
+
+
+ opcache.enable
+ 1
+ INI_ALL
+
+
+
+ opcache.enable_cli
+ 0
+ INI_SYSTEM
+ Entre PHP 7.1.2 et 7.1.6 inclusivement, la valeur par défaut était de 1
+
+
+ opcache.memory_consumption
+ "128"
+ INI_SYSTEM
+
+
+
+ opcache.interned_strings_buffer
+ "8"
+ INI_SYSTEM
+
+
+
+ opcache.max_accelerated_files
+ "10000"
+ INI_SYSTEM
+
+
+
+ opcache.max_wasted_percentage
+ "5"
+ INI_SYSTEM
+
+
+
+ opcache.use_cwd
+ 1
+ INI_SYSTEM
+
+
+
+ opcache.validate_timestamps
+ 1
+ INI_ALL
+
+
+
+ opcache.revalidate_freq
+ "2"
+ INI_ALL
+
+
+
+ opcache.revalidate_path
+ 0
+ INI_ALL
+
+
+
+ opcache.save_comments
+ 1
+ INI_SYSTEM
+
+
+
+ opcache.fast_shutdown
+ 0
+ INI_SYSTEM
+ Supprimé en PHP 7.2.0.
+
+
+ opcache.enable_file_override
+ 0
+ INI_SYSTEM
+
+
+
+ opcache.optimization_level
+ "0x7FFEBFFF"
+ INI_SYSTEM
+ Modifié depuis 0x7FFFBFFF en PHP 7.3.0
+
+
+ opcache.inherited_hack
+ 1
+ INI_SYSTEM
+ Supprimé en PHP 7.3.0
+
+
+ opcache.dups_fix
+ 0
+ INI_ALL
+
+
+
+ opcache.blacklist_filename
+ ""
+ INI_SYSTEM
+
+
+
+ opcache.max_file_size
+ 0
+ INI_SYSTEM
+
+
+
+ opcache.consistency_checks
+ 0
+ INI_ALL
+ >Désactivé à partir de PHP 8.1.18 et 8.2.5. Supprimé à partir de PHP 8.3.0.
+
+
+ opcache.force_restart_timeout
+ "180"
+ INI_SYSTEM
+
+
+
+ opcache.error_log
+ ""
+ INI_SYSTEM
+
+
+
+ opcache.log_verbosity_level
+ 1
+ INI_SYSTEM
+
+
+
+ opcache.record_warnings
+ 0
+ INI_SYSTEM
+ Disponible à partir de PHP 8.0.0.
+
+
+ opcache.preferred_memory_model
+ ""
+ INI_SYSTEM
+
+
+
+ opcache.protect_memory
+ 0
+ INI_SYSTEM
+
+
+
+ opcache.mmap_base
+ &null;
+ INI_SYSTEM
+
+
+
+ opcache.restrict_api
+ ""
+ INI_SYSTEM
+
+
+
+ opcache.file_update_protection
+ "2"
+ INI_ALL
+
+
+
+ opcache.huge_code_pages
+ 0
+ INI_SYSTEM
+
+
+
+ opcache.lockfile_path
+ "/tmp"
+ INI_SYSTEM
+
+
+
+ opcache.opt_debug_level
+ 0
+ INI_SYSTEM
+ Disponible à partir de PHP 7.1.0
+
+
+ opcache.file_cache
+ NULL
+ INI_SYSTEM
+
+
+
+ opcache.file_cache_only
+ 0
+ INI_SYSTEM
+
+
+
+ opcache.file_cache_consistency_checks
+ 1
+ INI_SYSTEM
+
+
+
+ opcache.file_cache_fallback
+ 1
+ INI_SYSTEM
+ Windows uniquement.
+
+
+ opcache.validate_permission
+ 0
+ INI_SYSTEM
+ Disponible à partir de PHP 7.0.14
+
+
+ opcache.validate_root
+ 0
+ INI_SYSTEM
+ Disponible à partir de PHP 7.0.14
+
+
+ opcache.preload
+ ""
+ INI_SYSTEM
+ Disponible à partir de PHP 7.4.0
+
+
+ opcache.preload_user
+ ""
+ INI_SYSTEM
+ Disponible à partir de PHP 7.4.0
+
+
+ opcache.cache_id
+ ""
+ INI_SYSTEM
+ Windows uniquement. Disponible à partir de PHP 7.4.0
+
+
+ opcache.jit
+ "disable"
+ INI_ALL
+ Disponible à partir de PHP 8.0.0. Auparavant à PHP 8.4.0, la valeur par défaut était "tracing"
+
+
+ opcache.jit_buffer_size
+ 0
+ INI_SYSTEM
+ Disponible à partir de PHP 8.0.0
+
+
+ opcache.jit_debug
+ 0
+ INI_ALL
+ Disponible à partir de PHP 8.0.0
+
+
+ opcache.jit_bisect_limit
+ 0
+ INI_ALL
+ Disponible à partir de PHP 8.0.0
+
+
+ opcache.jit_prof_threshold
+ "0.005"
+ INI_ALL
+ Disponible à partir de PHP 8.0.0
+
+
+ opcache.jit_max_root_traces
+ "1024"
+ INI_SYSTEM
+ Disponible à partir de PHP 8.0.0
+
+
+ opcache.jit_max_side_traces
+ "128"
+ INI_SYSTEM
+ Disponible à partir de PHP 8.0.0
+
+
+ opcache.jit_max_exit_counters
+ "8192"
+ INI_SYSTEM
+ Disponible à partir de PHP 8.0.0
+
+
+ opcache.jit_hot_loop
+ "64"
+ INI_SYSTEM
+ Disponible à partir de PHP 8.0.0
+
+
+ opcache.jit_hot_func
+ "127"
+ INI_SYSTEM
+ Disponible à partir de PHP 8.0.0
+
+
+ opcache.jit_hot_return
+ "8"
+ INI_SYSTEM
+ Disponible à partir de PHP 8.0.0
+
+
+ opcache.jit_hot_side_exit
+ "8"
+ INI_SYSTEM
+ Disponible à partir de PHP 8.0.0
+
+
+ opcache.jit_blacklist_root_trace
+ "16"
+ INI_ALL
+ Disponible à partir de PHP 8.0.0
+
+
+ opcache.jit_blacklist_side_trace
+ "8"
+ INI_ALL
+ Disponible à partir de PHP 8.0.0
+
+
+ opcache.jit_max_loop_unrolls
+ "8"
+ INI_ALL
+ Disponible à partir de PHP 8.0.0
+
+
+ opcache.jit_max_recursive_calls
+ "2"
+ INI_ALL
+ Disponible à partir de PHP 8.0.0
+
+
+ opcache.jit_max_recursive_returns
+ "2"
+ INI_ALL
+ Disponible à partir de PHP 8.0.0
+
+
+ opcache.jit_max_polymorphic_calls
+ "2"
+ INI_ALL
+ Disponible à partir de PHP 8.0.0
+
+
+
+
+ &ini.php.constants;
+
+
+ &ini.descriptions.title;
+
+
+
+
+ opcache.enable
+ bool
+
+
+
+ Active le cache d'opcode. Lorsqu'il est désactivé, le code n'est
+ ni optimisé, ni mis en cache. Le paramétrage de opcache.enable
+ ne peut être activé pendant l'exécution via la fonction
+ ini_set, il ne peut être que désactivé. Tenter de l'activer
+ dans un script va générer une alerte.
+
+
+
+
+
+ opcache.enable_cli
+ bool
+
+
+
+ Active le cache d'opcode pour la version CLI de PHP.
+
+
+
+
+
+ opcache.memory_consumption
+ int
+
+
+
+ La taille de la mémoire partagée utilisée par OPcache, en mégaoctets.
+ La valeur minimale permissible est "8",
+ qui est forcé si une valeur plus petite est définie.
+
+
+
+
+
+ opcache.interned_strings_buffer
+ int
+
+
+
+ La quantité de mémoire utilisée pour stocker des chaînes internes, en mégaoctets.
+ La valeur maximale est de 32767 sur les architectures 64 bits, et de 4095 sur les architectures 32 bits.
+
+
+
+ Avant PHP 8.4.0, la valeur maximale était de 4095 mégaoctets sur toutes les architectures.
+
+
+
+
+
+
+ opcache.max_accelerated_files
+ int
+
+
+
+ Le nombre maximal de clés (et donc, de scripts) dans la table de hachage d'OPcache.
+ La valeur actuellement utilisée sera le premier nombre du jeu des
+ nombres premiers
+ { 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987, 262237, 524521, 1048793 }
+ qui est plus grand ou égal que la valeur configurée. La valeur minimale est 200.
+ La valeur maximale est 100000 dans PHP < 5.5.6, et 1000000 dans les versions
+ ultérieures.
+ Les valeurs hors de cet intervalle sont fixées à l'intervalle autorisé.
+
+
+
+
+
+ opcache.max_wasted_percentage
+ int
+
+
+
+ Le pourcentage maximum de mémoire gaspillée autorisée avant qu'un redémarrage
+ ne soit programmé, s'il n'y a pas assez de mémoire disponible.
+ La valeur maximale permissible est "50",
+ qui est forcé si une valeur plus large est définie.
+
+
+
+
+
+ opcache.use_cwd
+ bool
+
+
+
+ Si activé, OPcache ajoute le dossier de travail courant à la clé du script,
+ éliminant ainsi les collisions possibles entre les fichiers dont le nom
+ de base est identique. Le fait de désactiver cette fonctionnalité améliore
+ les performances, mais peut casser les applications existantes.
+
+
+
+
+
+ opcache.validate_timestamps
+ bool
+
+
+
+ Si activé, OPcache va vérifier les mises à jour des scripts toutes les
+ opcache.revalidate_freq
+ secondes. Lorsque cette directive est désactivée, vous devez réinitialiser
+ OPcache manuellement via la fonction opcache_reset,
+ la fonction opcache_invalidate ou en redémarrant le serveur
+ Web pour que les modifications du système de fichiers ne prennent effet.
+
+
+ OPcache peut toujours valider l'horodatage d'un fichier lors de la compilation si les options
+ opcache.file_update_protection
+ ou opcache.max_file_size
+ sont définies sur des valeurs non nulles.
+
+
+
+
+
+
+
+ opcache.revalidate_freq
+ int
+
+
+
+ La fréquence de vérification du timestamp du script afin de détecter
+ les possibles mises à jour, en secondes. La valeur 0
+ fera qu'OPcache vérifiera les mises à jour à chaque requête.
+
+
+ Cette directive de configuration est ignorée si
+ opcache.validate_timestamps
+ est désactivé.
+
+
+
+
+
+ opcache.revalidate_path
+ bool
+
+
+
+ Si désactivé, les fichiers en cache existant utilisant le même
+ include_path seront réutilisés.
+ Aussi, si un fichier avec le même nom est quelque part ailleurs dans le
+ include_path, il ne sera pas trouvé.
+
+
+
+
+
+ opcache.save_comments
+ bool
+
+
+
+ Si désactivé, tous les commentaires de documentation seront supprimés
+ du cache opcode afin de réduire la taille du code optimisé.
+ La désactivation de cette directive peut casser des applications
+ et des frameworks qui s'appuient sur l'analyse des commentaires
+ pour les annotations, comme Doctrine, Zend Framework 2 et PHPUnit.
+
+
+
+
+
+ opcache.fast_shutdown
+ bool
+
+
+
+ Si activé, une séquence d'arrêt rapide sera utilisée, qui ne libère pas
+ chaque bloc alloué, mais s'appuie sur le gestionnaire de mémoire
+ Zend Engine pour désallouer le jeu entier des variables de requêtes, en masse.
+
+
+ Cette directive a été supprimée dans PHP 7.2.0. Une variante de la
+ séquence d'arrêt rapide a été intégrée dans PHP et sera automatiquement
+ utilisée si possible.
+
+
+
+
+
+ opcache.enable_file_override
+ bool
+
+
+
+ Lorsqu'activé, le cache opcode sera vérifié pour savoir si un fichier
+ a déjà été mis en cache lorsque les fonctions file_exists,
+ is_file et is_readable sont appelées.
+ Ceci peut accroître les performances des applications qui vérifient l'existence
+ et la lisibilité des scripts PHP, mais risque de retourner des données
+ périmées si
+ opcache.validate_timestamps
+ est désactivé.
+
+
+
+
+
+ opcache.optimization_level
+ int
+
+
+
+ Un masque de bits qui contrôle quelles passes d'optimisation sont exécutées.
+ La valeur par défaut est 0x7FFEBFFF, qui active toutes les
+ optimisations sûres. Désactiver des optimisations ou activer des optimisations
+ non sûres est surtout utile pour déboguer/développer l'optimiseur.
+
+
+ Chaque bit dans le masque de bits active une passe d'optimisation spécifique :
+
+
+ Masque de bits des passes d'optimisation
+
+
+
+ Bit
+ Nom de la passe
+ &Description;
+ Défaut
+
+
+
+
+ 0
+ PASS_1
+ Optimisations peephole simples
+ Activé
+
+
+ 1
+ PASS_2
+ Inutilisé (a été fusionné dans PASS_1)
+ Activé
+
+
+ 2
+ PASS_3
+ Optimisation de saut simple
+ Activé
+
+
+ 3
+ PASS_4
+ Optimisation des appels
+ Activé
+
+
+ 4
+ PASS_5
+ Optimisation basée sur le graphe de flux de contrôle
+ Activé
+
+
+ 5
+ PASS_6
+ Optimisation basée sur l'analyse de flux de données
+ Activé
+
+
+ 6
+ PASS_7
+ Indique si le graphe d'appels doit être utilisé pour les optimisations SSA
+ Activé
+
+
+ 7
+ PASS_8
+ Propagation conditionnelle de constantes creuses
+ Activé
+
+
+ 8
+ PASS_9
+ Optimisation des variables temporaires
+ Activé
+
+
+ 9
+ PASS_10
+ Suppression des opcodes NOP
+ Activé
+
+
+ 10
+ PASS_11
+ Compactage des littéraux
+ Activé
+
+
+ 11
+ PASS_12
+ Pré-calcul de la taille de la pile d'appels
+ Activé
+
+
+ 12
+ PASS_13
+ Suppression des variables inutilisées
+ Activé
+
+
+ 13
+ PASS_14
+ Élimination du code mort
+ Activé
+
+
+ 14
+ PASS_15
+ Collecte et substitution des déclarations de constantes (non sûr)
+ Désactivé
+
+
+ 15
+ PASS_16
+ Inlining de fonctions triviales (partie de l'optimisation des appels)
+ Activé
+
+
+ 16
+ (Drapeau)
+ Ignorer la possibilité de surcharge d'opérateur (non sûr)
+ Désactivé
+
+
+
+
+
+ Optimisations sûres vs non sûres
+
+ Les optimisations sûres (activées par défaut) préservent le
+ comportement exact du code PHP tout en améliorant les performances. Elles incluent
+ l'élimination du code mort, le repliement de constantes et l'optimisation des sauts.
+
+
+ Les optimisations non sûres (désactivées par défaut) peuvent
+ altérer le comportement dans des cas particuliers :
+
+
+
+
+ Bit 14 : Collecte des constantes. Les constantes sont substituées
+ à la compilation, ignorant l'ordre de déclaration à l'exécution :
+
+
+
+
+
+
+
+
+
+ Bit 16 : Ignorer la surcharge d'opérateur.
+ Non sûr lors de l'utilisation de classes avec do_operation
+ (par exemple GMP,
+ BCMath) dans des opérations arithmétiques.
+ Avec des déclarations de type, l'optimiseur peut appliquer les mêmes
+ optimisations en toute sécurité.
+
+
+
+
+
+
+
+
+ opcache.inherited_hack
+ bool
+
+
+
+ Cette directive de configuration est ignorée.
+
+
+
+
+
+ opcache.dups_fix
+ bool
+
+
+
+ Ce hack ne doit être activé que comme solution de contournement des erreurs
+ "Cannot redeclare class".
+
+
+
+
+
+ opcache.blacklist_filename
+ string
+
+
+
+ L'endroit de stockage du fichier gérant la liste noire OPcache.
+ Un fichier de liste noire est un fichier texte contenant des noms
+ de fichiers qui ne doivent pas être accélérés ; un par ligne.
+ Les jokers sont autorisés, et les préfixes peuvent également
+ être fournis. Les lignes commençant par un point-virgule
+ sont vues comme des commentaires et seront donc ignorées.
+
+
+ Un fichier de liste noire simple ressemble à ceci :
+
+
+
+
+
+
+
+
+
+
+ opcache.max_file_size
+ int
+
+
+
+ La taille maximale du fichier pouvant être mis en cache, en octets.
+ Si vaut 0, tous les fichiers pourront être mis en cache.
+
+
+
+
+
+ opcache.consistency_checks
+ int
+
+
+
+ Si vaut différent de zéro, OPcache va vérifier la somme de contrôle
+ du cache toutes les N requêtes, où N est la valeur de cette directive
+ de configuration. Ceci ne doit être activé que lors du débogage, sachant
+ qu'il impacte fortement les performances.
+
+
+
+ Désactivé à partir de PHP 8.1.18 et 8.2.5. Supprimé à partir de PHP 8.3.0.
+
+
+
+
+
+
+ opcache.force_restart_timeout
+ int
+
+
+
+ La durée à attendre pour le début d'un redémarrage programmé, si le
+ cache n'est pas activé, en secondes. Si ce délai d'attente est atteint,
+ alors OPcache imagine que quelque chose se passe mal, et va tuer les
+ processus gérant les verrous sur le cache pour permettre un
+ redémarrage.
+
+
+ Si
+ opcache.log_verbosity_level
+ vaut 2 ou plus, un avertissement sera enregistré dans le journal d'événements
+ des erreurs lorsque ce comportement survient.
+
+
+ Cette directive n'est pas supportée sur Windows.
+
+
+
+
+
+ opcache.error_log
+ string
+
+
+
+ Le log d'erreurs pour les erreurs OPcache. Une chaîne vide sera vue comme
+ stderr, et les erreurs seront envoyées vers la sortie
+ d'erreurs standard (qui sera le log des erreurs du serveur Web dans la
+ plupart des cas).
+
+
+
+
+
+ opcache.log_verbosity_level
+ int
+
+
+
+ Le niveau de verbosité des logs. Par défaut, seules les erreurs fatales
+ (niveau 0) et les erreurs (niveau 1) seront enregistrées. Les autres
+ niveaux disponibles sont les alertes (niveau 2), les messages
+ d'information (niveau 3), et les messages de débogage (niveau 4).
+
+
+
+
+
+ opcache.record_warnings
+ bool
+
+
+
+ Si cette option est activée, OPcache enregistrera les avertissements de compilation
+ et les rejouera lors du prochain include, même s'il est servi depuis le cache.
+
+
+
+
+
+ opcache.preferred_memory_model
+ string
+
+
+
+ Le modèle de mémoire préféré pour OPcache, à utiliser. Si laissé vide,
+ OPcache va choisir le modèle le plus approprié, ce qui est la meilleure
+ façon de faire dans la plupart des cas.
+
+
+ Les valeurs possibles sont mmap, shm,
+ posix et win32.
+
+
+
+
+
+ opcache.protect_memory
+ bool
+
+
+
+ Protège la mémoire partagée des écritures non-approuvées pendant l'exécution
+ des scripts. Ceci est utile uniquement pour du débogage interne.
+
+
+
+
+
+ opcache.mmap_base
+ string
+
+
+
+ La base utilisée pour les segments de mémoire partagée sous Windows.
+ Tous les processus PHP doivent lier la mémoire partagée dans le même espace
+ d'adresse. L'utilisation de cette directive permet de corriger les erreurs
+ "Unable to reattach to base address".
+
+
+
+
+
+ opcache.restrict_api
+ string
+
+
+
+ Autorise l'appel aux fonctions de l'API d'OPcache uniquement depuis
+ des scripts PHP dont le chemin commence par une chaîne spécifique.
+ La valeur par défaut, "", signifie "aucune restriction".
+
+
+
+
+
+ opcache.file_update_protection
+ string
+
+
+
+ Empêche la mise en cache des fichiers datant moins que ce nombre de secondes.
+ Ceci protège de la mise en cache des fichiers incomplètement mis à jour.
+ Si toutes les mises à jour de fichiers sont atomiques, les performances
+ peuvent être augmentées en le définissant à 0.
+ Cela permettra de mettre en cache les fichiers immédiatement.
+
+
+
+
+
+ opcache.huge_code_pages
+ bool
+
+
+
+ Active ou désactive la copie de code PHP (segment de texte) dans des HUGE PAGES.
+ Ceci devrait améliorer les performances, mais nécessite une configuration
+ appropriée du système d'exploitation.
+ Disponible sur Linux à partir de PHP 7.0.0,
+ et sur FreeBSD à partir de PHP 7.4.0.
+
+
+
+
+
+ opcache.lockfile_path
+ string
+
+
+
+ Chemin absolu utilisé pour enregistrer les lockfiles partagés (pour *nix uniquement)
+
+
+
+
+
+ opcache.opt_debug_level
+ string
+
+
+
+ Produit un vidage opcode pour déboguer les différentes étapes d'optimisation.
+ 0x10000 affichera les opcodes tels que le compilateur les produit avant qu'aucune
+ optimisation ne se produise alors que 0x20000 affichera les codes optimisés.
+
+
+
+
+
+ opcache.file_cache
+ string
+
+
+
+ Active et définit le répertoire de cache de second niveau. Ceci devrait
+ améliorer les performances quand la mémoire SHM est pleine, au redémarrage
+ du serveur ou réinitialisation de SHM.
+ La valeur par défaut "" désactive la mise en cache basée sur les fichiers.
+
+
+
+
+
+ opcache.file_cache_only
+ bool
+
+
+
+ Active ou désactive la mise en cache de l'opcode dans la mémoire partagée.
+
+
+
+ Antérieur à PHP 8.1.0, désactiver cette directive avec un fichier de
+ cache déjà rempli nécessite le vidage manuel du cache.
+
+
+
+
+
+
+ opcache.file_cache_consistency_checks
+ bool
+
+
+
+ Active ou désactive la validation de la somme de contrôle lorsque le script
+ est chargé à partir du cache de fichiers.
+
+
+
+
+
+ opcache.file_cache_fallback
+ bool
+
+
+
+ Insinue opcache.file_cache_only=1 pour un certain processus qui a échoué de
+ se rattacher à la mémoire partagée (pour Windows uniquement).
+ Le cache de fichiers activé explicitement est requis.
+
+
+
+ Désactiver cette option de configuration peut empêcher les processus
+ de démarrer, et est donc découragé.
+
+
+
+
+
+
+ opcache.validate_permission
+ bool
+
+
+
+ Valide les permissions des fichiers mises en cache par rapport à
+ l'utilisateur actuel.
+
+
+
+
+
+ opcache.validate_root
+ bool
+
+
+
+ Empêche la collision de noms dans les environnements `chroot`ées. Ceci devrait
+ être activé dans tous les environnements `chroot`ées pour empêcher l'accès
+ aux fichiers en-dehors du chroot.
+
+
+
+
+
+ opcache.preload
+ string
+
+
+
+ Spécifie un script PHP qui sera compilé et exécuté lors du démarrage du serveur,
+ et qui peut précharger d'autres fichiers, soit grâce à include
+ ou en utilisant la fonction opcache_compile_file. Toutes
+ les entités (par exemple fonctions et classes) définies dans ces fichiers seront
+ disponibles aux requêtes prêt à l'emploi, jusqu'à ce que le serveur soit éteint.
+
+
+
+ Le préchargement n'est pas supporté sur Windows.
+
+
+
+
+
+
+ opcache.preload_user
+ string
+
+
+
+ Permet au préchargement d'être exécuté en tant qu'utilisateur système
+ spécifié. Ceci est utile pour les serveurs qui démarrent en tant que root
+ avant de passer à un utilisateur système non privilégié. Le préchargement
+ en tant que root n'est pas autorisé par défaut pour des raisons de sécurité,
+ sauf si cette directive est explicitement définie sur root.
+ À partir de PHP 8.3.0, cette directive n'a plus besoin d'être définie afin d'autoriser le préchargement
+ lors de l'exécution en tant que root avec &cli.sapi; ou phpdbg SAPI.
+
+
+
+
+
+ opcache.cache_id
+ string
+
+
+
+ Sur Windows, tous les processus exécutant le même PHP
+ SAPI sous le même compte utilisateur ayant le même ID
+ de cache partage une instance unique de OPcache.
+ La valeur de l'ID de cache peut être choisie librement.
+
+
+
+ Pour IIS, des pools d'applications différentes peuvent avoir leur propre
+ instance OPcache en utilisant la variable d'environnement
+ APP_POOL_ID comme opcache.cache_id.
+
+
+
+
+
+
+ opcache.jit
+ stringint
+
+
+
+ Pour un usage typique, cette option accepte une des quatre valeurs de chaîne suivantes :
+
+
+ disable: Désactivé complètement, ne peut pas
+ être activé lors du runtime.
+ off: Désactivé, mais peut être activé lors du runtime.
+
+ tracing/on: Utilise le tracing JIT.
+ Activé par défaut et recommandé pour la plupart des utilisateurs.
+
+ function: Utilise le function JIT.
+
+
+ Pour un usage avancé, cette option accepte un entier à 4 chiffres
+ CRTO, où les chiffres signifient :
+
+
+ C (Drapeaux d'optimisation spécifique au CPU)
+
+
+ 0: Désactive les optimisations spécifiques au CPU.
+ 1: Active l'usage d'AVX, si le CPU le supporte.
+
+
+
+
+ R (allocation de registre)
+
+
+ 0: N'accomplit aucune allocation de registres
+ 1: Accomplit des allocations de registres au niveau d'un bloc.
+ 2: Accomplit des allocations de registres globales.
+
+
+
+
+ T (trigger/déclencheur)
+
+
+ 0: Compile toutes les fonctions lors du chargement du script.
+ 1: Compile les fonctions lors de leur première exécution.
+
+ 2: Profile les fonctions lors de la première requête et compile les fonctions
+ les plus chaudes juste après.
+
+ 3: Profile à la volée et compile les fonctions chaudes.
+ 4: Actuellement inutilisé.
+
+ 5: Utilise le tracing JIT. Profile à la volée et
+ compile les traces pour les segments de code chaud.
+
+
+
+
+
+ O (niveau d'optimisation)
+
+
+ 0: Pas de JIT.
+ 1: JIT minimal (appelle les handlers standard de la VM).
+ 2: Inline les handlers de la VM.
+ 3: Utilise l'inférence de type.
+ 4: Utilise un graphe d'appel.
+ 5: Optimise le script entier.
+
+
+
+
+ Le mode "tracing" correspond à CRTO = 1254,
+ le mode "function" correspond à CRTO = 1205.
+
+
+
+
+
+ opcache.jit_buffer_size
+ int
+
+
+
+ La quantité de mémoire partagée réservée pour du code compilé JIT. Une valeur de zéro désactive le JIT.
+
+ &ini.shorthandbytes;
+
+
+
+
+ opcache.jit_debug
+ int
+
+
+
+ Un masque de bits spécifiant quelle sortie de débogage de JIT activer
+ Pour les valeurs possibles, consultez zend_jit.h
+ (voir les définitions de macro commençant par ZEND_JIT_DEBUG).
+
+
+
+
+
+ opcache.jit_bisect_limit
+ int
+
+
+
+ Option de débogage qui désactive la compilation JIT après la compilation d'un certain nombre
+ de fonctions.
+ Ceci peut être utile pour bisect la source d'une mauvaise compilation JIT.
+ Remarque : cette option ne fonctionne que lorsque le déclencheur JIT est défini
+ à 0 (compilation au chargement du script) ou 1 (compilation à la première exécution),
+ par exemple, opcache.jit=1215.
+ Voir plus dans l'option opcache.jit.
+
+
+
+
+
+ opcache.jit_prof_threshold
+ float
+
+
+
+ Lors de l'utilisation du mode de déclencheur "profile les fonctions lors de la première requête",
+ cette limite détermine si une fonction est considérée chaude. Le nombre d'appels à la fonction
+ divisé par le nombre d'appels à toutes les fonctions doit être supérieur à cette limite.
+ Par exemple, une limite de 0.005 signifie qu'une fonction qui correspond à plus de 0.5% de tous
+ les appels sera compilée JIT.
+
+
+
+
+
+ opcache.jit_max_root_traces
+ int
+
+
+
+ Nombre maximal de traces racines (root traces). La trace racine est un flux d'exécution prenant
+ d'abord un chemin à travers le code, qui est une unité de la compilation JIT. JIT ne compilera
+ pas de nouveau code s'il atteint cette limite.
+
+
+
+
+
+ opcache.jit_max_side_traces
+ int
+
+
+
+ Nombre maximal de traces adjacentes (side trace) une trace racine peut avoir.
+ La trace adjacente est un autre flux d'exécution qui ne suit pas le chemin de la trace
+ racine compilée. Les traces adjacentes appartenant à la même trace racine ne seront pas compilées
+ si elles atteignent cette limite.
+
+
+
+
+
+ opcache.jit_max_exit_counters
+ int
+
+
+
+ Nombre maximal de compteurs de sortie de trace adjacente. Ceci limite le nombre total de
+ traces adjacentes qu'il peut y avoir, à travers toutes les traces racines.
+
+
+
+
+
+ opcache.jit_hot_loop
+ int
+
+
+
+ Après combien d'itérations une boucle est considérée chaude.
+ L'intervalle de valeurs valides est [0,255] ;
+ pour tout paramètre hors de cette plage, par exemple -1 ou 256, la valeur par défaut sera utilisée à la place.
+ Spécialement, une valeur nulle désactivera le JIT pour tracer et compiler toutes les boucles.
+
+
+
+
+
+ opcache.jit_hot_func
+ int
+
+
+
+ Après combien d'appels une fonction est considérée chaude.
+ La plage de valeurs valides est [0,255] ;
+ pour tout paramètre hors de cette plage, par exemple -1 ou 256, la valeur par défaut sera utilisée à la place.
+ Spécialement, une valeur nulle désactivera le JIT pour tracer et compiler toutes les fonctions.
+
+
+
+
+
+ opcache.jit_hot_return
+ int
+
+
+
+ Après combien de retours un retour est considéré chaud.
+ La plage de valeurs valides est [0,255] ;
+ pour tout paramètre hors de cette plage, par exemple -1 ou 256, la valeur par défaut sera utilisée à la place.
+ Spécialement, une valeur nulle désactivera le JIT pour tracer et compiler tous les retours.
+
+
+
+
+
+ opcache.jit_hot_side_exit
+ int
+
+
+
+ Après combien de sortie, une sortie adjacente est considérée chaude.
+ La plage de valeurs valides est [0,255] ;
+ pour tout paramètre hors de cette plage, par exemple -1 ou 256, la valeur par défaut sera utilisée à la place.
+ Spécialement, une valeur nulle désactivera le JIT pour tracer et compiler toutes les sorties latérales.
+
+
+
+
+
+ opcache.jit_blacklist_root_trace
+ int
+
+
+
+ Nombre maximal de tentatives de compilation d'une trace racine avant que celle-ci ne soit exclue.
+
+
+
+
+
+ opcache.jit_blacklist_side_trace
+ int
+
+
+
+ Nombre maximal de tentatives de compilation d'une trace adjacente avant que celle-ci ne soit exclue.
+
+
+
+
+
+ opcache.jit_max_loop_unrolls
+ int
+
+
+
+ Nombre maximal de tentatives pour dérouler une boucle dans une trace adjacente,
+ tentant d'atteindre la trace racine et de fermer la boucle extérieure.
+
+
+
+
+
+ opcache.jit_max_recursive_calls
+ int
+
+
+
+
+ Nombre maximal d'appels récursifs déroulés dans une boucle.
+
+
+
+
+
+ opcache.jit_max_recursive_returns
+ int
+
+
+
+
+ Nombre maximal de retours récursifs déroulés dans une boucle.
+
+
+
+
+
+ opcache.jit_max_polymorphic_calls
+ int
+
+
+
+ Nombre maximal de tentatives pour inliner un appel polymorphe (dynamique ou méthode).
+ Les appels au-dessus de cette limite sont traités comme mégamorphes et ne sont pas inlinés.
+
+
+
+
+
+
From ccb6b8aa2d76de7669432df14642b029a58b1da8 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:40:38 +0100
Subject: [PATCH 48/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/openssl/book.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/openssl/book.xml | 116 ++++++++++++++++++-------------------
1 file changed, 58 insertions(+), 58 deletions(-)
diff --git a/reference/openssl/book.xml b/reference/openssl/book.xml
index cdc9d7bf7d..d9d45c3129 100644
--- a/reference/openssl/book.xml
+++ b/reference/openssl/book.xml
@@ -1,58 +1,58 @@
-
-
-
-
-
-
-
- OpenSSL
-
-
-
- &reftitle.intro;
-
- Cette extension lie des fonctions de la bibliothèque
- OpenSSL pour le chiffrement et
- déchiffrement symétrique et asymétrique, PBKDF2, PKCS7, PKCS12, X509 et autres
- opérations cryptographiques. De plus elle fournit une implémentation de flux TLS.
-
-
- OpenSSL offre beaucoup de fonctionnalités
- que ce module n'offre pas actuellement. Quelques-unes pourront être ajoutées
- dans le futur.
-
-
-
-
- &reference.openssl.setup;
- &reference.openssl.constants;
- &reference.openssl.certparams;
- &reference.openssl.cert-verification;
- &reference.openssl.reference;
- &reference.openssl.opensslcertificate;
- &reference.openssl.opensslcertificatesigningrequest;
- &reference.openssl.opensslasymmetrickey;
-
-
-
-
-
+
+
+
+
+
+
+
+ OpenSSL
+
+
+
+ &reftitle.intro;
+
+ Cette extension lie des fonctions de la bibliothèque
+ OpenSSL pour le chiffrement et
+ déchiffrement symétrique et asymétrique, PBKDF2, PKCS7, PKCS12, X509 et autres
+ opérations cryptographiques. De plus elle fournit une implémentation de flux TLS.
+
+
+ OpenSSL offre beaucoup de fonctionnalités
+ que ce module n'offre pas actuellement. Quelques-unes pourront être ajoutées
+ dans le futur.
+
+
+
+
+ &reference.openssl.setup;
+ &reference.openssl.constants;
+ &reference.openssl.certparams;
+ &reference.openssl.cert-verification;
+ &reference.openssl.reference;
+ &reference.openssl.opensslcertificate;
+ &reference.openssl.opensslcertificatesigningrequest;
+ &reference.openssl.opensslasymmetrickey;
+
+
+
+
+
From 78c48f40b5b7b93913b6d10ea3c41b42298f14f3 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:40:38 +0100
Subject: [PATCH 49/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/openssl/configure.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/openssl/configure.xml | 298 ++++++++++++++++----------------
1 file changed, 149 insertions(+), 149 deletions(-)
diff --git a/reference/openssl/configure.xml b/reference/openssl/configure.xml
index 98f77041ea..590f704840 100644
--- a/reference/openssl/configure.xml
+++ b/reference/openssl/configure.xml
@@ -1,149 +1,149 @@
-
-
-
-
-
-
- &reftitle.install;
-
- Pour utiliser le support OpenSSL de PHP, vous devez aussi compiler PHP avec l'option
- de configuration .
-
-
- La bibliothèque OpenSSL possède aussi des dépendances à l'exécution. Par exemple,
- OpenSSL a besoin d'accéder à un générateur de nombres pseudo-aléatoires; sur la
- plupart des plateformes Unix (incluant donc Linux), elle doit avoir accès au
- périphérique /dev/urandom ou /dev/random.
-
-
- L'option de configuration
- est disponible
- qui fait que PHP utilise la liste de chiffrement système au lieu des valeurs
- par défaut codées en dur.
-
-
- Note aux utilisateurs Win32
-
- &ext.windows.path.dll;
- libeay32.dll,
- ou, à partir de OpenSSL 1.1, libcrypto-*.dll
-
-
- De plus, si vous avez prévu d'utiliser les fonctions relatives à la génération
- de clés et aux certificats, vous devez installer un fichier
- openssl.cnf valide sur votre système.
- Un fichier de configuration de base est inclus dans les distributions de PHP
- pour win32 dans le dossier extras/ssl.
-
-
- PHP va rechercher le fichier openssl.cnf suivant la
- tactique suivante :
-
-
-
- La variable d'environnement OPENSSL_CONF, si elle est
- définie, sera utilisée comme chemin (comprenant le fichier) vers le
- fichier de configuration.
-
-
-
-
- La variable d'environnement SSLEAY_CONF, si elle est
- définie, sera utilisée comme chemin (comprenant le fichier) vers le
- fichier de configuration.
-
-
-
-
- Le fichier openssl.cnf sera supposé se trouver dans
- le dossier des certificats, tel que configuré lors de la compilation
- de la bibliothèque openssl. Cela signifie généralement C:\Program Files\Common Files\SSL\openssl.cnf (x64)
- ou C:\Program Files (x86)\Common Files\SSL\openssl.cnf (x86), ou,
- avant PHP 7.4.0,
- c:\usr\local\ssl\openssl.cnf.
-
-
-
-
-
- Dans votre installation, vous devrez décider si vous allez installer le fichier
- de configuration dans le chemin par défaut ou si vous allez
- le faire ailleurs et configurer une variable d'environnement (possiblement
- par site virtuel). Notez qu'il est possible de remplacer le chemin par
- défaut en utilisant le paramètre options des fonctions
- qui requièrent un fichier de configuration.
-
-
-
- Veiller à ce que les utilisateurs non privilégiés ne soient pas autorisés à
- modifier openssl.cnf.
-
-
-
- À partir d'OpenSSL 3.0.0, qui est utilisé par défaut sur Windows depuis PHP 8.2.0, plusieurs
- algorithmes ont été jugés obsolètes. Ces algorithmes sont souvent tombés en désuétude,
- ont été considérés comme non sécurisés par la communauté cryptographique, ou quelque chose de similaire.
- Ces algorithmes sont encore disponibles via le fournisseur d'algorithmes legacy
- (extras/ssl/legacy.dll) ; son utilisation est décrite dans la
- section configuration du fournisseur
- du manuel OpenSSL.
-
-
-
-
- &reftitle.changelog;
-
-
-
-
-
- &Version;
- &Description;
-
-
-
-
- 7.4.0
-
- L'option n'accepte plus
- d'argument de répertoire en faveur du réglage de la variable pkg-config
- PKG_CONFIG_PATH vers l'emplacement d'OpenSSL, ou en spécifiant les variables OPENSSL_LIBS et
- OPENSSL_CFLAGS.
-
-
-
- 7.4.0
-
- Le chemin de configuration par défaut d'OpenSSL a été modifié de C:\usr\local\ssl
- à C:\Program Files\Common Files\SSL et
- C:\Program Files (x86)\Common Files\SSL, respectivement.
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+ &reftitle.install;
+
+ Pour utiliser le support OpenSSL de PHP, vous devez aussi compiler PHP avec l'option
+ de configuration .
+
+
+ La bibliothèque OpenSSL possède aussi des dépendances à l'exécution. Par exemple,
+ OpenSSL a besoin d'accéder à un générateur de nombres pseudo-aléatoires; sur la
+ plupart des plateformes Unix (incluant donc Linux), elle doit avoir accès au
+ périphérique /dev/urandom ou /dev/random.
+
+
+ L'option de configuration
+ est disponible
+ qui fait que PHP utilise la liste de chiffrement système au lieu des valeurs
+ par défaut codées en dur.
+
+
+ Note aux utilisateurs Win32
+
+ &ext.windows.path.dll;
+ libeay32.dll,
+ ou, à partir de OpenSSL 1.1, libcrypto-*.dll
+
+
+ De plus, si vous avez prévu d'utiliser les fonctions relatives à la génération
+ de clés et aux certificats, vous devez installer un fichier
+ openssl.cnf valide sur votre système.
+ Un fichier de configuration de base est inclus dans les distributions de PHP
+ pour win32 dans le dossier extras/ssl.
+
+
+ PHP va rechercher le fichier openssl.cnf suivant la
+ tactique suivante :
+
+
+
+ La variable d'environnement OPENSSL_CONF, si elle est
+ définie, sera utilisée comme chemin (comprenant le fichier) vers le
+ fichier de configuration.
+
+
+
+
+ La variable d'environnement SSLEAY_CONF, si elle est
+ définie, sera utilisée comme chemin (comprenant le fichier) vers le
+ fichier de configuration.
+
+
+
+
+ Le fichier openssl.cnf sera supposé se trouver dans
+ le dossier des certificats, tel que configuré lors de la compilation
+ de la bibliothèque openssl. Cela signifie généralement C:\Program Files\Common Files\SSL\openssl.cnf (x64)
+ ou C:\Program Files (x86)\Common Files\SSL\openssl.cnf (x86), ou,
+ avant PHP 7.4.0,
+ c:\usr\local\ssl\openssl.cnf.
+
+
+
+
+
+ Dans votre installation, vous devrez décider si vous allez installer le fichier
+ de configuration dans le chemin par défaut ou si vous allez
+ le faire ailleurs et configurer une variable d'environnement (possiblement
+ par site virtuel). Notez qu'il est possible de remplacer le chemin par
+ défaut en utilisant le paramètre options des fonctions
+ qui requièrent un fichier de configuration.
+
+
+
+ Veiller à ce que les utilisateurs non privilégiés ne soient pas autorisés à
+ modifier openssl.cnf.
+
+
+
+ À partir d'OpenSSL 3.0.0, qui est utilisé par défaut sur Windows depuis PHP 8.2.0, plusieurs
+ algorithmes ont été jugés obsolètes. Ces algorithmes sont souvent tombés en désuétude,
+ ont été considérés comme non sécurisés par la communauté cryptographique, ou quelque chose de similaire.
+ Ces algorithmes sont encore disponibles via le fournisseur d'algorithmes legacy
+ (extras/ssl/legacy.dll) ; son utilisation est décrite dans la
+ section configuration du fournisseur
+ du manuel OpenSSL.
+
+
+
+
+ &reftitle.changelog;
+
+
+
+
+
+ &Version;
+ &Description;
+
+
+
+
+ 7.4.0
+
+ L'option n'accepte plus
+ d'argument de répertoire en faveur du réglage de la variable pkg-config
+ PKG_CONFIG_PATH vers l'emplacement d'OpenSSL, ou en spécifiant les variables OPENSSL_LIBS et
+ OPENSSL_CFLAGS.
+
+
+
+ 7.4.0
+
+ Le chemin de configuration par défaut d'OpenSSL a été modifié de C:\usr\local\ssl
+ à C:\Program Files\Common Files\SSL et
+ C:\Program Files (x86)\Common Files\SSL, respectivement.
+
+
+
+
+
+
+
+
+
+
+
From e4c6b1212721715a25c864fbaae8357602f50b83 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:40:39 +0100
Subject: [PATCH 50/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/openssl/setup.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/openssl/setup.xml | 144 ++++++++++++++++++------------------
1 file changed, 72 insertions(+), 72 deletions(-)
diff --git a/reference/openssl/setup.xml b/reference/openssl/setup.xml
index a5d4a2a5c2..30607f2e59 100644
--- a/reference/openssl/setup.xml
+++ b/reference/openssl/setup.xml
@@ -1,72 +1,72 @@
-
-
-
-
-
- &reftitle.setup;
-
-
-
- &reftitle.required;
-
- Afin de pouvoir utiliser les fonctions OpenSSL, vous devez installer la bibliothèque
- OpenSSL.
- PHP 7.0 nécessite OpenSSL >= 0.9.8, < 1.2. PHP 7.1-8.0 nécessitent
- OpenSSL >= 1.0.1, < 3.0. PHP >= 8.1 nécessite OpenSSL
- >= 1.0.2, < 4.0. PHP >= 8.4 nécessite OpenSSL
- >= 1.1.1, < 4.0.
-
-
-
- Vous êtes vivement encouragé à utiliser la version maintenue d'OpenSSL afin
- d'éviter certaines vulnérabilités sur votre serveur web.
-
-
-
-
-
-
- &reference.openssl.configure;
-
-
-
- &reference.openssl.ini;
-
-
-
-
- &reftitle.resources;
-
- Antérieur à PHP 8.0.0, il y avait 3 types de ressources définis dans le
- module OpenSSL :
-
- OpenSSL key
- OpenSSL X.509
- OpenSSL X.509 CSR
-
-
-
-
-
-
-
-
+
+
+
+
+
+ &reftitle.setup;
+
+
+
+ &reftitle.required;
+
+ Afin de pouvoir utiliser les fonctions OpenSSL, vous devez installer la bibliothèque
+ OpenSSL.
+ PHP 7.0 nécessite OpenSSL >= 0.9.8, < 1.2. PHP 7.1-8.0 nécessitent
+ OpenSSL >= 1.0.1, < 3.0. PHP >= 8.1 nécessite OpenSSL
+ >= 1.0.2, < 4.0. PHP >= 8.4 nécessite OpenSSL
+ >= 1.1.1, < 4.0.
+
+
+
+ Vous êtes vivement encouragé à utiliser la version maintenue d'OpenSSL afin
+ d'éviter certaines vulnérabilités sur votre serveur web.
+
+
+
+
+
+
+ &reference.openssl.configure;
+
+
+
+ &reference.openssl.ini;
+
+
+
+
+ &reftitle.resources;
+
+ Antérieur à PHP 8.0.0, il y avait 3 types de ressources définis dans le
+ module OpenSSL :
+
+ OpenSSL key
+ OpenSSL X.509
+ OpenSSL X.509 CSR
+
+
+
+
+
+
+
+
From 2f05dd0c1dd26e2fba3f6676eadff3ca775dabf6 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:40:39 +0100
Subject: [PATCH 51/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/parle/book.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/parle/book.xml | 118 +++++++++++++++++++--------------------
1 file changed, 59 insertions(+), 59 deletions(-)
diff --git a/reference/parle/book.xml b/reference/parle/book.xml
index 7fb1b19845..79a2cd95c8 100644
--- a/reference/parle/book.xml
+++ b/reference/parle/book.xml
@@ -1,59 +1,59 @@
-
-
-
-
-
-
- Analyse lexicale et syntaxique
- Parle
-
-
- &reftitle.intro;
- &warn.experimental;
-
- L'extension parle apporte des facilités de lexing et de parsing à usage général. L'implémentation est basée sur les bibliothèques de ces bibliothèques et nécessite un compilateur compatible avec C++14. L'analyse lexicale est basé sur la correspondance regex, l'analyse syntaxique est LALR(1). Les analyseurs sont générés à la volée et peuvent être utilisés immédiatement après avoir été finalisés. Parle traite l'analyse lexicale et syntaxique, la représentation et le traitement des structures de données appropriées sont la tâche de l'implémenteur. La sérialisation et la génération de code ne sont pas prises en charge par l'extension, pour l'instant.
-
-
- L'analyseur lexical est un processus de division d'une séquence de caractères en une liste de lexèmes. La liste de lexèmes peut ensuite être utilisée pour l'analyse syntaxique par rapport à une grammaire formelle. Ces opérations sont également connues sous le nom d'analyse lexicale (lexing) et d'analyse syntaxique (parsing). Cette documentation n'a pas pour but de fournir une information exhaustive sur le lexing et le parsing. De bonnes informations à ce sujet sont disponibles sur les nombreuses ressources sur le net. Plusieurs exemples d'utilisation sont inclus, pour montrer la fonctionnalité. L'extension est utile pour les développeurs PHP désireux d'apprendre ou d'utiliser l'analyse lexicale et syntaxique. Les machines à états et l'analyse de grammaire n'ont pas
-
-
- Les cas d'utilisation courants pour parle sont, quand un format de données est trop complexe pour être géré par la correspondance regex avec PCRE. L'application pratique est donc large. Que ce soit un format de données spécifique, une modification du comportement des fonctions existantes, voire un langage de programmation et au-delà. Les méthodes d'aide telles que Parle\Lexer::dump pour inspecter la machine à états générée, ou Parle\Parser::dump pour inspecter la grammaire générée, sont utiles. La méthode Parle\Parser::trace peut également être utilisée pour suivre l'opération d'analyse.
-
-
-
- &reference.parle.setup;
- &reference.parle.constants;
- &reference.parle.pattern.matching;
- &reference.parle.examples;
- &reference.parle.parle.lexer;
- &reference.parle.parle.rlexer;
- &reference.parle.parle.parser;
- &reference.parle.parle.rparser;
- &reference.parle.parle.stack;
- &reference.parle.parle.token;
- &reference.parle.parle.errorinfo;
- &reference.parle.parle.lexerexception;
- &reference.parle.parle.parserexception;
-
-
-
-
+
+
+
+
+
+
+ Analyse lexicale et syntaxique
+ Parle
+
+
+ &reftitle.intro;
+ &warn.experimental;
+
+ L'extension parle apporte des facilités de lexing et de parsing à usage général. L'implémentation est basée sur les bibliothèques de ces bibliothèques et nécessite un compilateur compatible avec C++14. L'analyse lexicale est basé sur la correspondance regex, l'analyse syntaxique est LALR(1). Les analyseurs sont générés à la volée et peuvent être utilisés immédiatement après avoir été finalisés. Parle traite l'analyse lexicale et syntaxique, la représentation et le traitement des structures de données appropriées sont la tâche de l'implémenteur. La sérialisation et la génération de code ne sont pas prises en charge par l'extension, pour l'instant.
+
+
+ L'analyseur lexical est un processus de division d'une séquence de caractères en une liste de lexèmes. La liste de lexèmes peut ensuite être utilisée pour l'analyse syntaxique par rapport à une grammaire formelle. Ces opérations sont également connues sous le nom d'analyse lexicale (lexing) et d'analyse syntaxique (parsing). Cette documentation n'a pas pour but de fournir une information exhaustive sur le lexing et le parsing. De bonnes informations à ce sujet sont disponibles sur les nombreuses ressources sur le net. Plusieurs exemples d'utilisation sont inclus, pour montrer la fonctionnalité. L'extension est utile pour les développeurs PHP désireux d'apprendre ou d'utiliser l'analyse lexicale et syntaxique. Les machines à états et l'analyse de grammaire n'ont pas
+
+
+ Les cas d'utilisation courants pour parle sont, quand un format de données est trop complexe pour être géré par la correspondance regex avec PCRE. L'application pratique est donc large. Que ce soit un format de données spécifique, une modification du comportement des fonctions existantes, voire un langage de programmation et au-delà. Les méthodes d'aide telles que Parle\Lexer::dump pour inspecter la machine à états générée, ou Parle\Parser::dump pour inspecter la grammaire générée, sont utiles. La méthode Parle\Parser::trace peut également être utilisée pour suivre l'opération d'analyse.
+
+
+
+ &reference.parle.setup;
+ &reference.parle.constants;
+ &reference.parle.pattern.matching;
+ &reference.parle.examples;
+ &reference.parle.parle.lexer;
+ &reference.parle.parle.rlexer;
+ &reference.parle.parle.parser;
+ &reference.parle.parle.rparser;
+ &reference.parle.parle.stack;
+ &reference.parle.parle.token;
+ &reference.parle.parle.errorinfo;
+ &reference.parle.parle.lexerexception;
+ &reference.parle.parle.parserexception;
+
+
+
+
From 978df14c4921794d67ea4a520fbbfebe97319a04 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:40:39 +0100
Subject: [PATCH 52/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/parle/parle/rlexer/push.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/parle/parle/rlexer/push.xml | 242 +++++++++++++-------------
1 file changed, 121 insertions(+), 121 deletions(-)
diff --git a/reference/parle/parle/rlexer/push.xml b/reference/parle/parle/rlexer/push.xml
index 0c8b06fa47..6af16f415a 100644
--- a/reference/parle/parle/rlexer/push.xml
+++ b/reference/parle/parle/rlexer/push.xml
@@ -1,121 +1,121 @@
-
-
-
-
-
- Parle\RLexer::push
- Ajoute une règle d'analyse
-
-
-
- &reftitle.description;
-
- publicvoidParle\RLexer::push
- stringregex
- intid
-
-
-
- publicvoidParle\RLexer::push
- stringstate
- stringregex
- intid
- stringnewState
-
-
-
- publicvoidParle\RLexer::push
- stringstate
- stringregex
- stringnewState
-
-
- Ajoute un modèle pour la reconnaissance des lexèmes.
-
-
- Un 'état de début' (start state) et un 'état de sortie' (exit state) peuvent être spécifiés en utilisant une signature appropriée.
-
-
-
-
- &reftitle.parameters;
-
-
- regex
-
-
- Expression régulière utilisée pour la reconnaissance des lexèmes.
-
-
-
-
- id
-
-
- L'identifiant du jeton. Si l'instance de l'analyseur lexical est destinée à être utilisée seule, il peut s'agir d'un nombre arbitraire. Si l'instance de l'analyseur lexical doit être passée à l'analyseur, il doit s'agir d'un identifiant retourné par Parle\RParser::tokenid.
-
-
-
-
- state
-
-
- Nom de l'état. Si '*' est utilisé comme état de départ, alors la règle est appliquée à tous les états de l'analyseur lexical.
-
-
-
-
- newState
-
-
- Le nouveau nom de l'état, après l'application de la règle.
-
-
- Si '.' est spécifié comme état de sortie, alors l'état du lexer n'est pas modifié lorsque cette règle correspond. Un état de sortie avec '>' avant le nom signifie pousser. Utilisez la signature sans id pour soit la continuation ou pour commencer la correspondance, quand une continuation ou une récursion est requise.
-
-
- Si '<' est spécifié comme état de sortie, cela signifie pop. Dans ce cas, la signature contenant l'id peut être utilisée pour identifier la correspondance. Il est à noter que même dans le cas où un id est spécifié, la règle se terminera d'abord lorsque tous les poussées précédentes auront été enlevées.
-
-
-
-
-
-
-
-
- &reftitle.returnvalues;
-
- &return.void;
-
-
-
-
-
-
-
+
+
+
+
+
+ Parle\RLexer::push
+ Ajoute une règle d'analyse
+
+
+
+ &reftitle.description;
+
+ publicvoidParle\RLexer::push
+ stringregex
+ intid
+
+
+
+ publicvoidParle\RLexer::push
+ stringstate
+ stringregex
+ intid
+ stringnewState
+
+
+
+ publicvoidParle\RLexer::push
+ stringstate
+ stringregex
+ stringnewState
+
+
+ Ajoute un modèle pour la reconnaissance des lexèmes.
+
+
+ Un 'état de début' (start state) et un 'état de sortie' (exit state) peuvent être spécifiés en utilisant une signature appropriée.
+
+
+
+
+ &reftitle.parameters;
+
+
+ regex
+
+
+ Expression régulière utilisée pour la reconnaissance des lexèmes.
+
+
+
+
+ id
+
+
+ L'identifiant du jeton. Si l'instance de l'analyseur lexical est destinée à être utilisée seule, il peut s'agir d'un nombre arbitraire. Si l'instance de l'analyseur lexical doit être passée à l'analyseur, il doit s'agir d'un identifiant retourné par Parle\RParser::tokenid.
+
+
+
+
+ state
+
+
+ Nom de l'état. Si '*' est utilisé comme état de départ, alors la règle est appliquée à tous les états de l'analyseur lexical.
+
+
+
+
+ newState
+
+
+ Le nouveau nom de l'état, après l'application de la règle.
+
+
+ Si '.' est spécifié comme état de sortie, alors l'état du lexer n'est pas modifié lorsque cette règle correspond. Un état de sortie avec '>' avant le nom signifie pousser. Utilisez la signature sans id pour soit la continuation ou pour commencer la correspondance, quand une continuation ou une récursion est requise.
+
+
+ Si '<' est spécifié comme état de sortie, cela signifie pop. Dans ce cas, la signature contenant l'id peut être utilisée pour identifier la correspondance. Il est à noter que même dans le cas où un id est spécifié, la règle se terminera d'abord lorsque tous les poussées précédentes auront été enlevées.
+
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+
+ &return.void;
+
+
+
+
+
+
+
From 1d16aa7886a46f6e4b805c79ce7f484637948926 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:40:40 +0100
Subject: [PATCH 53/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/password/constants.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/password/constants.xml | 520 +++++++++++++++----------------
1 file changed, 260 insertions(+), 260 deletions(-)
diff --git a/reference/password/constants.xml b/reference/password/constants.xml
index db5eb46a2c..b35540e032 100644
--- a/reference/password/constants.xml
+++ b/reference/password/constants.xml
@@ -1,260 +1,260 @@
-
-
-
-
- &reftitle.constants;
- &extension.constants.core;
-
-
-
-
-
- PASSWORD_BCRYPT
- (string)
-
-
-
- La constante PASSWORD_BCRYPT est utilisée pour
- créer une nouvelle table de hachage de mot de passe en utilisant
- l'algorithme CRYPT_BLOWFISH.
-
-
- Elle a toujours retourné le résultat de hachage en utilisant le format
- crypt "$2y$", qui sera toujours une chaîne de caractères de 60 caractères
- de long.
-
-
- Options supportées :
-
-
-
-
- salt (string) - permet de fournir manuellement un salt à utiliser
- pour le hachage du mot de passe. Notez que ceci va écraser tout salt généré
- automatiquement.
-
-
- Si omis, un salt aléatoire sera généré par la fonction
- password_hash pour chaque mot de passe haché.
- C'est bien le but de l'opération et à partir de PHP 7.0.0 l'option salt a été désapprouvée.
-
-
-
-
- cost (int) - le coût algorithmique à utiliser.
- Des exemples de ces valeurs peuvent être trouvés sur la page
- de la documentation de la fonction crypt.
-
-
- Si omis, une valeur par défaut de 12 sera utilisée.
- C'est une bonne base mais vous pourriez vouloir l'augmenter suivant
- votre architecture matérielle.
-
-
-
-
-
-
-
- PASSWORD_BCRYPT_DEFAULT_COST
- (int)
-
-
-
-
-
-
-
-
-
-
- PASSWORD_ARGON2I
- (string)
-
-
-
- PASSWORD_ARGON2I est utilisé pour créer de nouveaux
- hashs de mot de passe à l'aide de l'algorithme Argon2i.
-
-
- Options prises en charge :
-
-
-
-
- memory_cost (int) - Mémoire maximale
- (en kibioctets) pouvant être utilisée pour calculer le hachage Argon2. Par
- défaut à PASSWORD_ARGON2_DEFAULT_MEMORY_COST.
-
-
-
-
- time_cost (int) - Durée maximale de
- temps qu'il peut prendre pour calculer le hachage Argon2. Par
- défaut à PASSWORD_ARGON2_DEFAULT_TIME_COST.
-
-
-
-
- threads (int) - Nombre de threads à
- utiliser pour calculer le hachage Argon2. Par défaut à
- PASSWORD_ARGON2_DEFAULT_THREADS.
- Uniquement disponible avec libargon2, et non avec l'implémentation
- libsodium.
-
-
-
-
- &php.version.added; 7.2.0.
-
-
-
-
-
- PASSWORD_ARGON2ID
- (string)
-
-
-
- PASSWORD_ARGON2ID est utilisé pour créer de nouveaux
- hashs de mot de passe à l'aide de l'algorithme Argon2id. Supporte les mêmes options que
- PASSWORD_ARGON2I.
-
-
- &php.version.added; 7.3.0.
-
-
-
-
-
- PASSWORD_ARGON2_DEFAULT_MEMORY_COST
- (int)
-
-
-
- Quantité de mémoire par défaut (en octets) qui sera utilisé en
- essayant de calculer un hachage.
-
-
- &php.version.added; 7.2.0.
-
-
-
-
-
- PASSWORD_ARGON2_DEFAULT_TIME_COST
- (int)
-
-
-
- Durée de temps par défaut que sera passer pour essayer de calculer
- un hachage.
-
-
- &php.version.added; 7.2.0.
-
-
-
-
-
- PASSWORD_ARGON2_DEFAULT_THREADS
- (int)
-
-
-
- Nombre par défaut de threads que Argon2lib va utiliser.
- Pas disponible avec l'implémentation libsodium.
-
-
- &php.version.added; 7.2.0.
-
-
-
-
-
- PASSWORD_ARGON2_PROVIDER
- (string)
-
-
-
-
-
- Disponible à partir de PHP 7.4.0.
-
-
-
-
-
- PASSWORD_DEFAULT
- (string)
-
-
-
- L'algorithme par défaut à utiliser pour le hachage si aucun
- algorithme n'est fourni. Cette valeur peut changer dans les futures
- versions de PHP où il est probable que de meilleurs algorithmes
- de hachage soient supportés.
-
-
- Il est important de noter qu'au fil du temps, cette constante peut changer.
- Il est donc crucial d'être conscient que la longueur du hachage résultant peut varier.
- Par conséquent, lors de l'utilisation de PASSWORD_DEFAULT, le hachage résultant
- doit être stocké d'une manière capable d'accueillir des hachages arbitraires,
- la largeur recommandée est de 255 octets.
-
-
- Actuellement, c'est un alias de PASSWORD_BCRYPT.
-
-
-
-
-
-
-
- &reftitle.changelog;
-
-
-
-
-
- &Version;
- &Description;
-
-
-
-
- 7.4.0
-
- Les valeurs pour les constantes PASSWORD_BCRYPT,
- PASSWORD_ARGON2I, PASSWORD_ARGON2ID
- et PASSWORD_DEFAULT sont désormais des &string;s.
- Auparavant, elles étaient des &integer;s.
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ &reftitle.constants;
+ &extension.constants.core;
+
+
+
+
+
+ PASSWORD_BCRYPT
+ (string)
+
+
+
+ La constante PASSWORD_BCRYPT est utilisée pour
+ créer une nouvelle table de hachage de mot de passe en utilisant
+ l'algorithme CRYPT_BLOWFISH.
+
+
+ Elle a toujours retourné le résultat de hachage en utilisant le format
+ crypt "$2y$", qui sera toujours une chaîne de caractères de 60 caractères
+ de long.
+
+
+ Options supportées :
+
+
+
+
+ salt (string) - permet de fournir manuellement un salt à utiliser
+ pour le hachage du mot de passe. Notez que ceci va écraser tout salt généré
+ automatiquement.
+
+
+ Si omis, un salt aléatoire sera généré par la fonction
+ password_hash pour chaque mot de passe haché.
+ C'est bien le but de l'opération et à partir de PHP 7.0.0 l'option salt a été désapprouvée.
+
+
+
+
+ cost (int) - le coût algorithmique à utiliser.
+ Des exemples de ces valeurs peuvent être trouvés sur la page
+ de la documentation de la fonction crypt.
+
+
+ Si omis, une valeur par défaut de 12 sera utilisée.
+ C'est une bonne base mais vous pourriez vouloir l'augmenter suivant
+ votre architecture matérielle.
+
+
+
+
+
+
+
+ PASSWORD_BCRYPT_DEFAULT_COST
+ (int)
+
+
+
+
+
+
+
+
+
+
+ PASSWORD_ARGON2I
+ (string)
+
+
+
+ PASSWORD_ARGON2I est utilisé pour créer de nouveaux
+ hashs de mot de passe à l'aide de l'algorithme Argon2i.
+
+
+ Options prises en charge :
+
+
+
+
+ memory_cost (int) - Mémoire maximale
+ (en kibioctets) pouvant être utilisée pour calculer le hachage Argon2. Par
+ défaut à PASSWORD_ARGON2_DEFAULT_MEMORY_COST.
+
+
+
+
+ time_cost (int) - Durée maximale de
+ temps qu'il peut prendre pour calculer le hachage Argon2. Par
+ défaut à PASSWORD_ARGON2_DEFAULT_TIME_COST.
+
+
+
+
+ threads (int) - Nombre de threads à
+ utiliser pour calculer le hachage Argon2. Par défaut à
+ PASSWORD_ARGON2_DEFAULT_THREADS.
+ Uniquement disponible avec libargon2, et non avec l'implémentation
+ libsodium.
+
+
+
+
+ &php.version.added; 7.2.0.
+
+
+
+
+
+ PASSWORD_ARGON2ID
+ (string)
+
+
+
+ PASSWORD_ARGON2ID est utilisé pour créer de nouveaux
+ hashs de mot de passe à l'aide de l'algorithme Argon2id. Supporte les mêmes options que
+ PASSWORD_ARGON2I.
+
+
+ &php.version.added; 7.3.0.
+
+
+
+
+
+ PASSWORD_ARGON2_DEFAULT_MEMORY_COST
+ (int)
+
+
+
+ Quantité de mémoire par défaut (en octets) qui sera utilisé en
+ essayant de calculer un hachage.
+
+
+ &php.version.added; 7.2.0.
+
+
+
+
+
+ PASSWORD_ARGON2_DEFAULT_TIME_COST
+ (int)
+
+
+
+ Durée de temps par défaut que sera passer pour essayer de calculer
+ un hachage.
+
+
+ &php.version.added; 7.2.0.
+
+
+
+
+
+ PASSWORD_ARGON2_DEFAULT_THREADS
+ (int)
+
+
+
+ Nombre par défaut de threads que Argon2lib va utiliser.
+ Pas disponible avec l'implémentation libsodium.
+
+
+ &php.version.added; 7.2.0.
+
+
+
+
+
+ PASSWORD_ARGON2_PROVIDER
+ (string)
+
+
+
+
+
+ Disponible à partir de PHP 7.4.0.
+
+
+
+
+
+ PASSWORD_DEFAULT
+ (string)
+
+
+
+ L'algorithme par défaut à utiliser pour le hachage si aucun
+ algorithme n'est fourni. Cette valeur peut changer dans les futures
+ versions de PHP où il est probable que de meilleurs algorithmes
+ de hachage soient supportés.
+
+
+ Il est important de noter qu'au fil du temps, cette constante peut changer.
+ Il est donc crucial d'être conscient que la longueur du hachage résultant peut varier.
+ Par conséquent, lors de l'utilisation de PASSWORD_DEFAULT, le hachage résultant
+ doit être stocké d'une manière capable d'accueillir des hachages arbitraires,
+ la largeur recommandée est de 255 octets.
+
+
+ Actuellement, c'est un alias de PASSWORD_BCRYPT.
+
+
+
+
+
+
+
+ &reftitle.changelog;
+
+
+
+
+
+ &Version;
+ &Description;
+
+
+
+
+ 7.4.0
+
+ Les valeurs pour les constantes PASSWORD_BCRYPT,
+ PASSWORD_ARGON2I, PASSWORD_ARGON2ID
+ et PASSWORD_DEFAULT sont désormais des &string;s.
+ Auparavant, elles étaient des &integer;s.
+
+
+
+
+
+
+
+
+
+
From 381b2e932e7ecbb486ef3981572fe71e5f731450 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:40:41 +0100
Subject: [PATCH 54/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/pcre/pattern.syntax.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/pcre/pattern.syntax.xml | 5294 ++++++++++++++---------------
1 file changed, 2647 insertions(+), 2647 deletions(-)
diff --git a/reference/pcre/pattern.syntax.xml b/reference/pcre/pattern.syntax.xml
index 2863892233..93259aa70a 100644
--- a/reference/pcre/pattern.syntax.xml
+++ b/reference/pcre/pattern.syntax.xml
@@ -1,2647 +1,2647 @@
-
-
-
-
-
- Syntaxe des masques
- Fonctionnement des expressions régulières
-
-
- &reftitle.intro;
-
- La syntaxe et la sémantique des expressions régulières
- supportées par PCRE sont décrites dans cette section. Les expressions
- régulières sont aussi décrites dans la documentation
- Perl, et dans un grand nombre d'autres livres, avec de nombreux exemples.
- Le livre de Jeffrey Friedl "Mastering Regular Expressions", édité
- chez O'Reilly (ISBN 1-56592-257-3), les décrits en profondeur.
- Cette description est organisée comme une documentation de
- référence.
-
-
- Une expression rationnelle est un masque appliqué à
- une chaîne sujet, de gauche à droite. La plupart des
- caractères se représentent eux-mêmes. Un exemple
- trivial : un masque qui serait "Le rapide renard gris",
- pourra correspondre à une partie de la chaîne sujet qui sera
- identique au masque, par exemple
- "Le rapide renard gris court dans la forêt",
-
-
-
- Délimiteurs
-
- Lors de l'utilisation des fonctions PCRE, il est nécessaire que le motif soit encadré
- par des délimiteurs. Un délimiteur peut être n'importe quel caractère
- non alpha-numérique autre qu'un backslash ou qu'un espace.
- Les caractères d'espacement blanc avant un délimiteur valide sont silencieusement ignorés.
-
-
- Les délimiteurs les plus courants sont les slashes (/), dièses
- (#) et les tildes (~). Les exemples suivants ont
- tous des motifs encadrés avec des délimiteurs valides.
-
-
-
-
-
-
-
- Il est également possible d'utiliser les délimiteurs utilisant les crochets
- où les crochets ouvrants et fermants sont respectivement les délimiteurs de
- début et de fin. (), {},
- [] et <> sont tous des styles
- de crochets valides.
-
-
-
-]]>
-
-
- Les délimiteurs utilisant les crochets n'ont pas besoin d'être échappés lorsqu'ils
- sont utilisés comme caractères méta dans un masque, mais, comme tout autre opérateur,
- ils doivent être échappés s'ils sont utilisés comme caractères littéraux.
-
-
- Si le délimiteur doit être décrit dans le motif, il doit être échappé avec un backslash.
- Si le délimiteur apparait souvent dans le motif, choisir un autre délimiteur est une bonne
- idée pour en augmenter la lisibilité.
-
-
-
-
-
- La fonction preg_quote peut être utilisée pour échapper une chaîne
- et l'utiliser dans un motif. Son second paramètre optionnel sert à spécifier le délimiteur
- qui doit être échappé.
-
-
- Vous pouvez aussi utiliser des
- modificateurs de motif après le délimiteur final. L'exemple suivant montre
- une correspondance insensible à la casse.
-
-
-
-
-
-
-
-
- Métacaractères
-
- La puissance des expressions régulières provient de
- leur capacité à autoriser des alternatives et des quantificateurs
- de répétition dans le masque. Ils sont encodés
- dans le masque par des métacaractères, qui ne représentent
- pas ce qu'ils sont, mais sont interprétés d'une certaine
- manière.
-
-
- Il y a deux sortes de métacaractères : ceux qui sont
- reconnus n'importe où dans un masque, hormis entre crochets,
- et ceux qui sont reconnus entre crochets.
- À l'extérieur des crochets, les métacaractères sont :
-
-
- Métacaractère en dehors des crochets
-
-
-
- MétacaractèreDescription
-
-
-
-
- \Caractère d'échappement, avec de multiples usages
-
-
- ^Le début de la chaîne sujet (ou de ligne, en mode multilignes)
-
-
- $La fin de la chaîne sujet ou
- avant la fin d'une nouvelle ligne (ou fin de ligne, en mode multilignes)
-
-
- .Remplace n'importe quel caractère, hormis le caractère de nouvelle ligne (par défaut)
-
-
- [Caractère de début de définition de classe
-
-
- ]Caractère de fin de définition de classe
-
-
- |Caractère de début d'alternative
-
-
- (Caractère de début de sous-masque
-
-
- )Caractère de fin de sous-masque
-
-
- ?Étend le sens de (; quantificateur de 0 ou 1; quantificateur de minimisation
- (Voir les répétitions)
-
-
- *Quantificateur de 0 ou plus
-
-
- +Quantificateur de 1 ou plus
-
-
- {Caractère de début de quantificateur minimum/maximum
-
-
- }Caractère de fin de quantificateur minimum/maximum
-
-
-
-
-
- La partie du masque qui est entourée de crochets est appelée
- classe de caractères. Dans
- les classes de caractères,
- les seuls métacaractères autorisés sont :
-
-
- Meta-characters dans des crochets (classes de caractères)
-
-
-
- MétacaractèreDescription
-
-
-
-
- \Caractère de protection, avec de multiples usages
-
-
- ^Négation de la classe, mais uniquement si placé tout au début de la classe
-
-
- -Indique un intervalle de caractères
-
-
-
-
-
- La section suivante décrit l'utilisation de chaque
- métacaractère.
-
-
-
-
- Séquences d'échappement
-
- Le caractère antislash a de nombreuses utilisations.
- En premier lieu, s'il est suivi d'un caractère non
- alphanumérique, il ne prendra pas la signification
- spéciale qui y est rattachée. Cette utilisation de
- l'antislash comme caractère de protection s'applique
- à l'intérieur et à l'extérieur des
- classes de caractères.
-
-
- Par exemple, pour rechercher le
- caractère étoile "*", il faut
- écrire dans le masque : "\*". Cela
- s'applique dans tous les cas, que le caractère qui suive
- soit un métacaractère ou non. C'est un moyen sûr
- pour s'assurer qu'un caractère sera recherché
- pour sa valeur littérale, plutôt que pour sa valeur
- spéciale. En particulier, pour rechercher les antislashs,
- il faut écrire : "\\".
-
-
-
- La chaîne de caractères PHP
- simple ou double guillemet a une signification spéciale des antislashs. Donc,
- si \ doit être recherché avec une expression rationnelle \\, alors
- "\\\\" ou '\\\\' doit être utilisé dans le code PHP.
-
-
-
- Si un masque est utilisé avec l'option
- PCRE_EXTENDED,
- les espaces blancs du masque, mais qui ne sont pas dans une
- classe de caractères et les caractères entre dièse
- "#", ainsi que les nouvelles lignes sont ignorées.
- L'antislash peut être utilisé pour les protéger et ainsi
- rechercher un espace ou un dièse.
-
-
- La deuxième utilité de l'antislash est de pouvoir
- coder des caractères invisibles dans les masques. Il n'y
- a pas de restriction sur la place de ces caractères
- invisibles, hormis pour le caractère nul qui doit terminer
- le masque.
- Lors de la préparation du masque, il est souvent plus pratique
- d'utiliser les séquences d'échappement suivantes,
- plutôt que le caractère binaire qu'elles représentent :
-
-
-
-
- \a
-
-
- alarme, c'est-à-dire le caractère BEL (hex 07)
-
-
-
-
- \cx
-
-
- "contrôle-x", avec x qui peut être n'importe quel
- caractère.
-
-
-
-
- \e
-
-
- escape (hex 1B)
-
-
-
-
- \f
-
-
- formfeed (hex 0C)
-
-
-
-
- \n
-
-
- nouvelle ligne (hex 0A)
-
-
-
-
- \p{xx}
-
-
- un caractère avec une propriété xx, voir
- les propriétés unicode
- pour plus d'informations
-
-
-
-
- \P{xx}
-
-
- un caractère sans propriété xx, voir
- les propriétés unicode
- pour plus d'informations
-
-
-
-
- \r
-
-
- retour chariot (hex 0D)
-
-
-
-
- \R
-
- saut de ligne : satisfait par \n, \r et \r\n
-
-
-
- \t
-
-
- tabulation (hex 09)
-
-
-
-
- \xhh
-
-
- caractère en hexadécimal, de code hh
-
-
-
-
- \ddd
-
-
- caractère en octal, de code ddd, ou référence
- arrière
-
-
-
-
-
-
- Dans la séquence "\cx" si "x"
- est en minuscule, il est converti en majuscule. Puis, le bit 6 (hex 40)
- est inversé. Ainsi "\cz" devient hex 1A,
- mais "\c{" devient hex 3B, tandis que "\c;"
- devient hex 7B.
-
-
- Après "\x", deux caractères
- hexadécimaux sont lus (les lettres peuvent être en majuscule
- ou minuscule).
- En mode UTF-8, "\x{...}"
- est autorisée, où le contenu des accolades est une chaîne hexadécimale.
- Il sera interprété comme un caractère UTF-8 où le numéro de code est
- le numéro hexadécimal donné. La séquence d'échappement hexadécimale
- originale, \xhh, correspond à un caractère UTF-8
- sur 2 octets si la valeur est plus grande que 127.
-
-
- Après "\0", deux caractères octaux sont lus.
- Dans chacun des cas, le métacaractère tente de lire autant
- de caractères que possible. Ainsi, la séquence
- "\0\x\07" sera comprise comme deux caractères nuls,
- suivis d'un caractère alarme (BEL). Assurez-vous que vous fournissez
- suffisamment de chiffres après le métacaractère.
-
-
- L'antislash de fin suivi par un nombre autre que 0 est compliqué.
- À l'extérieur d'une classe de caractère, PCRE le lit, et tous les nombres
- qui suivent, en tant que nombres décimaux. Si le nombre est plus petit que
- 10 ou s'il y a eu au moins précédemment une parenthèse gauche capturante
- dans l'expression, la séquence entière est prise en tant que référence arrière.
- Une description sur le fonctionnement est donnée plus tard, suivez la discussion
- sur les parenthèses des sous masques.
-
-
- À l'intérieur d'un caractère de classe ou s'il est plus
- grand que 9, et qu'il n'y a pas eu assez de parenthèses ouvrantes
- auparavant, PCRE lit jusqu'à 3 chiffres octaux à la suite
- de l'antislash, et génère un octet unique, à partir
- des 8 bits de poids faible de la séquence. Tous les chiffres qui
- suivent ne sont pas interprétés, et se représentent
- eux-mêmes. Par exemple:
-
-
-
-
- \040
-
-
- une autre manière d'écrire un espace
-
-
-
-
- \40
-
-
- identique, dans la mesure où il n'y a pas 40
- parenthèses ouvrantes auparavant
-
-
-
-
- \7
-
-
- est toujours une référence arrière
-
-
-
-
- \11
-
-
- peut être une référence de retour,
- ou une tabulation
-
-
-
-
- \011
-
-
- toujours une tabulation
-
-
-
-
- \0113
-
-
- est une tabulation suivie du caractère "3"
-
-
-
-
- \113
-
-
- est le caractère 113 (étant donné qu'il ne
- peut y avoir plus de 99 références arrière)
-
-
-
-
- \377
-
-
- est un octet dont tous les bits sont à 1
-
-
-
-
- \81
-
-
- peut être soit une référence arrière,
- soit un zéro binaire suivi des caractères "8" et "1"
-
-
-
-
-
-
- Les valeurs octales supérieures ou égales à 100 ne
- doivent pas être introduites par un 0, car seuls les trois premiers
- octets seront lus.
-
-
- Toutes les séquences qui définissent une valeur d'un seul
- octet peuvent être utilisées dans les classes de caractères,
- et à l'extérieur. De plus, dans une classe de caractères,
- la séquence "\b" est interprétée
- comme un caractère effacer (hex 08). À l'extérieur,
- elle peut avoir d'autres significations
- (voir ci-dessous).
-
-
- On peut encore se servir de l'antislash pour préciser des types
- génériques de valeurs :
-
-
-
-
- \d
-
-
- tout caractère décimal
-
-
-
-
- \D
-
-
- tout caractère qui n'est pas un caractère décimal
-
-
-
-
- \h
-
-
- n'importe quel espace horizontal
-
-
-
-
- \H
-
-
- n'importe quel caractère qui n'est pas un espace horizontal
-
-
-
-
- \s
-
-
- tout caractère blanc
-
-
-
-
- \S
-
-
- tout caractère qui n'est pas un caractère blanc
-
-
-
-
- \v
-
-
- n'importe quel espace vertical
-
-
-
-
- \V
-
-
- n'importe quel caractère qui n'est pas un espace vertical
-
-
-
-
- \w
-
-
- tout caractère de "mot"
-
-
-
-
- \W
-
-
- tout caractère qui n'est pas un caractère de "mot"
-
-
-
-
-
-
- Chaque paire précédente définit une partition de
- la table des caractères : les deux ensembles sont disjoints.
- Un caractère satisfera soit un métacaractère,
- soit l'autre.
-
-
- Les caractères "blancs" sont HT (9), LF (10), FF (12), CR (13),
- et espace (32). Cependant, lors de l'utilisation d'une locale
- particulière, tous les caractères se trouvant dans l'intervalle
- 128-255 peuvent aussi être considérés comme caractère blanc, par exemple
- NBSP (A0).
-
-
- Un caractère de "mot" sera une lettre, un chiffre ou le
- caractère souligné, c'est-à-dire un
- caractère qui pourra être une partie d'un mot Perl. La
- définition des lettres et chiffres est définie par les
- tables de caractères de PCRE, et peut varier suivant la table
- locale de caractères. Par exemple, dans la configuration "français" ("fr"),
- certains caractères ont des codes supérieurs à
- 128, pour les caractères accentués, et ils seront compris
- par le métacaractère \w.
-
-
- Ces séquences de caractères peuvent apparaître à
- l'intérieur ou à l'extérieur des classes de
- caractères. Elles remplacent à chaque fois un
- caractère du type correspondant. Si cette séquence est
- placée en fin de masque, et qu'il n'y a plus de caractère à
- comparer dans la chaîne sujet, la recherche échoue.
-
-
- La quatrième utilisation de l'antislash intervient lors d'assertions
- simples. Une assertion impose une condition à un certain point,
- sans remplacer de caractère. L'utilisation de sous-masques pour
- réaliser des assertions plus complexes est décrite
- plus bas. Les assertions avec antislash sont les suivantes :
-
-
-
-
- \b
-
-
- limite de mot
-
-
-
-
- \B
-
-
- pas limite de mot
-
-
-
-
- \A
-
-
- début de la chaîne sujet
- (indépendant du mode multilignes)
-
-
-
-
- \Z
-
-
- fin de la chaîne sujet ou nouvelle ligne à
- la fin de la chaîne sujet
- (indépendant du mode multilignes)
-
-
-
-
- \G
-
-
- position de la première occurrence trouvée dans la chaîne sujet
-
-
-
-
- \z
-
-
- fin de la chaîne sujet
- (indépendant du mode multilignes)
-
-
-
-
-
-
- Ces assertions ne peuvent pas apparaître dans une classe de
- caractères (mais "\b" a une autre signification à
- l'intérieur d'une classe de caractères).
-
-
- Une limite de mot est un emplacement dans la chaîne sujet ou un
- caractère et son suivant ne sont pas en même temps des
- caractères de mot (\w), ou le contraire (\W)
- (on peut le voir comme \w\W ou \W\w), ou encore le
- premier ou le dernier caractère est un caractère mot (\w).
-
-
- Les assertions \A, \Z, et
- \z diffèrent des métacaractères
- ^ et $
- (décrit dans les ancres)
- dans la mesure où ils ne sont pas dépendants des options, notamment
- PCRE_MULTILINE
- ou PCRE_DOLLAR_ENDONLY.
- La différence entre \Z et
- \z tient au fait que \Z recherche
- les positions avant les nouvelles lignes et à la fin de la
- chaîne sujet, tandis que \z ne recherche
- que la fin de la chaîne.
-
-
- L'assertion \G est réalisée uniquement lorsque
- la position courante de l'occurrence trouvée est au début de l'occurrence,
- comme spécifié par l'argument offset de la
- fonction preg_match. Elle diffère de \A
- lorsque la valeur du paramètre offset est différente
- de zéro.
-
-
- \Q et \E peuvent être utilisés
- pour ignorer les métacaractères dans le masque.
- Par exemple : \w+\Q.$.\E$ recherchera un ou plusieurs
- caractères suivis par la chaîne littérale .$. et ancrés à la
- fin de la chaîne.
- Il est à noter que ceci ne change pas le comportement des délimiteurs ;
- par exemple le masque #\Q#\E#$ n'est pas valide, car
- le second # marque la fin du masque, et que
- \E# est interprété comme un modificateur invalide.
-
-
- \K peut être utilisé pour réinitialiser le résultat
- Par exemple, le masque foo\Kbar trouve
- "foobar", mais reporte qu'il a trouvé "bar". L'utilisation de
- \K n'interfère pas avec la configuration des sous-chaînes capturantes.
- Par exemple, lorsque le masque (foo)\Kbar
- trouve "foobar", la première sous-chaîne sera toujours "foo".
-
-
-
-
- Propriétés des caractères Unicode
-
- Trois nouvelles séquences d'échappement
- pour trouver des types de caractères sont disponibles lorsque
- le mode UTF-8 est sélectionné. Elles sont :
-
-
-
- \p{xx}
- un caractère avec les propriétés xx
-
-
- \P{xx}
- un caractère sans les propriétés xx
-
-
- \X
- une séquence étendue Unicode
-
-
-
- Les noms des propriétés représentés par xx ci-dessus
- sont limités aux catégories de propriétés générales Unicode. Chaque caractère
- a exactement une seule de ces propriétés, spécifié par une abréviation sur deux caractères.
- Pour des raisons de compatibilité avec Perl, la négation peut être spécifiée
- en incluant un accent circonflexe entre l'accolade ouvrante et le nom de la
- propriété. Par exemple, \p{^Lu} équivaut à la même chose que
- \P{Lu}.
-
-
- Si une seule lettre est spécifiée avec \p ou \P,
- il inclut toutes les propriétés qui commencent par cette lettre. Dans ce cas,
- en l'absence de négation, les accolades dans la séquence d'échappement sont
- optionnelles ; ceci revient à la même chose :
-
-
-
-
-
-
-
- Codes des propriétés supportées
-
-
-
- Propriétés
- Correspondance
- Notes
-
-
-
-
- C
- Autre
-
-
-
- Cc
- Contrôle
-
-
-
- Cf
- Format
-
-
-
- Cn
- Non affecté
-
-
-
- Co
- Utilisation privée
-
-
-
- Cs
- Substitut
-
-
-
- L
- Lettre
-
- Inclut les propriétés suivantes : Ll,
- Lm, Lo, Lt et
- Lu.
-
-
-
- Ll
- Lettre en minuscule
-
-
-
- Lm
- Lettre de modification
-
-
-
- Lo
- Autres lettres
-
-
-
- Lt
- Lettre titrée
-
-
-
- Lu
- Lettre en majuscule
-
-
-
- M
- Marque
-
-
-
- Mc
- Marque d'espacement
-
-
-
- Me
- Marque d'enfermement
-
-
-
- Mn
- Marque non espacée
-
-
-
- N
- Nombre
-
-
-
- Nd
- Nombre décimal
-
-
-
- Nl
- Nombre Lettre
-
-
-
- No
- Autres nombres
-
-
-
- P
- Ponctuation
-
-
-
- Pc
- Ponctuation de connecteur
-
-
-
- Pd
- Tiret de ponctuation
-
-
-
- Pe
- Ponctuation de fermeture
-
-
-
- Pf
- Ponctuation finale
-
-
-
- Pi
- Ponctuation initiale
-
-
-
- Po
- Autres ponctuations
-
-
-
- Ps
- Ponctuation ouvrante
-
-
-
- S
- Symbole
-
-
-
- Sc
- Symbole monétaire
-
-
-
- Sk
- Symbole de modification
-
-
-
- Sm
- Symbole mathématique
-
-
-
- So
- Autres symboles
- Inclut des émojis
-
-
- Z
- Séparateur
-
-
-
- Zl
- Séparateur de ligne
-
-
-
- Zp
- Séparateur de paragraphe
-
-
-
- Zs
- Séparateur d'espace
-
-
-
-
-
-
- Les propriétés étendues comme InMusicalSymbols ne sont pas supportées
- par PCRE.
-
-
- La sensibilité à la casse de la recherche n'affecte pas les
- séquences d'échappement. Par exemple, \p{Lu}
- cherche toujours et uniquement les lettres en majuscules
-
-
- Les jeux de caractères unicodes sont définis comme appartenant à certains scripts.
- Un caractère d'un de ces jeux peut être trouvé en utilisant un
- nom de script. Par exemple :
-
-
-
- \p{Greek}
-
-
- \P{Han}
-
-
-
- Ceux qui ne font pas partis d'un script identifié sont regroupés
- dans Common. Voici la liste courante des scripts :
-
-
-
- La séquence \X cherche n'importe quel groupe de
- graphème Unicode étendu. Un groupe de graphème est une chaîne
- composée d'un ou plusieurs caractères Unicode qui se combinent
- pour former un seul glyphe. Dans les faits, cela revient à utiliser
- le caractère . sachant qu'il va matcher un
- caractère composé, peu importe le nombre de caractères individuel
- nécessaire à l'afficher.
-
-
- Dans les versions PCRE inférieures à 8.32 (ce qui correspond aux
- versions de PHP antérieures à la version 5.4.14 lorsque la
- bibliothèque interne est utilisée), \X était
- équivalent à (?>\PM\pM*). Aussi, il matchait
- un caractère sans propriété "mark", suivi par aucun ou plusieurs
- caractères possédant la propriété "mark", et traitait la séquence
- comme un groupe atomique (voir ci-dessous). Les caractères
- avec la propriété "mark" sont typiquement les lettres accentuées
- qui affectent le caractère qui la précède.
-
-
- La recherche de caractères par les propriétés Unicode n'est pas la méthode
- la plus rapide, car PCRE doit chercher une structure qui contient les données
- dans plus de quinze mille caractères. C'est pour cela que les séquences
- traditionnelles comme \d et
- \w n'utilisent pas les propriétés Unicode dans PCRE.
-
-
-
-
- Ancres
-
- En dehors d'une classe de caractères, avec les options par
- défaut, ^ est une assertion qui n'est
- vraie que si elle est placée tout au début de la
- chaîne. À l'intérieur d'une classe de caractères,
- ^ a un tout autre sens (voir ci-dessous).
-
-
- ^ n'a pas besoin d'être le premier
- caractère du masque, si plusieurs alternatives sont
- proposées, mais il doit être placé en
- premier dans chaque alternative. Si toutes les alternatives
- commencent par ^, alors le masque est dit ancré
- (il y a une autre construction qui porte cette appellation).
-
-
- $ est une assertion qui n'est vraie que si elle
- est placée tout en fin de chaîne ou juste avant un
- caractère de nouvelle ligne qui serait le dernier
- caractère de la chaîne. À l'intérieur d'une
- classe de caractères, $ a un tout autre
- sens (voir ci-dessous).
- $ n'a pas besoin d'être le dernier
- caractère du masque, si plusieurs alternatives sont
- proposées, mais il doit être placé en dernier
- dans chaque alternative. Si toutes les alternatives finissent par
- $, alors le masque est dit ancré (il y
- a une autre construction qui porte cette appellation). $
- n'a pas de valeur particulière dans une classe de
- caractères.
-
-
- La signification de $ peut changer, de manière
- à l'amener à ce qu'il ne puisse se trouver qu'en toute
- fin de la chaîne sujet. Cela se fait en ajoutant l'option
- PCRE_DOLLAR_ENDONLY
- au moment de la compilation, ou de l'exécution.
- Cette option est inopérante sur \Z.
-
-
- La signification de ^ peut changer, de manière
- à l'amener à ce qu'il puisse se trouver immédiatement
- avant et immédiatement après un caractère de nouvelle
- ligne "\n". Cela se fait en ajoutant l'option
- PCRE_MULTILINE au moment de
- la compilation ou de l'exécution.
- Par exemple, le masque /^abc$/ accepte la chaîne
- "def\nabc" uniquement en mode multilignes. Par
- conséquent, toutes les parties du masque qui commencent par
- "^" ne sont pas ancrées, en mode multilignes.
- L'option PCRE_DOLLAR_ENDONLY
- est ignorée si l'option
- PCRE_MULTILINE est choisie.
-
-
- Notez que les métacaractères \A,
- \Z, et \z peuvent servir à
- repérer le début et la fin du sujet, et toutes les
- parties du masque qui commenceront par \A seront toujours
- ancrées, avec l'option
- PCRE_MULTILINE ou non.
-
-
-
-
- Point
-
- En dehors d'une classe de caractères, un point remplace n'importe
- quel caractère, même invisible et à l'exception du
- caractère de nouvelle ligne. Avec l'option
- PCRE_DOTALL le point
- remplace n'importe quel caractère, même le caractère de
- nouvelle ligne. La gestion des points est complètement
- indépendante de ^ et $.
- Le seul point commun est que les deux ont un comportement particulier vis-à-vis
- des caractères de nouvelle ligne.
- Le point n'a pas de comportement particulier dans une classe de
- caractères.
-
-
- \C peut être utilisé pour chercher un seul octet.
- Il prend tout son sens en mode UTF-8
- où le point correspond à un caractère entier qui peut être constitué de plusieurs
- octets.
-
-
-
-
- Classes de caractères
-
- Un crochet ouvrant [ introduit une classe de
- caractères, et le crochet fermant ]la
- conclut. Le crochet fermant n'a pas de signification en lui-même.
- Si le crochet fermant est nécessaire à l'intérieur
- d'une classe de caractères, il faut qu'il soit le premier
- caractère (après un ^ éventuel)
- ou protégé avec un antislash.
-
-
- Une classe de caractères remplace un seul caractère
- dans la chaîne sujet, à moins que le premier
- caractère de la classe soit un accent circonflexe
- ^, qui représente une négation :
- le caractère ne doit pas se trouver dans la classe. Si
- ^ est nécessaire dans la classe, il
- suffit qu'il ne soit pas le premier caractère, ou bien
- qu'il soit protégé par un antislash.
-
-
- Par exemple, le caractère [aeiou] remplace
- n'importe quelle voyelle minuscule, tandis que [^aeiou]
- remplace n'importe quel caractère qui n'est pas une voyelle
- minuscule. ^ est une notation pratique pour
- spécifier des caractères qui sont dans une classe,
- en ne citant que ceux qui n'y sont pas. Le comportement est inchangé.
-
-
- Avec l'option d'insensibilité à la casse, toutes les lettres
- d'une classe de caractères représentent en même temps
- la majuscule et la minuscule. Par exemple, [aeiou]
- représentera "A" ou "a", et
- [^aeiou] n'acceptera pas "A",
- tandis que sans l'option, elle l'accepterait.
-
-
- Le caractère de nouvelle ligne n'est pas traité de
- manière spéciale dans les classes de caractères,
- quelle que soit l'option PCRE_DOTALL
- ou PCRE_MULTILINE. Une classe
- telle que [^a] acceptera toujours une nouvelle ligne.
-
-
- Le signe moins (-) est utilisé pour
- spécifier un intervalle de caractères, dans
- une classe. Par exemple, [d-m] remplace toutes
- les lettres entre d et m inclus. Si le caractère moins est
- requis dans une classe, il faut le protéger avec un antislash,
- ou le faire apparaître à une position où il ne pourra
- pas être interprété comme une indication d'intervalle,
- c'est-à-dire au début ou à la fin de la classe.
-
-
- Il n'est pas possible d'avoir le caractère crochet fermant
- "]" comme fin d'intervalle. Un masque tel que
- [W-]46] est compris comme la classe de caractères
- contenant deux caractères ("W" et "-") suivie de la chaîne
- littérale "46]", ce qui fait qu'il va accepter
- "W46]" ou "-46]". Cependant, si
- "]" est protégé avec un antislash, le
- masque [W-\]46] est interprété comme
- une classe d'un seul caractère, contenant un intervalle de
- caractères. La valeur octale ou hexadécimale de
- "]" peut aussi être utilisée pour déterminer
- les limites de l'intervalle.
-
-
- Les intervalles travaillent sur des séquences ASCII.
- Ils peuvent aussi être précisés avec des valeurs numériques :
- par exemple "[\000-\037]".
- Si cet intervalle inclut des lettres utilisées avec une
- option d'insensibilité de casse, les majuscules ou minuscules
- correspondantes seront aussi incluses. Par exemple,
- "[W-c]" est équivalent à
- "[][\^_`wxyzabc]", avec l'option
- d'insensibilité de casse. Si la table locale de
- caractères est "fr", "[\xc8-\xcb]"
- correspond aux caractères accentués.
-
-
- Les types de caractères \d,
- \D, \S, \s,
- \w, \W peuvent aussi intervenir
- dans les classes de caractères. Par exemple,
- "[][\^_`wxyzabc][\dABCDEF]" acceptera n'importe
- quel caractère hexadécimal. Un accent circonflexe peut
- aussi être utilisé pour spécifier adroitement
- des ensembles de caractères plus restrictifs : par exemple
- [^\W_] accepte toutes les lettres et les chiffres,
- mais pas les soulignés.
-
-
- Tous les caractères non alphanumériques autres que
- \, -, ^ (placés en début de chaîne)
- et ] n'ont pas de signification
- particulière, mais ils ne perdront rien à être protégés.
- Le délimiteur de motif est toujours spécial, et doit être
- protégé lorsqu'il est utilisé à l'intérieur d'une expression.
-
-
- Perl supporte la notation POSIX pour les classes de caractères.
- Elles utilisent des noms entourés par [: et
- :]. PCRE supporte également cette notation. Par exemple,
- [01[:alpha:]%] trouve "0", "1", toute lettre,
- ou encore le caractère "%". Les noms de classe supportés sont :
-
- Classes de caractères
-
-
-
- alnum
- lettres et chiffres
-
- alpha
- lettres
-
- ascii
- codes caractères 0 - 127
-
- blank
- espace ou tabulation uniquement
-
- cntrl
- caractères de contrôle
-
- digit
- chiffres décimaux (identique à \d)
-
-
- graph
- caractères d'impression, excluant les espaces
-
-
- lower
- lettres en minuscule
-
-
- print
- caractères d'impression, incluant les espaces
-
-
- punct
- caractères d'impression, excluant les lettres et les chiffres
-
-
- space
- espace blanc (pas tout à fait identique à \s)
-
-
- upper
- lettres en majuscule
-
-
- word
- caractères composant un mot (identique à \w)
-
-
- xdigit
- chiffres hexadécimaux
-
-
-
-
- Les caractères d'espacement (space) sont HT (9), LF (10), VT (11), FF (12), CR (13),
- et l'espace (32). Notez que cette liste inclut le caractère VT (code 11). Ceci rend la classe
- "space" différente de \s, qui n'inclut pas ce caractère VT (pour une raison de compatibilité
- Perl).
-
-
- La classe word est une extension Perl, et blank
- est une extension GNU de Perl 5.8. La négation est une autre extension Perl ; elle est indiquée
- par le caractère ^ après un double-point. Par exemple,
- [12[:^digit:]] trouve "1", "2", mais aussi tout caractère qui n'est pas un chiffre.
-
-
- En mode UTF-8, les caractères dont les valeurs sont supérieures à 128 ne seront trouvés par
- aucune des classes de caractères POSIX.
- À partir de libpcre 8.10 certains caractères de classes ont été
- modifiées pour utiliser des caractères de propriétés Unicode, dans ce cas les
- restrictions mentionnées ne s'appliquent pas.
- Référez-vous au manuel PCRE(3) pour plus de détails.
-
-
- Les propriétés des caractères Unicode peuvent apparaître à l'intérieur d'une
- classe de caractère. Ils ne peuvent pas faire partie d'une étendue.
- Le caractère moins (tiret) après une classe de caractère Unicode satisfera littéralement.
- Essayer de terminer une étendue avec une propriété de caractère Unicode résultera en un avertissement.
-
-
-
-
- Alternatives
-
- La barre verticale | sert à séparer des
- alternatives. Par exemple, dans le masque "/dupont|martin/"
- recherche soit "dupont", soit "martin".
- Le nombre d'alternatives n'est pas limité, et il est même possible
- d'utiliser la chaîne vide. Lors de la recherche, toutes les alternatives
- sont essayées, de gauche à droite, et la première qui est
- acceptée est utilisée.
- Si les alternatives sont dans un sous-masque, elles ne réussiront
- que si le masque principal réussit aussi.
-
-
- Il est possible d’enregistrer quelle alternative a été sélectionnée en utilisant
- (*MARK:NOM) ou (*:NOM).
- Un nombre quelconque de verbes (*MARK) peut apparaître, et leurs
- noms n’ont pas besoin d’être uniques. Lorsqu’une correspondance réussit, le nom du
- dernier (*MARK:NOM) rencontré sera placé parmi
- les correspondances comme s’il s’agissait d’un groupe de capture appelé MARK,
- de sorte qu’il puisse être lu à partir de matches dans
- preg_match et sera transmis au
- callback de preg_replace_callback etc.
-
-
-
-
- Options internes
-
- Les options PCRE_CASELESS,
- PCRE_MULTILINE,
- PCRE_DOTALL,
- PCRE_UNGREEDY,
- PCRE_EXTRA,
- PCRE_EXTENDED et
- PCRE_DUPNAMES peuvent être changées à l'intérieur du masque
- lui-même, avec des séquences mises entre
- "(?" et ")".
- Les options sont :
-
- Options internes
-
-
-
- i
- pour PCRE_CASELESS
-
-
- m
- pour PCRE_MULTILINE
-
-
- s
- pour PCRE_DOTALL
-
-
- x
- pour PCRE_EXTENDED
-
-
- U
- pour PCRE_UNGREEDY
-
-
- X
- Pour PCRE_EXTRA
- (plus supporté à partir de PHP 7.3.0)
-
-
- J
- Pour PCRE_INFO_JCHANGED
-
-
-
-
-
-
- Par exemple, (?im) rend le masque insensible à
- la casse, et multilignes. Il est possible d'annuler ces options en les
- faisant précéder par un signe - : par
- exemple (?im-sx), ajoutera les options
- PCRE_CASELESS
- et PCRE_MULTILINE,
- mais annulera les options
- PCRE_DOTALL
- et PCRE_EXTENDED.
- Si une option apparaît avant et après le signe moins, l'option
- sera annulée.
-
-
- Lorsqu'une modification d'option survient au degré le plus haut (et donc, pas dans
- les parenthèses du sous-masque), les modifications sont appliquées dans le reste
- du masque qui suit. Donc, /ab(?i)c/ valide uniquement
- "abc" et "abC".
-
-
- Si une option intervient dans un sous-masque, le comportement est différent.
- C'est un changement de comportement apparu en Perl 5.005. Une option à
- l'intérieur d'un sous-masque n'affecte que cette partie du masque, ce
- qui fait que (a(?i)b)c
- acceptera abc et aBc,
- mais aucune autre chaîne (en supposant que PCRE_CASELESS n'est pas
- utilisé). Cela signifie que les options permettent d'avoir
- différentes configurations de recherche pour différentes parties du masque.
- Une séquence d'options dans une alternative affecte toute l'alternative.
- Par exemple :
-
- (a(?i)b|c)
-
- accepte "ab", "aB", "c",
- et "C", même si, comme dans le cas de
- "C", la première alternative qui porte
- l'option n'est pas prise en compte. Sinon, cela risque d'introduire
- des comportements très étranges
-
-
- Les options spécifiques à PCRE telles
- PCRE_UNGREEDY et
- PCRE_EXTRA peuvent
- être modifiées de la même manière, en utilisant respectivement les caractères
- U et X. L'option (?X) est particulière,
- car elle doit toujours intervenir avant toutes les autres options,
- même au niveau du masque entier. Il vaut mieux l'activer au
- début du masque.
-
-
-
-
- Sous-masques
-
- Les sous-masques sont délimités par des parenthèses,
- et peuvent être imbriqués. Ajouter des sous-masques a deux
- utilités :
-
-
-
-
- Localiser un ensemble d'alternatives. Par exemple, le motif
- cat(aract|erpillar|) trouve un des mots "cat",
- "cataract", ou "caterpillar". Sans les parenthèses, cela trouverait
- "cataract", "erpillar" ou la chaîne vide.
-
-
-
-
- Cela configure le sous-masque comme capturant. Lorsque tout le motif
- correspond, la portion de la sous-chaîne qui correspond au sous-masque
- est passé à l'appelant grâce à l'argument ovector
- de pcre_exec. Les parenthèses ouvrantes sont comptées
- depuis la gauche vers la droite (commençant à 1) jusqu'à obtenir le nombre
- des sous-masques capturants.
-
-
-
-
- Par exemple, soit la chaîne sujet "le roi soleil"
- qui est utilisée avec le masque suivant :
- Le ((roi|prince) (soleil|charmant)), les sous-masques
- capturés sont "roi soleil", "roi",
- et "soleil", numérotés respectivement 1, 2, et 3.
-
-
- L'ubiquité des parenthèses n'est pas toujours simple
- d'emploi. Il y a des moments où regrouper des sous-masques
- est nécessaire, sans pour autant capturer la valeur trouvée.
- Si une parenthèse ouvrante est suivie de "?:",
- le sous-masque ne capture pas la chaîne assortie, et ne sera pas
- compté lors de la numérotation des captures. Par exemple,
- avec la chaîne "le prince charmant", utilisé
- avec le masque
-
- Le (( ?:roi|prince) (soleil|charmant))
-
- les chaînes capturées seront "prince charmant"
- et "charmant", numérotés respectivement 1
- et 2. Le nombre maximal de chaînes capturées est de 65535. Il se peut qu'il
- soit impossible de compiler un masque aussi large, toutefois, ceci dépend des
- options de configuration de libpcre.
-
-
- En guise de raccourci, si n'importe quelle option de configuration
- est requise au début des sous-masques non-capturants, les lettres
- d'option peuvent apparaître entre le signe "?"
- et le signe ":". Ainsi, les 2 masques
-
-
-
-
-
-
-
-
-
- captureront exactement les mêmes chaînes. Du fait que les branches
- alternatives sont testées de la gauche vers la droite, et que les
- options ne sont pas réinitialisées tant que le sous masque n'est pas
- atteint, une option de configuration d'une branche n'affecte pas
- les branches sous-jacentes ; ainsi, les 2 masques ci-dessus
- captureront "SAMEDI", mais aussi
- "Samedi".
-
-
- Il est possible de nommer un sous-masque en utilisant la syntaxe
- (?P<name>pattern). Ce sous-masque sera alors
- indexé dans le tableau de concordance par sa position, ainsi
- que par son nom. Il y a deux syntaxes alternatives :
- (?<name>pattern) et
- (?'name'pattern).
-
-
-
- Quelques fois, il est nécessaire d'avoir plusieurs correspondances en alternant
- les sous groupes dans une expression régulière. Normalement, chacun recevra son
- propre nombre de références arrière même si seulement un d'entre eux ne peut
- correspondre. Pour éviter cela, la syntaxe (?| permet d'autoriser
- les nombres dupliqués. Soit l'expression ci-après utilisée avec la chaîne
- Sunday:
-
-
-
-
-
-
-
-
-
- Ici, Sun est stocké dans la référence arrière 2, alors que la référence
- arrière 1 est vide. La recherche de correspondance de Saturday mène donc à
- Sat dans la référence arrière 1 alors que la référence arrière 2
- n'existe pas. Changer le masque en utilisant (?| résoud ce problème:
-
-
-
-
-
-
-
-
-
- Avec ce masque, à la fois Sun et Sat
- seront stockés dans la référence arrière 1.
-
-
-
-
- Répétitions
-
- Les répétitions sont spécifiées avec
- des quantificateurs, qui peuvent être placés à
- la suite des caractères suivants :
-
-
- Un caractère unique, même s'il s'agit d'un métacaractère
- Le métacaractère .
- Une classe de caractères
- Une référence de retour (voir section suivante)
- Un sous-masque avec parenthèses (à moins que ce ne soit
- une assertion, voir plus loin)
-
-
-
- Les quantificateurs généraux précisent un nombre
- minimum et maximum de répétitions possibles, donnés
- par deux nombres entre accolades, et séparés par une virgule.
- Ces nombres doivent être plus petits que 65536, et le premier nombre
- doit être égal ou inférieur au second. Par exemple
-
- z{2,4}
-
- accepte "zz",
- "zzz", ou "zzzz". L'accolade fermante
- n'a pas de signification par elle-même.
- Si le second nombre est omis, mais que la virgule est là, cela
- signifie qu'il n'y a pas de limite supérieure. Si le second nombre
- et la virgule sont omis, le quantificateur correspond au nombre exact de
- répétitions attendues. Par exemple :
-
- [aeiou]{3,}
-
- accepte n'importe quelle succession d'au moins 3 voyelles minuscules, tandis
- que
-
- \d{8}
-
- n'accepte que 8 chiffres exactement.
-
-
- Avant PHP 8.4.0, une accolade ouvrante apparaissant dans une position où un quantificateur n'est pas autorisé,
- ou qui ne correspond pas à la syntaxe d'un quantificateur, est considérée comme un caractère littéral.
- Par exemple, {,6} n'est pas un quantificateur, mais une chaîne littérale de quatre caractères.
-
- À partir de PHP 8.4.0, l'extension PCRE est livrée avec la version 10.44 de PCRE2,
- ce qui permet des motifs tels que \d{,8} qui sont interprétés comme \d{0,8}.
-
- De plus, à partir de PHP 8.4.0, les espaces autour des quantificateurs tels que
- \d{0 , 8} et \d{ 0 , 8 } sont autorisés.
-
-
- Le quantificateur {0} est autorisé, mais l'expression est alors
- ignorée.
-
-
- Par convenance (et pour la compatibilité ascendante), les trois
- quantificateurs les plus communs ont une abréviation d'un
- seul caractère :
-
- Quantificateurs sur un seul caractère
-
-
-
- *
- équivalent à {0,}
-
-
- +
- équivalent à {1,}
-
-
- ?
- équivalent à {0,1}
-
-
-
-
-
-
- Il est possible de constituer des boucles infinies en créant un sous-masque
- sans caractères, mais pourvu d'un quantificateur sans limite
- supérieure. Par exemple :
-
- (a?)*
-
-
-
- Les versions plus anciennes de Perl et PCRE généraient alors
- une erreur au moment de la compilation. Cependant, étant donné
- qu'il existe des situations où ces constructions peuvent être
- utiles, ces masques sont désormais autorisés. Toutefois, si
- la répétition du sous-masque ne trouve aucun caractère,
- la boucle est interrompue.
-
-
- Par défaut, les quantificateurs sont dits "gourmands", c'est-à-dire,
- qu'ils cherchent d'abord à trouver le nombre maximal de
- répétitions qui autorisent le succès de la recherche.
- L'exemple classique posé par cette gourmandise est la recherche de
- commentaires d'un programme en C. Les commentaires apparaissent entre les
- séquences /*....*/ et à l'intérieur
- de ces délimiteurs, les * et /
- sont autorisés. Appliquer le masque
-
- /\*.*\*/
-
- à la chaîne
-
- /* premier commentaire */ aucun commentaire /* second commentaire */
-
- ne peut réussir, car le masque travaille sur toute la chaîne,
- à cause de la gourmandise du caractère .*.
-
-
- Cependant, un quantificateur suivi d'un point d'interrogation cesse
- d'être gourmand, et au contraire, ne recherche que le nombre
- minimum de répétition. Dans ces conditions, le masque
-
- /\*.*?\*/
-
- trouvera bien les commentaires du code
- C. La signification des autres quantificateurs n'est pas changée.
- Attention à ne pas confondre l'utilisation du point d'interrogation
- ici avec son utilisation comme quantificateur lui-même.
- À cause de cette ambiguïté, il peut apparaître des situations
- où il faut le doubler :
-
- \d??\d
-
- Ce masque va tenter de lire un seul chiffre, mais le cas échéant,
- il acceptera 2 chiffres pour permettre à la recherche d'aboutir.
-
-
- Si l'option PCRE_UNGREEDY
- est activée, (une option qui n'est pas disponible avec Perl) alors
- les quantificateurs sont non gourmands par défaut, mais peuvent être
- rendu gourmands au cas par cas, en ajoutant un point d'interrogation
- après. En d'autres termes, cette option inverse le comportement par
- défaut.
-
-
- Les quantificateurs suivis par + sont "possessifs". Ils
- mangent autant de caractères que possible et ne retournent pas
- pour chercher le reste du masque. .*abc trouvera
- "abc", tandis que .*+abc ne le trouvera
- pas, car .*+ accapare totalement la chaîne.
- Les quantificateurs possessifs peuvent être utilisés pour
- accélérer le traitement.
-
-
- Lorsqu'un sous-masque est quantifié avec un nombre minimum
- de répétitions, qui soit plus grand que 1, ou avec
- un maximum de répétitions, le masque compilé aura
- besoin de plus de place de stockage, proportionnellement au minimum
- et au maximum.
-
-
- Si un masque commence par .* ou .{0,}
- et que l'option PCRE_DOTALL
- (équivalent en Perl à /s) est
- activée, c'est-à-dire en autorisant le remplacement des nouvelles
- lignes par un métacaractère, alors le masque est
- implicitement ancré, car tout ce qui suit va être
- mangé par la première séquence, et se comportera
- comme si le masque se terminait par le métacaractère
- \A. Dans le cas où on sait d'avance qu'il
- n'y aura pas de caractère de nouvelle ligne, activer l'option
- PCRE_DOTALL et commencer
- le masque par .* permet d'optimiser le masque.
- Alternativement, on peut utiliser ^ pour ancrer
- explicitement le masque.
-
-
- Lorsqu'un sous-masque capturant est répété, la valeur capturée est la
- dernière. Par exemple, après que
-
- (inter[net]{3}\s*)+
-
- ait été appliqué à "internet interne",
- la valeur de la chaîne capturée est "interne".
- Cependant, s'il y a des sous-masques imbriqués, la valeur
- capturée correspondante peut l'avoir été lors
- des précédentes itérations. Par exemple :
-
- /(a|(b))+/
-
- accepte "aba" et
- la deuxième valeur capturée est "b".
-
-
-
-
- Références arrières
-
- En dehors des classes de caractères, un antislash suivi
- d'un nombre plus grand que 0 (et possiblement plusieurs chiffres)
- est une référence arrière (c'est-à-dire vers la gauche) dans le masque,
- en supposant qu'il y ait
- suffisamment de sous-masques capturants précédents.
-
-
- Cependant, si le nombre décimal suivant l'antislash est
- plus petit que 10, il sera toujours considéré
- comme une référence arrière, et cela
- générera une erreur si le nombre de captures
- n'est pas suffisant. En d'autres termes, il faut qu'il existe
- suffisamment de parenthèses ouvrantes à gauche
- de la référence, surtout si la référence
- est inférieure à 10. Une "référence arrière vers l'avant" peut avoir du sens
- lorsqu'une répétition est isolée et que le sous masque à droite a participé
- à l'itération précédente. Voir la section sur les
- séquences d'échappements
- pour plus de détails à propos du nombre de chiffres qui suivent l'antislash.
-
-
- La référence arrière remplace ce qui a
- été capturé par un sous-masque dans le
- masque courant, plutôt que remplacer le sous-masque
- lui-même. Ainsi
-
- (calme|rapide) et \1ment
-
- trouvera "calme et calmement"
- et "rapide et rapidement", mais pas
- "calme et rapidement". Si la recherche tient
- compte de la casse, alors la casse de la chaîne
- capturée sera importante. Par exemple,
-
- ((?i)rah)\s+\1
-
- trouve "rah rah"
- et "RAH RAH", mais pas "RAH rah",
- même si le sous-masque capturant initial ne tenait pas compte
- de la casse.
-
-
- Il peut y avoir plusieurs références arrière dans
- le même sous-masque. Si un sous-masque n'a pas été
- utilisé dans une recherche, alors les références
- arrière échoueront. Par exemple
-
- (a|(bc))\2
-
- ne réussira jamais si la chaîne sujet commence par
- "a" plutôt que par "bc".
- Étant donné qu'il peut y avoir jusqu'à 99 références
- arrière, tous les chiffres après l'antislash sont
- considérés comment faisant potentiellement partie de
- la référence arrière. Si le masque recherche un
- chiffre après la référence, alors il faut
- impérativement utiliser des délimiteurs pour terminer
- la référence arrière.
- Si l'option PCRE_EXTENDED
- est activée, on peut utiliser un espace.
- Sinon, un commentaire vide fait l'affaire.
-
-
- Une référence arrière qui intervient à l'intérieur de
- parenthèses auxquelles elle fait référence
- échouera dès que le sous-masque sera utilisé. Par exemple,
-
- (a\1)
-
- échouera toujours. Cependant, ces
- références peuvent être utiles dans les
- sous-masques répétitifs. Par exemple, le masque
- "(a|b\1)+" pourra convenir pour "a",
- "aba", "ababba", etc.
- À chaque itération du sous-masque, la référence
- arrière utilise le résultat du dernier sous-masque.
- Pour que cela fonctionne, il faut que la première
- itération n'ait pas besoin d'utiliser la référence
- arrière. Cela arrive avec les alternatives, comme dans
- l'exemple ci-dessus, ou avec un quantificateur de minimum 0.
-
-
- La séquence d'échappement \g
- peut être utilisée pour le référencement absolu et relatif des
- sous-masques. Cette séquence doit être suivie par un nombre non signé
- ou négatif, entouré optionnellement par des accolades. La séquence
- \1, \g1 et \g{1}
- sont identiques. L'utilisation de ce masque avec un nombre non signé peut
- aider à ne pas le confondre lors de l'utilisation de nombre suivi d'un
- antislash. Cette séquence aide à distinguer les références arrière
- lors de l'utilisation de caractères octales et rend également plus facile
- d'avoir une référence arrière suivie par un nombre littéral, i.e.
- \g{2}1.
-
-
- L'utilisation de la séquence \g avec un nombre négatif
- indique une référence relative. Par exemple, (foo)(bar)\g{-1}
- trouvera la séquence "foobarbar" et (foo)(bar)\g{-2} trouvera
- la séquence "foobarfoo". Ceci peut être pratique dans ce gros masque
- comme alternative afin de conserver une trace du nombre de sous-masques
- afin de référencer un sous-masque précédant spécifique.
-
-
- Les références arrière du sous-masque nommé peuvent être
- utilisées sous la forme
- (?P=name),
- \k<name>, \k'name',
- \k{name}, \g{name},
- \g<name> ou \g'name'.
-
-
-
-
- Assertions
-
- Une assertion est un test sur les caractères suivants ou
- précédents celui qui est en cours d'étude. Ce
- test ne consomme pas de caractères (ie, on ne déplace
- pas le pointeur de caractères). Les assertions simples sont
- codées avec \b, \B,
- \A, \Z, \z,
- ^ et $, et sont décrites
- dans les séquences d'échappement.
- Il existe cependant des types d'assertions plus complexes, codées sous la forme
- de sous-masques. Il en existe deux types : celles qui travaillent
- au-delà de la position courante, et celles qui
- travaillent en-deçà.
-
-
- Une assertion se comporte comme un sous-masque, hormis le fait qu'elle
- ne déplace pas le pointeur de position. Les assertions avant
- commencent par (?= pour les assertions positives, et
- par (?!, pour les assertions négatives. Par exemple :
-
- \w+(?=;)
-
- s'assure qu'un mot est suivi d'un point-virgule,
- mais n'inclut pas le point virgule dans la capture et foo(?!bar)
- trouve toutes les occurrences de "foo" qui ne sont pas suivies par "bar".
- Notez que,
-
- (?!foo)bar
-
- en est proche, mais ne trouve pas une
- occurrence de "bar" qui soit précédée
- par quelque chose d'autre que "foo"; il
- trouve toutes les occurrences de "bar",
- quel que soit ce qui le précède, car l'assertion
-
- (?!foo)
-
- est toujours vraie quand les trois caractères suivants sont
- "bar". Une assertion arrière est ici
- nécessaire.
-
-
- Les assertions arrières commencent par (?<=
- pour les assertions positives, et (?<! pour les
- assertions négatives. Par exemple :
-
- (?<!foo)bar
-
- trouve les occurrences de "bar" qui ne sont pas
- précédées par "foo". Le contenu d'une référence
- arrière est limité de telle façon que les chaînes qu'il utilise
- soient toujours de la même taille. Cependant, lorsqu'il
- y a plusieurs alternatives, elles n'ont pas besoin d'être
- de la même taille. Par exemple,
-
- (?<=bullock|donkey)
-
- est autorisé, tandis que
-
- (?<!dogs?|cats?)
-
- provoque une erreur de compilation. Les alternatives qui ont des
- longueurs différentes ne sont autorisées qu'au niveau
- supérieur des assertions arrière. C'est une
- amélioration du fonctionnement de Perl 5.005, qui impose
- aux alternatives d'avoir toute la même taille. Une
- assertion telle que
-
- (?<=ab(c|de))
-
- n'est pas autorisée, car l'assertion de bas niveau (la deuxième,
- ici) a deux possibilités de longueurs différentes. Pour
- la rendre acceptable, il faut écrire
-
- (?<=abc|abde)
-
- L'implémentation des assertions arrière déplace
- temporairement le pointeur de position vers l'arrière, et cherche
- à vérifier l'assertion. Si le nombre de caractères
- est différent, la position ne sera pas correcte, et l'assertion
- échouera. La combinaison d'assertions arrière avec des
- sous-masques peut être particulièrement pratique à
- fin des chaînes. Un exemple est donné à la fin de
- cette section.
-
-
- Plusieurs assertions peuvent intervenir successivement. Par exemple,
- le masque
-
- (?<=\d{3})(?<!999)foo
-
- recherche les chaînes "foo" précédées
- par trois chiffres qui ne sont pas "999". Notez que chaque assertion
- est appliquée indépendamment, au même point de
- la chaîne à traiter. Tout d'abord, il est
- vérifié que les trois premiers caractères ont
- tous des chiffres, puis on s'assure que ces trois caractères
- ne sont pas "999". Le masque précédant
- n'accepte pas "foo" précédé de
- 6 caractères, les trois premiers étant des chiffres et
- les trois suivants étant différents de "999".
- Par exemple, ce masque n'acceptera pas la chaîne
- "123abcfoo". Pour ce faire, il faut utiliser le masque
- suivant :
-
- (?<=\d{3}...)(?<!999)foo.
-
-
-
- Dans ce masque, la première assertion vérifie les six premiers
- caractères, s'assure que les trois premiers sont des entiers,
- et la deuxième assertion s'assure que les trois derniers
- caractères ne sont pas "999".
-
-
- De plus, les assertions peuvent être imbriquées :
-
- (?<=(?<!foo)bar)baz
-
- recherche les occurrences de "baz" qui sont
- précédées par "bar", qui,
- à son tour, n'est pas précédé par
- "foo". Au contraire,
-
- (?<=\d{3}...(?<!999))foo
-
- est un autre masque, qui recherche les caractères "foo",
- précédés par trois chiffres, suivis de trois
- autres caractères qui ne forment pas "999".
-
-
- Les assertions ne sont pas capturantes, et ne peuvent pas être
- répétées. Si une assertion contient des sous-masques
- capturants en son sein, ils seront compris dans le nombre de sous-masques
- capturants du masque entier. La capture est réalisée pour
- les assertions positives, mais cela n'a pas de sens pour les
- assertions négatives.
-
-
- 200 assertions au maximum sont autorisées.
-
-
-
-
- Sous-masques uniques
-
- Avec les quantificateurs de répétitions, l'échec
- d'une recherche conduit normalement à une autre recherche, avec
- un nombre différent de répétitions, pour
- voir si le masque ne s'applique pas dans d'autres conditions.
- Parfois, il est pratique d'éviter ce comportement, soit
- pour changer la nature de la recherche, soit pour la faire abandonner
- plus tôt, si on pense qu'il n'est pas besoin d'aller plus loin.
-
-
- Considérons, par exemple, le masque \d+foo
- appliqué à la ligne
-
- 123456bar.
-
-
-
- Après avoir tenté d'utiliser les 6 chiffres suivis
- de "foo" qui font échouer, l'action habituelle
- sera de réessayer avec 5 chiffres, puis avec 4, et ainsi de
- suite jusqu'à l'échec final. Un sous-masque évalué une seule fois
- permettrait d'indiquer que lorsqu'une partie du masque est trouvée,
- elle n'a pas besoin d'être réévaluée à chaque tentative. Ceci
- conduirait à ce que la recherche échoue immédiatement après le
- premier test. Ces assertions ont leur propre notation, commençant avec
- (?> comme ceci :
-
- (?>\d+)bar
-
-
- Ce type de parenthèses verrouille le sous-masque qu'il contient
- une fois qu'il a été trouvé, et empêche un
- échec ultérieur d'y repasser, mais autorise à
- revenir plus loin en arrière.
-
-
- Une autre description est que les sous-masques de ce type
- recherchent les chaînes de caractères, et ancre le sous-masque
- à l'intérieur de la chaîne.
-
-
- Les sous-masques uniques ne sont pas capturants. Des cas simples comme
- ceux présentés ci-dessus peuvent être pris comme
- des situations maximales, qui réservent le maximum de
- caractères. En effet, alors que \d+ et
- \d+? ajustent le nombre de chiffres trouvés
- de manière à laisser la possibilité au masque de
- réussir, (?>\d+) ne peut retenir que la
- séquence entière de chiffres.
-
-
- Cette construction peut contenir un nombre arbitraire de sous-masques
- complexes, et ils peuvent être imbriqués.
-
-
- Les sous-masques uniques ne peuvent être utilisés qu'avec
- les assertions arrière, pour effectuer une recherche efficace
- en fin de chaîne. Considérons un masque simple tel
-
- abcd$
-
- appliqué à une très longue chaîne qui ne lui correspond pas.
- À cause du système de recherche de gauche à droite, PCRE va
- commencer par rechercher un "a" dans la
- chaîne sujet, puis vérifier si ce qui suit convient au reste
- du masque. Si le masque est spécifié sous la forme
-
- ^.*abcd$
-
- alors, la séquence .* remplace en premier
- lieu la chaîne entière, et échoue, repart en
- arrière, et remplace tous les caractères sauf le dernier,
- échoue, retourne en arrière, prend un caractère
- de moins, etc. et ainsi de suite. Encore une fois, la recherche du
- "a" passe en revue toute la chaîne de gauche
- à droite, ce qui n'est pas très efficace. Par contre,
- si le masque était écrit
-
- ^(?>.*)(?<=abcd)
-
- alors il n'y aurait pas de retour en arrière, pour satisfaire
- la séquence .*, car elle ne peut que remplacer
- toute la chaîne. L'assertion arrière consécutive
- va alors faire un test sur les 4 derniers caractères. Si elle
- échoue, la recherche est immédiatement interrompue.
- Pour les chaînes très longues, cette approche fait la
- différence en termes de performances et de temps de recherche.
-
-
- Lorsqu'un masque contient une répétition illimitée
- dans un sous-masque, qui contient lui-même un nombre
- illimité de répétiteurs, l'utilisation des
- sous-masques à utilisation unique est la seule façon
- d'éviter l'échec de la recherche après un
- temps de calcul trop long.
- Le masque
-
- (\D+|<\d+>)*[!?]
-
- recherche un nombre illimité de sous-chaînes, qui contiennent soit
- des non-chiffres, soit des chiffres inclus dans <>, suivi soit
- par ! ou par ?. Lorsqu'il trouve
- une solution, ce masque va très vite. Mais, lorsqu'il est
- appliqué à une chaîne telle :
-
- aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,
-
- il lui faut beaucoup de temps pour annoncer un échec. Cela est
- dû au fait que la chaîne peut être divisée en deux
- sous-chaînes d'un grand nombre de façons, et qu'elles
- ont toutes été essayées. (Cet exemple utilisait
- [!?] plutôt qu'un caractère simple, car
- PCRE et PHP utilise une optimisation qui leur permet de détecter
- rapidement l'échec lorsqu'un caractère unique est
- trouvé. Il se souvient du dernier caractère qui est
- attendu, et s'aperçoit rapidement qu'il n'y a pas ce caractère).
- Si le masque utilisé est
-
- ((?>\D+)|<\d+>)*[!?]
-
- les séquences de chiffres ne peuvent pas être
- trouvées, et l'échec intervient rapidement.
-
-
-
-
- Les sous-masques conditionnels
-
- Il est possible de lier un sous-masque à une condition, ou de
- choisir entre deux sous-masques alternatifs, en fonction du
- résultat d'une assertion, ou suivant les résultats
- de recherche précédents.
- Les deux formes possibles de sous-masques conditionnels sont
-
-
-
-
-
-
-
-
- Si les conditions sont satisfaites, le masque positif est utilisé,
- sinon, le masque négatif est utilisé, si présent.
- S'il y a plus de deux possibilités, une erreur est générée
- à la compilation.
-
-
- Il y a deux types de conditions : si le texte entre les parenthèses
- est une séquence de chiffres, alors la condition est satisfaite si
- le sous-masque correspondant à ce numéro a réussi.
- Considérons le masque suivant, qui contient des espaces non
- significatifs pour le rendre plus compréhensible (on supposera
- l'option PCRE_EXTENDED
- activée) et qui est divisée en trois parties
- pour simplifier les explications :
-
-
-
-
-
-
-
- La première partie recherche une parenthèse ouvrante
- optionnelle et, si elle existe, elle est capturée. La deuxième
- partie recherche une séquence de caractères qui ne contiennent
- pas de parenthèses. La troisième partie est
- conditionnée à la première, et s'assure que s'il
- y a une parenthèse ouvrante, il en existe une fermante.
- Si une parenthèse ouvrante a été trouvée,
- elle a été capturée, et donc la première capture
- existe, et la condition est exécutée. Sinon, elle est
- ignorée. Ce masque recherche donc une séquence de lettres,
- éventuellement placées entre parenthèse.
-
-
- Si la condition est la chaîne (R), elle sera
- satisfaite si un appel récursif au masque ou au sous-masque
- a été fait. Au premier appel, la condition n'est pas vérifiée.
-
-
- Si la condition n'est pas une séquence de chiffres, il faut que ce soit
- une assertion. Ce peut être une assertion positive ou négative,
- arrière ou avant. Considérons le masque suivant (mêmes conditions que
- le précédent) et avec deux possibilités en seconde ligne :
-
-
-
-
-
-
-
-
- La condition est une assertion avant positive, qui recherche une
- séquence optionnelle de caractères non-lettre. En d'autres
- termes, elle teste la présence d'au moins une lettre dans la chaîne
- sujet. Si une lettre est trouvée, la recherche se poursuit avec
- la première alternative, et sinon, avec la seconde. Ce masque
- recherche des chaînes de la forme dd-aaa-dd ou
- dd-dd-dd, avec "aaa" qui sont des
- lettres, et dd qui sont des chiffres.
-
-
-
-
- Commentaires
-
- La séquence (?# marque le début d'un commentaire,
- qui se termine à la prochaîne parenthèse fermante. Les
- parenthèses imbriquées ne sont pas autorisées. Les
- caractères entre ces délimiteurs ne jouent alors aucun rôle
- dans le masque.
-
-
- Si l'option PCRE_EXTENDED
- est activée, les caractères dièses
- # non protégés en dehors d'une classe de
- caractères introduisent un commentaire qui continuera jusqu'à
- la prochaîne ligne dans le masque.
-
-
-
- Usage de commentaire dans un masque PCRE
-
-
-
- &example.outputs;
-
-
-
-
-
-
-
-
- Masques récursifs
-
- Considérons le cas où il faut rechercher dans une
- chaîne avec un niveau d'imbrications infini de
- parenthèses. Sans l'aide de la récursivité, le
- mieux que nous puissions obtenir est de créer un masque avec un
- niveau fixé de profondeur d'imbrication. Il n'est pas possible
- de traiter des masques à niveau d'imbrication variable.
- PCRE fournit un nouvel outil expérimental qui permet
- d'utiliser la récursivité dans les masques (entre autres).
- L'option (?R) est fournie pour servir la cause de
- la récursivité. Le masque suivant résout le
- problème des parenthèses (l'option
- PCRE_EXTENDED est
- utilisée pour ignorer les espaces) :
-
- \( ( (?>[^()]+) | (?R) )* \)
-
-
- Tout d'abord, le masque recherche une parenthèse ouvrante. Puis,
- il recherche n'importe quel nombre de sous-chaînes qui sont soit
- des séquences de caractères non-parenthèses, ou
- bien une recherche récursive avec le même masque (i.e.
- une chaîne correctement incluse entre parenthèses).
- Finalement, il recherche une parenthèse fermante.
-
-
- Cet exemple particulier contient un nombre illimité de
- répétitions imbriquées, ce qui fait que
- l'utilisation de sous-chaînes à utilisation unique
- pour rechercher les séquences de caractères
- non-parenthèses est important, lorsqu'il s'applique à
- une chaîne qui n'est pas valide. Par exemple, si on l'applique
- à
-
- (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()
-
- la réponse arrive rapidement. Sinon, si les sous-chaînes
- à utilisation unique ne sont pas utilisées, la
- recherche peut prendre un temps très long, car il existe
- de très nombreuses combinaisons de + et
- * à tester avant de conclure à
- l'échec.
-
-
- Les valeurs utilisées pour capturer les sous-masques sont celles
- utilisées par les niveaux les plus hauts de
- récursivité, auxquels la valeur est fixée.
- Si le masque précédent est utilisé avec
-
- (ab(cd)ef)
-
- la valeur de la parenthèse capturante est "ef",
- qui est la dernière valeur lue au niveau supérieur. Si de nouvelles
- parenthèses sont ajoutées, par exemple :
-
- \( ( ( (?>[^()]+) | (?R) )* ) \)
-
- alors la chaîne capturée est "ab(cd)ef",
- c'est-à-dire le contenu de la parenthèse capturante
- de plus haut niveau. S'il y a plus de 15 parenthèses
- capturantes dans une chaîne, PCRE doit utiliser plus
- de mémoire pour stocker ces données. S'il ne
- peut obtenir cette mémoire supplémentaire, il ne fait
- que sauver les 15 premières, car il n'y a pas moyen de
- générer une erreur de mémoire dans le cadre d'une récursivité.
-
-
-
- (?1), (?2) et suivants
- peuvent être également utilisés pour les sous masques récursifs. Il est également
- possible d'utiliser les sous masques nommés : (?P>foo) ou
- (?&name).
-
-
- Si la syntaxe pour une référence de sous-masque récursif (soit par un
- nombre ou par un nom) est utilisée en dehors des parenthèses à laquelle
- elle fait référence, il opère comme une sous-routine dans un langage
- de programmation. Un exemple ci-dessus a montré que le masque
- (sens|respons)e and \1ibility
- trouvera "sense and sensibility" et
- "response and responsibility", mais pas
- "sense and responsibility". Si on utilise plutôt le masque
- (sens|respons)e and (?1)ibility
- alors, il trouvera "sense and responsibility"
- tout comme les deux autres chaînes.
- De telles références doivent, dépendant, suivre le sous-masque auquel
- elles se réfèrent.
-
-
-
- La longueur maximale d'un sujet correspond au plus grand nombre positif
- qu'une variable entière peut contenir. Cependant, PCRE utilise la récursivité
- pour gérer les sous-masques et les répétitions infinies. Ce qui signifie
- que l'espace disponible pour la pile peut limiter la taille du sujet qui peut
- être passé à certains masques.
-
-
-
-
- Performance
-
- Certaines séquences de recherches sont plus efficaces que d'autres.
- Ainsi, il est plus efficace d'utiliser une classe de caractères
- telle que [aeiou] plutôt qu'une alternative
- (a|e|i|o|u).
- En général, le masque le plus simple, qui permette
- la recherche désirée est le plus efficace. Le livre
- de Jeffrey Friedl's contient de nombreuses études à
- propos de l'optimisation des expressions régulières.
-
-
- Lorsqu'un masque commence par.* et que l'option
- PCRE_DOTALL est
- activée, le masque est implicitement ancré par PCRE,
- étant donné qu'il ne peut que rechercher au début
- de la chaîne. Cependant, si l'option
- PCRE_DOTALL n'est pas
- activée, PCRE ne peut faire aucune optimisation, car le
- métacaractère point "."
- ne remplace pas une nouvelle ligne, et si la chaîne
- sujet contient des nouvelles lignes, le masque peut trouver une
- solution qui serait située juste après une
- de ces nouvelles lignes, et non pas seulement au début
- de la chaîne sujet. Par exemple, le masque,
-
- (.*)second
-
- acceptera la chaîne "premier \net second"
- (avec "\n" qui remplace la nouvelle ligne),
- et la première chaîne capturée sera "et".
- Afin d'effectuer la recherche, PCRE va essayer d'appliquer le masque
- à partir de chaque début de ligne.
-
-
- Si vous utilisez un tel masque avec des chaînes qui ne contiennent
- pas de caractères de nouvelle ligne, les meilleures performances
- seront atteintes avec l'option
- PCRE_DOTALL, ou en ancrant le
- masque avec ^.*. Cela évite à PCRE
- de scanner toute la chaîne pour rechercher un caractère
- de nouvelle ligne et recommencer la recherche.
-
-
- Attention aux masques qui contiennent des quantificateurs infinis
- imbriqués. Ils peuvent demander un temps de calcul très
- long, lorsque appliqués à une chaîne qui ne
- correspond pas à ce masque. Par exemple,
-
- (a+)*
-
-
-
- Ce masque peut accepter "aaaa" de 33 manières
- différentes, et ce nombre croit rapidement avec la taille
- de la chaîne (le quantificateur * peut prendre
- les valeurs de 0, 1, 2, 3, ou 4, et pour chaque cas non nul, le
- quantificateur + peut prendre différentes
- valeurs). Lorsque le reste de la chaîne est tel que l'on s'achemine
- vers un échec, PCRE doit en principe vérifier
- toutes les possibilités, et cela prend un temps
- extrêmement long.
-
-
- Un optimiseur repère les cas les plus simples, tel que
-
- (a+)*b
-
- où un caractère simple suit les quantificateurs.
- Avant de partir dans les procédures standards de recherche, PCRE
- s'assure qu'il y a au moins un "b" dans la
- chaîne, et si ce n'est pas le cas, l'échec est
- annoncé immédiatement. Sinon, il n'y a pas
- d'optimisation dans la recherche. Vous pouvez voir la
- différence de comportement avec le masque suivant :
-
- (a+)*\d.
-
- Le premier retourne un échec quasi-immédiatement, s'il est appliqué à
- une ligne de "a", alors que le second masque
- prend un temps significatif pour une chaîne de plus de
- 20 caractères.
-
-
-
-
+
+
+
+
+
+ Syntaxe des masques
+ Fonctionnement des expressions régulières
+
+
+ &reftitle.intro;
+
+ La syntaxe et la sémantique des expressions régulières
+ supportées par PCRE sont décrites dans cette section. Les expressions
+ régulières sont aussi décrites dans la documentation
+ Perl, et dans un grand nombre d'autres livres, avec de nombreux exemples.
+ Le livre de Jeffrey Friedl "Mastering Regular Expressions", édité
+ chez O'Reilly (ISBN 1-56592-257-3), les décrits en profondeur.
+ Cette description est organisée comme une documentation de
+ référence.
+
+
+ Une expression rationnelle est un masque appliqué à
+ une chaîne sujet, de gauche à droite. La plupart des
+ caractères se représentent eux-mêmes. Un exemple
+ trivial : un masque qui serait "Le rapide renard gris",
+ pourra correspondre à une partie de la chaîne sujet qui sera
+ identique au masque, par exemple
+ "Le rapide renard gris court dans la forêt",
+
+
+
+ Délimiteurs
+
+ Lors de l'utilisation des fonctions PCRE, il est nécessaire que le motif soit encadré
+ par des délimiteurs. Un délimiteur peut être n'importe quel caractère
+ non alpha-numérique autre qu'un backslash ou qu'un espace.
+ Les caractères d'espacement blanc avant un délimiteur valide sont silencieusement ignorés.
+
+
+ Les délimiteurs les plus courants sont les slashes (/), dièses
+ (#) et les tildes (~). Les exemples suivants ont
+ tous des motifs encadrés avec des délimiteurs valides.
+
+
+
+
+
+
+
+ Il est également possible d'utiliser les délimiteurs utilisant les crochets
+ où les crochets ouvrants et fermants sont respectivement les délimiteurs de
+ début et de fin. (), {},
+ [] et <> sont tous des styles
+ de crochets valides.
+
+
+
+]]>
+
+
+ Les délimiteurs utilisant les crochets n'ont pas besoin d'être échappés lorsqu'ils
+ sont utilisés comme caractères méta dans un masque, mais, comme tout autre opérateur,
+ ils doivent être échappés s'ils sont utilisés comme caractères littéraux.
+
+
+ Si le délimiteur doit être décrit dans le motif, il doit être échappé avec un backslash.
+ Si le délimiteur apparait souvent dans le motif, choisir un autre délimiteur est une bonne
+ idée pour en augmenter la lisibilité.
+
+
+
+
+
+ La fonction preg_quote peut être utilisée pour échapper une chaîne
+ et l'utiliser dans un motif. Son second paramètre optionnel sert à spécifier le délimiteur
+ qui doit être échappé.
+
+
+ Vous pouvez aussi utiliser des
+ modificateurs de motif après le délimiteur final. L'exemple suivant montre
+ une correspondance insensible à la casse.
+
+
+
+
+
+
+
+
+ Métacaractères
+
+ La puissance des expressions régulières provient de
+ leur capacité à autoriser des alternatives et des quantificateurs
+ de répétition dans le masque. Ils sont encodés
+ dans le masque par des métacaractères, qui ne représentent
+ pas ce qu'ils sont, mais sont interprétés d'une certaine
+ manière.
+
+
+ Il y a deux sortes de métacaractères : ceux qui sont
+ reconnus n'importe où dans un masque, hormis entre crochets,
+ et ceux qui sont reconnus entre crochets.
+ À l'extérieur des crochets, les métacaractères sont :
+
+
+ Métacaractère en dehors des crochets
+
+
+
+ MétacaractèreDescription
+
+
+
+
+ \Caractère d'échappement, avec de multiples usages
+
+
+ ^Le début de la chaîne sujet (ou de ligne, en mode multilignes)
+
+
+ $La fin de la chaîne sujet ou
+ avant la fin d'une nouvelle ligne (ou fin de ligne, en mode multilignes)
+
+
+ .Remplace n'importe quel caractère, hormis le caractère de nouvelle ligne (par défaut)
+
+
+ [Caractère de début de définition de classe
+
+
+ ]Caractère de fin de définition de classe
+
+
+ |Caractère de début d'alternative
+
+
+ (Caractère de début de sous-masque
+
+
+ )Caractère de fin de sous-masque
+
+
+ ?Étend le sens de (; quantificateur de 0 ou 1; quantificateur de minimisation
+ (Voir les répétitions)
+
+
+ *Quantificateur de 0 ou plus
+
+
+ +Quantificateur de 1 ou plus
+
+
+ {Caractère de début de quantificateur minimum/maximum
+
+
+ }Caractère de fin de quantificateur minimum/maximum
+
+
+
+
+
+ La partie du masque qui est entourée de crochets est appelée
+ classe de caractères. Dans
+ les classes de caractères,
+ les seuls métacaractères autorisés sont :
+
+
+ Meta-characters dans des crochets (classes de caractères)
+
+
+
+ MétacaractèreDescription
+
+
+
+
+ \Caractère de protection, avec de multiples usages
+
+
+ ^Négation de la classe, mais uniquement si placé tout au début de la classe
+
+
+ -Indique un intervalle de caractères
+
+
+
+
+
+ La section suivante décrit l'utilisation de chaque
+ métacaractère.
+
+
+
+
+ Séquences d'échappement
+
+ Le caractère antislash a de nombreuses utilisations.
+ En premier lieu, s'il est suivi d'un caractère non
+ alphanumérique, il ne prendra pas la signification
+ spéciale qui y est rattachée. Cette utilisation de
+ l'antislash comme caractère de protection s'applique
+ à l'intérieur et à l'extérieur des
+ classes de caractères.
+
+
+ Par exemple, pour rechercher le
+ caractère étoile "*", il faut
+ écrire dans le masque : "\*". Cela
+ s'applique dans tous les cas, que le caractère qui suive
+ soit un métacaractère ou non. C'est un moyen sûr
+ pour s'assurer qu'un caractère sera recherché
+ pour sa valeur littérale, plutôt que pour sa valeur
+ spéciale. En particulier, pour rechercher les antislashs,
+ il faut écrire : "\\".
+
+
+
+ La chaîne de caractères PHP
+ simple ou double guillemet a une signification spéciale des antislashs. Donc,
+ si \ doit être recherché avec une expression rationnelle \\, alors
+ "\\\\" ou '\\\\' doit être utilisé dans le code PHP.
+
+
+
+ Si un masque est utilisé avec l'option
+ PCRE_EXTENDED,
+ les espaces blancs du masque, mais qui ne sont pas dans une
+ classe de caractères et les caractères entre dièse
+ "#", ainsi que les nouvelles lignes sont ignorées.
+ L'antislash peut être utilisé pour les protéger et ainsi
+ rechercher un espace ou un dièse.
+
+
+ La deuxième utilité de l'antislash est de pouvoir
+ coder des caractères invisibles dans les masques. Il n'y
+ a pas de restriction sur la place de ces caractères
+ invisibles, hormis pour le caractère nul qui doit terminer
+ le masque.
+ Lors de la préparation du masque, il est souvent plus pratique
+ d'utiliser les séquences d'échappement suivantes,
+ plutôt que le caractère binaire qu'elles représentent :
+
+
+
+
+ \a
+
+
+ alarme, c'est-à-dire le caractère BEL (hex 07)
+
+
+
+
+ \cx
+
+
+ "contrôle-x", avec x qui peut être n'importe quel
+ caractère.
+
+
+
+
+ \e
+
+
+ escape (hex 1B)
+
+
+
+
+ \f
+
+
+ formfeed (hex 0C)
+
+
+
+
+ \n
+
+
+ nouvelle ligne (hex 0A)
+
+
+
+
+ \p{xx}
+
+
+ un caractère avec une propriété xx, voir
+ les propriétés unicode
+ pour plus d'informations
+
+
+
+
+ \P{xx}
+
+
+ un caractère sans propriété xx, voir
+ les propriétés unicode
+ pour plus d'informations
+
+
+
+
+ \r
+
+
+ retour chariot (hex 0D)
+
+
+
+
+ \R
+
+ saut de ligne : satisfait par \n, \r et \r\n
+
+
+
+ \t
+
+
+ tabulation (hex 09)
+
+
+
+
+ \xhh
+
+
+ caractère en hexadécimal, de code hh
+
+
+
+
+ \ddd
+
+
+ caractère en octal, de code ddd, ou référence
+ arrière
+
+
+
+
+
+
+ Dans la séquence "\cx" si "x"
+ est en minuscule, il est converti en majuscule. Puis, le bit 6 (hex 40)
+ est inversé. Ainsi "\cz" devient hex 1A,
+ mais "\c{" devient hex 3B, tandis que "\c;"
+ devient hex 7B.
+
+
+ Après "\x", deux caractères
+ hexadécimaux sont lus (les lettres peuvent être en majuscule
+ ou minuscule).
+ En mode UTF-8, "\x{...}"
+ est autorisée, où le contenu des accolades est une chaîne hexadécimale.
+ Il sera interprété comme un caractère UTF-8 où le numéro de code est
+ le numéro hexadécimal donné. La séquence d'échappement hexadécimale
+ originale, \xhh, correspond à un caractère UTF-8
+ sur 2 octets si la valeur est plus grande que 127.
+
+
+ Après "\0", deux caractères octaux sont lus.
+ Dans chacun des cas, le métacaractère tente de lire autant
+ de caractères que possible. Ainsi, la séquence
+ "\0\x\07" sera comprise comme deux caractères nuls,
+ suivis d'un caractère alarme (BEL). Assurez-vous que vous fournissez
+ suffisamment de chiffres après le métacaractère.
+
+
+ L'antislash de fin suivi par un nombre autre que 0 est compliqué.
+ À l'extérieur d'une classe de caractère, PCRE le lit, et tous les nombres
+ qui suivent, en tant que nombres décimaux. Si le nombre est plus petit que
+ 10 ou s'il y a eu au moins précédemment une parenthèse gauche capturante
+ dans l'expression, la séquence entière est prise en tant que référence arrière.
+ Une description sur le fonctionnement est donnée plus tard, suivez la discussion
+ sur les parenthèses des sous masques.
+
+
+ À l'intérieur d'un caractère de classe ou s'il est plus
+ grand que 9, et qu'il n'y a pas eu assez de parenthèses ouvrantes
+ auparavant, PCRE lit jusqu'à 3 chiffres octaux à la suite
+ de l'antislash, et génère un octet unique, à partir
+ des 8 bits de poids faible de la séquence. Tous les chiffres qui
+ suivent ne sont pas interprétés, et se représentent
+ eux-mêmes. Par exemple:
+
+
+
+
+ \040
+
+
+ une autre manière d'écrire un espace
+
+
+
+
+ \40
+
+
+ identique, dans la mesure où il n'y a pas 40
+ parenthèses ouvrantes auparavant
+
+
+
+
+ \7
+
+
+ est toujours une référence arrière
+
+
+
+
+ \11
+
+
+ peut être une référence de retour,
+ ou une tabulation
+
+
+
+
+ \011
+
+
+ toujours une tabulation
+
+
+
+
+ \0113
+
+
+ est une tabulation suivie du caractère "3"
+
+
+
+
+ \113
+
+
+ est le caractère 113 (étant donné qu'il ne
+ peut y avoir plus de 99 références arrière)
+
+
+
+
+ \377
+
+
+ est un octet dont tous les bits sont à 1
+
+
+
+
+ \81
+
+
+ peut être soit une référence arrière,
+ soit un zéro binaire suivi des caractères "8" et "1"
+
+
+
+
+
+
+ Les valeurs octales supérieures ou égales à 100 ne
+ doivent pas être introduites par un 0, car seuls les trois premiers
+ octets seront lus.
+
+
+ Toutes les séquences qui définissent une valeur d'un seul
+ octet peuvent être utilisées dans les classes de caractères,
+ et à l'extérieur. De plus, dans une classe de caractères,
+ la séquence "\b" est interprétée
+ comme un caractère effacer (hex 08). À l'extérieur,
+ elle peut avoir d'autres significations
+ (voir ci-dessous).
+
+
+ On peut encore se servir de l'antislash pour préciser des types
+ génériques de valeurs :
+
+
+
+
+ \d
+
+
+ tout caractère décimal
+
+
+
+
+ \D
+
+
+ tout caractère qui n'est pas un caractère décimal
+
+
+
+
+ \h
+
+
+ n'importe quel espace horizontal
+
+
+
+
+ \H
+
+
+ n'importe quel caractère qui n'est pas un espace horizontal
+
+
+
+
+ \s
+
+
+ tout caractère blanc
+
+
+
+
+ \S
+
+
+ tout caractère qui n'est pas un caractère blanc
+
+
+
+
+ \v
+
+
+ n'importe quel espace vertical
+
+
+
+
+ \V
+
+
+ n'importe quel caractère qui n'est pas un espace vertical
+
+
+
+
+ \w
+
+
+ tout caractère de "mot"
+
+
+
+
+ \W
+
+
+ tout caractère qui n'est pas un caractère de "mot"
+
+
+
+
+
+
+ Chaque paire précédente définit une partition de
+ la table des caractères : les deux ensembles sont disjoints.
+ Un caractère satisfera soit un métacaractère,
+ soit l'autre.
+
+
+ Les caractères "blancs" sont HT (9), LF (10), FF (12), CR (13),
+ et espace (32). Cependant, lors de l'utilisation d'une locale
+ particulière, tous les caractères se trouvant dans l'intervalle
+ 128-255 peuvent aussi être considérés comme caractère blanc, par exemple
+ NBSP (A0).
+
+
+ Un caractère de "mot" sera une lettre, un chiffre ou le
+ caractère souligné, c'est-à-dire un
+ caractère qui pourra être une partie d'un mot Perl. La
+ définition des lettres et chiffres est définie par les
+ tables de caractères de PCRE, et peut varier suivant la table
+ locale de caractères. Par exemple, dans la configuration "français" ("fr"),
+ certains caractères ont des codes supérieurs à
+ 128, pour les caractères accentués, et ils seront compris
+ par le métacaractère \w.
+
+
+ Ces séquences de caractères peuvent apparaître à
+ l'intérieur ou à l'extérieur des classes de
+ caractères. Elles remplacent à chaque fois un
+ caractère du type correspondant. Si cette séquence est
+ placée en fin de masque, et qu'il n'y a plus de caractère à
+ comparer dans la chaîne sujet, la recherche échoue.
+
+
+ La quatrième utilisation de l'antislash intervient lors d'assertions
+ simples. Une assertion impose une condition à un certain point,
+ sans remplacer de caractère. L'utilisation de sous-masques pour
+ réaliser des assertions plus complexes est décrite
+ plus bas. Les assertions avec antislash sont les suivantes :
+
+
+
+
+ \b
+
+
+ limite de mot
+
+
+
+
+ \B
+
+
+ pas limite de mot
+
+
+
+
+ \A
+
+
+ début de la chaîne sujet
+ (indépendant du mode multilignes)
+
+
+
+
+ \Z
+
+
+ fin de la chaîne sujet ou nouvelle ligne à
+ la fin de la chaîne sujet
+ (indépendant du mode multilignes)
+
+
+
+
+ \G
+
+
+ position de la première occurrence trouvée dans la chaîne sujet
+
+
+
+
+ \z
+
+
+ fin de la chaîne sujet
+ (indépendant du mode multilignes)
+
+
+
+
+
+
+ Ces assertions ne peuvent pas apparaître dans une classe de
+ caractères (mais "\b" a une autre signification à
+ l'intérieur d'une classe de caractères).
+
+
+ Une limite de mot est un emplacement dans la chaîne sujet ou un
+ caractère et son suivant ne sont pas en même temps des
+ caractères de mot (\w), ou le contraire (\W)
+ (on peut le voir comme \w\W ou \W\w), ou encore le
+ premier ou le dernier caractère est un caractère mot (\w).
+
+
+ Les assertions \A, \Z, et
+ \z diffèrent des métacaractères
+ ^ et $
+ (décrit dans les ancres)
+ dans la mesure où ils ne sont pas dépendants des options, notamment
+ PCRE_MULTILINE
+ ou PCRE_DOLLAR_ENDONLY.
+ La différence entre \Z et
+ \z tient au fait que \Z recherche
+ les positions avant les nouvelles lignes et à la fin de la
+ chaîne sujet, tandis que \z ne recherche
+ que la fin de la chaîne.
+
+
+ L'assertion \G est réalisée uniquement lorsque
+ la position courante de l'occurrence trouvée est au début de l'occurrence,
+ comme spécifié par l'argument offset de la
+ fonction preg_match. Elle diffère de \A
+ lorsque la valeur du paramètre offset est différente
+ de zéro.
+
+
+ \Q et \E peuvent être utilisés
+ pour ignorer les métacaractères dans le masque.
+ Par exemple : \w+\Q.$.\E$ recherchera un ou plusieurs
+ caractères suivis par la chaîne littérale .$. et ancrés à la
+ fin de la chaîne.
+ Il est à noter que ceci ne change pas le comportement des délimiteurs ;
+ par exemple le masque #\Q#\E#$ n'est pas valide, car
+ le second # marque la fin du masque, et que
+ \E# est interprété comme un modificateur invalide.
+
+
+ \K peut être utilisé pour réinitialiser le résultat
+ Par exemple, le masque foo\Kbar trouve
+ "foobar", mais reporte qu'il a trouvé "bar". L'utilisation de
+ \K n'interfère pas avec la configuration des sous-chaînes capturantes.
+ Par exemple, lorsque le masque (foo)\Kbar
+ trouve "foobar", la première sous-chaîne sera toujours "foo".
+
+
+
+
+ Propriétés des caractères Unicode
+
+ Trois nouvelles séquences d'échappement
+ pour trouver des types de caractères sont disponibles lorsque
+ le mode UTF-8 est sélectionné. Elles sont :
+
+
+
+ \p{xx}
+ un caractère avec les propriétés xx
+
+
+ \P{xx}
+ un caractère sans les propriétés xx
+
+
+ \X
+ une séquence étendue Unicode
+
+
+
+ Les noms des propriétés représentés par xx ci-dessus
+ sont limités aux catégories de propriétés générales Unicode. Chaque caractère
+ a exactement une seule de ces propriétés, spécifié par une abréviation sur deux caractères.
+ Pour des raisons de compatibilité avec Perl, la négation peut être spécifiée
+ en incluant un accent circonflexe entre l'accolade ouvrante et le nom de la
+ propriété. Par exemple, \p{^Lu} équivaut à la même chose que
+ \P{Lu}.
+
+
+ Si une seule lettre est spécifiée avec \p ou \P,
+ il inclut toutes les propriétés qui commencent par cette lettre. Dans ce cas,
+ en l'absence de négation, les accolades dans la séquence d'échappement sont
+ optionnelles ; ceci revient à la même chose :
+
+
+
+
+
+
+
+ Codes des propriétés supportées
+
+
+
+ Propriétés
+ Correspondance
+ Notes
+
+
+
+
+ C
+ Autre
+
+
+
+ Cc
+ Contrôle
+
+
+
+ Cf
+ Format
+
+
+
+ Cn
+ Non affecté
+
+
+
+ Co
+ Utilisation privée
+
+
+
+ Cs
+ Substitut
+
+
+
+ L
+ Lettre
+
+ Inclut les propriétés suivantes : Ll,
+ Lm, Lo, Lt et
+ Lu.
+
+
+
+ Ll
+ Lettre en minuscule
+
+
+
+ Lm
+ Lettre de modification
+
+
+
+ Lo
+ Autres lettres
+
+
+
+ Lt
+ Lettre titrée
+
+
+
+ Lu
+ Lettre en majuscule
+
+
+
+ M
+ Marque
+
+
+
+ Mc
+ Marque d'espacement
+
+
+
+ Me
+ Marque d'enfermement
+
+
+
+ Mn
+ Marque non espacée
+
+
+
+ N
+ Nombre
+
+
+
+ Nd
+ Nombre décimal
+
+
+
+ Nl
+ Nombre Lettre
+
+
+
+ No
+ Autres nombres
+
+
+
+ P
+ Ponctuation
+
+
+
+ Pc
+ Ponctuation de connecteur
+
+
+
+ Pd
+ Tiret de ponctuation
+
+
+
+ Pe
+ Ponctuation de fermeture
+
+
+
+ Pf
+ Ponctuation finale
+
+
+
+ Pi
+ Ponctuation initiale
+
+
+
+ Po
+ Autres ponctuations
+
+
+
+ Ps
+ Ponctuation ouvrante
+
+
+
+ S
+ Symbole
+
+
+
+ Sc
+ Symbole monétaire
+
+
+
+ Sk
+ Symbole de modification
+
+
+
+ Sm
+ Symbole mathématique
+
+
+
+ So
+ Autres symboles
+ Inclut des émojis
+
+
+ Z
+ Séparateur
+
+
+
+ Zl
+ Séparateur de ligne
+
+
+
+ Zp
+ Séparateur de paragraphe
+
+
+
+ Zs
+ Séparateur d'espace
+
+
+
+
+
+
+ Les propriétés étendues comme InMusicalSymbols ne sont pas supportées
+ par PCRE.
+
+
+ La sensibilité à la casse de la recherche n'affecte pas les
+ séquences d'échappement. Par exemple, \p{Lu}
+ cherche toujours et uniquement les lettres en majuscules
+
+
+ Les jeux de caractères unicodes sont définis comme appartenant à certains scripts.
+ Un caractère d'un de ces jeux peut être trouvé en utilisant un
+ nom de script. Par exemple :
+
+
+
+ \p{Greek}
+
+
+ \P{Han}
+
+
+
+ Ceux qui ne font pas partis d'un script identifié sont regroupés
+ dans Common. Voici la liste courante des scripts :
+
+
+
+ La séquence \X cherche n'importe quel groupe de
+ graphème Unicode étendu. Un groupe de graphème est une chaîne
+ composée d'un ou plusieurs caractères Unicode qui se combinent
+ pour former un seul glyphe. Dans les faits, cela revient à utiliser
+ le caractère . sachant qu'il va matcher un
+ caractère composé, peu importe le nombre de caractères individuel
+ nécessaire à l'afficher.
+
+
+ Dans les versions PCRE inférieures à 8.32 (ce qui correspond aux
+ versions de PHP antérieures à la version 5.4.14 lorsque la
+ bibliothèque interne est utilisée), \X était
+ équivalent à (?>\PM\pM*). Aussi, il matchait
+ un caractère sans propriété "mark", suivi par aucun ou plusieurs
+ caractères possédant la propriété "mark", et traitait la séquence
+ comme un groupe atomique (voir ci-dessous). Les caractères
+ avec la propriété "mark" sont typiquement les lettres accentuées
+ qui affectent le caractère qui la précède.
+
+
+ La recherche de caractères par les propriétés Unicode n'est pas la méthode
+ la plus rapide, car PCRE doit chercher une structure qui contient les données
+ dans plus de quinze mille caractères. C'est pour cela que les séquences
+ traditionnelles comme \d et
+ \w n'utilisent pas les propriétés Unicode dans PCRE.
+
+
+
+
+ Ancres
+
+ En dehors d'une classe de caractères, avec les options par
+ défaut, ^ est une assertion qui n'est
+ vraie que si elle est placée tout au début de la
+ chaîne. À l'intérieur d'une classe de caractères,
+ ^ a un tout autre sens (voir ci-dessous).
+
+
+ ^ n'a pas besoin d'être le premier
+ caractère du masque, si plusieurs alternatives sont
+ proposées, mais il doit être placé en
+ premier dans chaque alternative. Si toutes les alternatives
+ commencent par ^, alors le masque est dit ancré
+ (il y a une autre construction qui porte cette appellation).
+
+
+ $ est une assertion qui n'est vraie que si elle
+ est placée tout en fin de chaîne ou juste avant un
+ caractère de nouvelle ligne qui serait le dernier
+ caractère de la chaîne. À l'intérieur d'une
+ classe de caractères, $ a un tout autre
+ sens (voir ci-dessous).
+ $ n'a pas besoin d'être le dernier
+ caractère du masque, si plusieurs alternatives sont
+ proposées, mais il doit être placé en dernier
+ dans chaque alternative. Si toutes les alternatives finissent par
+ $, alors le masque est dit ancré (il y
+ a une autre construction qui porte cette appellation). $
+ n'a pas de valeur particulière dans une classe de
+ caractères.
+
+
+ La signification de $ peut changer, de manière
+ à l'amener à ce qu'il ne puisse se trouver qu'en toute
+ fin de la chaîne sujet. Cela se fait en ajoutant l'option
+ PCRE_DOLLAR_ENDONLY
+ au moment de la compilation, ou de l'exécution.
+ Cette option est inopérante sur \Z.
+
+
+ La signification de ^ peut changer, de manière
+ à l'amener à ce qu'il puisse se trouver immédiatement
+ avant et immédiatement après un caractère de nouvelle
+ ligne "\n". Cela se fait en ajoutant l'option
+ PCRE_MULTILINE au moment de
+ la compilation ou de l'exécution.
+ Par exemple, le masque /^abc$/ accepte la chaîne
+ "def\nabc" uniquement en mode multilignes. Par
+ conséquent, toutes les parties du masque qui commencent par
+ "^" ne sont pas ancrées, en mode multilignes.
+ L'option PCRE_DOLLAR_ENDONLY
+ est ignorée si l'option
+ PCRE_MULTILINE est choisie.
+
+
+ Notez que les métacaractères \A,
+ \Z, et \z peuvent servir à
+ repérer le début et la fin du sujet, et toutes les
+ parties du masque qui commenceront par \A seront toujours
+ ancrées, avec l'option
+ PCRE_MULTILINE ou non.
+
+
+
+
+ Point
+
+ En dehors d'une classe de caractères, un point remplace n'importe
+ quel caractère, même invisible et à l'exception du
+ caractère de nouvelle ligne. Avec l'option
+ PCRE_DOTALL le point
+ remplace n'importe quel caractère, même le caractère de
+ nouvelle ligne. La gestion des points est complètement
+ indépendante de ^ et $.
+ Le seul point commun est que les deux ont un comportement particulier vis-à-vis
+ des caractères de nouvelle ligne.
+ Le point n'a pas de comportement particulier dans une classe de
+ caractères.
+
+
+ \C peut être utilisé pour chercher un seul octet.
+ Il prend tout son sens en mode UTF-8
+ où le point correspond à un caractère entier qui peut être constitué de plusieurs
+ octets.
+
+
+
+
+ Classes de caractères
+
+ Un crochet ouvrant [ introduit une classe de
+ caractères, et le crochet fermant ]la
+ conclut. Le crochet fermant n'a pas de signification en lui-même.
+ Si le crochet fermant est nécessaire à l'intérieur
+ d'une classe de caractères, il faut qu'il soit le premier
+ caractère (après un ^ éventuel)
+ ou protégé avec un antislash.
+
+
+ Une classe de caractères remplace un seul caractère
+ dans la chaîne sujet, à moins que le premier
+ caractère de la classe soit un accent circonflexe
+ ^, qui représente une négation :
+ le caractère ne doit pas se trouver dans la classe. Si
+ ^ est nécessaire dans la classe, il
+ suffit qu'il ne soit pas le premier caractère, ou bien
+ qu'il soit protégé par un antislash.
+
+
+ Par exemple, le caractère [aeiou] remplace
+ n'importe quelle voyelle minuscule, tandis que [^aeiou]
+ remplace n'importe quel caractère qui n'est pas une voyelle
+ minuscule. ^ est une notation pratique pour
+ spécifier des caractères qui sont dans une classe,
+ en ne citant que ceux qui n'y sont pas. Le comportement est inchangé.
+
+
+ Avec l'option d'insensibilité à la casse, toutes les lettres
+ d'une classe de caractères représentent en même temps
+ la majuscule et la minuscule. Par exemple, [aeiou]
+ représentera "A" ou "a", et
+ [^aeiou] n'acceptera pas "A",
+ tandis que sans l'option, elle l'accepterait.
+
+
+ Le caractère de nouvelle ligne n'est pas traité de
+ manière spéciale dans les classes de caractères,
+ quelle que soit l'option PCRE_DOTALL
+ ou PCRE_MULTILINE. Une classe
+ telle que [^a] acceptera toujours une nouvelle ligne.
+
+
+ Le signe moins (-) est utilisé pour
+ spécifier un intervalle de caractères, dans
+ une classe. Par exemple, [d-m] remplace toutes
+ les lettres entre d et m inclus. Si le caractère moins est
+ requis dans une classe, il faut le protéger avec un antislash,
+ ou le faire apparaître à une position où il ne pourra
+ pas être interprété comme une indication d'intervalle,
+ c'est-à-dire au début ou à la fin de la classe.
+
+
+ Il n'est pas possible d'avoir le caractère crochet fermant
+ "]" comme fin d'intervalle. Un masque tel que
+ [W-]46] est compris comme la classe de caractères
+ contenant deux caractères ("W" et "-") suivie de la chaîne
+ littérale "46]", ce qui fait qu'il va accepter
+ "W46]" ou "-46]". Cependant, si
+ "]" est protégé avec un antislash, le
+ masque [W-\]46] est interprété comme
+ une classe d'un seul caractère, contenant un intervalle de
+ caractères. La valeur octale ou hexadécimale de
+ "]" peut aussi être utilisée pour déterminer
+ les limites de l'intervalle.
+
+
+ Les intervalles travaillent sur des séquences ASCII.
+ Ils peuvent aussi être précisés avec des valeurs numériques :
+ par exemple "[\000-\037]".
+ Si cet intervalle inclut des lettres utilisées avec une
+ option d'insensibilité de casse, les majuscules ou minuscules
+ correspondantes seront aussi incluses. Par exemple,
+ "[W-c]" est équivalent à
+ "[][\^_`wxyzabc]", avec l'option
+ d'insensibilité de casse. Si la table locale de
+ caractères est "fr", "[\xc8-\xcb]"
+ correspond aux caractères accentués.
+
+
+ Les types de caractères \d,
+ \D, \S, \s,
+ \w, \W peuvent aussi intervenir
+ dans les classes de caractères. Par exemple,
+ "[][\^_`wxyzabc][\dABCDEF]" acceptera n'importe
+ quel caractère hexadécimal. Un accent circonflexe peut
+ aussi être utilisé pour spécifier adroitement
+ des ensembles de caractères plus restrictifs : par exemple
+ [^\W_] accepte toutes les lettres et les chiffres,
+ mais pas les soulignés.
+
+
+ Tous les caractères non alphanumériques autres que
+ \, -, ^ (placés en début de chaîne)
+ et ] n'ont pas de signification
+ particulière, mais ils ne perdront rien à être protégés.
+ Le délimiteur de motif est toujours spécial, et doit être
+ protégé lorsqu'il est utilisé à l'intérieur d'une expression.
+
+
+ Perl supporte la notation POSIX pour les classes de caractères.
+ Elles utilisent des noms entourés par [: et
+ :]. PCRE supporte également cette notation. Par exemple,
+ [01[:alpha:]%] trouve "0", "1", toute lettre,
+ ou encore le caractère "%". Les noms de classe supportés sont :
+
+ Classes de caractères
+
+
+
+ alnum
+ lettres et chiffres
+
+ alpha
+ lettres
+
+ ascii
+ codes caractères 0 - 127
+
+ blank
+ espace ou tabulation uniquement
+
+ cntrl
+ caractères de contrôle
+
+ digit
+ chiffres décimaux (identique à \d)
+
+
+ graph
+ caractères d'impression, excluant les espaces
+
+
+ lower
+ lettres en minuscule
+
+
+ print
+ caractères d'impression, incluant les espaces
+
+
+ punct
+ caractères d'impression, excluant les lettres et les chiffres
+
+
+ space
+ espace blanc (pas tout à fait identique à \s)
+
+
+ upper
+ lettres en majuscule
+
+
+ word
+ caractères composant un mot (identique à \w)
+
+
+ xdigit
+ chiffres hexadécimaux
+
+
+
+
+ Les caractères d'espacement (space) sont HT (9), LF (10), VT (11), FF (12), CR (13),
+ et l'espace (32). Notez que cette liste inclut le caractère VT (code 11). Ceci rend la classe
+ "space" différente de \s, qui n'inclut pas ce caractère VT (pour une raison de compatibilité
+ Perl).
+
+
+ La classe word est une extension Perl, et blank
+ est une extension GNU de Perl 5.8. La négation est une autre extension Perl ; elle est indiquée
+ par le caractère ^ après un double-point. Par exemple,
+ [12[:^digit:]] trouve "1", "2", mais aussi tout caractère qui n'est pas un chiffre.
+
+
+ En mode UTF-8, les caractères dont les valeurs sont supérieures à 128 ne seront trouvés par
+ aucune des classes de caractères POSIX.
+ À partir de libpcre 8.10 certains caractères de classes ont été
+ modifiées pour utiliser des caractères de propriétés Unicode, dans ce cas les
+ restrictions mentionnées ne s'appliquent pas.
+ Référez-vous au manuel PCRE(3) pour plus de détails.
+
+
+ Les propriétés des caractères Unicode peuvent apparaître à l'intérieur d'une
+ classe de caractère. Ils ne peuvent pas faire partie d'une étendue.
+ Le caractère moins (tiret) après une classe de caractère Unicode satisfera littéralement.
+ Essayer de terminer une étendue avec une propriété de caractère Unicode résultera en un avertissement.
+
+
+
+
+ Alternatives
+
+ La barre verticale | sert à séparer des
+ alternatives. Par exemple, dans le masque "/dupont|martin/"
+ recherche soit "dupont", soit "martin".
+ Le nombre d'alternatives n'est pas limité, et il est même possible
+ d'utiliser la chaîne vide. Lors de la recherche, toutes les alternatives
+ sont essayées, de gauche à droite, et la première qui est
+ acceptée est utilisée.
+ Si les alternatives sont dans un sous-masque, elles ne réussiront
+ que si le masque principal réussit aussi.
+
+
+ Il est possible d’enregistrer quelle alternative a été sélectionnée en utilisant
+ (*MARK:NOM) ou (*:NOM).
+ Un nombre quelconque de verbes (*MARK) peut apparaître, et leurs
+ noms n’ont pas besoin d’être uniques. Lorsqu’une correspondance réussit, le nom du
+ dernier (*MARK:NOM) rencontré sera placé parmi
+ les correspondances comme s’il s’agissait d’un groupe de capture appelé MARK,
+ de sorte qu’il puisse être lu à partir de matches dans
+ preg_match et sera transmis au
+ callback de preg_replace_callback etc.
+
+
+
+
+ Options internes
+
+ Les options PCRE_CASELESS,
+ PCRE_MULTILINE,
+ PCRE_DOTALL,
+ PCRE_UNGREEDY,
+ PCRE_EXTRA,
+ PCRE_EXTENDED et
+ PCRE_DUPNAMES peuvent être changées à l'intérieur du masque
+ lui-même, avec des séquences mises entre
+ "(?" et ")".
+ Les options sont :
+
+ Options internes
+
+
+
+ i
+ pour PCRE_CASELESS
+
+
+ m
+ pour PCRE_MULTILINE
+
+
+ s
+ pour PCRE_DOTALL
+
+
+ x
+ pour PCRE_EXTENDED
+
+
+ U
+ pour PCRE_UNGREEDY
+
+
+ X
+ Pour PCRE_EXTRA
+ (plus supporté à partir de PHP 7.3.0)
+
+
+ J
+ Pour PCRE_INFO_JCHANGED
+
+
+
+
+
+
+ Par exemple, (?im) rend le masque insensible à
+ la casse, et multilignes. Il est possible d'annuler ces options en les
+ faisant précéder par un signe - : par
+ exemple (?im-sx), ajoutera les options
+ PCRE_CASELESS
+ et PCRE_MULTILINE,
+ mais annulera les options
+ PCRE_DOTALL
+ et PCRE_EXTENDED.
+ Si une option apparaît avant et après le signe moins, l'option
+ sera annulée.
+
+
+ Lorsqu'une modification d'option survient au degré le plus haut (et donc, pas dans
+ les parenthèses du sous-masque), les modifications sont appliquées dans le reste
+ du masque qui suit. Donc, /ab(?i)c/ valide uniquement
+ "abc" et "abC".
+
+
+ Si une option intervient dans un sous-masque, le comportement est différent.
+ C'est un changement de comportement apparu en Perl 5.005. Une option à
+ l'intérieur d'un sous-masque n'affecte que cette partie du masque, ce
+ qui fait que (a(?i)b)c
+ acceptera abc et aBc,
+ mais aucune autre chaîne (en supposant que PCRE_CASELESS n'est pas
+ utilisé). Cela signifie que les options permettent d'avoir
+ différentes configurations de recherche pour différentes parties du masque.
+ Une séquence d'options dans une alternative affecte toute l'alternative.
+ Par exemple :
+
+ (a(?i)b|c)
+
+ accepte "ab", "aB", "c",
+ et "C", même si, comme dans le cas de
+ "C", la première alternative qui porte
+ l'option n'est pas prise en compte. Sinon, cela risque d'introduire
+ des comportements très étranges
+
+
+ Les options spécifiques à PCRE telles
+ PCRE_UNGREEDY et
+ PCRE_EXTRA peuvent
+ être modifiées de la même manière, en utilisant respectivement les caractères
+ U et X. L'option (?X) est particulière,
+ car elle doit toujours intervenir avant toutes les autres options,
+ même au niveau du masque entier. Il vaut mieux l'activer au
+ début du masque.
+
+
+
+
+ Sous-masques
+
+ Les sous-masques sont délimités par des parenthèses,
+ et peuvent être imbriqués. Ajouter des sous-masques a deux
+ utilités :
+
+
+
+
+ Localiser un ensemble d'alternatives. Par exemple, le motif
+ cat(aract|erpillar|) trouve un des mots "cat",
+ "cataract", ou "caterpillar". Sans les parenthèses, cela trouverait
+ "cataract", "erpillar" ou la chaîne vide.
+
+
+
+
+ Cela configure le sous-masque comme capturant. Lorsque tout le motif
+ correspond, la portion de la sous-chaîne qui correspond au sous-masque
+ est passé à l'appelant grâce à l'argument ovector
+ de pcre_exec. Les parenthèses ouvrantes sont comptées
+ depuis la gauche vers la droite (commençant à 1) jusqu'à obtenir le nombre
+ des sous-masques capturants.
+
+
+
+
+ Par exemple, soit la chaîne sujet "le roi soleil"
+ qui est utilisée avec le masque suivant :
+ Le ((roi|prince) (soleil|charmant)), les sous-masques
+ capturés sont "roi soleil", "roi",
+ et "soleil", numérotés respectivement 1, 2, et 3.
+
+
+ L'ubiquité des parenthèses n'est pas toujours simple
+ d'emploi. Il y a des moments où regrouper des sous-masques
+ est nécessaire, sans pour autant capturer la valeur trouvée.
+ Si une parenthèse ouvrante est suivie de "?:",
+ le sous-masque ne capture pas la chaîne assortie, et ne sera pas
+ compté lors de la numérotation des captures. Par exemple,
+ avec la chaîne "le prince charmant", utilisé
+ avec le masque
+
+ Le (( ?:roi|prince) (soleil|charmant))
+
+ les chaînes capturées seront "prince charmant"
+ et "charmant", numérotés respectivement 1
+ et 2. Le nombre maximal de chaînes capturées est de 65535. Il se peut qu'il
+ soit impossible de compiler un masque aussi large, toutefois, ceci dépend des
+ options de configuration de libpcre.
+
+
+ En guise de raccourci, si n'importe quelle option de configuration
+ est requise au début des sous-masques non-capturants, les lettres
+ d'option peuvent apparaître entre le signe "?"
+ et le signe ":". Ainsi, les 2 masques
+
+
+
+
+
+
+
+
+
+ captureront exactement les mêmes chaînes. Du fait que les branches
+ alternatives sont testées de la gauche vers la droite, et que les
+ options ne sont pas réinitialisées tant que le sous masque n'est pas
+ atteint, une option de configuration d'une branche n'affecte pas
+ les branches sous-jacentes ; ainsi, les 2 masques ci-dessus
+ captureront "SAMEDI", mais aussi
+ "Samedi".
+
+
+ Il est possible de nommer un sous-masque en utilisant la syntaxe
+ (?P<name>pattern). Ce sous-masque sera alors
+ indexé dans le tableau de concordance par sa position, ainsi
+ que par son nom. Il y a deux syntaxes alternatives :
+ (?<name>pattern) et
+ (?'name'pattern).
+
+
+
+ Quelques fois, il est nécessaire d'avoir plusieurs correspondances en alternant
+ les sous groupes dans une expression régulière. Normalement, chacun recevra son
+ propre nombre de références arrière même si seulement un d'entre eux ne peut
+ correspondre. Pour éviter cela, la syntaxe (?| permet d'autoriser
+ les nombres dupliqués. Soit l'expression ci-après utilisée avec la chaîne
+ Sunday:
+
+
+
+
+
+
+
+
+
+ Ici, Sun est stocké dans la référence arrière 2, alors que la référence
+ arrière 1 est vide. La recherche de correspondance de Saturday mène donc à
+ Sat dans la référence arrière 1 alors que la référence arrière 2
+ n'existe pas. Changer le masque en utilisant (?| résoud ce problème:
+
+
+
+
+
+
+
+
+
+ Avec ce masque, à la fois Sun et Sat
+ seront stockés dans la référence arrière 1.
+
+
+
+
+ Répétitions
+
+ Les répétitions sont spécifiées avec
+ des quantificateurs, qui peuvent être placés à
+ la suite des caractères suivants :
+
+
+ Un caractère unique, même s'il s'agit d'un métacaractère
+ Le métacaractère .
+ Une classe de caractères
+ Une référence de retour (voir section suivante)
+ Un sous-masque avec parenthèses (à moins que ce ne soit
+ une assertion, voir plus loin)
+
+
+
+ Les quantificateurs généraux précisent un nombre
+ minimum et maximum de répétitions possibles, donnés
+ par deux nombres entre accolades, et séparés par une virgule.
+ Ces nombres doivent être plus petits que 65536, et le premier nombre
+ doit être égal ou inférieur au second. Par exemple
+
+ z{2,4}
+
+ accepte "zz",
+ "zzz", ou "zzzz". L'accolade fermante
+ n'a pas de signification par elle-même.
+ Si le second nombre est omis, mais que la virgule est là, cela
+ signifie qu'il n'y a pas de limite supérieure. Si le second nombre
+ et la virgule sont omis, le quantificateur correspond au nombre exact de
+ répétitions attendues. Par exemple :
+
+ [aeiou]{3,}
+
+ accepte n'importe quelle succession d'au moins 3 voyelles minuscules, tandis
+ que
+
+ \d{8}
+
+ n'accepte que 8 chiffres exactement.
+
+
+ Avant PHP 8.4.0, une accolade ouvrante apparaissant dans une position où un quantificateur n'est pas autorisé,
+ ou qui ne correspond pas à la syntaxe d'un quantificateur, est considérée comme un caractère littéral.
+ Par exemple, {,6} n'est pas un quantificateur, mais une chaîne littérale de quatre caractères.
+
+ À partir de PHP 8.4.0, l'extension PCRE est livrée avec la version 10.44 de PCRE2,
+ ce qui permet des motifs tels que \d{,8} qui sont interprétés comme \d{0,8}.
+
+ De plus, à partir de PHP 8.4.0, les espaces autour des quantificateurs tels que
+ \d{0 , 8} et \d{ 0 , 8 } sont autorisés.
+
+
+ Le quantificateur {0} est autorisé, mais l'expression est alors
+ ignorée.
+
+
+ Par convenance (et pour la compatibilité ascendante), les trois
+ quantificateurs les plus communs ont une abréviation d'un
+ seul caractère :
+
+ Quantificateurs sur un seul caractère
+
+
+
+ *
+ équivalent à {0,}
+
+
+ +
+ équivalent à {1,}
+
+
+ ?
+ équivalent à {0,1}
+
+
+
+
+
+
+ Il est possible de constituer des boucles infinies en créant un sous-masque
+ sans caractères, mais pourvu d'un quantificateur sans limite
+ supérieure. Par exemple :
+
+ (a?)*
+
+
+
+ Les versions plus anciennes de Perl et PCRE généraient alors
+ une erreur au moment de la compilation. Cependant, étant donné
+ qu'il existe des situations où ces constructions peuvent être
+ utiles, ces masques sont désormais autorisés. Toutefois, si
+ la répétition du sous-masque ne trouve aucun caractère,
+ la boucle est interrompue.
+
+
+ Par défaut, les quantificateurs sont dits "gourmands", c'est-à-dire,
+ qu'ils cherchent d'abord à trouver le nombre maximal de
+ répétitions qui autorisent le succès de la recherche.
+ L'exemple classique posé par cette gourmandise est la recherche de
+ commentaires d'un programme en C. Les commentaires apparaissent entre les
+ séquences /*....*/ et à l'intérieur
+ de ces délimiteurs, les * et /
+ sont autorisés. Appliquer le masque
+
+ /\*.*\*/
+
+ à la chaîne
+
+ /* premier commentaire */ aucun commentaire /* second commentaire */
+
+ ne peut réussir, car le masque travaille sur toute la chaîne,
+ à cause de la gourmandise du caractère .*.
+
+
+ Cependant, un quantificateur suivi d'un point d'interrogation cesse
+ d'être gourmand, et au contraire, ne recherche que le nombre
+ minimum de répétition. Dans ces conditions, le masque
+
+ /\*.*?\*/
+
+ trouvera bien les commentaires du code
+ C. La signification des autres quantificateurs n'est pas changée.
+ Attention à ne pas confondre l'utilisation du point d'interrogation
+ ici avec son utilisation comme quantificateur lui-même.
+ À cause de cette ambiguïté, il peut apparaître des situations
+ où il faut le doubler :
+
+ \d??\d
+
+ Ce masque va tenter de lire un seul chiffre, mais le cas échéant,
+ il acceptera 2 chiffres pour permettre à la recherche d'aboutir.
+
+
+ Si l'option PCRE_UNGREEDY
+ est activée, (une option qui n'est pas disponible avec Perl) alors
+ les quantificateurs sont non gourmands par défaut, mais peuvent être
+ rendu gourmands au cas par cas, en ajoutant un point d'interrogation
+ après. En d'autres termes, cette option inverse le comportement par
+ défaut.
+
+
+ Les quantificateurs suivis par + sont "possessifs". Ils
+ mangent autant de caractères que possible et ne retournent pas
+ pour chercher le reste du masque. .*abc trouvera
+ "abc", tandis que .*+abc ne le trouvera
+ pas, car .*+ accapare totalement la chaîne.
+ Les quantificateurs possessifs peuvent être utilisés pour
+ accélérer le traitement.
+
+
+ Lorsqu'un sous-masque est quantifié avec un nombre minimum
+ de répétitions, qui soit plus grand que 1, ou avec
+ un maximum de répétitions, le masque compilé aura
+ besoin de plus de place de stockage, proportionnellement au minimum
+ et au maximum.
+
+
+ Si un masque commence par .* ou .{0,}
+ et que l'option PCRE_DOTALL
+ (équivalent en Perl à /s) est
+ activée, c'est-à-dire en autorisant le remplacement des nouvelles
+ lignes par un métacaractère, alors le masque est
+ implicitement ancré, car tout ce qui suit va être
+ mangé par la première séquence, et se comportera
+ comme si le masque se terminait par le métacaractère
+ \A. Dans le cas où on sait d'avance qu'il
+ n'y aura pas de caractère de nouvelle ligne, activer l'option
+ PCRE_DOTALL et commencer
+ le masque par .* permet d'optimiser le masque.
+ Alternativement, on peut utiliser ^ pour ancrer
+ explicitement le masque.
+
+
+ Lorsqu'un sous-masque capturant est répété, la valeur capturée est la
+ dernière. Par exemple, après que
+
+ (inter[net]{3}\s*)+
+
+ ait été appliqué à "internet interne",
+ la valeur de la chaîne capturée est "interne".
+ Cependant, s'il y a des sous-masques imbriqués, la valeur
+ capturée correspondante peut l'avoir été lors
+ des précédentes itérations. Par exemple :
+
+ /(a|(b))+/
+
+ accepte "aba" et
+ la deuxième valeur capturée est "b".
+
+
+
+
+ Références arrières
+
+ En dehors des classes de caractères, un antislash suivi
+ d'un nombre plus grand que 0 (et possiblement plusieurs chiffres)
+ est une référence arrière (c'est-à-dire vers la gauche) dans le masque,
+ en supposant qu'il y ait
+ suffisamment de sous-masques capturants précédents.
+
+
+ Cependant, si le nombre décimal suivant l'antislash est
+ plus petit que 10, il sera toujours considéré
+ comme une référence arrière, et cela
+ générera une erreur si le nombre de captures
+ n'est pas suffisant. En d'autres termes, il faut qu'il existe
+ suffisamment de parenthèses ouvrantes à gauche
+ de la référence, surtout si la référence
+ est inférieure à 10. Une "référence arrière vers l'avant" peut avoir du sens
+ lorsqu'une répétition est isolée et que le sous masque à droite a participé
+ à l'itération précédente. Voir la section sur les
+ séquences d'échappements
+ pour plus de détails à propos du nombre de chiffres qui suivent l'antislash.
+
+
+ La référence arrière remplace ce qui a
+ été capturé par un sous-masque dans le
+ masque courant, plutôt que remplacer le sous-masque
+ lui-même. Ainsi
+
+ (calme|rapide) et \1ment
+
+ trouvera "calme et calmement"
+ et "rapide et rapidement", mais pas
+ "calme et rapidement". Si la recherche tient
+ compte de la casse, alors la casse de la chaîne
+ capturée sera importante. Par exemple,
+
+ ((?i)rah)\s+\1
+
+ trouve "rah rah"
+ et "RAH RAH", mais pas "RAH rah",
+ même si le sous-masque capturant initial ne tenait pas compte
+ de la casse.
+
+
+ Il peut y avoir plusieurs références arrière dans
+ le même sous-masque. Si un sous-masque n'a pas été
+ utilisé dans une recherche, alors les références
+ arrière échoueront. Par exemple
+
+ (a|(bc))\2
+
+ ne réussira jamais si la chaîne sujet commence par
+ "a" plutôt que par "bc".
+ Étant donné qu'il peut y avoir jusqu'à 99 références
+ arrière, tous les chiffres après l'antislash sont
+ considérés comment faisant potentiellement partie de
+ la référence arrière. Si le masque recherche un
+ chiffre après la référence, alors il faut
+ impérativement utiliser des délimiteurs pour terminer
+ la référence arrière.
+ Si l'option PCRE_EXTENDED
+ est activée, on peut utiliser un espace.
+ Sinon, un commentaire vide fait l'affaire.
+
+
+ Une référence arrière qui intervient à l'intérieur de
+ parenthèses auxquelles elle fait référence
+ échouera dès que le sous-masque sera utilisé. Par exemple,
+
+ (a\1)
+
+ échouera toujours. Cependant, ces
+ références peuvent être utiles dans les
+ sous-masques répétitifs. Par exemple, le masque
+ "(a|b\1)+" pourra convenir pour "a",
+ "aba", "ababba", etc.
+ À chaque itération du sous-masque, la référence
+ arrière utilise le résultat du dernier sous-masque.
+ Pour que cela fonctionne, il faut que la première
+ itération n'ait pas besoin d'utiliser la référence
+ arrière. Cela arrive avec les alternatives, comme dans
+ l'exemple ci-dessus, ou avec un quantificateur de minimum 0.
+
+
+ La séquence d'échappement \g
+ peut être utilisée pour le référencement absolu et relatif des
+ sous-masques. Cette séquence doit être suivie par un nombre non signé
+ ou négatif, entouré optionnellement par des accolades. La séquence
+ \1, \g1 et \g{1}
+ sont identiques. L'utilisation de ce masque avec un nombre non signé peut
+ aider à ne pas le confondre lors de l'utilisation de nombre suivi d'un
+ antislash. Cette séquence aide à distinguer les références arrière
+ lors de l'utilisation de caractères octales et rend également plus facile
+ d'avoir une référence arrière suivie par un nombre littéral, i.e.
+ \g{2}1.
+
+
+ L'utilisation de la séquence \g avec un nombre négatif
+ indique une référence relative. Par exemple, (foo)(bar)\g{-1}
+ trouvera la séquence "foobarbar" et (foo)(bar)\g{-2} trouvera
+ la séquence "foobarfoo". Ceci peut être pratique dans ce gros masque
+ comme alternative afin de conserver une trace du nombre de sous-masques
+ afin de référencer un sous-masque précédant spécifique.
+
+
+ Les références arrière du sous-masque nommé peuvent être
+ utilisées sous la forme
+ (?P=name),
+ \k<name>, \k'name',
+ \k{name}, \g{name},
+ \g<name> ou \g'name'.
+
+
+
+
+ Assertions
+
+ Une assertion est un test sur les caractères suivants ou
+ précédents celui qui est en cours d'étude. Ce
+ test ne consomme pas de caractères (ie, on ne déplace
+ pas le pointeur de caractères). Les assertions simples sont
+ codées avec \b, \B,
+ \A, \Z, \z,
+ ^ et $, et sont décrites
+ dans les séquences d'échappement.
+ Il existe cependant des types d'assertions plus complexes, codées sous la forme
+ de sous-masques. Il en existe deux types : celles qui travaillent
+ au-delà de la position courante, et celles qui
+ travaillent en-deçà.
+
+
+ Une assertion se comporte comme un sous-masque, hormis le fait qu'elle
+ ne déplace pas le pointeur de position. Les assertions avant
+ commencent par (?= pour les assertions positives, et
+ par (?!, pour les assertions négatives. Par exemple :
+
+ \w+(?=;)
+
+ s'assure qu'un mot est suivi d'un point-virgule,
+ mais n'inclut pas le point virgule dans la capture et foo(?!bar)
+ trouve toutes les occurrences de "foo" qui ne sont pas suivies par "bar".
+ Notez que,
+
+ (?!foo)bar
+
+ en est proche, mais ne trouve pas une
+ occurrence de "bar" qui soit précédée
+ par quelque chose d'autre que "foo"; il
+ trouve toutes les occurrences de "bar",
+ quel que soit ce qui le précède, car l'assertion
+
+ (?!foo)
+
+ est toujours vraie quand les trois caractères suivants sont
+ "bar". Une assertion arrière est ici
+ nécessaire.
+
+
+ Les assertions arrières commencent par (?<=
+ pour les assertions positives, et (?<! pour les
+ assertions négatives. Par exemple :
+
+ (?<!foo)bar
+
+ trouve les occurrences de "bar" qui ne sont pas
+ précédées par "foo". Le contenu d'une référence
+ arrière est limité de telle façon que les chaînes qu'il utilise
+ soient toujours de la même taille. Cependant, lorsqu'il
+ y a plusieurs alternatives, elles n'ont pas besoin d'être
+ de la même taille. Par exemple,
+
+ (?<=bullock|donkey)
+
+ est autorisé, tandis que
+
+ (?<!dogs?|cats?)
+
+ provoque une erreur de compilation. Les alternatives qui ont des
+ longueurs différentes ne sont autorisées qu'au niveau
+ supérieur des assertions arrière. C'est une
+ amélioration du fonctionnement de Perl 5.005, qui impose
+ aux alternatives d'avoir toute la même taille. Une
+ assertion telle que
+
+ (?<=ab(c|de))
+
+ n'est pas autorisée, car l'assertion de bas niveau (la deuxième,
+ ici) a deux possibilités de longueurs différentes. Pour
+ la rendre acceptable, il faut écrire
+
+ (?<=abc|abde)
+
+ L'implémentation des assertions arrière déplace
+ temporairement le pointeur de position vers l'arrière, et cherche
+ à vérifier l'assertion. Si le nombre de caractères
+ est différent, la position ne sera pas correcte, et l'assertion
+ échouera. La combinaison d'assertions arrière avec des
+ sous-masques peut être particulièrement pratique à
+ fin des chaînes. Un exemple est donné à la fin de
+ cette section.
+
+
+ Plusieurs assertions peuvent intervenir successivement. Par exemple,
+ le masque
+
+ (?<=\d{3})(?<!999)foo
+
+ recherche les chaînes "foo" précédées
+ par trois chiffres qui ne sont pas "999". Notez que chaque assertion
+ est appliquée indépendamment, au même point de
+ la chaîne à traiter. Tout d'abord, il est
+ vérifié que les trois premiers caractères ont
+ tous des chiffres, puis on s'assure que ces trois caractères
+ ne sont pas "999". Le masque précédant
+ n'accepte pas "foo" précédé de
+ 6 caractères, les trois premiers étant des chiffres et
+ les trois suivants étant différents de "999".
+ Par exemple, ce masque n'acceptera pas la chaîne
+ "123abcfoo". Pour ce faire, il faut utiliser le masque
+ suivant :
+
+ (?<=\d{3}...)(?<!999)foo.
+
+
+
+ Dans ce masque, la première assertion vérifie les six premiers
+ caractères, s'assure que les trois premiers sont des entiers,
+ et la deuxième assertion s'assure que les trois derniers
+ caractères ne sont pas "999".
+
+
+ De plus, les assertions peuvent être imbriquées :
+
+ (?<=(?<!foo)bar)baz
+
+ recherche les occurrences de "baz" qui sont
+ précédées par "bar", qui,
+ à son tour, n'est pas précédé par
+ "foo". Au contraire,
+
+ (?<=\d{3}...(?<!999))foo
+
+ est un autre masque, qui recherche les caractères "foo",
+ précédés par trois chiffres, suivis de trois
+ autres caractères qui ne forment pas "999".
+
+
+ Les assertions ne sont pas capturantes, et ne peuvent pas être
+ répétées. Si une assertion contient des sous-masques
+ capturants en son sein, ils seront compris dans le nombre de sous-masques
+ capturants du masque entier. La capture est réalisée pour
+ les assertions positives, mais cela n'a pas de sens pour les
+ assertions négatives.
+
+
+ 200 assertions au maximum sont autorisées.
+
+
+
+
+ Sous-masques uniques
+
+ Avec les quantificateurs de répétitions, l'échec
+ d'une recherche conduit normalement à une autre recherche, avec
+ un nombre différent de répétitions, pour
+ voir si le masque ne s'applique pas dans d'autres conditions.
+ Parfois, il est pratique d'éviter ce comportement, soit
+ pour changer la nature de la recherche, soit pour la faire abandonner
+ plus tôt, si on pense qu'il n'est pas besoin d'aller plus loin.
+
+
+ Considérons, par exemple, le masque \d+foo
+ appliqué à la ligne
+
+ 123456bar.
+
+
+
+ Après avoir tenté d'utiliser les 6 chiffres suivis
+ de "foo" qui font échouer, l'action habituelle
+ sera de réessayer avec 5 chiffres, puis avec 4, et ainsi de
+ suite jusqu'à l'échec final. Un sous-masque évalué une seule fois
+ permettrait d'indiquer que lorsqu'une partie du masque est trouvée,
+ elle n'a pas besoin d'être réévaluée à chaque tentative. Ceci
+ conduirait à ce que la recherche échoue immédiatement après le
+ premier test. Ces assertions ont leur propre notation, commençant avec
+ (?> comme ceci :
+
+ (?>\d+)bar
+
+
+ Ce type de parenthèses verrouille le sous-masque qu'il contient
+ une fois qu'il a été trouvé, et empêche un
+ échec ultérieur d'y repasser, mais autorise à
+ revenir plus loin en arrière.
+
+
+ Une autre description est que les sous-masques de ce type
+ recherchent les chaînes de caractères, et ancre le sous-masque
+ à l'intérieur de la chaîne.
+
+
+ Les sous-masques uniques ne sont pas capturants. Des cas simples comme
+ ceux présentés ci-dessus peuvent être pris comme
+ des situations maximales, qui réservent le maximum de
+ caractères. En effet, alors que \d+ et
+ \d+? ajustent le nombre de chiffres trouvés
+ de manière à laisser la possibilité au masque de
+ réussir, (?>\d+) ne peut retenir que la
+ séquence entière de chiffres.
+
+
+ Cette construction peut contenir un nombre arbitraire de sous-masques
+ complexes, et ils peuvent être imbriqués.
+
+
+ Les sous-masques uniques ne peuvent être utilisés qu'avec
+ les assertions arrière, pour effectuer une recherche efficace
+ en fin de chaîne. Considérons un masque simple tel
+
+ abcd$
+
+ appliqué à une très longue chaîne qui ne lui correspond pas.
+ À cause du système de recherche de gauche à droite, PCRE va
+ commencer par rechercher un "a" dans la
+ chaîne sujet, puis vérifier si ce qui suit convient au reste
+ du masque. Si le masque est spécifié sous la forme
+
+ ^.*abcd$
+
+ alors, la séquence .* remplace en premier
+ lieu la chaîne entière, et échoue, repart en
+ arrière, et remplace tous les caractères sauf le dernier,
+ échoue, retourne en arrière, prend un caractère
+ de moins, etc. et ainsi de suite. Encore une fois, la recherche du
+ "a" passe en revue toute la chaîne de gauche
+ à droite, ce qui n'est pas très efficace. Par contre,
+ si le masque était écrit
+
+ ^(?>.*)(?<=abcd)
+
+ alors il n'y aurait pas de retour en arrière, pour satisfaire
+ la séquence .*, car elle ne peut que remplacer
+ toute la chaîne. L'assertion arrière consécutive
+ va alors faire un test sur les 4 derniers caractères. Si elle
+ échoue, la recherche est immédiatement interrompue.
+ Pour les chaînes très longues, cette approche fait la
+ différence en termes de performances et de temps de recherche.
+
+
+ Lorsqu'un masque contient une répétition illimitée
+ dans un sous-masque, qui contient lui-même un nombre
+ illimité de répétiteurs, l'utilisation des
+ sous-masques à utilisation unique est la seule façon
+ d'éviter l'échec de la recherche après un
+ temps de calcul trop long.
+ Le masque
+
+ (\D+|<\d+>)*[!?]
+
+ recherche un nombre illimité de sous-chaînes, qui contiennent soit
+ des non-chiffres, soit des chiffres inclus dans <>, suivi soit
+ par ! ou par ?. Lorsqu'il trouve
+ une solution, ce masque va très vite. Mais, lorsqu'il est
+ appliqué à une chaîne telle :
+
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,
+
+ il lui faut beaucoup de temps pour annoncer un échec. Cela est
+ dû au fait que la chaîne peut être divisée en deux
+ sous-chaînes d'un grand nombre de façons, et qu'elles
+ ont toutes été essayées. (Cet exemple utilisait
+ [!?] plutôt qu'un caractère simple, car
+ PCRE et PHP utilise une optimisation qui leur permet de détecter
+ rapidement l'échec lorsqu'un caractère unique est
+ trouvé. Il se souvient du dernier caractère qui est
+ attendu, et s'aperçoit rapidement qu'il n'y a pas ce caractère).
+ Si le masque utilisé est
+
+ ((?>\D+)|<\d+>)*[!?]
+
+ les séquences de chiffres ne peuvent pas être
+ trouvées, et l'échec intervient rapidement.
+
+
+
+
+ Les sous-masques conditionnels
+
+ Il est possible de lier un sous-masque à une condition, ou de
+ choisir entre deux sous-masques alternatifs, en fonction du
+ résultat d'une assertion, ou suivant les résultats
+ de recherche précédents.
+ Les deux formes possibles de sous-masques conditionnels sont
+
+
+
+
+
+
+
+
+ Si les conditions sont satisfaites, le masque positif est utilisé,
+ sinon, le masque négatif est utilisé, si présent.
+ S'il y a plus de deux possibilités, une erreur est générée
+ à la compilation.
+
+
+ Il y a deux types de conditions : si le texte entre les parenthèses
+ est une séquence de chiffres, alors la condition est satisfaite si
+ le sous-masque correspondant à ce numéro a réussi.
+ Considérons le masque suivant, qui contient des espaces non
+ significatifs pour le rendre plus compréhensible (on supposera
+ l'option PCRE_EXTENDED
+ activée) et qui est divisée en trois parties
+ pour simplifier les explications :
+
+
+
+
+
+
+
+ La première partie recherche une parenthèse ouvrante
+ optionnelle et, si elle existe, elle est capturée. La deuxième
+ partie recherche une séquence de caractères qui ne contiennent
+ pas de parenthèses. La troisième partie est
+ conditionnée à la première, et s'assure que s'il
+ y a une parenthèse ouvrante, il en existe une fermante.
+ Si une parenthèse ouvrante a été trouvée,
+ elle a été capturée, et donc la première capture
+ existe, et la condition est exécutée. Sinon, elle est
+ ignorée. Ce masque recherche donc une séquence de lettres,
+ éventuellement placées entre parenthèse.
+
+
+ Si la condition est la chaîne (R), elle sera
+ satisfaite si un appel récursif au masque ou au sous-masque
+ a été fait. Au premier appel, la condition n'est pas vérifiée.
+
+
+ Si la condition n'est pas une séquence de chiffres, il faut que ce soit
+ une assertion. Ce peut être une assertion positive ou négative,
+ arrière ou avant. Considérons le masque suivant (mêmes conditions que
+ le précédent) et avec deux possibilités en seconde ligne :
+
+
+
+
+
+
+
+
+ La condition est une assertion avant positive, qui recherche une
+ séquence optionnelle de caractères non-lettre. En d'autres
+ termes, elle teste la présence d'au moins une lettre dans la chaîne
+ sujet. Si une lettre est trouvée, la recherche se poursuit avec
+ la première alternative, et sinon, avec la seconde. Ce masque
+ recherche des chaînes de la forme dd-aaa-dd ou
+ dd-dd-dd, avec "aaa" qui sont des
+ lettres, et dd qui sont des chiffres.
+
+
+
+
+ Commentaires
+
+ La séquence (?# marque le début d'un commentaire,
+ qui se termine à la prochaîne parenthèse fermante. Les
+ parenthèses imbriquées ne sont pas autorisées. Les
+ caractères entre ces délimiteurs ne jouent alors aucun rôle
+ dans le masque.
+
+
+ Si l'option PCRE_EXTENDED
+ est activée, les caractères dièses
+ # non protégés en dehors d'une classe de
+ caractères introduisent un commentaire qui continuera jusqu'à
+ la prochaîne ligne dans le masque.
+
+
+
+ Usage de commentaire dans un masque PCRE
+
+
+
+ &example.outputs;
+
+
+
+
+
+
+
+
+ Masques récursifs
+
+ Considérons le cas où il faut rechercher dans une
+ chaîne avec un niveau d'imbrications infini de
+ parenthèses. Sans l'aide de la récursivité, le
+ mieux que nous puissions obtenir est de créer un masque avec un
+ niveau fixé de profondeur d'imbrication. Il n'est pas possible
+ de traiter des masques à niveau d'imbrication variable.
+ PCRE fournit un nouvel outil expérimental qui permet
+ d'utiliser la récursivité dans les masques (entre autres).
+ L'option (?R) est fournie pour servir la cause de
+ la récursivité. Le masque suivant résout le
+ problème des parenthèses (l'option
+ PCRE_EXTENDED est
+ utilisée pour ignorer les espaces) :
+
+ \( ( (?>[^()]+) | (?R) )* \)
+
+
+ Tout d'abord, le masque recherche une parenthèse ouvrante. Puis,
+ il recherche n'importe quel nombre de sous-chaînes qui sont soit
+ des séquences de caractères non-parenthèses, ou
+ bien une recherche récursive avec le même masque (i.e.
+ une chaîne correctement incluse entre parenthèses).
+ Finalement, il recherche une parenthèse fermante.
+
+
+ Cet exemple particulier contient un nombre illimité de
+ répétitions imbriquées, ce qui fait que
+ l'utilisation de sous-chaînes à utilisation unique
+ pour rechercher les séquences de caractères
+ non-parenthèses est important, lorsqu'il s'applique à
+ une chaîne qui n'est pas valide. Par exemple, si on l'applique
+ à
+
+ (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()
+
+ la réponse arrive rapidement. Sinon, si les sous-chaînes
+ à utilisation unique ne sont pas utilisées, la
+ recherche peut prendre un temps très long, car il existe
+ de très nombreuses combinaisons de + et
+ * à tester avant de conclure à
+ l'échec.
+
+
+ Les valeurs utilisées pour capturer les sous-masques sont celles
+ utilisées par les niveaux les plus hauts de
+ récursivité, auxquels la valeur est fixée.
+ Si le masque précédent est utilisé avec
+
+ (ab(cd)ef)
+
+ la valeur de la parenthèse capturante est "ef",
+ qui est la dernière valeur lue au niveau supérieur. Si de nouvelles
+ parenthèses sont ajoutées, par exemple :
+
+ \( ( ( (?>[^()]+) | (?R) )* ) \)
+
+ alors la chaîne capturée est "ab(cd)ef",
+ c'est-à-dire le contenu de la parenthèse capturante
+ de plus haut niveau. S'il y a plus de 15 parenthèses
+ capturantes dans une chaîne, PCRE doit utiliser plus
+ de mémoire pour stocker ces données. S'il ne
+ peut obtenir cette mémoire supplémentaire, il ne fait
+ que sauver les 15 premières, car il n'y a pas moyen de
+ générer une erreur de mémoire dans le cadre d'une récursivité.
+
+
+
+ (?1), (?2) et suivants
+ peuvent être également utilisés pour les sous masques récursifs. Il est également
+ possible d'utiliser les sous masques nommés : (?P>foo) ou
+ (?&name).
+
+
+ Si la syntaxe pour une référence de sous-masque récursif (soit par un
+ nombre ou par un nom) est utilisée en dehors des parenthèses à laquelle
+ elle fait référence, il opère comme une sous-routine dans un langage
+ de programmation. Un exemple ci-dessus a montré que le masque
+ (sens|respons)e and \1ibility
+ trouvera "sense and sensibility" et
+ "response and responsibility", mais pas
+ "sense and responsibility". Si on utilise plutôt le masque
+ (sens|respons)e and (?1)ibility
+ alors, il trouvera "sense and responsibility"
+ tout comme les deux autres chaînes.
+ De telles références doivent, dépendant, suivre le sous-masque auquel
+ elles se réfèrent.
+
+
+
+ La longueur maximale d'un sujet correspond au plus grand nombre positif
+ qu'une variable entière peut contenir. Cependant, PCRE utilise la récursivité
+ pour gérer les sous-masques et les répétitions infinies. Ce qui signifie
+ que l'espace disponible pour la pile peut limiter la taille du sujet qui peut
+ être passé à certains masques.
+
+
+
+
+ Performance
+
+ Certaines séquences de recherches sont plus efficaces que d'autres.
+ Ainsi, il est plus efficace d'utiliser une classe de caractères
+ telle que [aeiou] plutôt qu'une alternative
+ (a|e|i|o|u).
+ En général, le masque le plus simple, qui permette
+ la recherche désirée est le plus efficace. Le livre
+ de Jeffrey Friedl's contient de nombreuses études à
+ propos de l'optimisation des expressions régulières.
+
+
+ Lorsqu'un masque commence par.* et que l'option
+ PCRE_DOTALL est
+ activée, le masque est implicitement ancré par PCRE,
+ étant donné qu'il ne peut que rechercher au début
+ de la chaîne. Cependant, si l'option
+ PCRE_DOTALL n'est pas
+ activée, PCRE ne peut faire aucune optimisation, car le
+ métacaractère point "."
+ ne remplace pas une nouvelle ligne, et si la chaîne
+ sujet contient des nouvelles lignes, le masque peut trouver une
+ solution qui serait située juste après une
+ de ces nouvelles lignes, et non pas seulement au début
+ de la chaîne sujet. Par exemple, le masque,
+
+ (.*)second
+
+ acceptera la chaîne "premier \net second"
+ (avec "\n" qui remplace la nouvelle ligne),
+ et la première chaîne capturée sera "et".
+ Afin d'effectuer la recherche, PCRE va essayer d'appliquer le masque
+ à partir de chaque début de ligne.
+
+
+ Si vous utilisez un tel masque avec des chaînes qui ne contiennent
+ pas de caractères de nouvelle ligne, les meilleures performances
+ seront atteintes avec l'option
+ PCRE_DOTALL, ou en ancrant le
+ masque avec ^.*. Cela évite à PCRE
+ de scanner toute la chaîne pour rechercher un caractère
+ de nouvelle ligne et recommencer la recherche.
+
+
+ Attention aux masques qui contiennent des quantificateurs infinis
+ imbriqués. Ils peuvent demander un temps de calcul très
+ long, lorsque appliqués à une chaîne qui ne
+ correspond pas à ce masque. Par exemple,
+
+ (a+)*
+
+
+
+ Ce masque peut accepter "aaaa" de 33 manières
+ différentes, et ce nombre croit rapidement avec la taille
+ de la chaîne (le quantificateur * peut prendre
+ les valeurs de 0, 1, 2, 3, ou 4, et pour chaque cas non nul, le
+ quantificateur + peut prendre différentes
+ valeurs). Lorsque le reste de la chaîne est tel que l'on s'achemine
+ vers un échec, PCRE doit en principe vérifier
+ toutes les possibilités, et cela prend un temps
+ extrêmement long.
+
+
+ Un optimiseur repère les cas les plus simples, tel que
+
+ (a+)*b
+
+ où un caractère simple suit les quantificateurs.
+ Avant de partir dans les procédures standards de recherche, PCRE
+ s'assure qu'il y a au moins un "b" dans la
+ chaîne, et si ce n'est pas le cas, l'échec est
+ annoncé immédiatement. Sinon, il n'y a pas
+ d'optimisation dans la recherche. Vous pouvez voir la
+ différence de comportement avec le masque suivant :
+
+ (a+)*\d.
+
+ Le premier retourne un échec quasi-immédiatement, s'il est appliqué à
+ une ligne de "a", alors que le second masque
+ prend un temps significatif pour une chaîne de plus de
+ 20 caractères.
+
+
+
+
From 8d9c4428005cf7895bfeaac873e76c95aa940069 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:41:04 +0100
Subject: [PATCH 55/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/pdo/configure.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/pdo/configure.xml | 202 ++++++++++++++++++------------------
1 file changed, 101 insertions(+), 101 deletions(-)
diff --git a/reference/pdo/configure.xml b/reference/pdo/configure.xml
index 86e8435041..5a66197e49 100644
--- a/reference/pdo/configure.xml
+++ b/reference/pdo/configure.xml
@@ -1,101 +1,101 @@
-
-
-
-
-
- &reftitle.install;
-
- &installation.enabled.disable;
-
-
-
- Installer PDO sur les systèmes Unix
-
-
- PDO et le pilote PDO_SQLITE
- sont activés par défaut. Vous devez activer
- le pilote PDO de la base de données de votre choix ; consultez
- la documentation pour les
- pilotes spécifiques à votre base
- de données pour plus d'informations.
-
-
-
- Notez que lors de la compilation de PDO comme extension partagée
- (non recommandé), alors tous les pilotes PDO
- doivent être chargés après
- le chargement de PDO.
-
-
-
-
-
- Lors de l'installation de PDO comme module partagé, le fichier &php.ini;
- doit être mis à jour afin de charger l'extension PDO automatiquement
- lorsque PHP entre en fonctionnement. Vous devez également y activer
- les pilotes spécifiques à votre base de données ; assurez-vous que
- ces pilotes seront listés après la ligne extension=pdo, vu que PDO doit
- être initialisé avant le chargement des extensions spécifiques aux
- bases de données. Si vous compilez PDO et les extensions relatives
- aux bases de données de façon statique, vous pouvez ignorer cette étape.
-
-
-
-
-
-
-
- Utilisateurs de Windows
-
-
- PDO est activé par défaut.
- Choisissez les autres fichiers DLL spécifiques à votre base de données
- et utilisez soit la fonction dl pour les charger
- au moment de l'exécution ou activez-les dans le fichier &php.ini;.
- Par exemple, ceci charge le pilote
- PDO_SQLITE mais
- laisse le pilote PDO_ODBC commenté:
-
-
-
-
-
- Ces bibliothèques DDLs doivent exister dans le dossier système
- extension_dir.
-
-
-
-
-
- Gardez à l'esprit qu'après modification de votre &php.ini;, vous
- devez redémarrer PHP pour que vos nouvelles directives de configuration
- prennent effet.
-
-
-
-
-
+
+
+
+
+
+ &reftitle.install;
+
+ &installation.enabled.disable;
+
+
+
+ Installer PDO sur les systèmes Unix
+
+
+ PDO et le pilote PDO_SQLITE
+ sont activés par défaut. Vous devez activer
+ le pilote PDO de la base de données de votre choix ; consultez
+ la documentation pour les
+ pilotes spécifiques à votre base
+ de données pour plus d'informations.
+
+
+
+ Notez que lors de la compilation de PDO comme extension partagée
+ (non recommandé), alors tous les pilotes PDO
+ doivent être chargés après
+ le chargement de PDO.
+
+
+
+
+
+ Lors de l'installation de PDO comme module partagé, le fichier &php.ini;
+ doit être mis à jour afin de charger l'extension PDO automatiquement
+ lorsque PHP entre en fonctionnement. Vous devez également y activer
+ les pilotes spécifiques à votre base de données ; assurez-vous que
+ ces pilotes seront listés après la ligne extension=pdo, vu que PDO doit
+ être initialisé avant le chargement des extensions spécifiques aux
+ bases de données. Si vous compilez PDO et les extensions relatives
+ aux bases de données de façon statique, vous pouvez ignorer cette étape.
+
+
+
+
+
+
+
+ Utilisateurs de Windows
+
+
+ PDO est activé par défaut.
+ Choisissez les autres fichiers DLL spécifiques à votre base de données
+ et utilisez soit la fonction dl pour les charger
+ au moment de l'exécution ou activez-les dans le fichier &php.ini;.
+ Par exemple, ceci charge le pilote
+ PDO_SQLITE mais
+ laisse le pilote PDO_ODBC commenté:
+
+
+
+
+
+ Ces bibliothèques DDLs doivent exister dans le dossier système
+ extension_dir.
+
+
+
+
+
+ Gardez à l'esprit qu'après modification de votre &php.ini;, vous
+ devez redémarrer PHP pour que vos nouvelles directives de configuration
+ prennent effet.
+
+
+
+
+
From f7e1b440f627e1f1b5a67549a0e7a826d547e1e7 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:41:04 +0100
Subject: [PATCH 56/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/pdo/connections.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/pdo/connections.xml | 350 +++++++++++++++++-----------------
1 file changed, 175 insertions(+), 175 deletions(-)
diff --git a/reference/pdo/connections.xml b/reference/pdo/connections.xml
index 4ac92aa27b..5fc77fedea 100644
--- a/reference/pdo/connections.xml
+++ b/reference/pdo/connections.xml
@@ -1,175 +1,175 @@
-
-
-
-
-
- Connexions et gestionnaire de connexion
-
- Les connexions sont établies en créant des instances de la classe de base de PDO.
- Peu importe quel pilote vous voulez utiliser ; vous utilisez toujours le nom
- de la classe PDO. Le constructeur accepte des paramètres pour spécifier
- la source de la base de données (connue en tant que DSN) et optionnellement,
- le nom d'utilisateur et le mot de passe (s'il y en a un).
-
-
-
- Connexion à MySQL
-
-
-]]>
-
-
-
-
- S'il y a des erreurs de connexion, un objet PDOException
- est lancé. Vous pouvez attraper cette exception si vous voulez gérer
- cette erreur, ou laisser le gestionnaire global d'exception défini
- via la fonction set_exception_handler la traiter.
-
-
-
- Gestion des erreurs de connexion
-
-
-
-
-
-
-
- Comme toutes les autres exception,
- PDOException peut être capturée soit explicitement, par
- une instruction &catch;, soit implicitement via set_exception_handler.
- Sinon, le comportement par défaut consistant à convertir une exception non capturée en une
- E_FATAL_ERROR se produira.
- L'erreur fatale contiendra un backtrace qui peut laisser échapper des détails sur la connexion.
- Ainsi, l'option &php.ini; display_errors
- doit être définie à 0 sur un serveur de production.
-
-
-
- Lorsque la connexion à la base de données a réussi, une instance de la classe
- PDO est retournée à votre script. La connexion est active tant que l'objet PDO
- l'est. Pour clore la connexion, vous devez détruire l'objet en vous assurant que
- toutes ses références sont effacées. Vous pouvez faire cela en assignant &null;
- à la variable gérant l'objet. Si vous ne le faites pas explicitement, PHP fermera
- automatiquement la connexion lorsque le script arrivera à la fin.
-
-
-
- S'il existe encore d'autres références à cette instance PDO (par exemple, à
- partir d'une instance PDOStatement ou d'autres variables référençant la
- même instance PDO), celles-ci doivent également être supprimées (par
- exemple, en affectant &null; à la variable qui référence le PDOStatement).
-
-
-
-
- Fermeture d'une connexion
-
-query('SELECT * FROM foo');
-
-// et maintenant, fermez-la !
-$sth = null;
-$dbh = null;
-?>
-]]>
-
-
-
-
- Beaucoup d'applications web utilisent des connexions persistantes aux serveurs
- de base de données. Les connexions persistantes ne sont pas fermées à la fin du
- script, mais sont mises en cache et réutilisées lorsqu'un autre script demande une connexion
- en utilisant les mêmes paramètres. Le cache des connexions persistantes
- vous permet d'éviter d'établir une nouvelle connexion à chaque fois qu'un
- script doit accéder à une base de données, rendant l'application web plus rapide.
-
-
-
- Connexions persistantes
-
- true
-));
-?>
-]]>
-
-
-
-
- La valeur de l'option PDO::ATTR_PERSISTENT est convertie
- en &boolean; (activer/désactiver les connexions persistantes), sauf si c'est
- une &string; non-numérique, auquel cas ceci autorise l'utilisation de
- plusieurs pools de connexions persistantes.
- Ceci est utile si les connexions différentes utilisent des paramètres
- incompatibles, par exemple, des valeurs différentes de
- PDO::MYSQL_ATTR_USE_BUFFERED_QUERY.
-
-
-
- Si vous souhaitez utiliser des connexions persistantes, vous devez
- utiliser la valeur PDO::ATTR_PERSISTENT dans le
- tableau des options du pilote passé au constructeur PDO. Si vous
- définissez cet attribut avec la méthode PDO::setAttribute
- après l'instanciation de l'objet, le pilote n'utilisera pas les connexions
- persistantes.
-
-
-
-
- PDO ne fait aucun nettoyage des connexions persistantes. Les tables temporaires, verrou, et transactions et autres
- changements d'état peuvent rester de l'utilisation précédente de la connexion, causant des problèmes inattendus. Voir la
- section Connexions de base de données persistantes pour plus d'informations.
-
-
-
-
- Si vous utilisez le pilote PDO ODBC et que votre bibliothèque ODBC prend en charge
- le bassin de connexion ODBC (unixODBC et Windows le supportent tous les deux ;
- peut être plus), alors il est recommandé de ne pas utiliser les connexions persistantes
- PDO, mais plutôt laisser le bassin de connexion ODBC mettre en cache les connexions.
- Le bassin de connexion ODBC est partagé avec les autres modules dans le processus ;
- si PDO met en cache la connexion, alors cette connexion ne sera jamais retournée
- par le bassin de connexion ODBC, faisant que plusieurs connexions sont créées pour
- les autres modules.
-
-
-
-
-
-
+
+
+
+
+
+ Connexions et gestionnaire de connexion
+
+ Les connexions sont établies en créant des instances de la classe de base de PDO.
+ Peu importe quel pilote vous voulez utiliser ; vous utilisez toujours le nom
+ de la classe PDO. Le constructeur accepte des paramètres pour spécifier
+ la source de la base de données (connue en tant que DSN) et optionnellement,
+ le nom d'utilisateur et le mot de passe (s'il y en a un).
+
+
+
+ Connexion à MySQL
+
+
+]]>
+
+
+
+
+ S'il y a des erreurs de connexion, un objet PDOException
+ est lancé. Vous pouvez attraper cette exception si vous voulez gérer
+ cette erreur, ou laisser le gestionnaire global d'exception défini
+ via la fonction set_exception_handler la traiter.
+
+
+
+ Gestion des erreurs de connexion
+
+
+
+
+
+
+
+ Comme toutes les autres exception,
+ PDOException peut être capturée soit explicitement, par
+ une instruction &catch;, soit implicitement via set_exception_handler.
+ Sinon, le comportement par défaut consistant à convertir une exception non capturée en une
+ E_FATAL_ERROR se produira.
+ L'erreur fatale contiendra un backtrace qui peut laisser échapper des détails sur la connexion.
+ Ainsi, l'option &php.ini; display_errors
+ doit être définie à 0 sur un serveur de production.
+
+
+
+ Lorsque la connexion à la base de données a réussi, une instance de la classe
+ PDO est retournée à votre script. La connexion est active tant que l'objet PDO
+ l'est. Pour clore la connexion, vous devez détruire l'objet en vous assurant que
+ toutes ses références sont effacées. Vous pouvez faire cela en assignant &null;
+ à la variable gérant l'objet. Si vous ne le faites pas explicitement, PHP fermera
+ automatiquement la connexion lorsque le script arrivera à la fin.
+
+
+
+ S'il existe encore d'autres références à cette instance PDO (par exemple, à
+ partir d'une instance PDOStatement ou d'autres variables référençant la
+ même instance PDO), celles-ci doivent également être supprimées (par
+ exemple, en affectant &null; à la variable qui référence le PDOStatement).
+
+
+
+
+ Fermeture d'une connexion
+
+query('SELECT * FROM foo');
+
+// et maintenant, fermez-la !
+$sth = null;
+$dbh = null;
+?>
+]]>
+
+
+
+
+ Beaucoup d'applications web utilisent des connexions persistantes aux serveurs
+ de base de données. Les connexions persistantes ne sont pas fermées à la fin du
+ script, mais sont mises en cache et réutilisées lorsqu'un autre script demande une connexion
+ en utilisant les mêmes paramètres. Le cache des connexions persistantes
+ vous permet d'éviter d'établir une nouvelle connexion à chaque fois qu'un
+ script doit accéder à une base de données, rendant l'application web plus rapide.
+
+
+
+ Connexions persistantes
+
+ true
+));
+?>
+]]>
+
+
+
+
+ La valeur de l'option PDO::ATTR_PERSISTENT est convertie
+ en &boolean; (activer/désactiver les connexions persistantes), sauf si c'est
+ une &string; non-numérique, auquel cas ceci autorise l'utilisation de
+ plusieurs pools de connexions persistantes.
+ Ceci est utile si les connexions différentes utilisent des paramètres
+ incompatibles, par exemple, des valeurs différentes de
+ PDO::MYSQL_ATTR_USE_BUFFERED_QUERY.
+
+
+
+ Si vous souhaitez utiliser des connexions persistantes, vous devez
+ utiliser la valeur PDO::ATTR_PERSISTENT dans le
+ tableau des options du pilote passé au constructeur PDO. Si vous
+ définissez cet attribut avec la méthode PDO::setAttribute
+ après l'instanciation de l'objet, le pilote n'utilisera pas les connexions
+ persistantes.
+
+
+
+
+ PDO ne fait aucun nettoyage des connexions persistantes. Les tables temporaires, verrou, et transactions et autres
+ changements d'état peuvent rester de l'utilisation précédente de la connexion, causant des problèmes inattendus. Voir la
+ section Connexions de base de données persistantes pour plus d'informations.
+
+
+
+
+ Si vous utilisez le pilote PDO ODBC et que votre bibliothèque ODBC prend en charge
+ le bassin de connexion ODBC (unixODBC et Windows le supportent tous les deux ;
+ peut être plus), alors il est recommandé de ne pas utiliser les connexions persistantes
+ PDO, mais plutôt laisser le bassin de connexion ODBC mettre en cache les connexions.
+ Le bassin de connexion ODBC est partagé avec les autres modules dans le processus ;
+ si PDO met en cache la connexion, alors cette connexion ne sera jamais retournée
+ par le bassin de connexion ODBC, faisant que plusieurs connexions sont créées pour
+ les autres modules.
+
+
+
+
+
+
From 6be1f66bd0583717744fdaa3904899a8c3496d99 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:41:05 +0100
Subject: [PATCH 57/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/pdo/constants.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/pdo/constants.xml | 1494 +++++++++++++++++------------------
1 file changed, 747 insertions(+), 747 deletions(-)
diff --git a/reference/pdo/constants.xml b/reference/pdo/constants.xml
index a6eaf9e798..6941f21b26 100644
--- a/reference/pdo/constants.xml
+++ b/reference/pdo/constants.xml
@@ -1,747 +1,747 @@
-
-
-
-
- &reftitle.constants;
- &extension.constants;
-
- &reference.pdo.constants.fetch-modes;
-
-
- Curseur
-
-
- Voir aussi PDO::ATTR_CURSOR_NAME.
-
-
-
-
-
- PDO::FETCH_ORI_NEXT
- (int)
-
-
-
- Récupère la ligne suivante dans le jeu de résultats. Valide uniquement pour les curseurs défilables.
-
-
-
-
-
- PDO::FETCH_ORI_PRIOR
- (int)
-
-
-
- Récupère la ligne précédente dans le jeu de résultats. Valide uniquement pour les
- curseurs défilables.
-
-
-
-
-
- PDO::FETCH_ORI_FIRST
- (int)
-
-
-
- Récupère la première ligne dans le jeu de résultats. Valide uniquement pour les curseurs défilables.
-
-
-
-
-
- PDO::FETCH_ORI_LAST
- (int)
-
-
-
- Récupère la dernière ligne dans le jeu de résultats. Valide uniquement pour les curseurs défilables.
-
-
-
-
-
- PDO::FETCH_ORI_ABS
- (int)
-
-
-
- Récupère la ligne demandée par numéro de ligne dans le jeu de résultats. Valide uniquement
- pour les curseurs défilables.
-
-
-
-
-
- PDO::FETCH_ORI_REL
- (int)
-
-
-
- Récupère la ligne demandée par position relative par rapport à la position actuelle
- du curseur dans le jeu de résultats. Valide uniquement pour les curseurs défilables.
-
-
-
-
-
- PDO::CURSOR_FWDONLY
- (int)
-
-
-
- Crée un objet PDOStatement avec un curseur à sens unique. C'est le
- choix de curseur par défaut, car c'est le modèle d'accès aux données le plus rapide et le plus courant
- en PHP.
-
-
-
-
-
- PDO::CURSOR_SCROLL
- (int)
-
-
-
- Crée un objet PDOStatement avec un curseur défilable.
- Passez les constantes PDO::FETCH_ORI_*
- pour contrôler les lignes récupérées du jeu de résultats.
-
-
-
-
-
-
-
- Autre constante
-
-
-
- PDO::PARAM_BOOL
- (int)
-
-
-
- Représente un type de données booléen.
-
-
-
-
-
- PDO::PARAM_NULL
- (int)
-
-
-
- Représente le type de données SQL NULL.
-
-
-
-
-
- PDO::PARAM_INT
- (int)
-
-
-
- Représente le type de données SQL INTEGER.
-
-
-
-
-
- PDO::PARAM_STR
- (int)
-
-
-
- Représente le type de données SQL CHAR, VARCHAR ou tout autre type de données de chaîne de caractères.
-
-
-
-
-
- PDO::PARAM_STR_NATL
- (int)
-
-
-
- Drapeau pour indiquer qu'une chaîne utilise le jeu de caractères national.
-
-
- Disponible depuis PHP 7.2.0
-
-
-
-
-
- PDO::PARAM_STR_CHAR
- (int)
-
-
-
- Drapeau pour indiquer qu'une chaîne utilise le jeu de caractères régulier.
-
-
- Disponible depuis PHP 7.2.0
-
-
-
-
-
- PDO::PARAM_LOB
- (int)
-
-
-
- Représente le type de données SQL large object.
-
-
-
-
-
- PDO::PARAM_STMT
- (int)
-
-
-
- Représente un type de jeu d'enregistrements (recordset). Actuellement, aucun pilote ne prend en charge ce type.
-
-
-
-
-
- PDO::PARAM_INPUT_OUTPUT
- (int)
-
-
-
- Spécifie que le paramètre est un paramètre INOUT pour une procédure stockée.
- Cette constante doit être utilisée avec un opérateur OU bit à bit avec
- des constantes PDO::PARAM_*.
-
-
-
-
-
- PDO::ATTR_AUTOCOMMIT
- (int)
-
-
-
- Si cette valeur est &false;, PDO tente de désactiver l'autocommit afin que la
- connexion commence une transaction.
-
-
-
-
-
- PDO::ATTR_PREFETCH
- (int)
-
-
-
- Définit la taille de prélecture permet de trouver un équilibre entre la vitesse et l'utilisation
- de la mémoire pour votre application. Toutes les combinaisons de bases de données/pilotes ne prennent pas
- en charge la définition de la taille de prélecture. Une taille de prélecture plus grande entraîne une
- augmentation des performances au prix d'une utilisation de la mémoire plus élevée.
-
-
-
-
-
- PDO::ATTR_TIMEOUT
- (int)
-
-
-
- Définit la valeur du délai d'attente en secondes pour les communications avec la base de données.
-
-
-
-
-
- PDO::ATTR_ERRMODE
- (int)
-
-
-
- Voir la section sur les erreurs et la gestion
- des erreurs pour plus d'informations sur cet attribut.
-
-
-
-
-
- PDO::ATTR_SERVER_VERSION
- (int)
-
-
-
- Cette valeur est en lecture seule ; elle renverra des informations sur la
- version du serveur de base de données auquel PDO est connecté.
-
-
-
-
-
- PDO::ATTR_CLIENT_VERSION
- (int)
-
-
-
- Cette valeur est en lecture seule ; elle renverra des informations sur la
- version des bibliothèques clientes utilisées par le pilote PDO.
-
-
-
-
-
- PDO::ATTR_SERVER_INFO
- (int)
-
-
-
- Cette valeur est en lecture seule ; elle renverra des informations sur la
- version du serveur de base de données auquel PDO est connecté.
-
-
-
-
-
- PDO::ATTR_CONNECTION_STATUS
- (int)
-
-
-
-
-
-
-
-
-
- PDO::ATTR_CASE
- (int)
-
-
-
- Force les noms de colonnes à une casse spécifique, comme spécifié par les constantes
- PDO::CASE_*.
-
-
-
-
-
- PDO::ATTR_CURSOR_NAME
- (int)
-
-
-
- Obtenir ou définir le nom à utiliser pour un curseur. Le plus utile lors de l'utilisation de
- curseurs défilables et de mises à jour positionnées.
-
-
-
-
-
- PDO::ATTR_CURSOR
- (int)
-
-
-
- Sélectionne le type de curseur. PDO prend actuellement en charge soit
- PDO::CURSOR_FWDONLY soit
- PDO::CURSOR_SCROLL.
- À moins d'avoir besoin de curseurs défilables, il convient d'utiliser le
- mode de curseur PDO::CURSOR_FWDONLY.
-
-
-
-
-
-
- PDO::ATTR_DRIVER_NAME
- (int)
-
-
-
- Renvoie le nom du pilote.
-
-
- Utilisation PDO::ATTR_DRIVER_NAME
-
- getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql') {
- echo "Running on mysql; doing something mysql specific here\n";
- }
- ?>
- ]]>
-
-
-
-
-
-
- PDO::ATTR_ORACLE_NULLS
- (int)
-
-
-
- Convertit les chaînes vides en valeurs NULL SQL lors des récupérations de données.
-
-
-
-
-
- PDO::ATTR_PERSISTENT
- (int)
-
-
-
- Demande une connexion persistante, plutôt que de créer une nouvelle connexion.
- Voir connections et gestion
- des connexions pour plus d'informations sur cet attribut.
-
-
-
-
-
- PDO::ATTR_STATEMENT_CLASS
- (int)
-
-
-
- Définit le nom de la classe des déclarations retournées.
-
-
-
-
-
- PDO::ATTR_FETCH_CATALOG_NAMES
- (int)
-
-
-
- Ajoute le nom du catalogue contenant chaque nom de colonne renvoyé dans le
- jeu de résultats. Le nom du catalogue et le nom de la colonne sont séparés par
- un caractère décimal (.). La prise en charge de cet attribut se fait au niveau
- du pilote ; il peut ne pas être pris en charge par votre pilote.
-
-
-
-
-
- PDO::ATTR_FETCH_TABLE_NAMES
- (int)
-
-
-
- Ajoute le nom de la table contenant chaque nom de colonne renvoyé dans le
- jeu de résultats. Le nom de la table et le nom de la colonne sont séparés par
- un caractère décimal (.). La prise en charge de cet attribut se fait au niveau
- du pilote ; il peut ne pas être pris en charge par le pilote utilisé.
-
-
-
-
-
- PDO::ATTR_STRINGIFY_FETCHES
- (int)
-
-
-
- Force toutes les valeurs récupérées (sauf &null;) à être traitées comme des chaînes.
- Les valeurs &null; restent inchangées à moins que PDO::ATTR_ORACLE_NULLS
- ne soit défini sur PDO::NULL_TO_STRING.
-
-
-
-
-
- PDO::ATTR_MAX_COLUMN_LEN
- (int)
-
-
-
- Définit la longueur maximale des noms de colonnes.
-
-
-
-
-
- PDO::ATTR_DEFAULT_FETCH_MODE
- (int)
-
-
-
-
-
-
-
-
-
- PDO::ATTR_EMULATE_PREPARES
- (int)
-
-
-
-
-
-
-
-
-
- PDO::ATTR_DEFAULT_STR_PARAM
- (int)
-
-
-
- Définit le type de paramètre de chaîne par défaut, cela peut être l'un de PDO::PARAM_STR_NATL
- et PDO::PARAM_STR_CHAR.
-
-
- Disponible depuis PHP 7.2.0.
-
-
-
-
-
- PDO::ERRMODE_SILENT
- (int)
-
-
-
- Ne pas lever d'erreur ou d'exception si une erreur se produit.
- Le développeur est censé vérifier explicitement les erreurs.
- Avant PHP 8.0.0, ceci est le mode par défaut.
- Voir erreur et gestion des erreurs
- pour plus d'informations sur cet attribut.
-
-
-
-
-
- PDO::ERRMODE_WARNING
- (int)
-
-
-
- Émet un message PHP E_WARNING si une erreur se produit.
- Voir erreur et gestion des erreurs
- pour plus d'informations sur cet attribut.
-
-
-
-
-
- PDO::ERRMODE_EXCEPTION
- (int)
-
-
-
- Lève une PDOException si une erreur se produit.
- Ceci est le mode par défaut à partir de PHP 8.0.0.
- Voir erreur et gestion des erreurs
- pour plus d'informations sur cet attribut.
-
-
-
-
-
- PDO::CASE_NATURAL
- (int)
-
-
-
- Laisser les noms de colonnes tels que retournés par le pilote de base de données.
-
-
-
-
-
- PDO::CASE_LOWER
- (int)
-
-
-
- Force les noms de colonnes à être en minuscules.
-
-
-
-
-
- PDO::CASE_UPPER
- (int)
-
-
-
- Force les noms de colonnes à être en majuscules.
-
-
-
-
-
- PDO::NULL_NATURAL
- (int)
-
-
-
-
-
-
-
-
-
- PDO::NULL_EMPTY_STRING
- (int)
-
-
-
-
-
-
-
-
-
- PDO::NULL_TO_STRING
- (int)
-
-
-
-
-
-
-
-
-
- PDO::ERR_NONE
- (string)
-
-
-
- Correspond à SQLSTATE '00000', ce qui signifie que l'instruction SQL a été
- émise avec succès sans erreurs ni avertissements.
- Cette constante est pour votre commodité lors de la vérification de PDO::errorCode ou
- PDOStatement::errorCode pour déterminer si une erreur
- s'est produite.
- Vous saurez généralement si c'est le cas en examinant le
- code de retour de la méthode qui a déclenché la condition d'erreur de toute façon.
-
-
-
-
-
- PDO::PARAM_EVT_ALLOC
- (int)
-
-
-
- Événement d'allocation.
-
-
-
-
-
- PDO::PARAM_EVT_FREE
- (int)
-
-
-
- Événement de désallocation.
-
-
-
-
-
- PDO::PARAM_EVT_EXEC_PRE
- (int)
-
-
-
- Événement déclenché avant l'exécution d'une instruction préparée.
-
-
-
-
-
- PDO::PARAM_EVT_EXEC_POST
- (int)
-
-
-
- Événement déclenché après l'exécution d'une instruction préparée.
-
-
-
-
-
- PDO::PARAM_EVT_FETCH_PRE
- (int)
-
-
-
- Événement déclenché avant la récupération d'un résultat d'un ensemble de résultats.
-
-
-
-
-
- PDO::PARAM_EVT_FETCH_POST
- (int)
-
-
-
- Événement déclenché après la récupération d'un résultat d'un ensemble de résultats.
-
-
-
-
-
- PDO::PARAM_EVT_NORMALIZE
- (int)
-
-
-
- Événement déclenché lors de l'enregistrement d'un paramètre lié
- permettant au pilote de normaliser le nom du paramètre.
-
-
-
-
-
- PDO::SQLITE_DETERMINISTIC
- (int)
-
-
-
- Spécifie qu'une fonction créée avec PDO::sqliteCreateFunction
- est déterministe, c'est-à-dire qu'elle renvoie toujours le même résultat donné les mêmes entrées dans
- une seule instruction SQL. (Disponible depuis PHP 7.1.4.)
-
-
-
-
-
-
-
+
+
+
+
+ &reftitle.constants;
+ &extension.constants;
+
+ &reference.pdo.constants.fetch-modes;
+
+
+ Curseur
+
+
+ Voir aussi PDO::ATTR_CURSOR_NAME.
+
+
+
+
+
+ PDO::FETCH_ORI_NEXT
+ (int)
+
+
+
+ Récupère la ligne suivante dans le jeu de résultats. Valide uniquement pour les curseurs défilables.
+
+
+
+
+
+ PDO::FETCH_ORI_PRIOR
+ (int)
+
+
+
+ Récupère la ligne précédente dans le jeu de résultats. Valide uniquement pour les
+ curseurs défilables.
+
+
+
+
+
+ PDO::FETCH_ORI_FIRST
+ (int)
+
+
+
+ Récupère la première ligne dans le jeu de résultats. Valide uniquement pour les curseurs défilables.
+
+
+
+
+
+ PDO::FETCH_ORI_LAST
+ (int)
+
+
+
+ Récupère la dernière ligne dans le jeu de résultats. Valide uniquement pour les curseurs défilables.
+
+
+
+
+
+ PDO::FETCH_ORI_ABS
+ (int)
+
+
+
+ Récupère la ligne demandée par numéro de ligne dans le jeu de résultats. Valide uniquement
+ pour les curseurs défilables.
+
+
+
+
+
+ PDO::FETCH_ORI_REL
+ (int)
+
+
+
+ Récupère la ligne demandée par position relative par rapport à la position actuelle
+ du curseur dans le jeu de résultats. Valide uniquement pour les curseurs défilables.
+
+
+
+
+
+ PDO::CURSOR_FWDONLY
+ (int)
+
+
+
+ Crée un objet PDOStatement avec un curseur à sens unique. C'est le
+ choix de curseur par défaut, car c'est le modèle d'accès aux données le plus rapide et le plus courant
+ en PHP.
+
+
+
+
+
+ PDO::CURSOR_SCROLL
+ (int)
+
+
+
+ Crée un objet PDOStatement avec un curseur défilable.
+ Passez les constantes PDO::FETCH_ORI_*
+ pour contrôler les lignes récupérées du jeu de résultats.
+
+
+
+
+
+
+
+ Autre constante
+
+
+
+ PDO::PARAM_BOOL
+ (int)
+
+
+
+ Représente un type de données booléen.
+
+
+
+
+
+ PDO::PARAM_NULL
+ (int)
+
+
+
+ Représente le type de données SQL NULL.
+
+
+
+
+
+ PDO::PARAM_INT
+ (int)
+
+
+
+ Représente le type de données SQL INTEGER.
+
+
+
+
+
+ PDO::PARAM_STR
+ (int)
+
+
+
+ Représente le type de données SQL CHAR, VARCHAR ou tout autre type de données de chaîne de caractères.
+
+
+
+
+
+ PDO::PARAM_STR_NATL
+ (int)
+
+
+
+ Drapeau pour indiquer qu'une chaîne utilise le jeu de caractères national.
+
+
+ Disponible depuis PHP 7.2.0
+
+
+
+
+
+ PDO::PARAM_STR_CHAR
+ (int)
+
+
+
+ Drapeau pour indiquer qu'une chaîne utilise le jeu de caractères régulier.
+
+
+ Disponible depuis PHP 7.2.0
+
+
+
+
+
+ PDO::PARAM_LOB
+ (int)
+
+
+
+ Représente le type de données SQL large object.
+
+
+
+
+
+ PDO::PARAM_STMT
+ (int)
+
+
+
+ Représente un type de jeu d'enregistrements (recordset). Actuellement, aucun pilote ne prend en charge ce type.
+
+
+
+
+
+ PDO::PARAM_INPUT_OUTPUT
+ (int)
+
+
+
+ Spécifie que le paramètre est un paramètre INOUT pour une procédure stockée.
+ Cette constante doit être utilisée avec un opérateur OU bit à bit avec
+ des constantes PDO::PARAM_*.
+
+
+
+
+
+ PDO::ATTR_AUTOCOMMIT
+ (int)
+
+
+
+ Si cette valeur est &false;, PDO tente de désactiver l'autocommit afin que la
+ connexion commence une transaction.
+
+
+
+
+
+ PDO::ATTR_PREFETCH
+ (int)
+
+
+
+ Définit la taille de prélecture permet de trouver un équilibre entre la vitesse et l'utilisation
+ de la mémoire pour votre application. Toutes les combinaisons de bases de données/pilotes ne prennent pas
+ en charge la définition de la taille de prélecture. Une taille de prélecture plus grande entraîne une
+ augmentation des performances au prix d'une utilisation de la mémoire plus élevée.
+
+
+
+
+
+ PDO::ATTR_TIMEOUT
+ (int)
+
+
+
+ Définit la valeur du délai d'attente en secondes pour les communications avec la base de données.
+
+
+
+
+
+ PDO::ATTR_ERRMODE
+ (int)
+
+
+
+ Voir la section sur les erreurs et la gestion
+ des erreurs pour plus d'informations sur cet attribut.
+
+
+
+
+
+ PDO::ATTR_SERVER_VERSION
+ (int)
+
+
+
+ Cette valeur est en lecture seule ; elle renverra des informations sur la
+ version du serveur de base de données auquel PDO est connecté.
+
+
+
+
+
+ PDO::ATTR_CLIENT_VERSION
+ (int)
+
+
+
+ Cette valeur est en lecture seule ; elle renverra des informations sur la
+ version des bibliothèques clientes utilisées par le pilote PDO.
+
+
+
+
+
+ PDO::ATTR_SERVER_INFO
+ (int)
+
+
+
+ Cette valeur est en lecture seule ; elle renverra des informations sur la
+ version du serveur de base de données auquel PDO est connecté.
+
+
+
+
+
+ PDO::ATTR_CONNECTION_STATUS
+ (int)
+
+
+
+
+
+
+
+
+
+ PDO::ATTR_CASE
+ (int)
+
+
+
+ Force les noms de colonnes à une casse spécifique, comme spécifié par les constantes
+ PDO::CASE_*.
+
+
+
+
+
+ PDO::ATTR_CURSOR_NAME
+ (int)
+
+
+
+ Obtenir ou définir le nom à utiliser pour un curseur. Le plus utile lors de l'utilisation de
+ curseurs défilables et de mises à jour positionnées.
+
+
+
+
+
+ PDO::ATTR_CURSOR
+ (int)
+
+
+
+ Sélectionne le type de curseur. PDO prend actuellement en charge soit
+ PDO::CURSOR_FWDONLY soit
+ PDO::CURSOR_SCROLL.
+ À moins d'avoir besoin de curseurs défilables, il convient d'utiliser le
+ mode de curseur PDO::CURSOR_FWDONLY.
+
+
+
+
+
+
+ PDO::ATTR_DRIVER_NAME
+ (int)
+
+
+
+ Renvoie le nom du pilote.
+
+
+ Utilisation PDO::ATTR_DRIVER_NAME
+
+ getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql') {
+ echo "Running on mysql; doing something mysql specific here\n";
+ }
+ ?>
+ ]]>
+
+
+
+
+
+
+ PDO::ATTR_ORACLE_NULLS
+ (int)
+
+
+
+ Convertit les chaînes vides en valeurs NULL SQL lors des récupérations de données.
+
+
+
+
+
+ PDO::ATTR_PERSISTENT
+ (int)
+
+
+
+ Demande une connexion persistante, plutôt que de créer une nouvelle connexion.
+ Voir connections et gestion
+ des connexions pour plus d'informations sur cet attribut.
+
+
+
+
+
+ PDO::ATTR_STATEMENT_CLASS
+ (int)
+
+
+
+ Définit le nom de la classe des déclarations retournées.
+
+
+
+
+
+ PDO::ATTR_FETCH_CATALOG_NAMES
+ (int)
+
+
+
+ Ajoute le nom du catalogue contenant chaque nom de colonne renvoyé dans le
+ jeu de résultats. Le nom du catalogue et le nom de la colonne sont séparés par
+ un caractère décimal (.). La prise en charge de cet attribut se fait au niveau
+ du pilote ; il peut ne pas être pris en charge par votre pilote.
+
+
+
+
+
+ PDO::ATTR_FETCH_TABLE_NAMES
+ (int)
+
+
+
+ Ajoute le nom de la table contenant chaque nom de colonne renvoyé dans le
+ jeu de résultats. Le nom de la table et le nom de la colonne sont séparés par
+ un caractère décimal (.). La prise en charge de cet attribut se fait au niveau
+ du pilote ; il peut ne pas être pris en charge par le pilote utilisé.
+
+
+
+
+
+ PDO::ATTR_STRINGIFY_FETCHES
+ (int)
+
+
+
+ Force toutes les valeurs récupérées (sauf &null;) à être traitées comme des chaînes.
+ Les valeurs &null; restent inchangées à moins que PDO::ATTR_ORACLE_NULLS
+ ne soit défini sur PDO::NULL_TO_STRING.
+
+
+
+
+
+ PDO::ATTR_MAX_COLUMN_LEN
+ (int)
+
+
+
+ Définit la longueur maximale des noms de colonnes.
+
+
+
+
+
+ PDO::ATTR_DEFAULT_FETCH_MODE
+ (int)
+
+
+
+
+
+
+
+
+
+ PDO::ATTR_EMULATE_PREPARES
+ (int)
+
+
+
+
+
+
+
+
+
+ PDO::ATTR_DEFAULT_STR_PARAM
+ (int)
+
+
+
+ Définit le type de paramètre de chaîne par défaut, cela peut être l'un de PDO::PARAM_STR_NATL
+ et PDO::PARAM_STR_CHAR.
+
+
+ Disponible depuis PHP 7.2.0.
+
+
+
+
+
+ PDO::ERRMODE_SILENT
+ (int)
+
+
+
+ Ne pas lever d'erreur ou d'exception si une erreur se produit.
+ Le développeur est censé vérifier explicitement les erreurs.
+ Avant PHP 8.0.0, ceci est le mode par défaut.
+ Voir erreur et gestion des erreurs
+ pour plus d'informations sur cet attribut.
+
+
+
+
+
+ PDO::ERRMODE_WARNING
+ (int)
+
+
+
+ Émet un message PHP E_WARNING si une erreur se produit.
+ Voir erreur et gestion des erreurs
+ pour plus d'informations sur cet attribut.
+
+
+
+
+
+ PDO::ERRMODE_EXCEPTION
+ (int)
+
+
+
+ Lève une PDOException si une erreur se produit.
+ Ceci est le mode par défaut à partir de PHP 8.0.0.
+ Voir erreur et gestion des erreurs
+ pour plus d'informations sur cet attribut.
+
+
+
+
+
+ PDO::CASE_NATURAL
+ (int)
+
+
+
+ Laisser les noms de colonnes tels que retournés par le pilote de base de données.
+
+
+
+
+
+ PDO::CASE_LOWER
+ (int)
+
+
+
+ Force les noms de colonnes à être en minuscules.
+
+
+
+
+
+ PDO::CASE_UPPER
+ (int)
+
+
+
+ Force les noms de colonnes à être en majuscules.
+
+
+
+
+
+ PDO::NULL_NATURAL
+ (int)
+
+
+
+
+
+
+
+
+
+ PDO::NULL_EMPTY_STRING
+ (int)
+
+
+
+
+
+
+
+
+
+ PDO::NULL_TO_STRING
+ (int)
+
+
+
+
+
+
+
+
+
+ PDO::ERR_NONE
+ (string)
+
+
+
+ Correspond à SQLSTATE '00000', ce qui signifie que l'instruction SQL a été
+ émise avec succès sans erreurs ni avertissements.
+ Cette constante est pour votre commodité lors de la vérification de PDO::errorCode ou
+ PDOStatement::errorCode pour déterminer si une erreur
+ s'est produite.
+ Vous saurez généralement si c'est le cas en examinant le
+ code de retour de la méthode qui a déclenché la condition d'erreur de toute façon.
+
+
+
+
+
+ PDO::PARAM_EVT_ALLOC
+ (int)
+
+
+
+ Événement d'allocation.
+
+
+
+
+
+ PDO::PARAM_EVT_FREE
+ (int)
+
+
+
+ Événement de désallocation.
+
+
+
+
+
+ PDO::PARAM_EVT_EXEC_PRE
+ (int)
+
+
+
+ Événement déclenché avant l'exécution d'une instruction préparée.
+
+
+
+
+
+ PDO::PARAM_EVT_EXEC_POST
+ (int)
+
+
+
+ Événement déclenché après l'exécution d'une instruction préparée.
+
+
+
+
+
+ PDO::PARAM_EVT_FETCH_PRE
+ (int)
+
+
+
+ Événement déclenché avant la récupération d'un résultat d'un ensemble de résultats.
+
+
+
+
+
+ PDO::PARAM_EVT_FETCH_POST
+ (int)
+
+
+
+ Événement déclenché après la récupération d'un résultat d'un ensemble de résultats.
+
+
+
+
+
+ PDO::PARAM_EVT_NORMALIZE
+ (int)
+
+
+
+ Événement déclenché lors de l'enregistrement d'un paramètre lié
+ permettant au pilote de normaliser le nom du paramètre.
+
+
+
+
+
+ PDO::SQLITE_DETERMINISTIC
+ (int)
+
+
+
+ Spécifie qu'une fonction créée avec PDO::sqliteCreateFunction
+ est déterministe, c'est-à-dire qu'elle renvoie toujours le même résultat donné les mêmes entrées dans
+ une seule instruction SQL. (Disponible depuis PHP 7.1.4.)
+
+
+
+
+
+
+
From 0e373bdd47c38f0efc87686f1bea0dda257b943e Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:41:05 +0100
Subject: [PATCH 58/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/pgsql/constants.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/pgsql/constants.xml | 2026 ++++++++++++++++-----------------
1 file changed, 1013 insertions(+), 1013 deletions(-)
diff --git a/reference/pgsql/constants.xml b/reference/pgsql/constants.xml
index 0fe38c6499..8933754901 100644
--- a/reference/pgsql/constants.xml
+++ b/reference/pgsql/constants.xml
@@ -1,1013 +1,1013 @@
-
-
-
-
-
-
- &reftitle.constants;
- &extension.constants;
-
-
-
-
- PGSQL_LIBPQ_VERSION
- (string)
-
-
-
- Version courte de libpq qui ne contient que des
- nombres et des points.
-
-
-
-
-
- PGSQL_LIBPQ_VERSION_STR
- (string)
-
-
-
- Antérieur à PHP 8.0.0, la version longue de libpq qui inclut les informations du compilateur.
- À partir de PHP 8.0.0, la valeur est identique à PGSQL_LIBPQ_VERSION,
- et l'utilisation de PGSQL_LIBPQ_VERSION_STR est obsolète.
-
-
-
-
-
- PGSQL_ASSOC
- (int)
-
-
-
- Passée à pg_fetch_array. Retourne un tableau
- associatif des noms et valeurs des champs.
-
-
-
-
-
- PGSQL_NUM
- (int)
-
-
-
- Passée à pg_fetch_array. Retourne un tableau à index
- numérique des numéros et valeurs des champs.
-
-
-
-
-
- PGSQL_BOTH
- (int)
-
-
-
- Passée à pg_fetch_array. Retourne un tableau des
- valeurs des champs qui est indexés numériquement (par le numéro des
- champs) et indexés littéralement (par le nom des champs).
-
-
-
-
-
- PGSQL_CONNECT_FORCE_NEW
- (int)
-
-
-
- Passée à pg_connect pour forcer la création d'une
- nouvelle connexion, plutôt que de réutiliser une connexion identique
- existante.
-
-
-
-
-
- PGSQL_CONNECT_ASYNC
- (int)
-
-
-
- Passé à la fonction pg_connect pour créer une
- connexion asynchrone.
-
-
-
-
-
- PGSQL_CONNECTION_AUTH_OK
- (int)
-
-
-
-
-
-
-
-
-
- PGSQL_CONNECTION_AWAITING_RESPONSE
- (int)
-
-
-
-
-
-
-
-
-
- PGSQL_CONNECTION_BAD
- (int)
-
-
-
- Retournée par pg_connection_status indiquant que la
- connexion à la base de données est invalide.
-
-
-
-
-
- PGSQL_CONNECTION_MADE
- (int)
-
-
-
-
-
-
-
-
-
- PGSQL_CONNECTION_OK
- (int)
-
-
-
- Retournée par pg_connection_status indiquant que la
- connexion à la base de données est valide.
-
-
-
-
-
- PGSQL_CONNECTION_SETENV
- (int)
-
-
-
-
-
-
-
-
-
- PGSQL_CONNECTION_SSL_STARTUP
- (int)
-
-
-
-
-
-
-
-
-
- PGSQL_CONNECTION_STARTED
- (int)
-
-
-
-
-
-
-
-
-
- PGSQL_SEEK_SET
- (int)
-
-
-
- Passée à pg_lo_seek. Le positionnement commencera au
- début de l'objet.
-
-
-
-
-
- PGSQL_SEEK_CUR
- (int)
-
-
-
- Passée à pg_lo_seek. Le positionnement commencera à
- la position courante.
-
-
-
-
-
- PGSQL_SEEK_END
- (int)
-
-
-
- Passée à pg_lo_seek. Le positionnement commencera à
- la fin de l'objet.
-
-
-
-
-
- PGSQL_EMPTY_QUERY
- (int)
-
-
-
- Retournée par pg_result_status. La chaîne de
- caractères envoyée au serveur était vide.
-
-
-
-
-
- PGSQL_COMMAND_OK
- (int)
-
-
-
- Retournée par pg_result_status. Commande correctement
- complétée ne retournant aucune donnée.
-
-
-
-
-
- PGSQL_TUPLES_OK
- (int)
-
-
-
- Retournée par pg_result_status. Commande
- correctement complétée retournant des données (comme
- SELECT ou SHOW).
-
-
-
-
-
- PGSQL_TUPLES_CHUNK
- (int)
-
-
-
- Retourné par pg_result_status.
- Indique la réussite de l'exécution d'une commande retournant des données en mode par blocs.
- Retourné pour les commandes SELECT lorsque
- pg_set_chunked_rows_size est défini.
- L'ensemble des résultats est divisé en plusieurs blocs, chacun contenant un nombre prédéfini de lignes.
- Disponible à partir de PHP 8.4.0 et libpq 17.
-
-
-
-
-
- PGSQL_COPY_OUT
- (int)
-
-
-
- Retournée par pg_result_status. Copie (à partir du
- serveur) de transfert de données commencée.
-
-
-
-
-
- PGSQL_COPY_IN
- (int)
-
-
-
- Retournée par pg_result_status. Copie (vers le
- serveur) de transfert de données commencée.
-
-
-
-
-
- PGSQL_BAD_RESPONSE
- (int)
-
-
-
- Retournée par pg_result_status. La réponse du
- serveur n'a pas été comprise.
-
-
-
-
-
- PGSQL_NONFATAL_ERROR
- (int)
-
-
-
- Retournée par pg_result_status. Une erreur non
- fatale (de niveau notice ou warning) s'est produite.
-
-
-
-
-
- PGSQL_FATAL_ERROR
- (int)
-
-
-
- Retournée par pg_result_status. Une erreur fatale
- s'est produite.
-
-
-
-
-
- PGSQL_TRANSACTION_IDLE
- (int)
-
-
-
- Retournée par pg_transaction_Status. La connexion
- est actuellement libre, aucune transaction en cours.
-
-
-
-
-
- PGSQL_TRANSACTION_ACTIVE
- (int)
-
-
-
- Retournée par pg_transaction_status. Une commande
- est en cours sur la connexion. Une requête a été envoyée sur la connexion
- et n'a toujours pas été complétée.
-
-
-
-
-
- PGSQL_TRANSACTION_INTRANS
- (int)
-
-
-
- Retournée par pg_transaction_status. La connexion
- est libre, dans un bloc de transaction.
-
-
-
-
-
- PGSQL_TRANSACTION_INERROR
- (int)
-
-
-
- Retournée par pg_transaction_status. La connexion
- est libre, dans un bloc de transaction échoué.
-
-
-
-
-
- PGSQL_TRANSACTION_UNKNOWN
- (int)
-
-
-
- Retournée par pg_transaction_status. La connexion
- est mauvaise.
-
-
-
-
-
- PGSQL_DIAG_SEVERITY
- (int)
-
-
-
- Passée à pg_result_error_field.
- La sévérité; le contenu du champ est ERROR,
- FATAL ou PANIC (dans un message
- d'erreur) ou WARNING, NOTICE, DEBUG,
- INFO ou LOG (dans un message
- d'avertissement) ou une traduction localisée parmi celles-ci. Toujours
- présent.
-
-
-
-
-
- PGSQL_DIAG_SQLSTATE
- (int)
-
-
-
- Passée à pg_result_error_field.
- Le code SQLSTATE pour cette erreur. Le code SQLSTATE identifie le type
- d'erreur qui s'est produite; cela peut être utilisé par des applications
- d'entrée pour effectuer des opérations spécifiques (comme la gestion
- d'erreur) en réponse à une erreur de base de données particulière.
- Ce champ ne peut être localisé et est toujours présent.
-
-
-
-
-
- PGSQL_DIAG_MESSAGE_PRIMARY
- (int)
-
-
-
- Passée à pg_result_error_field.
- Le champ d'erreur primaire interprétable pour l'utilisateur (normalement
- une ligne). Toujours présent.
-
-
-
-
-
- PGSQL_DIAG_MESSAGE_DETAIL
- (int)
-
-
-
- Passée à pg_result_error_field.
- Détail : un second optionnel message d'erreur apportant plus de détails à
- propos du problème. Peut être sur plusieurs lignes.
-
-
-
-
-
- PGSQL_DIAG_MESSAGE_HINT
- (int)
-
-
-
- Passée à pg_result_error_field.
- Conseil : une suggestion optionnelle qui indique que faire à propos du
- problème. Ceci est prévu d'être différent de l'erreur puisqu'elle offre
- un conseil (potentiellement inadéquat) plutôt que les faits véridiques.
- Peut être sur plusieurs lignes.
-
-
-
-
-
- PGSQL_DIAG_STATEMENT_POSITION
- (int)
-
-
-
- Passée à pg_result_error_field.
- Une chaîne de caractères contenant une valeur entière décimale indiquant
- une erreur de position du curseur en tant qu'index dans la requête
- originale. Le premier caractère a l'index 1 et les positions sont
- mesurées en caractères, non en octets.
-
-
-
-
-
- PGSQL_DIAG_INTERNAL_POSITION
- (int)
-
-
-
- Passée à pg_result_error_field.
- Ceci est défini étant la même chose que le champ
- PG_DIAG_STATEMENT_POSITION, mais cela est utilisé
- lorsque la position du curseur réfère à une commande générée internement
- plutôt que d'une envoyée par le client. Le champ
- PG_DIAG_INTERNAL_QUERY apparaîtra toujours lorsque
- ce champ apparaît.
-
-
-
-
-
- PGSQL_DIAG_INTERNAL_QUERY
- (int)
-
-
-
- Passée à pg_result_error_field.
- Le texte d'une commande générée internement échouée. Cela peut être, par
- exemple, une requête SQL envoyée par une fonction PL/pgSQL.
-
-
-
-
-
- PGSQL_DIAG_CONTEXT
- (int)
-
-
-
- Passée à pg_result_error_field.
- Une indication du contexte dans lequel l'erreur s'est produite.
- Présentement, ceci inclut une pile d'appel des traceback des fonctions
- procédurales actives ainsi que des requêtes générées à l'interne. Le
- traçage est une entrée par ligne, les plus récentes en premier.
-
-
-
-
-
- PGSQL_DIAG_SOURCE_FILE
- (int)
-
-
-
- Passée à pg_result_error_field.
- Le nom du fichier de l'emplacement du code source PostgreSQL où l'erreur
- a été reportée.
-
-
-
-
-
- PGSQL_DIAG_SOURCE_LINE
- (int)
-
-
-
- Passée à pg_result_error_field.
- Le nombre de ligne de l'emplacement du code source PostgreSQL où l'erreur
- a été reportée.
-
-
-
-
-
- PGSQL_DIAG_SOURCE_FUNCTION
- (int)
-
-
-
- Passée à pg_result_error_field.
- Le nom de la fonction de source code PostgreSQL reportant l'erreur.
-
-
-
-
-
- PGSQL_DIAG_SCHEMA_NAME
- (int)
-
-
-
- Disponible depuis PHP 7.3.0.
-
-
-
-
-
- PGSQL_DIAG_TABLE_NAME
- (int)
-
-
-
- Disponible depuis PHP 7.3.0.
-
-
-
-
-
- PGSQL_DIAG_COLUMN_NAME
- (int)
-
-
-
- Disponible depuis PHP 7.3.0.
-
-
-
-
-
- PGSQL_DIAG_DATATYPE_NAME
- (int)
-
-
-
- Disponible depuis PHP 7.3.0.
-
-
-
-
-
- PGSQL_DIAG_CONSTRAINT_NAME
- (int)
-
-
-
- Disponible depuis PHP 7.3.0.
-
-
-
-
-
- PGSQL_ERRORS_TERSE
- (int)
-
-
-
- Passée à pg_set_error_verbosity.
- Spécifie que les messages retournés incluent la sévérité, le texte
- primaire ainsi que la position seulement; ceci devrait entrer sur une
- seule ligne.
-
-
-
-
-
- PGSQL_ERRORS_DEFAULT
- (int)
-
-
-
- Passée à pg_set_error_verbosity.
- Le mode par défaut produit des messages qui incluent ce qui est plus haut
- et des détails en plus, conseil ou des champs contextes (ceci peut être
- sur plusieurs lignes).
-
-
-
-
-
- PGSQL_ERRORS_VERBOSE
- (int)
-
-
-
- Passée à pg_set_error_verbosity.
- Le mode verbeux inclut tous les champs disponibles.
-
-
-
-
-
- PGSQL_ERRORS_SQLSTATE
- (int)
-
-
-
- Passé à pg_set_error_verbosity.
- Inclut uniquement la gravité de l'erreur et le code d'erreur SQLSTATE.
- Si aucun code d'erreur n'est disponible, la sortie est similaire au mode
- PGSQL_ERRORS_TERSE.
- Avant PostgreSQL 11.1, la sortie est toujours la même que dans le mode PGSQL_ERRORS_TERSE.
-
-
-
-
-
-
- PGSQL_NOTICE_LAST
- (int)
-
-
-
- Utilisé par pg_last_notice.
- Disponible à partir de PHP 7.1.0.
-
-
-
-
-
- PGSQL_NOTICE_ALL
- (int)
-
-
-
- Utilisé par pg_last_notice.
- Disponible à partir de PHP 7.1.0.
-
-
-
-
-
- PGSQL_NOTICE_CLEAR
- (int)
-
-
-
- Utilisé par pg_last_notice.
- Disponible à partir de PHP 7.1.0.
-
-
-
-
-
-
- PGSQL_STATUS_LONG
- (int)
-
-
-
- Passée à pg_result_status. Indique que le code
- résultat est désiré numérique.
-
-
-
-
-
- PGSQL_STATUS_STRING
- (int)
-
-
-
- Passée à pg_result_status. Indique que le tag de
- résultat de commande est désiré textuel.
-
-
-
-
-
- PGSQL_CONV_IGNORE_DEFAULT
- (int)
-
-
-
- Passée à pg_convert.
- Ignore les valeurs par défaut dans la table pendant la conversion.
-
-
-
-
-
- PGSQL_CONV_FORCE_NULL
- (int)
-
-
-
- Passée à pg_convert.
- Utilise &null; à la place d'une chaîne de caractères vide.
-
-
-
-
-
- PGSQL_CONV_IGNORE_NOT_NULL
- (int)
-
-
-
- Passée à pg_convert.
- Ignore la conversion de &null; à l'intérieur des colonnes NOT
- NULL.
-
-
-
-
-
-
- PGSQL_DML_NO_CONV
- (int)
-
-
-
- Passée aux fonctions pg_insert, pg_select,
- pg_update et pg_delete.
- Tous les paramètres passés tel que. Un échappement manuel est nécessaire
- si les paramètres contiennent des données fournies par l'utilisateur.
- Utilisez la fonction pg_escape_string pour cela.
-
-
-
-
-
- PGSQL_DML_EXEC
- (int)
-
-
-
- Passée aux fonction pg_insert, pg_select,
- pg_update et pg_delete.
- Exécution de la requête par ces fonctions.
-
-
-
-
-
- PGSQL_DML_ASYNC
- (int)
-
-
-
- Passée aux fonctions pg_insert, pg_select,
- pg_update et pg_delete.
- Exécution asynchrone de la requête par ces fonctions.
-
-
-
-
-
- PGSQL_DML_STRING
- (int)
-
-
-
- Passée aux fonctions pg_insert, pg_select,
- pg_update et pg_delete.
- Retourne la chaîne de requête exécutée.
-
-
-
-
-
- PGSQL_DML_ESCAPE
- (int)
-
-
-
- Passée aux fonctions pg_insert, pg_select,
- pg_update et pg_delete.
- Applique un échappement interne à tous les paramètres plutôt que d'appeler la fonction
- pg_convert. Cette option ne gère pas les méta-données.
- La requête doit être aussi rapide qu'avec les fonctions
- pg_query et pg_send_query.
-
-
-
-
-
- PGSQL_POLLING_FAILED
- (int)
-
-
-
- Retournée par la fonction pg_connect_poll pour
- indiquer que la tentative de connexion a échoué.
-
-
-
-
-
- PGSQL_POLLING_READING
- (int)
-
-
-
- Retournée par la fonction pg_connect_poll pour
- indiquer que la connexion attend que le socket PostgreSQL ne soit
- accessible en lecture.
-
-
-
-
-
- PGSQL_POLLING_WRITING
- (int)
-
-
-
- Retournée par la fonction pg_connect_poll pour
- indiquer que la connexion attend que le socket PostgreSQL ne soit
- accessible en écriture.
-
-
-
-
-
- PGSQL_POLLING_OK
- (int)
-
-
-
- Retournée par la fonction pg_connect_poll
- pour indiquer que la connexion est prête à être utilisée.
-
-
-
-
-
- PGSQL_POLLING_ACTIVE
- (int)
-
-
-
- Retournée par la fonction pg_connect_poll
- pour indiquer que la connexion est actuellement active.
-
-
-
-
-
- PGSQL_DIAG_SEVERITY_NONLOCALIZED
- (int)
-
-
-
- La sévérité ; les contenus du champ sont ERROR, FATAL, ou PANIC (dans un message d'erreur), ou WARNING, NOTICE, DEBUG, INFO, ou LOG (dans un message de remarque).
- Ceci est identique au champ PG_DIAG_SEVERITY à l'exception que les contenus ne sont jamais localisé. Ceci est présent seulement dans les versions 9.6 et ultérieures / PHP 7.3.0 ou supérieure.
-
-
-
-
-
- PGSQL_SHOW_CONTEXT_NEVER
- (int)
-
-
-
- À utiliser avec pg_set_error_context_visibility,
- le contexte n'est jamais affiché.
- Disponible à partir de PHP 8.3.0.
-
-
-
-
-
- PGSQL_SHOW_CONTEXT_ERRORS
- (int)
-
-
-
- À utiliser avec pg_set_error_context_visibility,
- les champs du contexte sont inclus uniquement dans les messages d'erreur.
- C'est le comportement par défaut.
- Disponible à partir de PHP 8.3.0.
-
-
-
-
-
- PGSQL_SHOW_CONTEXT_ALWAYS
- (int)
-
-
-
- À utiliser avec pg_set_error_context_visibility,
- les champs du contexte sont inclus dans les messages d'erreur, d'avis et
- d'avertissement.
- Disponible à partir de PHP 8.3.0.
-
-
-
-
-
- PGSQL_TRACE_SUPPRESS_TIMESTAMPS
- (int)
-
-
-
- À utiliser avec pg_trace,
- l'horodatage n'est pas inclus dans les messages de trace.
- Disponible à partir de PHP 8.3.0.
-
-
-
-
-
- PGSQL_TRACE_REGRESS_MODE
- (int)
-
-
-
- À utiliser avec pg_trace,
- des champs tels que les OIDs sont inclus dans les messages de trace.
- Disponible à partir de PHP 8.3.0.
-
-
-
-
-
-
-
+
+
+
+
+
+
+ &reftitle.constants;
+ &extension.constants;
+
+
+
+
+ PGSQL_LIBPQ_VERSION
+ (string)
+
+
+
+ Version courte de libpq qui ne contient que des
+ nombres et des points.
+
+
+
+
+
+ PGSQL_LIBPQ_VERSION_STR
+ (string)
+
+
+
+ Antérieur à PHP 8.0.0, la version longue de libpq qui inclut les informations du compilateur.
+ À partir de PHP 8.0.0, la valeur est identique à PGSQL_LIBPQ_VERSION,
+ et l'utilisation de PGSQL_LIBPQ_VERSION_STR est obsolète.
+
+
+
+
+
+ PGSQL_ASSOC
+ (int)
+
+
+
+ Passée à pg_fetch_array. Retourne un tableau
+ associatif des noms et valeurs des champs.
+
+
+
+
+
+ PGSQL_NUM
+ (int)
+
+
+
+ Passée à pg_fetch_array. Retourne un tableau à index
+ numérique des numéros et valeurs des champs.
+
+
+
+
+
+ PGSQL_BOTH
+ (int)
+
+
+
+ Passée à pg_fetch_array. Retourne un tableau des
+ valeurs des champs qui est indexés numériquement (par le numéro des
+ champs) et indexés littéralement (par le nom des champs).
+
+
+
+
+
+ PGSQL_CONNECT_FORCE_NEW
+ (int)
+
+
+
+ Passée à pg_connect pour forcer la création d'une
+ nouvelle connexion, plutôt que de réutiliser une connexion identique
+ existante.
+
+
+
+
+
+ PGSQL_CONNECT_ASYNC
+ (int)
+
+
+
+ Passé à la fonction pg_connect pour créer une
+ connexion asynchrone.
+
+
+
+
+
+ PGSQL_CONNECTION_AUTH_OK
+ (int)
+
+
+
+
+
+
+
+
+
+ PGSQL_CONNECTION_AWAITING_RESPONSE
+ (int)
+
+
+
+
+
+
+
+
+
+ PGSQL_CONNECTION_BAD
+ (int)
+
+
+
+ Retournée par pg_connection_status indiquant que la
+ connexion à la base de données est invalide.
+
+
+
+
+
+ PGSQL_CONNECTION_MADE
+ (int)
+
+
+
+
+
+
+
+
+
+ PGSQL_CONNECTION_OK
+ (int)
+
+
+
+ Retournée par pg_connection_status indiquant que la
+ connexion à la base de données est valide.
+
+
+
+
+
+ PGSQL_CONNECTION_SETENV
+ (int)
+
+
+
+
+
+
+
+
+
+ PGSQL_CONNECTION_SSL_STARTUP
+ (int)
+
+
+
+
+
+
+
+
+
+ PGSQL_CONNECTION_STARTED
+ (int)
+
+
+
+
+
+
+
+
+
+ PGSQL_SEEK_SET
+ (int)
+
+
+
+ Passée à pg_lo_seek. Le positionnement commencera au
+ début de l'objet.
+
+
+
+
+
+ PGSQL_SEEK_CUR
+ (int)
+
+
+
+ Passée à pg_lo_seek. Le positionnement commencera à
+ la position courante.
+
+
+
+
+
+ PGSQL_SEEK_END
+ (int)
+
+
+
+ Passée à pg_lo_seek. Le positionnement commencera à
+ la fin de l'objet.
+
+
+
+
+
+ PGSQL_EMPTY_QUERY
+ (int)
+
+
+
+ Retournée par pg_result_status. La chaîne de
+ caractères envoyée au serveur était vide.
+
+
+
+
+
+ PGSQL_COMMAND_OK
+ (int)
+
+
+
+ Retournée par pg_result_status. Commande correctement
+ complétée ne retournant aucune donnée.
+
+
+
+
+
+ PGSQL_TUPLES_OK
+ (int)
+
+
+
+ Retournée par pg_result_status. Commande
+ correctement complétée retournant des données (comme
+ SELECT ou SHOW).
+
+
+
+
+
+ PGSQL_TUPLES_CHUNK
+ (int)
+
+
+
+ Retourné par pg_result_status.
+ Indique la réussite de l'exécution d'une commande retournant des données en mode par blocs.
+ Retourné pour les commandes SELECT lorsque
+ pg_set_chunked_rows_size est défini.
+ L'ensemble des résultats est divisé en plusieurs blocs, chacun contenant un nombre prédéfini de lignes.
+ Disponible à partir de PHP 8.4.0 et libpq 17.
+
+
+
+
+
+ PGSQL_COPY_OUT
+ (int)
+
+
+
+ Retournée par pg_result_status. Copie (à partir du
+ serveur) de transfert de données commencée.
+
+
+
+
+
+ PGSQL_COPY_IN
+ (int)
+
+
+
+ Retournée par pg_result_status. Copie (vers le
+ serveur) de transfert de données commencée.
+
+
+
+
+
+ PGSQL_BAD_RESPONSE
+ (int)
+
+
+
+ Retournée par pg_result_status. La réponse du
+ serveur n'a pas été comprise.
+
+
+
+
+
+ PGSQL_NONFATAL_ERROR
+ (int)
+
+
+
+ Retournée par pg_result_status. Une erreur non
+ fatale (de niveau notice ou warning) s'est produite.
+
+
+
+
+
+ PGSQL_FATAL_ERROR
+ (int)
+
+
+
+ Retournée par pg_result_status. Une erreur fatale
+ s'est produite.
+
+
+
+
+
+ PGSQL_TRANSACTION_IDLE
+ (int)
+
+
+
+ Retournée par pg_transaction_Status. La connexion
+ est actuellement libre, aucune transaction en cours.
+
+
+
+
+
+ PGSQL_TRANSACTION_ACTIVE
+ (int)
+
+
+
+ Retournée par pg_transaction_status. Une commande
+ est en cours sur la connexion. Une requête a été envoyée sur la connexion
+ et n'a toujours pas été complétée.
+
+
+
+
+
+ PGSQL_TRANSACTION_INTRANS
+ (int)
+
+
+
+ Retournée par pg_transaction_status. La connexion
+ est libre, dans un bloc de transaction.
+
+
+
+
+
+ PGSQL_TRANSACTION_INERROR
+ (int)
+
+
+
+ Retournée par pg_transaction_status. La connexion
+ est libre, dans un bloc de transaction échoué.
+
+
+
+
+
+ PGSQL_TRANSACTION_UNKNOWN
+ (int)
+
+
+
+ Retournée par pg_transaction_status. La connexion
+ est mauvaise.
+
+
+
+
+
+ PGSQL_DIAG_SEVERITY
+ (int)
+
+
+
+ Passée à pg_result_error_field.
+ La sévérité; le contenu du champ est ERROR,
+ FATAL ou PANIC (dans un message
+ d'erreur) ou WARNING, NOTICE, DEBUG,
+ INFO ou LOG (dans un message
+ d'avertissement) ou une traduction localisée parmi celles-ci. Toujours
+ présent.
+
+
+
+
+
+ PGSQL_DIAG_SQLSTATE
+ (int)
+
+
+
+ Passée à pg_result_error_field.
+ Le code SQLSTATE pour cette erreur. Le code SQLSTATE identifie le type
+ d'erreur qui s'est produite; cela peut être utilisé par des applications
+ d'entrée pour effectuer des opérations spécifiques (comme la gestion
+ d'erreur) en réponse à une erreur de base de données particulière.
+ Ce champ ne peut être localisé et est toujours présent.
+
+
+
+
+
+ PGSQL_DIAG_MESSAGE_PRIMARY
+ (int)
+
+
+
+ Passée à pg_result_error_field.
+ Le champ d'erreur primaire interprétable pour l'utilisateur (normalement
+ une ligne). Toujours présent.
+
+
+
+
+
+ PGSQL_DIAG_MESSAGE_DETAIL
+ (int)
+
+
+
+ Passée à pg_result_error_field.
+ Détail : un second optionnel message d'erreur apportant plus de détails à
+ propos du problème. Peut être sur plusieurs lignes.
+
+
+
+
+
+ PGSQL_DIAG_MESSAGE_HINT
+ (int)
+
+
+
+ Passée à pg_result_error_field.
+ Conseil : une suggestion optionnelle qui indique que faire à propos du
+ problème. Ceci est prévu d'être différent de l'erreur puisqu'elle offre
+ un conseil (potentiellement inadéquat) plutôt que les faits véridiques.
+ Peut être sur plusieurs lignes.
+
+
+
+
+
+ PGSQL_DIAG_STATEMENT_POSITION
+ (int)
+
+
+
+ Passée à pg_result_error_field.
+ Une chaîne de caractères contenant une valeur entière décimale indiquant
+ une erreur de position du curseur en tant qu'index dans la requête
+ originale. Le premier caractère a l'index 1 et les positions sont
+ mesurées en caractères, non en octets.
+
+
+
+
+
+ PGSQL_DIAG_INTERNAL_POSITION
+ (int)
+
+
+
+ Passée à pg_result_error_field.
+ Ceci est défini étant la même chose que le champ
+ PG_DIAG_STATEMENT_POSITION, mais cela est utilisé
+ lorsque la position du curseur réfère à une commande générée internement
+ plutôt que d'une envoyée par le client. Le champ
+ PG_DIAG_INTERNAL_QUERY apparaîtra toujours lorsque
+ ce champ apparaît.
+
+
+
+
+
+ PGSQL_DIAG_INTERNAL_QUERY
+ (int)
+
+
+
+ Passée à pg_result_error_field.
+ Le texte d'une commande générée internement échouée. Cela peut être, par
+ exemple, une requête SQL envoyée par une fonction PL/pgSQL.
+
+
+
+
+
+ PGSQL_DIAG_CONTEXT
+ (int)
+
+
+
+ Passée à pg_result_error_field.
+ Une indication du contexte dans lequel l'erreur s'est produite.
+ Présentement, ceci inclut une pile d'appel des traceback des fonctions
+ procédurales actives ainsi que des requêtes générées à l'interne. Le
+ traçage est une entrée par ligne, les plus récentes en premier.
+
+
+
+
+
+ PGSQL_DIAG_SOURCE_FILE
+ (int)
+
+
+
+ Passée à pg_result_error_field.
+ Le nom du fichier de l'emplacement du code source PostgreSQL où l'erreur
+ a été reportée.
+
+
+
+
+
+ PGSQL_DIAG_SOURCE_LINE
+ (int)
+
+
+
+ Passée à pg_result_error_field.
+ Le nombre de ligne de l'emplacement du code source PostgreSQL où l'erreur
+ a été reportée.
+
+
+
+
+
+ PGSQL_DIAG_SOURCE_FUNCTION
+ (int)
+
+
+
+ Passée à pg_result_error_field.
+ Le nom de la fonction de source code PostgreSQL reportant l'erreur.
+
+
+
+
+
+ PGSQL_DIAG_SCHEMA_NAME
+ (int)
+
+
+
+ Disponible depuis PHP 7.3.0.
+
+
+
+
+
+ PGSQL_DIAG_TABLE_NAME
+ (int)
+
+
+
+ Disponible depuis PHP 7.3.0.
+
+
+
+
+
+ PGSQL_DIAG_COLUMN_NAME
+ (int)
+
+
+
+ Disponible depuis PHP 7.3.0.
+
+
+
+
+
+ PGSQL_DIAG_DATATYPE_NAME
+ (int)
+
+
+
+ Disponible depuis PHP 7.3.0.
+
+
+
+
+
+ PGSQL_DIAG_CONSTRAINT_NAME
+ (int)
+
+
+
+ Disponible depuis PHP 7.3.0.
+
+
+
+
+
+ PGSQL_ERRORS_TERSE
+ (int)
+
+
+
+ Passée à pg_set_error_verbosity.
+ Spécifie que les messages retournés incluent la sévérité, le texte
+ primaire ainsi que la position seulement; ceci devrait entrer sur une
+ seule ligne.
+
+
+
+
+
+ PGSQL_ERRORS_DEFAULT
+ (int)
+
+
+
+ Passée à pg_set_error_verbosity.
+ Le mode par défaut produit des messages qui incluent ce qui est plus haut
+ et des détails en plus, conseil ou des champs contextes (ceci peut être
+ sur plusieurs lignes).
+
+
+
+
+
+ PGSQL_ERRORS_VERBOSE
+ (int)
+
+
+
+ Passée à pg_set_error_verbosity.
+ Le mode verbeux inclut tous les champs disponibles.
+
+
+
+
+
+ PGSQL_ERRORS_SQLSTATE
+ (int)
+
+
+
+ Passé à pg_set_error_verbosity.
+ Inclut uniquement la gravité de l'erreur et le code d'erreur SQLSTATE.
+ Si aucun code d'erreur n'est disponible, la sortie est similaire au mode
+ PGSQL_ERRORS_TERSE.
+ Avant PostgreSQL 11.1, la sortie est toujours la même que dans le mode PGSQL_ERRORS_TERSE.
+
+
+
+
+
+
+ PGSQL_NOTICE_LAST
+ (int)
+
+
+
+ Utilisé par pg_last_notice.
+ Disponible à partir de PHP 7.1.0.
+
+
+
+
+
+ PGSQL_NOTICE_ALL
+ (int)
+
+
+
+ Utilisé par pg_last_notice.
+ Disponible à partir de PHP 7.1.0.
+
+
+
+
+
+ PGSQL_NOTICE_CLEAR
+ (int)
+
+
+
+ Utilisé par pg_last_notice.
+ Disponible à partir de PHP 7.1.0.
+
+
+
+
+
+
+ PGSQL_STATUS_LONG
+ (int)
+
+
+
+ Passée à pg_result_status. Indique que le code
+ résultat est désiré numérique.
+
+
+
+
+
+ PGSQL_STATUS_STRING
+ (int)
+
+
+
+ Passée à pg_result_status. Indique que le tag de
+ résultat de commande est désiré textuel.
+
+
+
+
+
+ PGSQL_CONV_IGNORE_DEFAULT
+ (int)
+
+
+
+ Passée à pg_convert.
+ Ignore les valeurs par défaut dans la table pendant la conversion.
+
+
+
+
+
+ PGSQL_CONV_FORCE_NULL
+ (int)
+
+
+
+ Passée à pg_convert.
+ Utilise &null; à la place d'une chaîne de caractères vide.
+
+
+
+
+
+ PGSQL_CONV_IGNORE_NOT_NULL
+ (int)
+
+
+
+ Passée à pg_convert.
+ Ignore la conversion de &null; à l'intérieur des colonnes NOT
+ NULL.
+
+
+
+
+
+
+ PGSQL_DML_NO_CONV
+ (int)
+
+
+
+ Passée aux fonctions pg_insert, pg_select,
+ pg_update et pg_delete.
+ Tous les paramètres passés tel que. Un échappement manuel est nécessaire
+ si les paramètres contiennent des données fournies par l'utilisateur.
+ Utilisez la fonction pg_escape_string pour cela.
+
+
+
+
+
+ PGSQL_DML_EXEC
+ (int)
+
+
+
+ Passée aux fonction pg_insert, pg_select,
+ pg_update et pg_delete.
+ Exécution de la requête par ces fonctions.
+
+
+
+
+
+ PGSQL_DML_ASYNC
+ (int)
+
+
+
+ Passée aux fonctions pg_insert, pg_select,
+ pg_update et pg_delete.
+ Exécution asynchrone de la requête par ces fonctions.
+
+
+
+
+
+ PGSQL_DML_STRING
+ (int)
+
+
+
+ Passée aux fonctions pg_insert, pg_select,
+ pg_update et pg_delete.
+ Retourne la chaîne de requête exécutée.
+
+
+
+
+
+ PGSQL_DML_ESCAPE
+ (int)
+
+
+
+ Passée aux fonctions pg_insert, pg_select,
+ pg_update et pg_delete.
+ Applique un échappement interne à tous les paramètres plutôt que d'appeler la fonction
+ pg_convert. Cette option ne gère pas les méta-données.
+ La requête doit être aussi rapide qu'avec les fonctions
+ pg_query et pg_send_query.
+
+
+
+
+
+ PGSQL_POLLING_FAILED
+ (int)
+
+
+
+ Retournée par la fonction pg_connect_poll pour
+ indiquer que la tentative de connexion a échoué.
+
+
+
+
+
+ PGSQL_POLLING_READING
+ (int)
+
+
+
+ Retournée par la fonction pg_connect_poll pour
+ indiquer que la connexion attend que le socket PostgreSQL ne soit
+ accessible en lecture.
+
+
+
+
+
+ PGSQL_POLLING_WRITING
+ (int)
+
+
+
+ Retournée par la fonction pg_connect_poll pour
+ indiquer que la connexion attend que le socket PostgreSQL ne soit
+ accessible en écriture.
+
+
+
+
+
+ PGSQL_POLLING_OK
+ (int)
+
+
+
+ Retournée par la fonction pg_connect_poll
+ pour indiquer que la connexion est prête à être utilisée.
+
+
+
+
+
+ PGSQL_POLLING_ACTIVE
+ (int)
+
+
+
+ Retournée par la fonction pg_connect_poll
+ pour indiquer que la connexion est actuellement active.
+
+
+
+
+
+ PGSQL_DIAG_SEVERITY_NONLOCALIZED
+ (int)
+
+
+
+ La sévérité ; les contenus du champ sont ERROR, FATAL, ou PANIC (dans un message d'erreur), ou WARNING, NOTICE, DEBUG, INFO, ou LOG (dans un message de remarque).
+ Ceci est identique au champ PG_DIAG_SEVERITY à l'exception que les contenus ne sont jamais localisé. Ceci est présent seulement dans les versions 9.6 et ultérieures / PHP 7.3.0 ou supérieure.
+
+
+
+
+
+ PGSQL_SHOW_CONTEXT_NEVER
+ (int)
+
+
+
+ À utiliser avec pg_set_error_context_visibility,
+ le contexte n'est jamais affiché.
+ Disponible à partir de PHP 8.3.0.
+
+
+
+
+
+ PGSQL_SHOW_CONTEXT_ERRORS
+ (int)
+
+
+
+ À utiliser avec pg_set_error_context_visibility,
+ les champs du contexte sont inclus uniquement dans les messages d'erreur.
+ C'est le comportement par défaut.
+ Disponible à partir de PHP 8.3.0.
+
+
+
+
+
+ PGSQL_SHOW_CONTEXT_ALWAYS
+ (int)
+
+
+
+ À utiliser avec pg_set_error_context_visibility,
+ les champs du contexte sont inclus dans les messages d'erreur, d'avis et
+ d'avertissement.
+ Disponible à partir de PHP 8.3.0.
+
+
+
+
+
+ PGSQL_TRACE_SUPPRESS_TIMESTAMPS
+ (int)
+
+
+
+ À utiliser avec pg_trace,
+ l'horodatage n'est pas inclus dans les messages de trace.
+ Disponible à partir de PHP 8.3.0.
+
+
+
+
+
+ PGSQL_TRACE_REGRESS_MODE
+ (int)
+
+
+
+ À utiliser avec pg_trace,
+ des champs tels que les OIDs sont inclus dans les messages de trace.
+ Disponible à partir de PHP 8.3.0.
+
+
+
+
+
+
+
From 0c4431e39e0189ed601feb92c226c8d8703a9489 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:41:06 +0100
Subject: [PATCH 59/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/phar/book.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/phar/book.xml | 378 ++++++++++++++++++++--------------------
1 file changed, 189 insertions(+), 189 deletions(-)
diff --git a/reference/phar/book.xml b/reference/phar/book.xml
index 8f48fc1a0c..092966e3fb 100644
--- a/reference/phar/book.xml
+++ b/reference/phar/book.xml
@@ -1,189 +1,189 @@
-
-
-
-
-
-
-
- Phar
-
-
-
- &reftitle.intro;
-
- L'extension phar fournit un moyen de mettre une application PHP complète dans un fichier unique
- appelé un "phar" (PHP Archive) pour une installation et une configuration aisées.
- En plus de ce service, l'extension fournit aussi une classe d'abstraction de format de fichier
- pour créer et manipuler des fichiers tar et zip à travers la classe
- PharData, tout comme
- PDO fournit une interface unifiée pour accéder à des bases de données différentes. Mais à l'inverse de PDO,
- qui ne peut pas transposer les données d'une base à l'autre, Phar a la possibilité de convertir des fichiers tar,
- zip et phar avec une simple ligne de code. Regardez
- Phar::convertToExecutable pour avoir un exemple.
-
-
- Qu'est-ce que phar? Les archives phar sont en fait un moyen pratique de grouper
- plusieurs fichiers en un seul. Ainsi, une archive phar permet de distribuer une
- application PHP complète dans un fichier unique et de l'exécuter à partir de ce fichier
- sans pour autant l'extraire sur le disque. De plus, des archives phar peuvent être exécutées
- par PHP aussi facilement que n'importe quel autre fichier, aussi bien en ligne de commande que via
- un serveur web. Phar est une sorte de clé USB pour les applications PHP.
-
-
- Phar implémente cette fonctionnalité via un
- flux. Normalement, pour utiliser un fichier externe à partir d'un script PHP, vous
- devez utiliser la fonction include:
-
-
-
- Utiliser un fichier externe
-
-
- ]]>
-
-
-
-
- On peut considérer que PHP traduit en fait
- /chemin/vers/le/fichier/externe.php en un
- flux file:///chemin/vers/le/fichier/externe.php, et qu'il
- utilise de façon cachée les fonctions de flux de fichiers plats pour accéder
- à des fichiers locaux.
-
-
- Pour utiliser un fichier nommé fichier.php contenu dans une archive phar
- /chemin/vers/monphar.phar,
- la syntaxe est quasi similaire à la syntaxe file:// ci-dessus.
-
-
-
- Utilier un fichier contenu dans une archive phar
-
-
- ]]>
-
-
-
-
- En fait, on peut traiter une archive phar comme s'il s'agissait d'un disque externe, en utilisant
- n'importe laquelle des fonctions relatives à fopen, opendir et
- mkdir pour lire, changer ou créer des nouveaux fichiers ou répertoires au sein de
- l'archive phar. Cela permet à des applications PHP complètes d'être distribuées dans un seul fichier
- et d'être exécutées à partir de celui-ci
-
-
- L'utilisation la plus courant d'une archive phar est de distribuer une application complète
- en un seul fichier. Par exemple, l'installeur PEAR qui est inclus avec les versions de PHP
- est distribué grâce à une archive phar. pour utiliser l'archive phar ainsi distribuée, celle-ci
- peut-être exécutée via la ligne de commande ou via un navigateur web.
-
-
- Les archives phar peuvent être distribuées sous forme de fichiers tar,
- de fichiers zip ou de fichiers phar spécialement conçus
- pour l'extension phar. Chaque format de fichier a ses avantages et ses inconvénients. Les fichiers
- zip et tar peuvent être extraits par n'importe quel outil tiers qui peut lire le format, mais
- requièrent l'extension phar pour être exécutés par PHP. Le format de fichier phar est unique et dédié
- à l'extension phar et peut être créé uniquement par celle-ci ou par le paquet PEAR
- PHP_Archive, mais a l'avantage de ne pas
- nécessiter l'installation de l'extension phar pour que l'application empaquetée puisse être exécutée.
-
-
- En d'autres mots, même avec l'extension phar désactivée, il est possible d'exécuter ou d'inclure
- une archive basée sur phar. Accéder à des fichiers individuels au sein d'une archive phar n'est
- possible qu'avec l'extension phar à moins que l'archive phar n'ait été créée par PHP_Archive.
-
-
- L'extension phar est aussi capable de convertir une archive phar à partir d'un tar vers un fichier zip
- ou phar en une seule commande :
-
-
-
- Convertir une archive phar au format tar
-
- convertToExecutable(Phar::TAR, Phar::GZ); // produit monphar.phar.tar.gz
- ?>
- ]]>
-
-
-
-
- Phar peut compresser des fichiers individuels ou une archive entière en
- utilisant la compression gzip ou
- bzip2, et peut vérifier l'intégrité de l'archive
- automatiquement en utilisant des fonctions de signature MD5, SHA-1, SHA-256 ou SHA-512.
-
-
- Enfin, l'extension phar est orientée sécurité, elle désactive par défaut les accès
- en écriture sur les archives phar exécutables et requiert la désactivation au niveau système
- du paramètre phar.readonly du php.ini pour créer ou modifier des archives phar.
- Des archives tar et zip sans le marqueur exécutable peuvent toujours être créées ou modifiées
- en utilisant la classe PharData.
-
-
- Si vous créez des applications dans le but de les distribuer, vous devriez lire
- Comment créer des archives Phar. Si vous voulez
- davantage d'informations sur les différences entre les formats de fichier que phar supporte,
- vous devriez lire Phar, Tar et Zip.
-
-
- Si vous utilisez des applications phar, il y a des astuces très utiles dans
- Comment utiliser des archives Phar.
-
-
- Le mot phar est la contraction de PHP et de
- Archive et est grandement inspiré
- du mot jar (Java Archive) familier aux développeurs Java.
-
-
- L'implémentation des archives Phar est basée sur le paquet PEAR
- PHP_Archive, et
- les détails d'implémentations sont les mêmes, bien que l'extension Phar
- soit plus puissante. En plus, celle-ci permet à la plupart des applications
- PHP d'être exécutées sans modification alors que les archives basées sur PHP_Archive
- requièrent souvent beaucoup de modifications pour fonctionner.
-
-
-
-
- &reference.phar.setup;
- &reference.phar.constants;
- &reference.phar.using;
- &reference.phar.creating;
- &reference.phar.fileformat;
- &reference.phar.Phar;
- &reference.phar.PharData;
- &reference.phar.PharFileInfo;
- &reference.phar.PharException;
-
-
-
-
-
+
+
+
+
+
+
+
+ Phar
+
+
+
+ &reftitle.intro;
+
+ L'extension phar fournit un moyen de mettre une application PHP complète dans un fichier unique
+ appelé un "phar" (PHP Archive) pour une installation et une configuration aisées.
+ En plus de ce service, l'extension fournit aussi une classe d'abstraction de format de fichier
+ pour créer et manipuler des fichiers tar et zip à travers la classe
+ PharData, tout comme
+ PDO fournit une interface unifiée pour accéder à des bases de données différentes. Mais à l'inverse de PDO,
+ qui ne peut pas transposer les données d'une base à l'autre, Phar a la possibilité de convertir des fichiers tar,
+ zip et phar avec une simple ligne de code. Regardez
+ Phar::convertToExecutable pour avoir un exemple.
+
+
+ Qu'est-ce que phar? Les archives phar sont en fait un moyen pratique de grouper
+ plusieurs fichiers en un seul. Ainsi, une archive phar permet de distribuer une
+ application PHP complète dans un fichier unique et de l'exécuter à partir de ce fichier
+ sans pour autant l'extraire sur le disque. De plus, des archives phar peuvent être exécutées
+ par PHP aussi facilement que n'importe quel autre fichier, aussi bien en ligne de commande que via
+ un serveur web. Phar est une sorte de clé USB pour les applications PHP.
+
+
+ Phar implémente cette fonctionnalité via un
+ flux. Normalement, pour utiliser un fichier externe à partir d'un script PHP, vous
+ devez utiliser la fonction include:
+
+
+
+ Utiliser un fichier externe
+
+
+ ]]>
+
+
+
+
+ On peut considérer que PHP traduit en fait
+ /chemin/vers/le/fichier/externe.php en un
+ flux file:///chemin/vers/le/fichier/externe.php, et qu'il
+ utilise de façon cachée les fonctions de flux de fichiers plats pour accéder
+ à des fichiers locaux.
+
+
+ Pour utiliser un fichier nommé fichier.php contenu dans une archive phar
+ /chemin/vers/monphar.phar,
+ la syntaxe est quasi similaire à la syntaxe file:// ci-dessus.
+
+
+
+ Utilier un fichier contenu dans une archive phar
+
+
+ ]]>
+
+
+
+
+ En fait, on peut traiter une archive phar comme s'il s'agissait d'un disque externe, en utilisant
+ n'importe laquelle des fonctions relatives à fopen, opendir et
+ mkdir pour lire, changer ou créer des nouveaux fichiers ou répertoires au sein de
+ l'archive phar. Cela permet à des applications PHP complètes d'être distribuées dans un seul fichier
+ et d'être exécutées à partir de celui-ci
+
+
+ L'utilisation la plus courant d'une archive phar est de distribuer une application complète
+ en un seul fichier. Par exemple, l'installeur PEAR qui est inclus avec les versions de PHP
+ est distribué grâce à une archive phar. pour utiliser l'archive phar ainsi distribuée, celle-ci
+ peut-être exécutée via la ligne de commande ou via un navigateur web.
+
+
+ Les archives phar peuvent être distribuées sous forme de fichiers tar,
+ de fichiers zip ou de fichiers phar spécialement conçus
+ pour l'extension phar. Chaque format de fichier a ses avantages et ses inconvénients. Les fichiers
+ zip et tar peuvent être extraits par n'importe quel outil tiers qui peut lire le format, mais
+ requièrent l'extension phar pour être exécutés par PHP. Le format de fichier phar est unique et dédié
+ à l'extension phar et peut être créé uniquement par celle-ci ou par le paquet PEAR
+ PHP_Archive, mais a l'avantage de ne pas
+ nécessiter l'installation de l'extension phar pour que l'application empaquetée puisse être exécutée.
+
+
+ En d'autres mots, même avec l'extension phar désactivée, il est possible d'exécuter ou d'inclure
+ une archive basée sur phar. Accéder à des fichiers individuels au sein d'une archive phar n'est
+ possible qu'avec l'extension phar à moins que l'archive phar n'ait été créée par PHP_Archive.
+
+
+ L'extension phar est aussi capable de convertir une archive phar à partir d'un tar vers un fichier zip
+ ou phar en une seule commande :
+
+
+
+ Convertir une archive phar au format tar
+
+ convertToExecutable(Phar::TAR, Phar::GZ); // produit monphar.phar.tar.gz
+ ?>
+ ]]>
+
+
+
+
+ Phar peut compresser des fichiers individuels ou une archive entière en
+ utilisant la compression gzip ou
+ bzip2, et peut vérifier l'intégrité de l'archive
+ automatiquement en utilisant des fonctions de signature MD5, SHA-1, SHA-256 ou SHA-512.
+
+
+ Enfin, l'extension phar est orientée sécurité, elle désactive par défaut les accès
+ en écriture sur les archives phar exécutables et requiert la désactivation au niveau système
+ du paramètre phar.readonly du php.ini pour créer ou modifier des archives phar.
+ Des archives tar et zip sans le marqueur exécutable peuvent toujours être créées ou modifiées
+ en utilisant la classe PharData.
+
+
+ Si vous créez des applications dans le but de les distribuer, vous devriez lire
+ Comment créer des archives Phar. Si vous voulez
+ davantage d'informations sur les différences entre les formats de fichier que phar supporte,
+ vous devriez lire Phar, Tar et Zip.
+
+
+ Si vous utilisez des applications phar, il y a des astuces très utiles dans
+ Comment utiliser des archives Phar.
+
+
+ Le mot phar est la contraction de PHP et de
+ Archive et est grandement inspiré
+ du mot jar (Java Archive) familier aux développeurs Java.
+
+
+ L'implémentation des archives Phar est basée sur le paquet PEAR
+ PHP_Archive, et
+ les détails d'implémentations sont les mêmes, bien que l'extension Phar
+ soit plus puissante. En plus, celle-ci permet à la plupart des applications
+ PHP d'être exécutées sans modification alors que les archives basées sur PHP_Archive
+ requièrent souvent beaucoup de modifications pour fonctionner.
+
+
+
+
+ &reference.phar.setup;
+ &reference.phar.constants;
+ &reference.phar.using;
+ &reference.phar.creating;
+ &reference.phar.fileformat;
+ &reference.phar.Phar;
+ &reference.phar.PharData;
+ &reference.phar.PharFileInfo;
+ &reference.phar.PharException;
+
+
+
+
+
From dc9e718145c5789f384747de68c8e99b70682a78 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:41:06 +0100
Subject: [PATCH 60/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/phar/fileformat.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/phar/fileformat.xml | 1044 ++++++++++++++++-----------------
1 file changed, 522 insertions(+), 522 deletions(-)
diff --git a/reference/phar/fileformat.xml b/reference/phar/fileformat.xml
index 9d84bf45d7..24694604ce 100644
--- a/reference/phar/fileformat.xml
+++ b/reference/phar/fileformat.xml
@@ -1,522 +1,522 @@
-
-
-
-
-
- Qu'est-ce qui fait d'un phar un phar et pas un tar ou un zip ?
-
- Les constituants de toutes les archives Phar, indépendamment du format de fichier
-
- Toutes les archives Phar contiennent de trois à quatre sections:
-
-
-
- Un conteneur
-
-
-
-
- Un manifeste décrivant le contenu
-
-
-
-
- Le contenu du fichier
-
-
-
-
- Une signature (facultative) pour vérifier l'intégrité
- (uniquement avec le format de fichier phar)
-
-
-
-
-
-
- Le conteneur de fichier Phar
-
- Un conteneur Phar est un simple fichier PHP. Le conteneur minimal contient :
-
-
-
-
-
-
-
- Un conteneur doit contenir au moins le jeton __HALT_COMPILER();
- en guise de conclusion. Typiquement, un conteneur comportera les fonctionnalités
- de chargement suivantes :
-
-
-
-
-
-
-
- Il n'y a aucune restriction sur le contenu d'un conteneur Phar, si ce n'est le besoin d'être conclu
- par __HALT_COMPILER();. Le tag fermant PHP ]]> peut être
- inclus ou omis, mais il ne peut y avoir plus d'un espace entre le ; et le tag fermant
- ]]> sans quoi l'extension phar ne sera pas capable de lire le
- manifeste de l'archive.
-
-
- Dans une archive phar basée sur tar ou zip, le conteneur est stocké dans le fichier
- .phar/stub.php. Le conteneur par défaut des archives Phar basées sur
- phar contient approximativement 7ko de code pour extraire le contenu du phar et l'exécuter.
- Regardez la fonction Phar::createDefaultStub pour davantage de détails.
-
-
- L'alias phar est stocké, dans le cas d'une archive phar basée sur tar ou zip, dans le fichier
- .phar/alias.txt en tant que texte plein.
-
-
-
- Comparaison entre Phar, Tar et Zip
-
- Quels sont les avantages et les inconvénients de chacun des trois formats supportés
- par l'extension phar ? Ce tableau tente de répondre à cette question.
-
- Tableau comparatif : Phar, Tar et Zip
-
-
-
- Fonctionnalité
- Phar
- Tar
- Zip
-
-
-
-
- Format de fichier standard
- Non
- Oui
- Oui
-
-
- Peut être exécuté sans l'extension Phar
- [1]
-
- Oui
- Non
- Non
-
-
- Compression par fichier
- Oui
- Non
- Oui
-
-
- Compression pour toute l'archive
- Oui
- Oui
- Non
-
-
- Validation par signature de toute l'archive
- Oui
- Oui
- Oui
-
-
- Support d'applications spécifiquement Web
- Oui
- Oui
- Oui
-
-
- Métadonnées par fichier
- Oui
- Oui
- Oui
-
-
- Métadonnées pour toute l'archive
- Oui
- Oui
- Oui
-
-
- Création/modification d'archive
- [2]
-
- Oui
- Oui
- Oui
-
-
- Support complet de toutes les fonctions de flux
- Oui
- Oui
- Oui
-
-
- Peut être créée/modifiée même si phar.readonly=1
- [3]
-
- Non
- Oui
- Oui
-
-
-
-
-
-
-
-
- [1] PHP ne peut accéder directement au contenu d'une archive Phar sans que l'extension
- Phar soit installée si elle utilise un conteneur
- qui extrait le contenu de l'archive phar. Le conteneur
- créé par Phar::createDefaultStub extrait
- l'archive phar et exécute son contenu à partir d'un répertoire temporaire si
- aucune extension phar n'est trouvée.
-
-
-
-
-
-
- [2] Tous les accès en écriture nécessitent que phar.readonly soit
- désactivé dans le php.ini ou directement via la ligne de commande.
-
-
-
-
-
-
- [3] Seules les archives tar ou zip sans .phar dans leur
- nom et sans conteneur exécutable .phar/stub.php
- peuvent être créées si phar.readonly=1.
-
-
-
-
-
- Les phars basés sur Tar
-
- Les archives basées sur le format de fichier tar sont conformes au format moderne
- USTAR. Le design des en-têtes du fichier tar le rend plus efficace que le format de fichier zip
- et aussi efficace que le format de fichier phar quand il s'agit d'accéder aux données.
- Les noms de fichiers sont limités à 255 octets, y compris le chemin complet au sein de l'archive phar
- basée sur tar. Ces archives peuvent être intégralement compressées au format gzip ou bzip2 tout
- en restant exécutables par l'extension Phar.
-
-
- Il y a un support limité pour lire les tarballs dans le format pax interchange,
- mais tous les en-têtes pax reconnues (actuellement, typeflag x
- et g) sont silencieusement ignorés.
- Il y a aussi un support limité pour les GNU Tar Archives;
- actuellement, les en-têtes ././@LongLink sont résolus.
-
-
- Pour compresser une archive entière, utilisez Phar::compress.
- Pour décompresser une archive entière, utilisez Phar::decompress.
-
-
-
- Les phars basés sur Zip
-
- Les archives basées sur le format de fichier zip supportent de nombreuses fonctionnalités
- incluses dans le format zip. Les métadonnées par fichier ou sur toute l'archive sont stockées
- dans les commentaires du fichier zip et de l'archive zip en tant que chaîne de caractères sérialisée.
- Les commentaires zip déjà existants seront lus sans problème en tant que chaîne. Les lectures/écritures
- compressées sont supportées par la compression zlib DEFLATE, et uniquement les lectures compressées par
- la compression bzip2. Il n'y a pas de limite sur le nombre de fichiers au sein d'une archive phar
- basée sur zip. Les répertoires vides sont stockés dans l'archive zip comme des fichiers avec un slash final,
- comme mon/repertoire/
-
-
-
- Le format de fichier Phar
-
- Le format de fichier phar est composé de conteneur/manifeste/contenu/signature, et stocke
- les informations cruciales de ce qui est contenu dans l'archive phar dans son
- manifeste.
-
-
- Le manifeste Phar est un format hautement optimisé qui permet la spécification fichier par fichier
- de la compression, des permissions et même des métadonnées utilisateur tels que l'utilisateur ou le
- groupe propriétaire. Toutes les valeurs de plus d'un octet sont stockées sous forme petit-boutiste,
- A l'exception de la version de l'API qui est stockée pour des raisons historiques en 3 morceaux
- grand-boutistes.
-
-
- Tous les drapeaux non utilisés sont réservés pour un usage futur et ne doivent pas être utilisés
- pour stocker des informations personnalisées. Utilisez les métadonnées par fichier pour stocker
- des métadonnées personnalisées sur des fichiers particuliers.
-
-
- Le format de fichier basique du manifeste d'une archive Phar est le suivant :
-
-
-
- Format global du manifeste Phar
-
-
-
- Taille en octets
- Description
-
-
-
-
- 4 octets
- Longueur du manifeste en octets (limitée à 1 Mo)
-
-
- 4 octets
- Nombre de fichiers dans le Phar
-
-
- 2 octets
- Version de l'API du manifeste Phar (à ce jour 1.0.0)
-
-
- 4 octets
- Drapeaux "bitmappés" globaux du Phar
-
-
- 4 octets
- Longueur de l'alias Phar
-
-
- ??
- L'alias Phar (longueur basée sur la valeur précédente)
-
-
- 4 octets
- Longueur des métadonnées Phar (0 si aucune)
-
-
- ??
- métadonnées Phar sérialisées, stockées dans un format serialize
-
-
- au moins 24 * nombre d'octets des entrées
- Entrées pour chaque fichier
-
-
-
-
-
-
-
- Drapeaux "bitmappés" globaux du Phar
-
- Voici les drapeaux "bitmappés" actuellement reconnus par l'extension Phar
- pour le bitmap plein global de Phar :
-
-
-
- Valeurs de bitmap reconnues
-
-
-
- Valeur
- Description
-
-
-
-
- 0x00010000
- Si présent, le Phar contient une signature de vérification
-
-
- 0x00001000
-
- Si présent, le Phar contient au moins 1 fichier qui est
- compressé grâce à zlib DEFLATE
-
-
-
- 0x00002000
-
- Si présent, le Phar contient au moins 1 fichier qui est
- compressé grâce à bzip2
-
-
-
-
-
-
-
-
- Définition des entrées du manifeste Phar
-
- Chaque fichier du manifeste contient les informations suivantes :
-
-
-
- Entrée du manifeste Phar
-
-
-
- Taille en octets
- Description
-
-
-
-
- 4 octets
- Longueur du nom de fichier en octets
-
-
- ??
- Nom de fichier (longueur basée sur la valeur précédente)
-
-
- 4 octets
- Taille du fichier décompressé en octets
-
-
- 4 octets
- Timestamp Unix du fichier
-
-
- 4 octets
- Taille du fichier compressé en octets
-
-
- 4 octets
- Somme de contrôle CRC32 du contenu décompressé du fichier
-
-
- 4 octets
- Drapeaux bitmappés spécifiques au fichier
-
-
- 4 octets
- Longueur des métadonnées du fichier sérialisées (0 si aucune)
-
-
- ??
- métadonnées du fichier sérialisées, stockées dans un format serialize
-
-
-
-
-
-
- À noter qu'à partir de l'API 1.1.1, les répertoires vides sont stockés comme des noms de fichier
- avec un slash final comme mon/repertoire/
-
-
- Les valeurs reconnues de drapeaux bitmappés spécifiques au fichier sont :
-
-
-
- Valeurs reconnues de bitmap
-
-
-
- Valeur
- Description
-
-
-
-
- 0x000001FF
-
- Ces bits sont réservés pour définir des permissions spécifiques au fichier.
- Celles-ci sont utilisées pour fstat
- et peuvent être utilisées pour recréer les permissions souhaitées en cas d'extraction.
-
-
-
- 0x00001000
-
- Si présent, le fichier est compressé grâce à zlib DEFLATE
-
-
-
- 0x00002000
-
- Si présent, le fichier est compressé grâce à bzip2
-
-
-
-
-
-
-
-
- Phar Signature format
-
- Les Phar qui contiennent une signature ont toujours la signature ajoutée à la fin du Phar,
- après le chargeur, le manifeste et le contenu.
- Les types de signature supportés à ce jour sont MD5, SHA1, SHA256, SHA512,
- et OPENSSL.
-
-
-
- Format de signature
-
-
-
- Longueur en octets
- Description
-
-
-
-
- variant
-
- La signature actuelle, 20 octets pour une SHA1,
- 16 octets pour une MD5, 32 octets pour une SHA256,
- et 64 octets pour une SHA512. La longueur d'une signature
- OPENSSL dépend de la taille de la clé privée.
-
-
-
- 4 octets
-
- Les drapeaux de signature. 0x0001 est utilisé pour
- définir une signature MD5, 0x0002 pour une SHA1,
- 0x0003 pour une SHA256 et 0x0004
- pour une SHA512. Le support des signatures SHA256 et SHA512 est disponible
- à partir de la version 1.1.0 de l'API.
- 0x0010 est utilisé pour définir une signature OPENSSL,
- qui est disponible à partir de la version 1.1.1 de l'API, si OpenSSL est disponible.
-
-
-
- 4 octets
-
- GBMB magique utilisé pour définir la présence d'une signature.
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+ Qu'est-ce qui fait d'un phar un phar et pas un tar ou un zip ?
+
+ Les constituants de toutes les archives Phar, indépendamment du format de fichier
+
+ Toutes les archives Phar contiennent de trois à quatre sections:
+
+
+
+ Un conteneur
+
+
+
+
+ Un manifeste décrivant le contenu
+
+
+
+
+ Le contenu du fichier
+
+
+
+
+ Une signature (facultative) pour vérifier l'intégrité
+ (uniquement avec le format de fichier phar)
+
+
+
+
+
+
+ Le conteneur de fichier Phar
+
+ Un conteneur Phar est un simple fichier PHP. Le conteneur minimal contient :
+
+
+
+
+
+
+
+ Un conteneur doit contenir au moins le jeton __HALT_COMPILER();
+ en guise de conclusion. Typiquement, un conteneur comportera les fonctionnalités
+ de chargement suivantes :
+
+
+
+
+
+
+
+ Il n'y a aucune restriction sur le contenu d'un conteneur Phar, si ce n'est le besoin d'être conclu
+ par __HALT_COMPILER();. Le tag fermant PHP ]]> peut être
+ inclus ou omis, mais il ne peut y avoir plus d'un espace entre le ; et le tag fermant
+ ]]> sans quoi l'extension phar ne sera pas capable de lire le
+ manifeste de l'archive.
+
+
+ Dans une archive phar basée sur tar ou zip, le conteneur est stocké dans le fichier
+ .phar/stub.php. Le conteneur par défaut des archives Phar basées sur
+ phar contient approximativement 7ko de code pour extraire le contenu du phar et l'exécuter.
+ Regardez la fonction Phar::createDefaultStub pour davantage de détails.
+
+
+ L'alias phar est stocké, dans le cas d'une archive phar basée sur tar ou zip, dans le fichier
+ .phar/alias.txt en tant que texte plein.
+
+
+
+ Comparaison entre Phar, Tar et Zip
+
+ Quels sont les avantages et les inconvénients de chacun des trois formats supportés
+ par l'extension phar ? Ce tableau tente de répondre à cette question.
+
+ Tableau comparatif : Phar, Tar et Zip
+
+
+
+ Fonctionnalité
+ Phar
+ Tar
+ Zip
+
+
+
+
+ Format de fichier standard
+ Non
+ Oui
+ Oui
+
+
+ Peut être exécuté sans l'extension Phar
+ [1]
+
+ Oui
+ Non
+ Non
+
+
+ Compression par fichier
+ Oui
+ Non
+ Oui
+
+
+ Compression pour toute l'archive
+ Oui
+ Oui
+ Non
+
+
+ Validation par signature de toute l'archive
+ Oui
+ Oui
+ Oui
+
+
+ Support d'applications spécifiquement Web
+ Oui
+ Oui
+ Oui
+
+
+ Métadonnées par fichier
+ Oui
+ Oui
+ Oui
+
+
+ Métadonnées pour toute l'archive
+ Oui
+ Oui
+ Oui
+
+
+ Création/modification d'archive
+ [2]
+
+ Oui
+ Oui
+ Oui
+
+
+ Support complet de toutes les fonctions de flux
+ Oui
+ Oui
+ Oui
+
+
+ Peut être créée/modifiée même si phar.readonly=1
+ [3]
+
+ Non
+ Oui
+ Oui
+
+
+
+
+
+
+
+
+ [1] PHP ne peut accéder directement au contenu d'une archive Phar sans que l'extension
+ Phar soit installée si elle utilise un conteneur
+ qui extrait le contenu de l'archive phar. Le conteneur
+ créé par Phar::createDefaultStub extrait
+ l'archive phar et exécute son contenu à partir d'un répertoire temporaire si
+ aucune extension phar n'est trouvée.
+
+
+
+
+
+
+ [2] Tous les accès en écriture nécessitent que phar.readonly soit
+ désactivé dans le php.ini ou directement via la ligne de commande.
+
+
+
+
+
+
+ [3] Seules les archives tar ou zip sans .phar dans leur
+ nom et sans conteneur exécutable .phar/stub.php
+ peuvent être créées si phar.readonly=1.
+
+
+
+
+
+ Les phars basés sur Tar
+
+ Les archives basées sur le format de fichier tar sont conformes au format moderne
+ USTAR. Le design des en-têtes du fichier tar le rend plus efficace que le format de fichier zip
+ et aussi efficace que le format de fichier phar quand il s'agit d'accéder aux données.
+ Les noms de fichiers sont limités à 255 octets, y compris le chemin complet au sein de l'archive phar
+ basée sur tar. Ces archives peuvent être intégralement compressées au format gzip ou bzip2 tout
+ en restant exécutables par l'extension Phar.
+
+
+ Il y a un support limité pour lire les tarballs dans le format pax interchange,
+ mais tous les en-têtes pax reconnues (actuellement, typeflag x
+ et g) sont silencieusement ignorés.
+ Il y a aussi un support limité pour les GNU Tar Archives;
+ actuellement, les en-têtes ././@LongLink sont résolus.
+
+
+ Pour compresser une archive entière, utilisez Phar::compress.
+ Pour décompresser une archive entière, utilisez Phar::decompress.
+
+
+
+ Les phars basés sur Zip
+
+ Les archives basées sur le format de fichier zip supportent de nombreuses fonctionnalités
+ incluses dans le format zip. Les métadonnées par fichier ou sur toute l'archive sont stockées
+ dans les commentaires du fichier zip et de l'archive zip en tant que chaîne de caractères sérialisée.
+ Les commentaires zip déjà existants seront lus sans problème en tant que chaîne. Les lectures/écritures
+ compressées sont supportées par la compression zlib DEFLATE, et uniquement les lectures compressées par
+ la compression bzip2. Il n'y a pas de limite sur le nombre de fichiers au sein d'une archive phar
+ basée sur zip. Les répertoires vides sont stockés dans l'archive zip comme des fichiers avec un slash final,
+ comme mon/repertoire/
+
+
+
+ Le format de fichier Phar
+
+ Le format de fichier phar est composé de conteneur/manifeste/contenu/signature, et stocke
+ les informations cruciales de ce qui est contenu dans l'archive phar dans son
+ manifeste.
+
+
+ Le manifeste Phar est un format hautement optimisé qui permet la spécification fichier par fichier
+ de la compression, des permissions et même des métadonnées utilisateur tels que l'utilisateur ou le
+ groupe propriétaire. Toutes les valeurs de plus d'un octet sont stockées sous forme petit-boutiste,
+ A l'exception de la version de l'API qui est stockée pour des raisons historiques en 3 morceaux
+ grand-boutistes.
+
+
+ Tous les drapeaux non utilisés sont réservés pour un usage futur et ne doivent pas être utilisés
+ pour stocker des informations personnalisées. Utilisez les métadonnées par fichier pour stocker
+ des métadonnées personnalisées sur des fichiers particuliers.
+
+
+ Le format de fichier basique du manifeste d'une archive Phar est le suivant :
+
+
+
+ Format global du manifeste Phar
+
+
+
+ Taille en octets
+ Description
+
+
+
+
+ 4 octets
+ Longueur du manifeste en octets (limitée à 1 Mo)
+
+
+ 4 octets
+ Nombre de fichiers dans le Phar
+
+
+ 2 octets
+ Version de l'API du manifeste Phar (à ce jour 1.0.0)
+
+
+ 4 octets
+ Drapeaux "bitmappés" globaux du Phar
+
+
+ 4 octets
+ Longueur de l'alias Phar
+
+
+ ??
+ L'alias Phar (longueur basée sur la valeur précédente)
+
+
+ 4 octets
+ Longueur des métadonnées Phar (0 si aucune)
+
+
+ ??
+ métadonnées Phar sérialisées, stockées dans un format serialize
+
+
+ au moins 24 * nombre d'octets des entrées
+ Entrées pour chaque fichier
+
+
+
+
+
+
+
+ Drapeaux "bitmappés" globaux du Phar
+
+ Voici les drapeaux "bitmappés" actuellement reconnus par l'extension Phar
+ pour le bitmap plein global de Phar :
+
+
+
+ Valeurs de bitmap reconnues
+
+
+
+ Valeur
+ Description
+
+
+
+
+ 0x00010000
+ Si présent, le Phar contient une signature de vérification
+
+
+ 0x00001000
+
+ Si présent, le Phar contient au moins 1 fichier qui est
+ compressé grâce à zlib DEFLATE
+
+
+
+ 0x00002000
+
+ Si présent, le Phar contient au moins 1 fichier qui est
+ compressé grâce à bzip2
+
+
+
+
+
+
+
+
+ Définition des entrées du manifeste Phar
+
+ Chaque fichier du manifeste contient les informations suivantes :
+
+
+
+ Entrée du manifeste Phar
+
+
+
+ Taille en octets
+ Description
+
+
+
+
+ 4 octets
+ Longueur du nom de fichier en octets
+
+
+ ??
+ Nom de fichier (longueur basée sur la valeur précédente)
+
+
+ 4 octets
+ Taille du fichier décompressé en octets
+
+
+ 4 octets
+ Timestamp Unix du fichier
+
+
+ 4 octets
+ Taille du fichier compressé en octets
+
+
+ 4 octets
+ Somme de contrôle CRC32 du contenu décompressé du fichier
+
+
+ 4 octets
+ Drapeaux bitmappés spécifiques au fichier
+
+
+ 4 octets
+ Longueur des métadonnées du fichier sérialisées (0 si aucune)
+
+
+ ??
+ métadonnées du fichier sérialisées, stockées dans un format serialize
+
+
+
+
+
+
+ À noter qu'à partir de l'API 1.1.1, les répertoires vides sont stockés comme des noms de fichier
+ avec un slash final comme mon/repertoire/
+
+
+ Les valeurs reconnues de drapeaux bitmappés spécifiques au fichier sont :
+
+
+
+ Valeurs reconnues de bitmap
+
+
+
+ Valeur
+ Description
+
+
+
+
+ 0x000001FF
+
+ Ces bits sont réservés pour définir des permissions spécifiques au fichier.
+ Celles-ci sont utilisées pour fstat
+ et peuvent être utilisées pour recréer les permissions souhaitées en cas d'extraction.
+
+
+
+ 0x00001000
+
+ Si présent, le fichier est compressé grâce à zlib DEFLATE
+
+
+
+ 0x00002000
+
+ Si présent, le fichier est compressé grâce à bzip2
+
+
+
+
+
+
+
+
+ Phar Signature format
+
+ Les Phar qui contiennent une signature ont toujours la signature ajoutée à la fin du Phar,
+ après le chargeur, le manifeste et le contenu.
+ Les types de signature supportés à ce jour sont MD5, SHA1, SHA256, SHA512,
+ et OPENSSL.
+
+
+
+ Format de signature
+
+
+
+ Longueur en octets
+ Description
+
+
+
+
+ variant
+
+ La signature actuelle, 20 octets pour une SHA1,
+ 16 octets pour une MD5, 32 octets pour une SHA256,
+ et 64 octets pour une SHA512. La longueur d'une signature
+ OPENSSL dépend de la taille de la clé privée.
+
+
+
+ 4 octets
+
+ Les drapeaux de signature. 0x0001 est utilisé pour
+ définir une signature MD5, 0x0002 pour une SHA1,
+ 0x0003 pour une SHA256 et 0x0004
+ pour une SHA512. Le support des signatures SHA256 et SHA512 est disponible
+ à partir de la version 1.1.0 de l'API.
+ 0x0010 est utilisé pour définir une signature OPENSSL,
+ qui est disponible à partir de la version 1.1.1 de l'API, si OpenSSL est disponible.
+
+
+
+ 4 octets
+
+ GBMB magique utilisé pour définir la présence d'une signature.
+
+
+
+
+
-
-
- &ini.descriptions.title;
-
-
-
-
-
- phar.readonly
- bool
-
-
-
- Cette option désactive la création ou la modification des
- archives Phar en utilisant le flux phar
- ou le support en écriture sur les objets Phar.
- Ce paramètre devrait toujours être activé sur des machines
- de production, car le support en écriture sur les archives
- phar pourrait mener à la création de virus basés sur PHP en
- cas d'utilisation conjuguée avec des vulnérabilités communes.
-
-
-
- Ce paramètre ne peut être désactivé que dans &php.ini;
- pour des raisons de sécurité. Si phar.readonly
- est désactivé dans php.ini, l'utilisateur peut
- activer phar.readonly dans un script
- ou le désactiver plus tard. Si phar.readonly est
- activé dans &php.ini;, un script pourrait "réactiver"
- sans danger la variable INI, mais ne pourrait pas la désactiver.
-
-
-
-
-
-
-
- phar.require_hash
- bool
-
-
-
- Cette option forcera toutes les archives Phar ouvertes à contenir
- un type de signature (à ce jour MD5, SHA1, SHA256, SHA512 et OpenSSL sont
- supportés), et toute archive Phar ne contenant
- pas de signature sera rejetée.
-
-
-
- Ce paramètre ne peut être désactivé que dans &php.ini;.
- Si phar.require_hash
- est désactivé dans &php.ini;, l'utilisateur peut
- activer phar.require_hash dans un script
- ou le désactiver plus tard. Si phar.require_hash est
- activé dans &php.ini;, un script pourrait "réactiver"
- sans danger la variable INI, mais ne pourrait pas la désactiver.
-
-
- Ce paramètre n'affecte pas la lecture des fichiers tar avec la classe
- PharData.
-
-
-
-
- phar.require_hash ne fournis pas de sécurité en soi,
- c'est uniquement une mesure contre exécuter accidentellement des archives
- Phar corrompu, car n'importe qui peut trafiquer avec le Phar peut
- facilement corriger la signature après.
-
-
-
-
-
-
-
- phar.cache_list
- string
-
-
-
- Permet aux correspondances d'archives phar d'être traitées au
- démarrage du serveur web, augmentant de ce fait les performance
- d'accès aux fichiers contenus dans une archive phar et les rendant
- très proche d'un accès à des fichiers d'une installation classique
- sur disque.
-
- Exemple d'utilisation de phar.cache_list
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+ &reftitle.runtime;
+ &extension.runtime;
+
+
+
+
+ &ini.descriptions.title;
+
+
+
+
+
+ phar.readonly
+ bool
+
+
+
+ Cette option désactive la création ou la modification des
+ archives Phar en utilisant le flux phar
+ ou le support en écriture sur les objets Phar.
+ Ce paramètre devrait toujours être activé sur des machines
+ de production, car le support en écriture sur les archives
+ phar pourrait mener à la création de virus basés sur PHP en
+ cas d'utilisation conjuguée avec des vulnérabilités communes.
+
+
+
+ Ce paramètre ne peut être désactivé que dans &php.ini;
+ pour des raisons de sécurité. Si phar.readonly
+ est désactivé dans php.ini, l'utilisateur peut
+ activer phar.readonly dans un script
+ ou le désactiver plus tard. Si phar.readonly est
+ activé dans &php.ini;, un script pourrait "réactiver"
+ sans danger la variable INI, mais ne pourrait pas la désactiver.
+
+
+
+
+
+
+
+ phar.require_hash
+ bool
+
+
+
+ Cette option forcera toutes les archives Phar ouvertes à contenir
+ un type de signature (à ce jour MD5, SHA1, SHA256, SHA512 et OpenSSL sont
+ supportés), et toute archive Phar ne contenant
+ pas de signature sera rejetée.
+
+
+
+ Ce paramètre ne peut être désactivé que dans &php.ini;.
+ Si phar.require_hash
+ est désactivé dans &php.ini;, l'utilisateur peut
+ activer phar.require_hash dans un script
+ ou le désactiver plus tard. Si phar.require_hash est
+ activé dans &php.ini;, un script pourrait "réactiver"
+ sans danger la variable INI, mais ne pourrait pas la désactiver.
+
+
+ Ce paramètre n'affecte pas la lecture des fichiers tar avec la classe
+ PharData.
+
+
+
+
+ phar.require_hash ne fournis pas de sécurité en soi,
+ c'est uniquement une mesure contre exécuter accidentellement des archives
+ Phar corrompu, car n'importe qui peut trafiquer avec le Phar peut
+ facilement corriger la signature après.
+
+
+
+
+
+
+
+ phar.cache_list
+ string
+
+
+
+ Permet aux correspondances d'archives phar d'être traitées au
+ démarrage du serveur web, augmentant de ce fait les performance
+ d'accès aux fichiers contenus dans une archive phar et les rendant
+ très proche d'un accès à des fichiers d'une installation classique
+ sur disque.
+
+ Exemple d'utilisation de phar.cache_list
+
+
+
+
+
+
+
+
+
+
+
+
From 696034d871429c6c1f40e1a28dcca15d951c06a0 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:41:07 +0100
Subject: [PATCH 62/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/phar/using.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/phar/using.xml | 784 +++++++++++++++++++--------------------
1 file changed, 392 insertions(+), 392 deletions(-)
diff --git a/reference/phar/using.xml b/reference/phar/using.xml
index 013ab63c24..b6ee19825a 100644
--- a/reference/phar/using.xml
+++ b/reference/phar/using.xml
@@ -1,392 +1,392 @@
-
-
-
-
-
- Utiliser les archives Phar
-
-
- Utiliser les archives Phar : Introduction
-
- Les archives Phar sont identiques dans le concept aux archives JAR
- de Java, mais sont conçues plus spécifiquement pour les besoins et
- la flexibilité des applications PHP. Une archive Phar est utilisée
- pour distribuer une application PHP complète ou une bibliothèque
- sous forme d'un fichier unique.
- Une application sous forme d'archive Phar est utilisée exactement de
- la même façon que n'importe quelle autre application PHP :
-
-
-
-
-
- L'utilisation d'une bibliothèque sous forme d'archive Phar est la
- même que n'importe quelle autre bibliothèque PHP :
-
-
-
-
-
-]]>
-
-
-
-
- Le flux phar fournit le cœur de l'extension phar, et
- est décrit en détails ici.
- Le flux phar permet l'accès aux fichiers contenus dans une archive phar via les
- fonctions standards de fichier fopen, opendir, et
- toute autre fonctionnant sur des fichiers normaux. Le flux phar supporte toutes
- les opérations de lecture/écriture à la fois sur les fichiers et sur les répertoires.
-
-
-
-
-
-]]>
-
-
-
-
- La classe Phar implémente des fonctionnalités
- avancées pour accéder aux fichiers et créer des archives phar. La
- classe Phar est décrite en détails ici.
-
-
-
-
-getFileName() . "\n";
- echo file_get_contents($file->getPathName()) . "\n"; // affiche le contenu;
- }
- if (isset($p['fichier/interne.php'])) {
- var_dump($p['fichier/interne.php']->getMetadata());
- }
-
- // crée un nouveau phar - phar.readonly doit être à 0 dans php.ini
- // phar.readonly est activé par défaut pour des raisons de sécurité.
- // Sur des serveurs de production, les Phars n'ont pas besoin d'être créés,
- // juste d'être exécutés.
- if (Phar::canWrite()) {
- $p = new Phar('nouveauphar.tar.phar', 0, 'nouveauphar.tar.phar');
- // On crée une archive Phar basée sur tar, compressée par gzip (.tar.gz)
- $p = $p->convertToExecutable(Phar::TAR, Phar::GZ);
-
- // crée une transaction - rien n'est écrit dans nouveauphar.phar
- // jusqu'à ce que stopBuffering() ne soit appelé, bien qu'un stockage temporaire soit requis
- $p->startBuffering();
- // ajoute tous les fichiers de /chemin/vers/leprojet dans le phar avec le préfixe "projet"
- $p->buildFromIterator(new RecursiveIteratorIterator(new RecursiveDirectoryIterator('/chemin/vers/leprojet')), '/chemin/vers/');
-
- // ajoute un nouveau fichier en utilisant l'API d'accès par tableau
- $p['fichier1.txt'] = 'Information';
- $fp = fopen('grosfichier.dat', 'rb');
- // copie toutes les données du flux
- $p['data/grosfichier.dat'] = $fp;
-
- if (Phar::canCompress(Phar::GZ)) {
- $p['data/grosfichier.dat']->compress(Phar::GZ);
- }
-
- $p['images/wow.jpg'] = file_get_contents('images/wow.jpg');
- // toute valeur peut être sauvegardée comme métadonnée spécifique au fichier
- $p['images/wow.jpg']->setMetadata(array('mime-type' => 'image/jpeg'));
- $p['index.php'] = file_get_contents('index.php');
- $p->setMetadata(array('bootstrap' => 'index.php'));
-
- // sauvegarde l'archive phar sur le disque
- $p->stopBuffering();
- }
-} catch (Exception $e) {
- echo 'N\'a pas pu ouvrir le Phar: ', $e;
-}
-?>
-]]>
-
-
-
-
- D'autre part, la vérification du contenu du fichier phar peut être faite en utilisant un des
- algorithme de signature symétrique (MD5, SHA1, SHA256 et SHA512 si ext/hash est activée) et
- en utilisant la signature asymétrique par clé publique/privée de OpenSSL.
- Pour tirer parti de la signature OpenSSL, vous devez générer une paire de clés publique/privée et
- utiliser la clé privée pour signer avec Phar::setSignatureAlgorithm. En plus, la
- clé publique, extraite en utilisant ce code :
-
-
- ]]>
-
- doit être sauvegardée à part de l'archive phar qu'elle vérifie. Si l'archive phar est sauvegardée
- en tant que /chemin/vers/mon.phar, la clé publique doit être sauvegardée en tant
- que /chemin/vers/mon.phar.pubkey, sans quoi phar ne sera pas capable de vérifier
- la signature OpenSSL.
-
-
- La classe Phar fournit aussi trois méthodes statiques, Phar::webPhar,
- Phar::mungServer et Phar::interceptFileFuncs qui sont cruciales
- pour empaqueter des applications PHP visant à être utilisée sur un système de fichiers classique ou en tant qu'application web.
- Phar::webPhar implémente un contrôleur qui route les appels HTTP vers le bon endroit de l'archive phar.
- Phar::mungServer est utilisé pour modifier les valeurs du tableau $_SERVER pour
- dire aux applications d'utiliser ces valeurs. Phar::interceptFileFuncs dit à Phar d'intercepter les appels à
- fopen, file_get_contents, opendir, et
- à toutes les fonctions basées sur stat (file_exists, is_readable, etc) et
- route tous les chemins relatif vers les bons endroits de l'archive phar.
-
-
- Par exemple, empaqueter une version de la célèbre application phpMyAdmin dans une archive phar nécessite
- juste ce simple script et, dès lors, phpMyAdmin.phar.tar.php peut être accédé comme un fichier
- classique à partir de votre serveur web, après avoir modifié le couple utilisateur/motdepasse :
-
-
-
-
- startBuffering();
-$a["phpMyAdmin-2.11.3-english/config.inc.php"] = 'setStub('stopBuffering();
-?>
- ]]>
-
-
-
-
-
- Utiliser les archives Phar : le flux phar
-
- Le flux Phar supporte totalement fopen pour les
- lectures/écritures (pas les concaténations), unlink, stat,
- fstat, fseek, rename,
- et les opérations de flux sur les répertoires opendir, et rmdir
- et mkdir.
-
-
- La compression et les métadonnées individuelles par fichier peuvent aussi être manipulées
- au sein de l'archive Phar en utilisant les contextes de flux :
-
-
-
-
-
- array('compress' => Phar::GZ)),
- array('metadata' => array('user' => 'cellog')));
-file_put_contents('phar://mon.phar/unfichier.php', 0, $context);
-?>
-]]>
-
-
-
-
- Le flux phar n'agit pas sur les fichiers distants et ne peut pas
- considérer les fichiers distants, etc... même si les options INI
- allow_url_fopen et
- allow_url_include sont
- désactivées.
-
-
- Bien qu'il soit possible de créer des archives phar de zéro en utilisant juste les
- opérations sur les flux, il est préférable d'utiliser la fonctionnalité incluse dans
- la classe Phar. Le flux est mieux utilisé pour les opérations de lecture.
-
-
-
- Utiliser les archives Phar : les classes Phar et PharData
-
- La classe Phar supporte la lecture et la manipulation des
- archives Phar, ainsi que l'itération à travers la fonctionnalité héritée de la classe
- RecursiveDirectoryIterator.
- Avec le support de l'interface ArrayAccess,
- les fichiers contenus dans une archive Phar peuvent être accédés
- comme s'ils étaient membres d'un tableau associatif.
-
-
- La classe PharData étend la classe Phar, et
- permet la création et la modification d'archives tar et zip non exécutables (données) même si
- phar.readonly=1 dans php.ini. Ainsi,
- PharData::setAlias et PharData::setStub
- sont toutes deux désactivées car les concepts d'alias et de conteneur sont restreints aux
- archives phar exécutables.
-
-
- Il est important de noter que quand une archive Phar est créée, le chemin complet
- doit être passé au constructeur de l'objet Phar.
- Un chemin relatif empêcherait l'initialisation.
-
-
- En supposant que $p est un objet initialisé de cette façon :
-
-
-
-
-
-]]>
-
-
-
-
- Une archive Phar vide sera créée en tant que /chemin/vers/monphar.phar,
- ou si /chemin/vers/monphar.phar existe déjà, il sera ouvert
- de nouveau. Le terme monphar.phar démontre le concept d'un alias
- qui peut être utilisé pour référencer /chemin/vers/monphar.phar dans des URL comme ceci :
-
-
-
-
-
-]]>
-
-
-
-
- Avec l'objet Phar$p nouvellement créé,
- les choses suivantes sont possibles :
-
-
-
- $a = $p['fichier.php'] crée une PharFileInfo
- qui réfère au contenu de phar://monphar.phar/fichier.php
-
-
-
-
- $p['fichier.php'] = $v crée un nouveau fichier
- (phar://monphar.phar/fichier.php), ou écrase
- un fichier existant au sein de monphar.phar. $v
- peut être soit une chaîne ou un pointeur vers un fichier ouvert, dans quel cas
- le contenu du fichier sera utilisé pour créer le nouveau fichier. Notez que
- $p->addFromString('fichier.php', $v) est équivalent en termes de
- fonctionnalité au cas ci-dessus. Il est aussi possible d'ajouter le contenu d'un fichier
- avec $p->addFile('/chemin/vers/fichier.php', 'fichier.php').
- Enfin, un répertoire vide peut être créé avec
- $p->addEmptyDir('vide').
-
-
-
-
- isset($p['fichier.php']) peut être utilisé pour déterminer
- si phar://monphar.phar/fichier.php existe au sein de
- monphar.phar.
-
-
-
-
- unset($p['fichier.php']) efface
- phar://monphar.phar/fichier.php de
- monphar.phar.
-
-
-
-
-
- De plus, l'objet Phar est le seul moyen
- d'accéder aux métadonnées spécifiques de Phar, via
- Phar::getMetadata,
- et c'est aussi le seul moyen de régler ou de récupérer le
- conteneur du chargeur de l'archive Phar via
- Phar::getStub et
- Phar::setStub.
- De plus, la compression pour l'archive Phar entière peut
- être manipulée seulement via la classe Phar.
-
-
- La liste complète des fonctionnalités de l'objet
- Phar est documentée ci-dessous.
-
-
- La classe PharFileInfo étend la classe
- SplFileInfo
- et ajoute plusieurs méthodes pour manipuler les métadonnées
- spécifiques à Phar d'un fichier contenu dans un Phar,
- telles que manipuler la compression ou les métadonnées.
-
-
-
-
-
+
+
+
+
+
+ Utiliser les archives Phar
+
+
+ Utiliser les archives Phar : Introduction
+
+ Les archives Phar sont identiques dans le concept aux archives JAR
+ de Java, mais sont conçues plus spécifiquement pour les besoins et
+ la flexibilité des applications PHP. Une archive Phar est utilisée
+ pour distribuer une application PHP complète ou une bibliothèque
+ sous forme d'un fichier unique.
+ Une application sous forme d'archive Phar est utilisée exactement de
+ la même façon que n'importe quelle autre application PHP :
+
+
+
+
+
+ L'utilisation d'une bibliothèque sous forme d'archive Phar est la
+ même que n'importe quelle autre bibliothèque PHP :
+
+
+
+
+
+]]>
+
+
+
+
+ Le flux phar fournit le cœur de l'extension phar, et
+ est décrit en détails ici.
+ Le flux phar permet l'accès aux fichiers contenus dans une archive phar via les
+ fonctions standards de fichier fopen, opendir, et
+ toute autre fonctionnant sur des fichiers normaux. Le flux phar supporte toutes
+ les opérations de lecture/écriture à la fois sur les fichiers et sur les répertoires.
+
+
+
+
+
+]]>
+
+
+
+
+ La classe Phar implémente des fonctionnalités
+ avancées pour accéder aux fichiers et créer des archives phar. La
+ classe Phar est décrite en détails ici.
+
+
+
+
+getFileName() . "\n";
+ echo file_get_contents($file->getPathName()) . "\n"; // affiche le contenu;
+ }
+ if (isset($p['fichier/interne.php'])) {
+ var_dump($p['fichier/interne.php']->getMetadata());
+ }
+
+ // crée un nouveau phar - phar.readonly doit être à 0 dans php.ini
+ // phar.readonly est activé par défaut pour des raisons de sécurité.
+ // Sur des serveurs de production, les Phars n'ont pas besoin d'être créés,
+ // juste d'être exécutés.
+ if (Phar::canWrite()) {
+ $p = new Phar('nouveauphar.tar.phar', 0, 'nouveauphar.tar.phar');
+ // On crée une archive Phar basée sur tar, compressée par gzip (.tar.gz)
+ $p = $p->convertToExecutable(Phar::TAR, Phar::GZ);
+
+ // crée une transaction - rien n'est écrit dans nouveauphar.phar
+ // jusqu'à ce que stopBuffering() ne soit appelé, bien qu'un stockage temporaire soit requis
+ $p->startBuffering();
+ // ajoute tous les fichiers de /chemin/vers/leprojet dans le phar avec le préfixe "projet"
+ $p->buildFromIterator(new RecursiveIteratorIterator(new RecursiveDirectoryIterator('/chemin/vers/leprojet')), '/chemin/vers/');
+
+ // ajoute un nouveau fichier en utilisant l'API d'accès par tableau
+ $p['fichier1.txt'] = 'Information';
+ $fp = fopen('grosfichier.dat', 'rb');
+ // copie toutes les données du flux
+ $p['data/grosfichier.dat'] = $fp;
+
+ if (Phar::canCompress(Phar::GZ)) {
+ $p['data/grosfichier.dat']->compress(Phar::GZ);
+ }
+
+ $p['images/wow.jpg'] = file_get_contents('images/wow.jpg');
+ // toute valeur peut être sauvegardée comme métadonnée spécifique au fichier
+ $p['images/wow.jpg']->setMetadata(array('mime-type' => 'image/jpeg'));
+ $p['index.php'] = file_get_contents('index.php');
+ $p->setMetadata(array('bootstrap' => 'index.php'));
+
+ // sauvegarde l'archive phar sur le disque
+ $p->stopBuffering();
+ }
+} catch (Exception $e) {
+ echo 'N\'a pas pu ouvrir le Phar: ', $e;
+}
+?>
+]]>
+
+
+
+
+ D'autre part, la vérification du contenu du fichier phar peut être faite en utilisant un des
+ algorithme de signature symétrique (MD5, SHA1, SHA256 et SHA512 si ext/hash est activée) et
+ en utilisant la signature asymétrique par clé publique/privée de OpenSSL.
+ Pour tirer parti de la signature OpenSSL, vous devez générer une paire de clés publique/privée et
+ utiliser la clé privée pour signer avec Phar::setSignatureAlgorithm. En plus, la
+ clé publique, extraite en utilisant ce code :
+
+
+ ]]>
+
+ doit être sauvegardée à part de l'archive phar qu'elle vérifie. Si l'archive phar est sauvegardée
+ en tant que /chemin/vers/mon.phar, la clé publique doit être sauvegardée en tant
+ que /chemin/vers/mon.phar.pubkey, sans quoi phar ne sera pas capable de vérifier
+ la signature OpenSSL.
+
+
+ La classe Phar fournit aussi trois méthodes statiques, Phar::webPhar,
+ Phar::mungServer et Phar::interceptFileFuncs qui sont cruciales
+ pour empaqueter des applications PHP visant à être utilisée sur un système de fichiers classique ou en tant qu'application web.
+ Phar::webPhar implémente un contrôleur qui route les appels HTTP vers le bon endroit de l'archive phar.
+ Phar::mungServer est utilisé pour modifier les valeurs du tableau $_SERVER pour
+ dire aux applications d'utiliser ces valeurs. Phar::interceptFileFuncs dit à Phar d'intercepter les appels à
+ fopen, file_get_contents, opendir, et
+ à toutes les fonctions basées sur stat (file_exists, is_readable, etc) et
+ route tous les chemins relatif vers les bons endroits de l'archive phar.
+
+
+ Par exemple, empaqueter une version de la célèbre application phpMyAdmin dans une archive phar nécessite
+ juste ce simple script et, dès lors, phpMyAdmin.phar.tar.php peut être accédé comme un fichier
+ classique à partir de votre serveur web, après avoir modifié le couple utilisateur/motdepasse :
+
+
+
+
+ startBuffering();
+$a["phpMyAdmin-2.11.3-english/config.inc.php"] = 'setStub('stopBuffering();
+?>
+ ]]>
+
+
+
+
+
+ Utiliser les archives Phar : le flux phar
+
+ Le flux Phar supporte totalement fopen pour les
+ lectures/écritures (pas les concaténations), unlink, stat,
+ fstat, fseek, rename,
+ et les opérations de flux sur les répertoires opendir, et rmdir
+ et mkdir.
+
+
+ La compression et les métadonnées individuelles par fichier peuvent aussi être manipulées
+ au sein de l'archive Phar en utilisant les contextes de flux :
+
+
+
+
+
+ array('compress' => Phar::GZ)),
+ array('metadata' => array('user' => 'cellog')));
+file_put_contents('phar://mon.phar/unfichier.php', 0, $context);
+?>
+]]>
+
+
+
+
+ Le flux phar n'agit pas sur les fichiers distants et ne peut pas
+ considérer les fichiers distants, etc... même si les options INI
+ allow_url_fopen et
+ allow_url_include sont
+ désactivées.
+
+
+ Bien qu'il soit possible de créer des archives phar de zéro en utilisant juste les
+ opérations sur les flux, il est préférable d'utiliser la fonctionnalité incluse dans
+ la classe Phar. Le flux est mieux utilisé pour les opérations de lecture.
+
+
+
+ Utiliser les archives Phar : les classes Phar et PharData
+
+ La classe Phar supporte la lecture et la manipulation des
+ archives Phar, ainsi que l'itération à travers la fonctionnalité héritée de la classe
+ RecursiveDirectoryIterator.
+ Avec le support de l'interface ArrayAccess,
+ les fichiers contenus dans une archive Phar peuvent être accédés
+ comme s'ils étaient membres d'un tableau associatif.
+
+
+ La classe PharData étend la classe Phar, et
+ permet la création et la modification d'archives tar et zip non exécutables (données) même si
+ phar.readonly=1 dans php.ini. Ainsi,
+ PharData::setAlias et PharData::setStub
+ sont toutes deux désactivées car les concepts d'alias et de conteneur sont restreints aux
+ archives phar exécutables.
+
+
+ Il est important de noter que quand une archive Phar est créée, le chemin complet
+ doit être passé au constructeur de l'objet Phar.
+ Un chemin relatif empêcherait l'initialisation.
+
+
+ En supposant que $p est un objet initialisé de cette façon :
+
+
+
+
+
+]]>
+
+
+
+
+ Une archive Phar vide sera créée en tant que /chemin/vers/monphar.phar,
+ ou si /chemin/vers/monphar.phar existe déjà, il sera ouvert
+ de nouveau. Le terme monphar.phar démontre le concept d'un alias
+ qui peut être utilisé pour référencer /chemin/vers/monphar.phar dans des URL comme ceci :
+
+
+
+
+
+]]>
+
+
+
+
+ Avec l'objet Phar$p nouvellement créé,
+ les choses suivantes sont possibles :
+
+
+
+ $a = $p['fichier.php'] crée une PharFileInfo
+ qui réfère au contenu de phar://monphar.phar/fichier.php
+
+
+
+
+ $p['fichier.php'] = $v crée un nouveau fichier
+ (phar://monphar.phar/fichier.php), ou écrase
+ un fichier existant au sein de monphar.phar. $v
+ peut être soit une chaîne ou un pointeur vers un fichier ouvert, dans quel cas
+ le contenu du fichier sera utilisé pour créer le nouveau fichier. Notez que
+ $p->addFromString('fichier.php', $v) est équivalent en termes de
+ fonctionnalité au cas ci-dessus. Il est aussi possible d'ajouter le contenu d'un fichier
+ avec $p->addFile('/chemin/vers/fichier.php', 'fichier.php').
+ Enfin, un répertoire vide peut être créé avec
+ $p->addEmptyDir('vide').
+
+
+
+
+ isset($p['fichier.php']) peut être utilisé pour déterminer
+ si phar://monphar.phar/fichier.php existe au sein de
+ monphar.phar.
+
+
+
+
+ unset($p['fichier.php']) efface
+ phar://monphar.phar/fichier.php de
+ monphar.phar.
+
+
+
+
+
+ De plus, l'objet Phar est le seul moyen
+ d'accéder aux métadonnées spécifiques de Phar, via
+ Phar::getMetadata,
+ et c'est aussi le seul moyen de régler ou de récupérer le
+ conteneur du chargeur de l'archive Phar via
+ Phar::getStub et
+ Phar::setStub.
+ De plus, la compression pour l'archive Phar entière peut
+ être manipulée seulement via la classe Phar.
+
+
+ La liste complète des fonctionnalités de l'objet
+ Phar est documentée ci-dessous.
+
+
+ La classe PharFileInfo étend la classe
+ SplFileInfo
+ et ajoute plusieurs méthodes pour manipuler les métadonnées
+ spécifiques à Phar d'un fichier contenu dans un Phar,
+ telles que manipuler la compression ou les métadonnées.
+
+
+
+
+
From ba918befac7ea19dab5b49fc6dd28fc296cfdf97 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:41:07 +0100
Subject: [PATCH 63/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/pthreads/configure.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/pthreads/configure.xml | 94 ++++++++++++++++----------------
1 file changed, 47 insertions(+), 47 deletions(-)
diff --git a/reference/pthreads/configure.xml b/reference/pthreads/configure.xml
index 87b84117b5..11194125b8 100644
--- a/reference/pthreads/configure.xml
+++ b/reference/pthreads/configure.xml
@@ -1,47 +1,47 @@
-
-
-
-
-
- &reftitle.install;
-
-
- Utiliser lors de la
- compilation de PHP.
-
-
-
- Les utilisateurs Windows doivent inclure php_pthreads.dll
- dans le &php.ini;
-
-
-
-
- Les utilisateurs de Windows doivent également s'assurer que
- pthreadVC2.dll (inclus dans la distribution)
- est présent dans un des dossiers spécifiés dans la variable d'environnement
- PATH.
-
-
-
-
-
+
+
+
+
+
+ &reftitle.install;
+
+
+ Utiliser lors de la
+ compilation de PHP.
+
+
+
+ Les utilisateurs Windows doivent inclure php_pthreads.dll
+ dans le &php.ini;
+
+
+
+
+ Les utilisateurs de Windows doivent également s'assurer que
+ pthreadVC2.dll (inclus dans la distribution)
+ est présent dans un des dossiers spécifiés dans la variable d'environnement
+ PATH.
+
+
+
+
+
From 15db861cb5bf59fea19040fc1dd528399e27cad7 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:41:08 +0100
Subject: [PATCH 64/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/radius/constants.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/radius/constants.xml | 4008 ++++++++++++++++----------------
1 file changed, 2004 insertions(+), 2004 deletions(-)
diff --git a/reference/radius/constants.xml b/reference/radius/constants.xml
index f3e6cb92f3..0482f2fe15 100644
--- a/reference/radius/constants.xml
+++ b/reference/radius/constants.xml
@@ -1,2004 +1,2004 @@
-
-
-
-
-
- &reftitle.constants;
- &extension.constants;
-
-
-
-
- RADIUS_MPPE_KEY_LEN
- (int)
-
-
-
- La longueur maximale des clés MPPE.
-
-
-
-
-
-
- RADIUS Options
-
-
- Plusieurs fonctions RADIUS acceptent des options sous forme de masque d'octets.
- Les constantes représentant ces options sont listées ci-dessous.
-
-
-
-
-
- RADIUS_OPTION_SALT
- (int)
-
-
-
- Lorsque définie, cette option fera que la valeur de l'attribut
- sera chiffré salt.
-
-
-
-
-
- RADIUS_OPTION_TAGGED
- (int)
-
-
-
- Lorsque définie, cette option fera que la valeur de l'attribut
- proviendra qu paramètre tag.
-
-
-
-
-
-
-
- Types de paquets RADIUS
-
-
- Les paquets RADIUS, qu'ils soient démandés ou obtenus en réponse, incluent
- toujours un type. Cette constante est fournie pour rendre plus simple
- la spécification d'un type lors de l'utilisation de la fonction
- radius_create_request, et lors d'une comparaison
- du résultat avec la fonction radius_send_request.
-
-
-
-
-
- RADIUS_ACCESS_REQUEST
- (int)
-
-
-
- Un Access-Request, utilisé pour authentifier un utilisateur
- sur un serveur RADIUS. Les paquets Access-Request doivent inclure
- un attribut RADIUS_NAS_IP_ADDRESS,
- ou un attribut RADIUS_NAS_IDENTIFIER
- mais aussi inclure un attribut RADIUS_USER_PASSWORD,
- et un attribut RADIUS_CHAP_PASSWORD
- ou bien un attribut RADIUS_STATE,
- et doivent inclure un attribut RADIUS_USER_NAME.
-
-
-
-
-
- RADIUS_ACCESS_ACCEPT
- (int)
-
-
-
- Une réponse Access-Accept à un paquet Access-Request indique que le serveur RADIUS
- a authentifié l'utilisateur avec succès.
-
-
-
-
-
- RADIUS_ACCESS_REJECT
- (int)
-
-
-
- Une réponse Access-Reject à un paquet Access-Request indique que le serveur RADIUS
- n'a pas réussi à authentifié l'utilisateur.
-
-
-
-
-
- RADIUS_ACCESS_CHALLENGE
- (int)
-
-
-
- Une réponse Access-Challenge à un paquet Access-Request indique que le serveur RADIUS
- requiert plus d'informations d'un autre paquet Access-Request avant d'authentifier
- l'utilisateur.
-
-
-
-
-
- RADIUS_ACCOUNTING_REQUEST
- (int)
-
-
-
- Une paquet Accounting-Request, utilisé pour transmettre des informations de
- comptabilité pour un service du serveur RADIUS.
-
-
-
-
-
- RADIUS_ACCOUNTING_RESPONSE
- (int)
-
-
-
- Une réponse Accounting-Response à un paquet Accounting-Request.
-
-
-
-
-
- RADIUS_COA_REQUEST
- (int)
-
-
-
- Un paquet CoA-Request, envoyé depuis un serveur RADIUS pour
- indiquer que les autorisations ont changé dans la session utilisateur.
- Une réponse doit être émise sous la forme d'un CoA-ACK ou d'un CoA-NAK.
-
-
- Cette constante est disponible depuis PECL radius 1.3.0 et suivants.
-
-
-
-
-
- RADIUS_COA_ACK
- (int)
-
-
-
- Un paquet CoA-ACK, envoyé au serveur RADIUS pour indiquer
- que les autorisations utilisateurs ont été mises à jour.
-
-
- Cette constante est disponible depuis PECL radius 1.3.0 et suivants.
-
-
-
-
-
- RADIUS_COA_NAK
- (int)
-
-
-
- Un paquet CoA-NAK, envoyé au serveur RADIUS pour indiquer que les autorisations
- utilisateurs n'ont pas pû être mises à jour.
-
-
- Cette constante est disponible depuis PECL radius 1.3.0 et suivants.
-
-
-
-
-
- RADIUS_DISCONNECT_REQUEST
- (int)
-
-
-
- Un paquet Disconnect-Request, envoyé depuis le serveur RADIUS pour indiquer
- que la session utilisateur doit être close.
-
-
- Cette constante est disponible depuis PECL radius 1.3.0 et suivants.
-
-
-
-
-
- RADIUS_DISCONNECT_ACK
- (int)
-
-
-
- Un paquet Disconnect-ACK, envoyé au serveur RADIUS pour indiquer que
- la session utilisateur s'est terminée.
-
-
- Cette constante est disponible depuis PECL radius 1.3.0 et suivants.
-
-
-
-
-
- RADIUS_DISCONNECT_NAK
- (int)
-
-
-
- Un paquet Disconnect-NAK, envoyé au serveur RADIUS pour indiquer
- que la session utilisateur n'a pas pu se terminer.
-
-
- Cette constante est disponible depuis PECL radius 1.3.0 et suivants.
-
-
-
-
-
-
-
- Types d'attribut RADIUS
-
-
- Ces constantes définissent des types d'attribut RADIUS qui peuvent être utilisées
- avec les fonctions radius_put_addr, radius_put_attr,
- radius_put_int et radius_put_string.
-
-
-
-
-
- RADIUS_USER_NAME
- (int)
-
-
-
- L'attribut User-Name. La valeur de l'attribut doit être une chaîne de
- caractères contenant le nom de l'utilisateur désirant s'authentifier,
- et peut être définie en utilisant la fonction radius_put_attr.
-
-
-
-
-
- RADIUS_USER_PASSWORD
- (int)
-
-
-
- L'attribut User-Password. La valeur de l'attribut doit être une chaîne
- de caractères contenant le mot de passe de l'utilisateur, et peut être
- définie en utilisant la fonction radius_put_attr.
- Cette valeur sera brouillée pendant la transmission tel que décrit à
- la section 5.2 de la RFC 2865.
-
-
-
-
-
- RADIUS_CHAP_PASSWORD
- (int)
-
-
-
- L'attribut Chap-Password. La valeur de l'attribut doit être une chaîne
- contenant le premier octet (qui est l'identifiant CHAP), puis la
- sous une sous-séquence de 16 octets contenant le hash MD5 de l'identifiant
- CHAP, le mot de passe en clair, et la valeur du challenge CHAP,
- le tout, concaténés. Notez que la valeur du challenge CHAP doit
- aussi être envoyé séparément dans l'attribut
- RADIUS_CHAP_CHALLENGE.
-
-
- Utilisation des mots de passe CHAP
-
-
-]]>
-
-
-
-
-
-
- RADIUS_NAS_IP_ADDRESS
- (int)
-
-
-
- L'attribut NAS-IP-Address. La valeur de l'attribut attendue est l'adresse
- IP du client RADIUS encodé sous la forme d'un entier, qui peut
- être définie en utilisant la fonction radius_put_addr.
-
-
-
-
-
- RADIUS_NAS_PORT
- (int)
-
-
-
- L'attribut NAS-Port. La valeur de l'attribut attendue est le port
- physique de l'utilisateur sur le client RADIUS, encodé sous la
- forme d'un entier, qui peut être définie en utilisant la fonction
- radius_put_int.
-
-
-
-
-
- RADIUS_SERVICE_TYPE
- (int)
-
-
-
- L'attribut Service-Type. La valeur de l'attribut indique le type
- de service que l'utilisateur requète, et doit être un entier,
- qui peut être défini en utilisant la fonction
- radius_put_int.
-
-
- Des constantes sont fournies pour représenter les valeurs possibles
- de cet attribut. Les voici :
-
- RADIUS_LOGIN
- RADIUS_FRAMED
- RADIUS_CALLBACK_LOGIN
- RADIUS_CALLBACK_FRAMED
- RADIUS_OUTBOUND
- RADIUS_ADMINISTRATIVE
- RADIUS_NAS_PROMPT
- RADIUS_AUTHENTICATE_ONLY
- RADIUS_CALLBACK_NAS_PROMPT
-
-
-
-
-
-
- RADIUS_FRAMED_PROTOCOL
- (int)
-
-
-
- L'attribut Framed-Protocol. La valeur de l'attribut attendue est
- un entier, indiquant le framing à utiliser pour l'accès, et peut être
- définie en utilisant la fonction radius_put_int.
- Les valeurs possibles pour cet attribut sont :
-
- RADIUS_PPP
- RADIUS_SLIP
- RADIUS_ARAP
- RADIUS_GANDALF
- RADIUS_XYLOGICS
-
-
-
-
-
-
- RADIUS_FRAMED_IP_ADDRESS
- (int)
-
-
-
- L'attribut Framed-IP-Address. La valeur attendue est une adresse
- du réseau utilisateur encodé sous la forme d'un entier,
- qui peut être définie en utilisant la fonction radius_put_addr
- et récupérée en utilisant la fonction radius_cvt_addr.
-
-
-
-
-
- RADIUS_FRAMED_IP_NETMASK
- (int)
-
-
-
- L'attribut Framed-IP-Netmask. La valeur attendue est un netmask
- du réseau utilisateur, encodé sous la forme d'un entier, qui
- peut être définie en utilisant la fonction radius_put_addr
- et récupérée en utilisant la fonction radius_cvt_addr.
-
-
-
-
-
- RADIUS_FRAMED_ROUTING
- (int)
-
-
-
- L'attribut Framed-Routing. La valeur attendue est un entier
- indiquant la méthode de routage pour l'utilisateur, qui peut
- être définie en utilisant la fonction radius_put_int.
-
-
- Valeurs possibles :
-
- 0 : Aucun routage
- 1 : Envoi des paquets de routage
- 2 : Ecoute des paquets de routage
- 3 : Envoi et écoute
-
-
-
-
-
-
- RADIUS_FILTER_ID
- (int)
-
-
-
- L'attribut Filter-ID. La valeur attendue est une implémentation
- spécifique, humainement lisible, de chaînes de filtres, qui
- peuvent être définies en utilisant la fonction
- radius_put_attr.
-
-
-
-
-
- RADIUS_FRAMED_MTU
- (int)
-
-
-
- L'attribut Framed-MTU. La valeur attendue est un entier, indiquant
- le MTU à configurer pour l'utilisateur, et peut être
- définie en utilisant la fonction radius_put_int.
-
-
-
-
-
- RADIUS_FRAMED_COMPRESSION
- (int)
-
-
-
- L'attribut Framed-Compression. La valeur attendue est un entier,
- indiquant le protocole de compression à utiliser, et peut être
- définie en utilisant la fonction radius_put_int.
- Valeurs possibles :
-
- RADIUS_COMP_NONE : Aucune compression
- RADIUS_COMP_VJ : Compression de l'en-tête VJ TCP/IP
- RADIUS_COMP_IPXHDR : Compression de l'en-tête IPX
-
- RADIUS_COMP_STAC_LZS : Compression Stac-LZS (ajouté en PECL radius 1.3.0b2)
-
-
-
-
-
-
-
- RADIUS_LOGIN_IP_HOST
- (int)
-
-
-
- L'attribut Login-IP-Host. La valeur attendue est l'adresse IP
- de connexion de l'utilisateur, encodée sous la forme d'un entier,
- qui peut être défini en utilisant la fonction
- radius_put_addr.
-
-
-
-
-
- RADIUS_LOGIN_SERVICE
- (int)
-
-
-
- L'attribut Login-Service. La valeur attendue est un entier indiquant
- le service sur lequel l'utilisateur se connecte sur l'hôte d'identification.
- La valeur peut être convertie en un entier PHP via la fonction
- radius_cvt_int.
-
-
-
-
-
- RADIUS_LOGIN_TCP_PORT
- (int)
-
-
-
- L'attribut Login-TCP-Port. La valeur attendue est un entier indiquant
- le port sur lequel l'utilisateur se connecte sur l'hôte d'identification.
- La valeur peut être convertie en un entier PHP via la fonction
- radius_cvt_int.
-
-
-
-
-
- RADIUS_REPLY_MESSAGE
- (int)
-
-
-
- L'attribut Reply-Message. La valeur attendue est une chaîne de caractères
- contenant un texte qui peut être affiché à l'utilisateur en réponse
- à une requête d'accès.
-
-
-
-
-
- RADIUS_CALLBACK_NUMBER
- (int)
-
-
-
- L'attribut Callback-Number. La valeur attendue est une chaîne de
- caractères contenant la chaîne de numérotation à utiliser pour
- la fonction de rappel.
-
-
-
-
-
- RADIUS_CALLBACK_ID
- (int)
-
-
-
- L'attribut Callback-Id. La valeur attendue est une chaîne contenant
- le nom de l'implémentation spécifique de la place à appeler.
-
-
-
-
-
- RADIUS_FRAMED_ROUTE
- (int)
-
-
-
- L'attribut Framed-Route. La valeur attendue est une chaîne
- contenant un jeu de routes d'implémentation spécifique à configurer
- pour l'utilisateur.
-
-
-
-
-
- RADIUS_FRAMED_IPX_NETWORK
- (int)
-
-
-
- L'attribut Framed-IPX-Network. La valeur attendue est un entier
- contenant le réseau IPX à configurer pour l'utilisateur, ou
- 0xFFFFFFFE pour indiquer que le client RADIUS doit sélectionner
- le réseau, et peut être accédé via la fonction
- radius_cvt_int.
-
-
-
-
-
- RADIUS_STATE
- (int)
-
-
-
- L'attribut State. La valeur attendue est une chaîne contenant
- l'implémentation définie incluse dans un Access-Challenge depuis
- un serveur qui doit être inclus dans la sous-séquence Access-Request,
- et peut être défini en utilisant la fonction
- radius_put_attr.
-
-
-
-
-
- RADIUS_CLASS
- (int)
-
-
-
- L'attribut Class. La valeur attendue est une chaîne arbitraire incluant
- le message d'un Access-Accept qui doit être envoyé au serveur de comptes
- dans les messages Accounting-Request, et peut être défini via la fonction
- radius_put_attr.
-
-
-
-
-
- RADIUS_VENDOR_SPECIFIC
- (int)
-
-
-
- L'attribut Vendor-Specific. En général, les valeurs de l'attribut du vendeur
- doivent être définies en utilisant les fonctions
- radius_put_vendor_addr,
- radius_put_vendor_attr,
- radius_put_vendor_int et
- radius_put_vendor_string, plutôt que directement.
-
-
- Cette constante est utile lors de l'interprétation des attributs
- spécifiques du vendeur dans les réponses d'un serveur RADIUS ; lorsqu'un
- attribut spécifique du vendeur est reçu, la fonction
- radius_get_vendor_attr doit être utilisée pour
- accéder à l'identifiant du vendeur, le type d'attribut et la valeur de l'attribut.
-
-
-
-
-
- RADIUS_SESSION_TIMEOUT
- (int)
-
-
-
- Timeout de la session
-
-
-
-
-
- RADIUS_IDLE_TIMEOUT
- (int)
-
-
-
- Durée d'expiration
-
-
-
-
-
- RADIUS_TERMINATION_ACTION
- (int)
-
-
-
- Action de termination
-
-
-
-
-
- RADIUS_CALLED_STATION_ID
- (int)
-
-
-
- Identifiant de la station appelée
-
-
-
-
-
- RADIUS_CALLING_STATION_ID
- (int)
-
-
-
- Identifiant de la station appelant
-
-
-
-
-
- RADIUS_NAS_IDENTIFIER
- (int)
-
-
-
- Identifiant NAS
-
-
-
-
-
- RADIUS_PROXY_STATE
- (int)
-
-
-
- Statut du Proxy
-
-
-
-
-
- RADIUS_LOGIN_LAT_SERVICE
- (int)
-
-
-
- Service d'identification LAT
-
-
-
-
-
- RADIUS_LOGIN_LAT_NODE
- (int)
-
-
-
- Noeud d'identification LAT
-
-
-
-
-
- RADIUS_LOGIN_LAT_GROUP
- (int)
-
-
-
- Groupe d'identification LAT
-
-
-
-
-
- RADIUS_FRAMED_APPLETALK_LINK
- (int)
-
-
-
- Lien framé Appletalk
-
-
-
-
-
- RADIUS_FRAMED_APPLETALK_NETWORK
- (int)
-
-
-
- Réseau framé Appletalk
-
-
-
-
-
- RADIUS_FRAMED_APPLETALK_ZONE
- (int)
-
-
-
- Zone framé Appletalk
-
-
-
-
-
- RADIUS_CHAP_CHALLENGE
- (int)
-
-
-
- Challenge
-
-
-
-
-
- RADIUS_NAS_PORT_TYPE
- (int)
-
-
-
- Type du port NAS :
-
- RADIUS_ASYNC
- RADIUS_SYNC
- RADIUS_ISDN_SYNC
- RADIUS_ISDN_ASYNC_V120
- RADIUS_ISDN_ASYNC_V110
- RADIUS_VIRTUAL
- RADIUS_PIAFS
- RADIUS_HDLC_CLEAR_CHANNEL
- RADIUS_X_25
- RADIUS_X_75
- RADIUS_G_3_FAX
- RADIUS_SDSL
- RADIUS_ADSL_CAP
- RADIUS_ADSL_DMT
- RADIUS_IDSL
- RADIUS_ETHERNET
- RADIUS_XDSL
- RADIUS_CABLE
- RADIUS_WIRELESS_OTHER
- RADIUS_WIRELESS_IEEE_802_11
-
-
-
-
-
-
- RADIUS_PORT_LIMIT
- (int)
-
-
-
- Limite du port
-
-
-
-
-
- RADIUS_LOGIN_LAT_PORT
- (int)
-
-
-
- Port d'identification LAT
-
-
-
-
-
- RADIUS_CONNECT_INFO
- (int)
-
-
-
- Information de connexion
-
-
-
-
-
- RADIUS_ACCT_STATUS_TYPE
- (int)
-
-
-
- Type de statut du compte :
-
- RADIUS_START
- RADIUS_STOP
- RADIUS_ACCOUNTING_ON
- RADIUS_ACCOUNTING_OFF
-
-
-
-
-
-
- RADIUS_ACCT_DELAY_TIME
- (int)
-
-
-
- Délai maximal d'identification
-
-
-
-
-
- RADIUS_ACCT_INPUT_OCTETS
- (int)
-
-
-
- Octets d'entrée d'identification
-
-
-
-
-
- RADIUS_ACCT_OUTPUT_OCTETS
- (int)
-
-
-
- Octets de sortie d'identification
-
-
-
-
-
- RADIUS_ACCT_SESSION_ID
- (int)
-
-
-
- Identifiant de session d'identification
-
-
-
-
-
- RADIUS_ACCT_AUTHENTIC
- (int)
-
-
-
- Identification authentique, un parmi :
-
- RADIUS_AUTH_RADIUS
- RADIUS_AUTH_LOCAL
- RADIUS_AUTH_REMOTE
-
-
-
-
-
-
- RADIUS_ACCT_SESSION_TIME
- (int)
-
-
-
- Durée de la session d'identification
-
-
-
-
-
- RADIUS_ACCT_INPUT_PACKETS
- (int)
-
-
-
- Paquets d'entrée d'identification
-
-
-
-
-
- RADIUS_ACCT_OUTPUT_PACKETS
- (int)
-
-
-
- Paquets de sortie d'identification
-
-
-
-
-
- RADIUS_ACCT_TERMINATE_CAUSE
- (int)
-
-
-
- Cause de la fin de l'identification, un parmi :
-
- RADIUS_TERM_USER_REQUEST
- RADIUS_TERM_LOST_CARRIER
- RADIUS_TERM_LOST_SERVICE
- RADIUS_TERM_IDLE_TIMEOUT
- RADIUS_TERM_SESSION_TIMEOUT
- RADIUS_TERM_ADMIN_RESET
- RADIUS_TERM_ADMIN_REBOOT
- RADIUS_TERM_PORT_ERROR
- RADIUS_TERM_NAS_ERROR
- RADIUS_TERM_NAS_REQUEST
- RADIUS_TERM_NAS_REBOOT
- RADIUS_TERM_PORT_UNNEEDED
- RADIUS_TERM_PORT_PREEMPTED
- RADIUS_TERM_PORT_SUSPENDED
- RADIUS_TERM_SERVICE_UNAVAILABLE
- RADIUS_TERM_CALLBACK
- RADIUS_TERM_USER_ERROR
- RADIUS_TERM_HOST_REQUEST
-
-
-
-
-
-
- RADIUS_ACCT_MULTI_SESSION_ID
- (int)
-
-
-
- Identifiant d'une session multiple d'identification
-
-
-
-
-
- RADIUS_ACCT_LINK_COUNT
- (int)
-
-
-
- Nombre de liens d'identification
-
-
-
-
-
- Constantes de type de service
-
-
- RADIUS_LOGIN
-
-
-
-
-
-
-
-
- RADIUS_FRAMED
-
-
-
-
-
-
-
-
- RADIUS_CALLBACK_LOGIN
-
-
-
-
-
-
-
-
- RADIUS_CALLBACK_FRAMED
-
-
-
-
-
-
-
-
- RADIUS_OUTBOUND
-
-
-
-
-
-
-
-
- RADIUS_ADMINISTRATIVE
-
-
-
-
-
-
-
-
- RADIUS_NAS_PROMPT
-
-
-
-
-
-
-
-
- RADIUS_AUTHENTICATE_ONLY
-
-
-
-
-
-
-
-
- RADIUS_CALLBACK_NAS_PROMPT
-
-
-
-
-
-
-
-
-
- Framed-Protocol Constants
-
-
- RADIUS_PPP
-
-
-
-
-
-
-
-
- RADIUS_SLIP
-
-
-
-
-
-
-
-
- RADIUS_ARAP
-
-
-
-
-
-
-
-
- RADIUS_GANDALF
-
-
-
-
-
-
-
-
- RADIUS_XYLOGICS
-
-
-
-
-
-
-
-
-
- Framed-Compression Constants
-
-
- RADIUS_COMP_NONE
-
-
-
-
-
-
-
-
- RADIUS_COMP_VJ
-
-
-
-
-
-
-
-
- RADIUS_COMP_IPXHDR
-
-
-
-
-
-
-
-
- RADIUS_COMP_STAC_LZS
-
-
-
-
-
-
-
-
-
- NAS Port Type Constants
-
-
- RADIUS_ASYNC
-
-
-
-
-
-
-
-
- RADIUS_SYNC
-
-
-
-
-
-
-
-
- RADIUS_ISDN_SYNC
-
-
-
-
-
-
-
-
- RADIUS_ISDN_ASYNC_V120
-
-
-
-
-
-
-
-
- RADIUS_ISDN_ASYNC_V110
-
-
-
-
-
-
-
-
- RADIUS_VIRTUAL
-
-
-
-
-
-
-
-
- RADIUS_PIAFS
-
-
-
-
-
-
-
-
- RADIUS_HDLC_CLEAR_CHANNEL
-
-
-
-
-
-
-
-
- RADIUS_X_25
-
-
-
-
-
-
-
-
- RADIUS_X_75
-
-
-
-
-
-
-
-
- RADIUS_G_3_FAX
-
-
-
-
-
-
-
-
- RADIUS_SDSL
-
-
-
-
-
-
-
-
- RADIUS_ADSL_CAP
-
-
-
-
-
-
-
-
- RADIUS_ADSL_DMT
-
-
-
-
-
-
-
-
- RADIUS_IDSL
-
-
-
-
-
-
-
-
- RADIUS_ETHERNET
-
-
-
-
-
-
-
-
- RADIUS_XDSL
-
-
-
-
-
-
-
-
- RADIUS_CABLE
-
-
-
-
-
-
-
-
- RADIUS_WIRELESS_OTHER
-
-
-
-
-
-
-
-
- RADIUS_WIRELESS_IEEE_802_11
-
-
-
-
-
-
-
-
-
- Accounting Status Type Constants
-
-
- RADIUS_START
-
-
-
-
-
-
-
-
- RADIUS_STOP
-
-
-
-
-
-
-
-
- RADIUS_ACCOUNTING_ON
-
-
-
-
-
-
-
-
- RADIUS_ACCOUNTING_OFF
-
-
-
-
-
-
-
-
-
- Accounting Authentic Constants
-
-
- RADIUS_AUTH_RADIUS
-
-
-
-
-
-
-
-
- RADIUS_AUTH_LOCAL
-
-
-
-
-
-
-
-
- RADIUS_AUTH_REMOTE
-
-
-
-
-
-
-
-
-
- Accounting Terminate Cause Constants
-
-
- RADIUS_TERM_USER_REQUEST
-
-
-
-
-
-
-
-
- RADIUS_TERM_LOST_CARRIER
-
-
-
-
-
-
-
-
- RADIUS_TERM_LOST_SERVICE
-
-
-
-
-
-
-
-
- RADIUS_TERM_IDLE_TIMEOUT
-
-
-
-
-
-
-
-
- RADIUS_TERM_SESSION_TIMEOUT
-
-
-
-
-
-
-
-
- RADIUS_TERM_ADMIN_RESET
-
-
-
-
-
-
-
-
- RADIUS_TERM_ADMIN_REBOOT
-
-
-
-
-
-
-
-
- RADIUS_TERM_PORT_ERROR
-
-
-
-
-
-
-
-
- RADIUS_TERM_NAS_ERROR
-
-
-
-
-
-
-
-
- RADIUS_TERM_NAS_REQUEST
-
-
-
-
-
-
-
-
- RADIUS_TERM_NAS_REBOOT
-
-
-
-
-
-
-
-
- RADIUS_TERM_PORT_UNNEEDED
-
-
-
-
-
-
-
-
- RADIUS_TERM_PORT_PREEMPTED
-
-
-
-
-
-
-
-
- RADIUS_TERM_PORT_SUSPENDED
-
-
-
-
-
-
-
-
- RADIUS_TERM_SERVICE_UNAVAILABLE
-
-
-
-
-
-
-
-
- RADIUS_TERM_CALLBACK
-
-
-
-
-
-
-
-
- RADIUS_TERM_USER_ERROR
-
-
-
-
-
-
-
-
- RADIUS_TERM_HOST_REQUEST
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_CHAP_RESPONSE
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_CHAP_ERROR
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_CHAP_PW_1
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_CHAP_PW_2
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_CHAP_LM_ENC_PW
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_CHAP_NT_ENC_PW
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_MPPE_ENCRYPTION_POLICY
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_MPPE_ENCRYPTION_TYPES
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_RAS_VENDOR
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_CHAP_DOMAIN
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_CHAP_CHALLENGE
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_CHAP_MPPE_KEYS
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_BAP_USAGE
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_LINK_UTILIZATION_THRESHOLD
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_LINK_DROP_TIME_LIMIT
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_MPPE_SEND_KEY
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_MPPE_RECV_KEY
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_RAS_VERSION
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_OLD_ARAP_PASSWORD
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_NEW_ARAP_PASSWORD
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_ARAP_PASSWORD_CHANGE_REASON
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_FILTER
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_ACCT_AUTH_TYPE
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_ACCT_EAP_TYPE
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_CHAP2_RESPONSE
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_CHAP2_SUCCESS
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_CHAP2_PW
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_PRIMARY_DNS_SERVER
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_SECONDARY_DNS_SERVER
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_PRIMARY_NBNS_SERVER
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_SECONDARY_NBNS_SERVER
-
-
-
-
-
-
-
-
- RADIUS_MICROSOFT_MS_ARAP_CHALLENGE
-
-
-
-
-
-
-
-
-
-
- Types d'attribut RADIUS spécifique au vendeur
-
-
-
-
- RADIUS_VENDOR_MICROSOFT
- (int)
-
-
-
- Attributs spécifiques à Microsoft (RFC 2548) :
-
- RADIUS_MICROSOFT_MS_CHAP_RESPONSE
- RADIUS_MICROSOFT_MS_CHAP_ERROR
- RADIUS_MICROSOFT_MS_CHAP_PW_1
- RADIUS_MICROSOFT_MS_CHAP_PW_2
- RADIUS_MICROSOFT_MS_CHAP_LM_ENC_PW
- RADIUS_MICROSOFT_MS_CHAP_NT_ENC_PW
- RADIUS_MICROSOFT_MS_MPPE_ENCRYPTION_POLICY
- RADIUS_MICROSOFT_MS_MPPE_ENCRYPTION_TYPES
- RADIUS_MICROSOFT_MS_RAS_VENDOR
- RADIUS_MICROSOFT_MS_CHAP_DOMAIN
- RADIUS_MICROSOFT_MS_CHAP_CHALLENGE
- RADIUS_MICROSOFT_MS_CHAP_MPPE_KEYS
- RADIUS_MICROSOFT_MS_BAP_USAGE
- RADIUS_MICROSOFT_MS_LINK_UTILIZATION_THRESHOLD
- RADIUS_MICROSOFT_MS_LINK_DROP_TIME_LIMIT
- RADIUS_MICROSOFT_MS_MPPE_SEND_KEY
- RADIUS_MICROSOFT_MS_MPPE_RECV_KEY
- RADIUS_MICROSOFT_MS_RAS_VERSION
- RADIUS_MICROSOFT_MS_OLD_ARAP_PASSWORD
- RADIUS_MICROSOFT_MS_NEW_ARAP_PASSWORD
- RADIUS_MICROSOFT_MS_ARAP_PASSWORD_CHANGE_REASON
- RADIUS_MICROSOFT_MS_FILTER
- RADIUS_MICROSOFT_MS_ACCT_AUTH_TYPE
- RADIUS_MICROSOFT_MS_ACCT_EAP_TYPE
- RADIUS_MICROSOFT_MS_CHAP2_RESPONSE
- RADIUS_MICROSOFT_MS_CHAP2_SUCCESS
- RADIUS_MICROSOFT_MS_CHAP2_PW
- RADIUS_MICROSOFT_MS_PRIMARY_DNS_SERVER
- RADIUS_MICROSOFT_MS_SECONDARY_DNS_SERVER
- RADIUS_MICROSOFT_MS_PRIMARY_NBNS_SERVER
- RADIUS_MICROSOFT_MS_SECONDARY_NBNS_SERVER
- RADIUS_MICROSOFT_MS_ARAP_CHALLENGE
-
-
-
-
-
-
-
-
+
+
+
+
+
+ &reftitle.constants;
+ &extension.constants;
+
+
+
+
+ RADIUS_MPPE_KEY_LEN
+ (int)
+
+
+
+ La longueur maximale des clés MPPE.
+
+
+
+
+
+
+ RADIUS Options
+
+
+ Plusieurs fonctions RADIUS acceptent des options sous forme de masque d'octets.
+ Les constantes représentant ces options sont listées ci-dessous.
+
+
+
+
+
+ RADIUS_OPTION_SALT
+ (int)
+
+
+
+ Lorsque définie, cette option fera que la valeur de l'attribut
+ sera chiffré salt.
+
+
+
+
+
+ RADIUS_OPTION_TAGGED
+ (int)
+
+
+
+ Lorsque définie, cette option fera que la valeur de l'attribut
+ proviendra qu paramètre tag.
+
+
+
+
+
+
+
+ Types de paquets RADIUS
+
+
+ Les paquets RADIUS, qu'ils soient démandés ou obtenus en réponse, incluent
+ toujours un type. Cette constante est fournie pour rendre plus simple
+ la spécification d'un type lors de l'utilisation de la fonction
+ radius_create_request, et lors d'une comparaison
+ du résultat avec la fonction radius_send_request.
+
+
+
+
+
+ RADIUS_ACCESS_REQUEST
+ (int)
+
+
+
+ Un Access-Request, utilisé pour authentifier un utilisateur
+ sur un serveur RADIUS. Les paquets Access-Request doivent inclure
+ un attribut RADIUS_NAS_IP_ADDRESS,
+ ou un attribut RADIUS_NAS_IDENTIFIER
+ mais aussi inclure un attribut RADIUS_USER_PASSWORD,
+ et un attribut RADIUS_CHAP_PASSWORD
+ ou bien un attribut RADIUS_STATE,
+ et doivent inclure un attribut RADIUS_USER_NAME.
+
+
+
+
+
+ RADIUS_ACCESS_ACCEPT
+ (int)
+
+
+
+ Une réponse Access-Accept à un paquet Access-Request indique que le serveur RADIUS
+ a authentifié l'utilisateur avec succès.
+
+
+
+
+
+ RADIUS_ACCESS_REJECT
+ (int)
+
+
+
+ Une réponse Access-Reject à un paquet Access-Request indique que le serveur RADIUS
+ n'a pas réussi à authentifié l'utilisateur.
+
+
+
+
+
+ RADIUS_ACCESS_CHALLENGE
+ (int)
+
+
+
+ Une réponse Access-Challenge à un paquet Access-Request indique que le serveur RADIUS
+ requiert plus d'informations d'un autre paquet Access-Request avant d'authentifier
+ l'utilisateur.
+
+
+
+
+
+ RADIUS_ACCOUNTING_REQUEST
+ (int)
+
+
+
+ Une paquet Accounting-Request, utilisé pour transmettre des informations de
+ comptabilité pour un service du serveur RADIUS.
+
+
+
+
+
+ RADIUS_ACCOUNTING_RESPONSE
+ (int)
+
+
+
+ Une réponse Accounting-Response à un paquet Accounting-Request.
+
+
+
+
+
+ RADIUS_COA_REQUEST
+ (int)
+
+
+
+ Un paquet CoA-Request, envoyé depuis un serveur RADIUS pour
+ indiquer que les autorisations ont changé dans la session utilisateur.
+ Une réponse doit être émise sous la forme d'un CoA-ACK ou d'un CoA-NAK.
+
+
+ Cette constante est disponible depuis PECL radius 1.3.0 et suivants.
+
+
+
+
+
+ RADIUS_COA_ACK
+ (int)
+
+
+
+ Un paquet CoA-ACK, envoyé au serveur RADIUS pour indiquer
+ que les autorisations utilisateurs ont été mises à jour.
+
+
+ Cette constante est disponible depuis PECL radius 1.3.0 et suivants.
+
+
+
+
+
+ RADIUS_COA_NAK
+ (int)
+
+
+
+ Un paquet CoA-NAK, envoyé au serveur RADIUS pour indiquer que les autorisations
+ utilisateurs n'ont pas pû être mises à jour.
+
+
+ Cette constante est disponible depuis PECL radius 1.3.0 et suivants.
+
+
+
+
+
+ RADIUS_DISCONNECT_REQUEST
+ (int)
+
+
+
+ Un paquet Disconnect-Request, envoyé depuis le serveur RADIUS pour indiquer
+ que la session utilisateur doit être close.
+
+
+ Cette constante est disponible depuis PECL radius 1.3.0 et suivants.
+
+
+
+
+
+ RADIUS_DISCONNECT_ACK
+ (int)
+
+
+
+ Un paquet Disconnect-ACK, envoyé au serveur RADIUS pour indiquer que
+ la session utilisateur s'est terminée.
+
+
+ Cette constante est disponible depuis PECL radius 1.3.0 et suivants.
+
+
+
+
+
+ RADIUS_DISCONNECT_NAK
+ (int)
+
+
+
+ Un paquet Disconnect-NAK, envoyé au serveur RADIUS pour indiquer
+ que la session utilisateur n'a pas pu se terminer.
+
+
+ Cette constante est disponible depuis PECL radius 1.3.0 et suivants.
+
+
+
+
+
+
+
+ Types d'attribut RADIUS
+
+
+ Ces constantes définissent des types d'attribut RADIUS qui peuvent être utilisées
+ avec les fonctions radius_put_addr, radius_put_attr,
+ radius_put_int et radius_put_string.
+
+
+
+
+
+ RADIUS_USER_NAME
+ (int)
+
+
+
+ L'attribut User-Name. La valeur de l'attribut doit être une chaîne de
+ caractères contenant le nom de l'utilisateur désirant s'authentifier,
+ et peut être définie en utilisant la fonction radius_put_attr.
+
+
+
+
+
+ RADIUS_USER_PASSWORD
+ (int)
+
+
+
+ L'attribut User-Password. La valeur de l'attribut doit être une chaîne
+ de caractères contenant le mot de passe de l'utilisateur, et peut être
+ définie en utilisant la fonction radius_put_attr.
+ Cette valeur sera brouillée pendant la transmission tel que décrit à
+ la section 5.2 de la RFC 2865.
+
+
+
+
+
+ RADIUS_CHAP_PASSWORD
+ (int)
+
+
+
+ L'attribut Chap-Password. La valeur de l'attribut doit être une chaîne
+ contenant le premier octet (qui est l'identifiant CHAP), puis la
+ sous une sous-séquence de 16 octets contenant le hash MD5 de l'identifiant
+ CHAP, le mot de passe en clair, et la valeur du challenge CHAP,
+ le tout, concaténés. Notez que la valeur du challenge CHAP doit
+ aussi être envoyé séparément dans l'attribut
+ RADIUS_CHAP_CHALLENGE.
+
+
+ Utilisation des mots de passe CHAP
+
+
+]]>
+
+
+
+
+
+
+ RADIUS_NAS_IP_ADDRESS
+ (int)
+
+
+
+ L'attribut NAS-IP-Address. La valeur de l'attribut attendue est l'adresse
+ IP du client RADIUS encodé sous la forme d'un entier, qui peut
+ être définie en utilisant la fonction radius_put_addr.
+
+
+
+
+
+ RADIUS_NAS_PORT
+ (int)
+
+
+
+ L'attribut NAS-Port. La valeur de l'attribut attendue est le port
+ physique de l'utilisateur sur le client RADIUS, encodé sous la
+ forme d'un entier, qui peut être définie en utilisant la fonction
+ radius_put_int.
+
+
+
+
+
+ RADIUS_SERVICE_TYPE
+ (int)
+
+
+
+ L'attribut Service-Type. La valeur de l'attribut indique le type
+ de service que l'utilisateur requète, et doit être un entier,
+ qui peut être défini en utilisant la fonction
+ radius_put_int.
+
+
+ Des constantes sont fournies pour représenter les valeurs possibles
+ de cet attribut. Les voici :
+
+ RADIUS_LOGIN
+ RADIUS_FRAMED
+ RADIUS_CALLBACK_LOGIN
+ RADIUS_CALLBACK_FRAMED
+ RADIUS_OUTBOUND
+ RADIUS_ADMINISTRATIVE
+ RADIUS_NAS_PROMPT
+ RADIUS_AUTHENTICATE_ONLY
+ RADIUS_CALLBACK_NAS_PROMPT
+
+
+
+
+
+
+ RADIUS_FRAMED_PROTOCOL
+ (int)
+
+
+
+ L'attribut Framed-Protocol. La valeur de l'attribut attendue est
+ un entier, indiquant le framing à utiliser pour l'accès, et peut être
+ définie en utilisant la fonction radius_put_int.
+ Les valeurs possibles pour cet attribut sont :
+
+ RADIUS_PPP
+ RADIUS_SLIP
+ RADIUS_ARAP
+ RADIUS_GANDALF
+ RADIUS_XYLOGICS
+
+
+
+
+
+
+ RADIUS_FRAMED_IP_ADDRESS
+ (int)
+
+
+
+ L'attribut Framed-IP-Address. La valeur attendue est une adresse
+ du réseau utilisateur encodé sous la forme d'un entier,
+ qui peut être définie en utilisant la fonction radius_put_addr
+ et récupérée en utilisant la fonction radius_cvt_addr.
+
+
+
+
+
+ RADIUS_FRAMED_IP_NETMASK
+ (int)
+
+
+
+ L'attribut Framed-IP-Netmask. La valeur attendue est un netmask
+ du réseau utilisateur, encodé sous la forme d'un entier, qui
+ peut être définie en utilisant la fonction radius_put_addr
+ et récupérée en utilisant la fonction radius_cvt_addr.
+
+
+
+
+
+ RADIUS_FRAMED_ROUTING
+ (int)
+
+
+
+ L'attribut Framed-Routing. La valeur attendue est un entier
+ indiquant la méthode de routage pour l'utilisateur, qui peut
+ être définie en utilisant la fonction radius_put_int.
+
+
+ Valeurs possibles :
+
+ 0 : Aucun routage
+ 1 : Envoi des paquets de routage
+ 2 : Ecoute des paquets de routage
+ 3 : Envoi et écoute
+
+
+
+
+
+
+ RADIUS_FILTER_ID
+ (int)
+
+
+
+ L'attribut Filter-ID. La valeur attendue est une implémentation
+ spécifique, humainement lisible, de chaînes de filtres, qui
+ peuvent être définies en utilisant la fonction
+ radius_put_attr.
+
+
+
+
+
+ RADIUS_FRAMED_MTU
+ (int)
+
+
+
+ L'attribut Framed-MTU. La valeur attendue est un entier, indiquant
+ le MTU à configurer pour l'utilisateur, et peut être
+ définie en utilisant la fonction radius_put_int.
+
+
+
+
+
+ RADIUS_FRAMED_COMPRESSION
+ (int)
+
+
+
+ L'attribut Framed-Compression. La valeur attendue est un entier,
+ indiquant le protocole de compression à utiliser, et peut être
+ définie en utilisant la fonction radius_put_int.
+ Valeurs possibles :
+
+ RADIUS_COMP_NONE : Aucune compression
+ RADIUS_COMP_VJ : Compression de l'en-tête VJ TCP/IP
+ RADIUS_COMP_IPXHDR : Compression de l'en-tête IPX
+
+ RADIUS_COMP_STAC_LZS : Compression Stac-LZS (ajouté en PECL radius 1.3.0b2)
+
+
+
+
+
+
+
+ RADIUS_LOGIN_IP_HOST
+ (int)
+
+
+
+ L'attribut Login-IP-Host. La valeur attendue est l'adresse IP
+ de connexion de l'utilisateur, encodée sous la forme d'un entier,
+ qui peut être défini en utilisant la fonction
+ radius_put_addr.
+
+
+
+
+
+ RADIUS_LOGIN_SERVICE
+ (int)
+
+
+
+ L'attribut Login-Service. La valeur attendue est un entier indiquant
+ le service sur lequel l'utilisateur se connecte sur l'hôte d'identification.
+ La valeur peut être convertie en un entier PHP via la fonction
+ radius_cvt_int.
+
+
+
+
+
+ RADIUS_LOGIN_TCP_PORT
+ (int)
+
+
+
+ L'attribut Login-TCP-Port. La valeur attendue est un entier indiquant
+ le port sur lequel l'utilisateur se connecte sur l'hôte d'identification.
+ La valeur peut être convertie en un entier PHP via la fonction
+ radius_cvt_int.
+
+
+
+
+
+ RADIUS_REPLY_MESSAGE
+ (int)
+
+
+
+ L'attribut Reply-Message. La valeur attendue est une chaîne de caractères
+ contenant un texte qui peut être affiché à l'utilisateur en réponse
+ à une requête d'accès.
+
+
+
+
+
+ RADIUS_CALLBACK_NUMBER
+ (int)
+
+
+
+ L'attribut Callback-Number. La valeur attendue est une chaîne de
+ caractères contenant la chaîne de numérotation à utiliser pour
+ la fonction de rappel.
+
+
+
+
+
+ RADIUS_CALLBACK_ID
+ (int)
+
+
+
+ L'attribut Callback-Id. La valeur attendue est une chaîne contenant
+ le nom de l'implémentation spécifique de la place à appeler.
+
+
+
+
+
+ RADIUS_FRAMED_ROUTE
+ (int)
+
+
+
+ L'attribut Framed-Route. La valeur attendue est une chaîne
+ contenant un jeu de routes d'implémentation spécifique à configurer
+ pour l'utilisateur.
+
+
+
+
+
+ RADIUS_FRAMED_IPX_NETWORK
+ (int)
+
+
+
+ L'attribut Framed-IPX-Network. La valeur attendue est un entier
+ contenant le réseau IPX à configurer pour l'utilisateur, ou
+ 0xFFFFFFFE pour indiquer que le client RADIUS doit sélectionner
+ le réseau, et peut être accédé via la fonction
+ radius_cvt_int.
+
+
+
+
+
+ RADIUS_STATE
+ (int)
+
+
+
+ L'attribut State. La valeur attendue est une chaîne contenant
+ l'implémentation définie incluse dans un Access-Challenge depuis
+ un serveur qui doit être inclus dans la sous-séquence Access-Request,
+ et peut être défini en utilisant la fonction
+ radius_put_attr.
+
+
+
+
+
+ RADIUS_CLASS
+ (int)
+
+
+
+ L'attribut Class. La valeur attendue est une chaîne arbitraire incluant
+ le message d'un Access-Accept qui doit être envoyé au serveur de comptes
+ dans les messages Accounting-Request, et peut être défini via la fonction
+ radius_put_attr.
+
+
+
+
+
+ RADIUS_VENDOR_SPECIFIC
+ (int)
+
+
+
+ L'attribut Vendor-Specific. En général, les valeurs de l'attribut du vendeur
+ doivent être définies en utilisant les fonctions
+ radius_put_vendor_addr,
+ radius_put_vendor_attr,
+ radius_put_vendor_int et
+ radius_put_vendor_string, plutôt que directement.
+
+
+ Cette constante est utile lors de l'interprétation des attributs
+ spécifiques du vendeur dans les réponses d'un serveur RADIUS ; lorsqu'un
+ attribut spécifique du vendeur est reçu, la fonction
+ radius_get_vendor_attr doit être utilisée pour
+ accéder à l'identifiant du vendeur, le type d'attribut et la valeur de l'attribut.
+
+
+
+
+
+ RADIUS_SESSION_TIMEOUT
+ (int)
+
+
+
+ Timeout de la session
+
+
+
+
+
+ RADIUS_IDLE_TIMEOUT
+ (int)
+
+
+
+ Durée d'expiration
+
+
+
+
+
+ RADIUS_TERMINATION_ACTION
+ (int)
+
+
+
+ Action de termination
+
+
+
+
+
+ RADIUS_CALLED_STATION_ID
+ (int)
+
+
+
+ Identifiant de la station appelée
+
+
+
+
+
+ RADIUS_CALLING_STATION_ID
+ (int)
+
+
+
+ Identifiant de la station appelant
+
+
+
+
+
+ RADIUS_NAS_IDENTIFIER
+ (int)
+
+
+
+ Identifiant NAS
+
+
+
+
+
+ RADIUS_PROXY_STATE
+ (int)
+
+
+
+ Statut du Proxy
+
+
+
+
+
+ RADIUS_LOGIN_LAT_SERVICE
+ (int)
+
+
+
+ Service d'identification LAT
+
+
+
+
+
+ RADIUS_LOGIN_LAT_NODE
+ (int)
+
+
+
+ Noeud d'identification LAT
+
+
+
+
+
+ RADIUS_LOGIN_LAT_GROUP
+ (int)
+
+
+
+ Groupe d'identification LAT
+
+
+
+
+
+ RADIUS_FRAMED_APPLETALK_LINK
+ (int)
+
+
+
+ Lien framé Appletalk
+
+
+
+
+
+ RADIUS_FRAMED_APPLETALK_NETWORK
+ (int)
+
+
+
+ Réseau framé Appletalk
+
+
+
+
+
+ RADIUS_FRAMED_APPLETALK_ZONE
+ (int)
+
+
+
+ Zone framé Appletalk
+
+
+
+
+
+ RADIUS_CHAP_CHALLENGE
+ (int)
+
+
+
+ Challenge
+
+
+
+
+
+ RADIUS_NAS_PORT_TYPE
+ (int)
+
+
+
+ Type du port NAS :
+
+ RADIUS_ASYNC
+ RADIUS_SYNC
+ RADIUS_ISDN_SYNC
+ RADIUS_ISDN_ASYNC_V120
+ RADIUS_ISDN_ASYNC_V110
+ RADIUS_VIRTUAL
+ RADIUS_PIAFS
+ RADIUS_HDLC_CLEAR_CHANNEL
+ RADIUS_X_25
+ RADIUS_X_75
+ RADIUS_G_3_FAX
+ RADIUS_SDSL
+ RADIUS_ADSL_CAP
+ RADIUS_ADSL_DMT
+ RADIUS_IDSL
+ RADIUS_ETHERNET
+ RADIUS_XDSL
+ RADIUS_CABLE
+ RADIUS_WIRELESS_OTHER
+ RADIUS_WIRELESS_IEEE_802_11
+
+
+
+
+
+
+ RADIUS_PORT_LIMIT
+ (int)
+
+
+
+ Limite du port
+
+
+
+
+
+ RADIUS_LOGIN_LAT_PORT
+ (int)
+
+
+
+ Port d'identification LAT
+
+
+
+
+
+ RADIUS_CONNECT_INFO
+ (int)
+
+
+
+ Information de connexion
+
+
+
+
+
+ RADIUS_ACCT_STATUS_TYPE
+ (int)
+
+
+
+ Type de statut du compte :
+
+ RADIUS_START
+ RADIUS_STOP
+ RADIUS_ACCOUNTING_ON
+ RADIUS_ACCOUNTING_OFF
+
+
+
+
+
+
+ RADIUS_ACCT_DELAY_TIME
+ (int)
+
+
+
+ Délai maximal d'identification
+
+
+
+
+
+ RADIUS_ACCT_INPUT_OCTETS
+ (int)
+
+
+
+ Octets d'entrée d'identification
+
+
+
+
+
+ RADIUS_ACCT_OUTPUT_OCTETS
+ (int)
+
+
+
+ Octets de sortie d'identification
+
+
+
+
+
+ RADIUS_ACCT_SESSION_ID
+ (int)
+
+
+
+ Identifiant de session d'identification
+
+
+
+
+
+ RADIUS_ACCT_AUTHENTIC
+ (int)
+
+
+
+ Identification authentique, un parmi :
+
+ RADIUS_AUTH_RADIUS
+ RADIUS_AUTH_LOCAL
+ RADIUS_AUTH_REMOTE
+
+
+
+
+
+
+ RADIUS_ACCT_SESSION_TIME
+ (int)
+
+
+
+ Durée de la session d'identification
+
+
+
+
+
+ RADIUS_ACCT_INPUT_PACKETS
+ (int)
+
+
+
+ Paquets d'entrée d'identification
+
+
+
+
+
+ RADIUS_ACCT_OUTPUT_PACKETS
+ (int)
+
+
+
+ Paquets de sortie d'identification
+
+
+
+
+
+ RADIUS_ACCT_TERMINATE_CAUSE
+ (int)
+
+
+
+ Cause de la fin de l'identification, un parmi :
+
+ RADIUS_TERM_USER_REQUEST
+ RADIUS_TERM_LOST_CARRIER
+ RADIUS_TERM_LOST_SERVICE
+ RADIUS_TERM_IDLE_TIMEOUT
+ RADIUS_TERM_SESSION_TIMEOUT
+ RADIUS_TERM_ADMIN_RESET
+ RADIUS_TERM_ADMIN_REBOOT
+ RADIUS_TERM_PORT_ERROR
+ RADIUS_TERM_NAS_ERROR
+ RADIUS_TERM_NAS_REQUEST
+ RADIUS_TERM_NAS_REBOOT
+ RADIUS_TERM_PORT_UNNEEDED
+ RADIUS_TERM_PORT_PREEMPTED
+ RADIUS_TERM_PORT_SUSPENDED
+ RADIUS_TERM_SERVICE_UNAVAILABLE
+ RADIUS_TERM_CALLBACK
+ RADIUS_TERM_USER_ERROR
+ RADIUS_TERM_HOST_REQUEST
+
+
+
+
+
+
+ RADIUS_ACCT_MULTI_SESSION_ID
+ (int)
+
+
+
+ Identifiant d'une session multiple d'identification
+
+
+
+
+
+ RADIUS_ACCT_LINK_COUNT
+ (int)
+
+
+
+ Nombre de liens d'identification
+
+
+
+
+
+ Constantes de type de service
+
+
+ RADIUS_LOGIN
+
+
+
+
+
+
+
+
+ RADIUS_FRAMED
+
+
+
+
+
+
+
+
+ RADIUS_CALLBACK_LOGIN
+
+
+
+
+
+
+
+
+ RADIUS_CALLBACK_FRAMED
+
+
+
+
+
+
+
+
+ RADIUS_OUTBOUND
+
+
+
+
+
+
+
+
+ RADIUS_ADMINISTRATIVE
+
+
+
+
+
+
+
+
+ RADIUS_NAS_PROMPT
+
+
+
+
+
+
+
+
+ RADIUS_AUTHENTICATE_ONLY
+
+
+
+
+
+
+
+
+ RADIUS_CALLBACK_NAS_PROMPT
+
+
+
+
+
+
+
+
+
+ Framed-Protocol Constants
+
+
+ RADIUS_PPP
+
+
+
+
+
+
+
+
+ RADIUS_SLIP
+
+
+
+
+
+
+
+
+ RADIUS_ARAP
+
+
+
+
+
+
+
+
+ RADIUS_GANDALF
+
+
+
+
+
+
+
+
+ RADIUS_XYLOGICS
+
+
+
+
+
+
+
+
+
+ Framed-Compression Constants
+
+
+ RADIUS_COMP_NONE
+
+
+
+
+
+
+
+
+ RADIUS_COMP_VJ
+
+
+
+
+
+
+
+
+ RADIUS_COMP_IPXHDR
+
+
+
+
+
+
+
+
+ RADIUS_COMP_STAC_LZS
+
+
+
+
+
+
+
+
+
+ NAS Port Type Constants
+
+
+ RADIUS_ASYNC
+
+
+
+
+
+
+
+
+ RADIUS_SYNC
+
+
+
+
+
+
+
+
+ RADIUS_ISDN_SYNC
+
+
+
+
+
+
+
+
+ RADIUS_ISDN_ASYNC_V120
+
+
+
+
+
+
+
+
+ RADIUS_ISDN_ASYNC_V110
+
+
+
+
+
+
+
+
+ RADIUS_VIRTUAL
+
+
+
+
+
+
+
+
+ RADIUS_PIAFS
+
+
+
+
+
+
+
+
+ RADIUS_HDLC_CLEAR_CHANNEL
+
+
+
+
+
+
+
+
+ RADIUS_X_25
+
+
+
+
+
+
+
+
+ RADIUS_X_75
+
+
+
+
+
+
+
+
+ RADIUS_G_3_FAX
+
+
+
+
+
+
+
+
+ RADIUS_SDSL
+
+
+
+
+
+
+
+
+ RADIUS_ADSL_CAP
+
+
+
+
+
+
+
+
+ RADIUS_ADSL_DMT
+
+
+
+
+
+
+
+
+ RADIUS_IDSL
+
+
+
+
+
+
+
+
+ RADIUS_ETHERNET
+
+
+
+
+
+
+
+
+ RADIUS_XDSL
+
+
+
+
+
+
+
+
+ RADIUS_CABLE
+
+
+
+
+
+
+
+
+ RADIUS_WIRELESS_OTHER
+
+
+
+
+
+
+
+
+ RADIUS_WIRELESS_IEEE_802_11
+
+
+
+
+
+
+
+
+
+ Accounting Status Type Constants
+
+
+ RADIUS_START
+
+
+
+
+
+
+
+
+ RADIUS_STOP
+
+
+
+
+
+
+
+
+ RADIUS_ACCOUNTING_ON
+
+
+
+
+
+
+
+
+ RADIUS_ACCOUNTING_OFF
+
+
+
+
+
+
+
+
+
+ Accounting Authentic Constants
+
+
+ RADIUS_AUTH_RADIUS
+
+
+
+
+
+
+
+
+ RADIUS_AUTH_LOCAL
+
+
+
+
+
+
+
+
+ RADIUS_AUTH_REMOTE
+
+
+
+
+
+
+
+
+
+ Accounting Terminate Cause Constants
+
+
+ RADIUS_TERM_USER_REQUEST
+
+
+
+
+
+
+
+
+ RADIUS_TERM_LOST_CARRIER
+
+
+
+
+
+
+
+
+ RADIUS_TERM_LOST_SERVICE
+
+
+
+
+
+
+
+
+ RADIUS_TERM_IDLE_TIMEOUT
+
+
+
+
+
+
+
+
+ RADIUS_TERM_SESSION_TIMEOUT
+
+
+
+
+
+
+
+
+ RADIUS_TERM_ADMIN_RESET
+
+
+
+
+
+
+
+
+ RADIUS_TERM_ADMIN_REBOOT
+
+
+
+
+
+
+
+
+ RADIUS_TERM_PORT_ERROR
+
+
+
+
+
+
+
+
+ RADIUS_TERM_NAS_ERROR
+
+
+
+
+
+
+
+
+ RADIUS_TERM_NAS_REQUEST
+
+
+
+
+
+
+
+
+ RADIUS_TERM_NAS_REBOOT
+
+
+
+
+
+
+
+
+ RADIUS_TERM_PORT_UNNEEDED
+
+
+
+
+
+
+
+
+ RADIUS_TERM_PORT_PREEMPTED
+
+
+
+
+
+
+
+
+ RADIUS_TERM_PORT_SUSPENDED
+
+
+
+
+
+
+
+
+ RADIUS_TERM_SERVICE_UNAVAILABLE
+
+
+
+
+
+
+
+
+ RADIUS_TERM_CALLBACK
+
+
+
+
+
+
+
+
+ RADIUS_TERM_USER_ERROR
+
+
+
+
+
+
+
+
+ RADIUS_TERM_HOST_REQUEST
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_CHAP_RESPONSE
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_CHAP_ERROR
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_CHAP_PW_1
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_CHAP_PW_2
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_CHAP_LM_ENC_PW
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_CHAP_NT_ENC_PW
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_MPPE_ENCRYPTION_POLICY
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_MPPE_ENCRYPTION_TYPES
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_RAS_VENDOR
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_CHAP_DOMAIN
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_CHAP_CHALLENGE
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_CHAP_MPPE_KEYS
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_BAP_USAGE
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_LINK_UTILIZATION_THRESHOLD
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_LINK_DROP_TIME_LIMIT
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_MPPE_SEND_KEY
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_MPPE_RECV_KEY
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_RAS_VERSION
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_OLD_ARAP_PASSWORD
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_NEW_ARAP_PASSWORD
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_ARAP_PASSWORD_CHANGE_REASON
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_FILTER
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_ACCT_AUTH_TYPE
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_ACCT_EAP_TYPE
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_CHAP2_RESPONSE
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_CHAP2_SUCCESS
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_CHAP2_PW
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_PRIMARY_DNS_SERVER
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_SECONDARY_DNS_SERVER
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_PRIMARY_NBNS_SERVER
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_SECONDARY_NBNS_SERVER
+
+
+
+
+
+
+
+
+ RADIUS_MICROSOFT_MS_ARAP_CHALLENGE
+
+
+
+
+
+
+
+
+
+
+ Types d'attribut RADIUS spécifique au vendeur
+
+
+
+
+ RADIUS_VENDOR_MICROSOFT
+ (int)
+
+
+
+ Attributs spécifiques à Microsoft (RFC 2548) :
+
+ RADIUS_MICROSOFT_MS_CHAP_RESPONSE
+ RADIUS_MICROSOFT_MS_CHAP_ERROR
+ RADIUS_MICROSOFT_MS_CHAP_PW_1
+ RADIUS_MICROSOFT_MS_CHAP_PW_2
+ RADIUS_MICROSOFT_MS_CHAP_LM_ENC_PW
+ RADIUS_MICROSOFT_MS_CHAP_NT_ENC_PW
+ RADIUS_MICROSOFT_MS_MPPE_ENCRYPTION_POLICY
+ RADIUS_MICROSOFT_MS_MPPE_ENCRYPTION_TYPES
+ RADIUS_MICROSOFT_MS_RAS_VENDOR
+ RADIUS_MICROSOFT_MS_CHAP_DOMAIN
+ RADIUS_MICROSOFT_MS_CHAP_CHALLENGE
+ RADIUS_MICROSOFT_MS_CHAP_MPPE_KEYS
+ RADIUS_MICROSOFT_MS_BAP_USAGE
+ RADIUS_MICROSOFT_MS_LINK_UTILIZATION_THRESHOLD
+ RADIUS_MICROSOFT_MS_LINK_DROP_TIME_LIMIT
+ RADIUS_MICROSOFT_MS_MPPE_SEND_KEY
+ RADIUS_MICROSOFT_MS_MPPE_RECV_KEY
+ RADIUS_MICROSOFT_MS_RAS_VERSION
+ RADIUS_MICROSOFT_MS_OLD_ARAP_PASSWORD
+ RADIUS_MICROSOFT_MS_NEW_ARAP_PASSWORD
+ RADIUS_MICROSOFT_MS_ARAP_PASSWORD_CHANGE_REASON
+ RADIUS_MICROSOFT_MS_FILTER
+ RADIUS_MICROSOFT_MS_ACCT_AUTH_TYPE
+ RADIUS_MICROSOFT_MS_ACCT_EAP_TYPE
+ RADIUS_MICROSOFT_MS_CHAP2_RESPONSE
+ RADIUS_MICROSOFT_MS_CHAP2_SUCCESS
+ RADIUS_MICROSOFT_MS_CHAP2_PW
+ RADIUS_MICROSOFT_MS_PRIMARY_DNS_SERVER
+ RADIUS_MICROSOFT_MS_SECONDARY_DNS_SERVER
+ RADIUS_MICROSOFT_MS_PRIMARY_NBNS_SERVER
+ RADIUS_MICROSOFT_MS_SECONDARY_NBNS_SERVER
+ RADIUS_MICROSOFT_MS_ARAP_CHALLENGE
+
+
+
+
+
+
+
+
From 3d5465e398c92c1bea92f5cca33ad85ca03e0e0d Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:41:23 +0100
Subject: [PATCH 65/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/reflection/reflectionenum/getb?=
=?UTF-8?q?ackingtype.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../reflectionenum/getbackingtype.xml | 248 +++++++++---------
1 file changed, 124 insertions(+), 124 deletions(-)
diff --git a/reference/reflection/reflectionenum/getbackingtype.xml b/reference/reflection/reflectionenum/getbackingtype.xml
index c86a68eec1..9a1b3984ba 100644
--- a/reference/reflection/reflectionenum/getbackingtype.xml
+++ b/reference/reflection/reflectionenum/getbackingtype.xml
@@ -1,124 +1,124 @@
-
-
-
-
-
- ReflectionEnum::getBackingType
- Renvoie le type de base d'une énumération, si présent
-
-
-
- &reftitle.description;
-
- publicReflectionNamedTypenullReflectionEnum::getBackingType
-
-
-
- Si l'énumération est une énumération avec valeur de base, cette méthode renverra une instance
- de ReflectionType pour le type de base de l'énumération.
- Si ce n'est pas une énumération avec valeur de base, elle renverra &null;.
-
-
-
-
-
- &reftitle.parameters;
- &no.function.parameters;
-
-
-
- &reftitle.returnvalues;
-
- Une instance de ReflectionNamedType, ou &null;
- si l'énumération n'a pas de type de base.
-
-
-
-
- &reftitle.changelog;
-
-
-
-
- &Version;
- &Description;
-
-
-
-
- 8.2.0
-
- La valeur de retour est maintenant déclarée en tant que ?ReflectionNamedType. Auparavant,
- ?ReflectionType était déclaré.
-
-
-
-
-
-
-
-
- &reftitle.examples;
-
-
- Exemple de ReflectionEnum::getBackingType
-
-getBackingType();
-
-var_dump((string) $rBackingType);
-?>
-]]>
-
- &example.outputs;
-
-
-
-
-
-
-
-
- &reftitle.seealso;
-
-
- Enumerations
- ReflectionEnum::isBacked
-
-
-
-
-
-
+
+
+
+
+
+ ReflectionEnum::getBackingType
+ Renvoie le type de base d'une énumération, si présent
+
+
+
+ &reftitle.description;
+
+ publicReflectionNamedTypenullReflectionEnum::getBackingType
+
+
+
+ Si l'énumération est une énumération avec valeur de base, cette méthode renverra une instance
+ de ReflectionType pour le type de base de l'énumération.
+ Si ce n'est pas une énumération avec valeur de base, elle renverra &null;.
+
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ Une instance de ReflectionNamedType, ou &null;
+ si l'énumération n'a pas de type de base.
+
+
+
+
+ &reftitle.changelog;
+
+
+
+
+ &Version;
+ &Description;
+
+
+
+
+ 8.2.0
+
+ La valeur de retour est maintenant déclarée en tant que ?ReflectionNamedType. Auparavant,
+ ?ReflectionType était déclaré.
+
+
+
+
+
+
+
+
+ &reftitle.examples;
+
+
+ Exemple de ReflectionEnum::getBackingType
+
+getBackingType();
+
+var_dump((string) $rBackingType);
+?>
+]]>
+
+ &example.outputs;
+
+
+
+
+
+
+
+
+ &reftitle.seealso;
+
+
+ Enumerations
+ ReflectionEnum::isBacked
+
+
+
+
+
+
From 5bb51689a0c0928a7559bc41b62d0e0cfb68a018 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:41:24 +0100
Subject: [PATCH 66/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/reflection/reflectionproperty/?=
=?UTF-8?q?ispublic.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../reflectionproperty/ispublic.xml | 178 +++++++++---------
1 file changed, 89 insertions(+), 89 deletions(-)
diff --git a/reference/reflection/reflectionproperty/ispublic.xml b/reference/reflection/reflectionproperty/ispublic.xml
index 9514ab3b2c..16bdc37aae 100644
--- a/reference/reflection/reflectionproperty/ispublic.xml
+++ b/reference/reflection/reflectionproperty/ispublic.xml
@@ -1,89 +1,89 @@
-
-
-
-
-
- ReflectionProperty::isPublic
- Vérifie si la propriété est publique
-
-
-
- &reftitle.description;
-
- publicboolReflectionProperty::isPublic
-
-
-
- Vérifie si la propriété est publique.
-
-
-
-
- &reftitle.parameters;
- &no.function.parameters;
-
-
-
- &reftitle.returnvalues;
-
- &true; si la propriété est marquée comme publique, &false; sinon.
-
-
-
- Notez que cela ne se réfère qu'à la visibilité principale,
- et non à une visibilité de définition,
- si spécifiée.
-
-
-
-
-
- &reftitle.notes;
-
-
- Il faut être conscient que le fait qu'une propriété soit publique
- ne signifie pas toujours qu'elle est accessible en écriture. Une propriété
- peut être virtuelle sans crochet set, ou pourrait être
- readonly et avoir déjà été écrite, ou encore avoir une
- visibilité set
- définie comme non publique. Dans tous ces cas, cette méthode retournera
- &true;, mais la propriété ne sera pas modifiable.
-
-
-
-
-
- &reftitle.seealso;
-
-
- ReflectionProperty::isProtected
- ReflectionProperty::isProtectedSet
- ReflectionProperty::isPrivate
- ReflectionProperty::isPrivateSet
- ReflectionProperty::isReadOnly
- ReflectionProperty::isStatic
-
-
-
-
-
-
+
+
+
+
+
+ ReflectionProperty::isPublic
+ Vérifie si la propriété est publique
+
+
+
+ &reftitle.description;
+
+ publicboolReflectionProperty::isPublic
+
+
+
+ Vérifie si la propriété est publique.
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ &true; si la propriété est marquée comme publique, &false; sinon.
+
+
+
+ Notez que cela ne se réfère qu'à la visibilité principale,
+ et non à une visibilité de définition,
+ si spécifiée.
+
+
+
+
+
+ &reftitle.notes;
+
+
+ Il faut être conscient que le fait qu'une propriété soit publique
+ ne signifie pas toujours qu'elle est accessible en écriture. Une propriété
+ peut être virtuelle sans crochet set, ou pourrait être
+ readonly et avoir déjà été écrite, ou encore avoir une
+ visibilité set
+ définie comme non publique. Dans tous ces cas, cette méthode retournera
+ &true;, mais la propriété ne sera pas modifiable.
+
+
+
+
+
+ &reftitle.seealso;
+
+
+ ReflectionProperty::isProtected
+ ReflectionProperty::isProtectedSet
+ ReflectionProperty::isPrivate
+ ReflectionProperty::isPrivateSet
+ ReflectionProperty::isReadOnly
+ ReflectionProperty::isStatic
+
+
+
+
+
+
From 882b846c27b3e638802ded1bdab0020c970a7bca Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:41:24 +0100
Subject: [PATCH 67/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/rpminfo/book.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/rpminfo/book.xml | 92 +++++++++++++++++++-------------------
1 file changed, 46 insertions(+), 46 deletions(-)
diff --git a/reference/rpminfo/book.xml b/reference/rpminfo/book.xml
index 7ae7d2902e..f191b6c386 100644
--- a/reference/rpminfo/book.xml
+++ b/reference/rpminfo/book.xml
@@ -1,46 +1,46 @@
-
-
-
-
-
- RpmInfo
- RpmInfo
-
-
- &reftitle.intro;
-
- Cette extension permet de récupérer des informations à partir de fichiers RPM
- ou de la base de données des RPM installés.
-
-
- Elle fournit également une enveloppe de flux rpm pour récupérer le contenu des RPM
- (depuis la version 1.0.0 avec librpm >= 4.13).
-
-
-
- &reference.rpminfo.setup;
- &reference.rpminfo.constants;
- &reference.rpminfo.reference;
-
-
-
-
+
+
+
+
+
+ RpmInfo
+ RpmInfo
+
+
+ &reftitle.intro;
+
+ Cette extension permet de récupérer des informations à partir de fichiers RPM
+ ou de la base de données des RPM installés.
+
+
+ Elle fournit également une enveloppe de flux rpm pour récupérer le contenu des RPM
+ (depuis la version 1.0.0 avec librpm >= 4.13).
+
+
+
+ &reference.rpminfo.setup;
+ &reference.rpminfo.constants;
+ &reference.rpminfo.reference;
+
+
+
+
From cd7d0c2c974934cdd8ef9330015121ae89d52a16 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:41:24 +0100
Subject: [PATCH 68/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/rrd/functions/rrd-first.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/rrd/functions/rrd-first.xml | 146 +++++++++++++-------------
1 file changed, 73 insertions(+), 73 deletions(-)
diff --git a/reference/rrd/functions/rrd-first.xml b/reference/rrd/functions/rrd-first.xml
index be2d3bf6ea..b6412de415 100644
--- a/reference/rrd/functions/rrd-first.xml
+++ b/reference/rrd/functions/rrd-first.xml
@@ -1,73 +1,73 @@
-
-
-
-
-
-
- rrd_first
- Récupère le timestamp du premier échantillon depuis le fichier RRD
-
-
-
- &reftitle.description;
-
- intrrd_first
- stringfile
- intraaindex0
-
-
- Retourne les données du premier échantillon depuis le RRD spécifié
- du fichier RRD.
-
-
-
-
- &reftitle.parameters;
-
-
- file
-
-
- Nom de fichier de la base de données RRD.
-
-
-
-
- raaindex
-
-
- Le numéro d'index du RRA à examiner. La valeur par défaut est 0.
-
-
-
-
-
-
-
- &reftitle.returnvalues;
-
- Timestamp unix,&return.falseforfailure;.
-
-
-
-
-
+
+
+
+
+
+
+ rrd_first
+ Récupère le timestamp du premier échantillon depuis le fichier RRD
+
+
+
+ &reftitle.description;
+
+ intrrd_first
+ stringfile
+ intraaindex0
+
+
+ Retourne les données du premier échantillon depuis le RRD spécifié
+ du fichier RRD.
+
+
+
+
+ &reftitle.parameters;
+
+
+ file
+
+
+ Nom de fichier de la base de données RRD.
+
+
+
+
+ raaindex
+
+
+ Le numéro d'index du RRA à examiner. La valeur par défaut est 0.
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+
+ Timestamp unix,&return.falseforfailure;.
+
+
+
+
+
From 48c074686da34c0629504e80cac70e56acddffcc Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:41:25 +0100
Subject: [PATCH 69/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/runkit7/functions/runkit7-cons?=
=?UTF-8?q?tant-remove.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../functions/runkit7-constant-remove.xml | 144 +++++++++---------
1 file changed, 72 insertions(+), 72 deletions(-)
diff --git a/reference/runkit7/functions/runkit7-constant-remove.xml b/reference/runkit7/functions/runkit7-constant-remove.xml
index fdf85cce1a..3f54c99097 100644
--- a/reference/runkit7/functions/runkit7-constant-remove.xml
+++ b/reference/runkit7/functions/runkit7-constant-remove.xml
@@ -1,72 +1,72 @@
-
-
-
-
-
- runkit7_constant_remove
-
- Enlève/Supprime une constante déjà définie
-
-
-
-
- &reftitle.description;
-
- boolrunkit7_constant_remove
- stringconstant_name
-
-
-
-
- &reftitle.parameters;
-
-
- constant_name
-
-
- Le nom de la constante à enlever. Soit le nom d'une constante globale,
- soit classname::constname indiquant une constante de classe.
-
-
-
-
-
-
-
- &reftitle.returnvalues;
-
- &return.success;
-
-
-
-
- &reftitle.seealso;
-
- define
- runkit7_constant_add
- runkit7_constant_redefine
-
-
-
-
-
-
+
+
+
+
+
+ runkit7_constant_remove
+
+ Enlève/Supprime une constante déjà définie
+
+
+
+
+ &reftitle.description;
+
+ boolrunkit7_constant_remove
+ stringconstant_name
+
+
+
+
+ &reftitle.parameters;
+
+
+ constant_name
+
+
+ Le nom de la constante à enlever. Soit le nom d'une constante globale,
+ soit classname::constname indiquant une constante de classe.
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+
+ &return.success;
+
+
+
+
+ &reftitle.seealso;
+
+ define
+ runkit7_constant_add
+ runkit7_constant_redefine
+
+
+
+
+
+
From 6f37c4427b9bdadc218c3118c38000a83713e499 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:41:25 +0100
Subject: [PATCH 70/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/session/book.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/session/book.xml | 230 ++++++++++++++++++-------------------
1 file changed, 115 insertions(+), 115 deletions(-)
diff --git a/reference/session/book.xml b/reference/session/book.xml
index 0b8ecf71b8..c741f8986a 100644
--- a/reference/session/book.xml
+++ b/reference/session/book.xml
@@ -1,115 +1,115 @@
-
-
-
-
-
-
-
- Gestion des sessions
- Sessions
-
-
-
- &reftitle.intro;
-
- Le support des sessions de PHP est un moyen de préserver
- des données entre plusieurs accès.
-
-
- Chaque visiteur accédant à votre page web se voit assigner un
- identifiant unique, appelé "identifiant de session". Il peut
- être stocké soit dans un cookie, soit propagé dans l'URL.
-
-
- Le support des sessions vous permet de stocker des données
- entre les requêtes dans le tableau superglobal $_SESSION.
- Lorsqu'un visiteur accède à votre site, PHP va vérifier automatiquement (si
- est activé) ou sur demande (explicitement avec
- session_start) s'il existe une
- session du même nom. Si c'est le cas, l'environnement
- précédemment sauvé sera recréé.
-
-
-
- Si vous activez
- session.auto_start alors le seul moyen de mettre des objets
- en session est de charger les définitions de classe avec
- auto_prepend_file
- dans lequel vous chargez les définitions dont vous avez besoin,
- ou bien vous devrez utiliser serialize
- sur votre objet, et unserialize
- pour le récupérer.
-
-
-
- La variable $_SESSION (et toutes les variables
- enregistrées) sont sérialisées en interne par PHP en utilisant le
- gestionnaire de sérialisation spécifié par l'option de configuration
- session.serialize_handler,
- après l'exécution du script PHP. Les variables qui sont indéfinies sont marquées
- comme telles. Lors des accès ultérieurs, elles ne seront pas
- définies, jusqu'à ce que l'utilisateur le fasse.
-
-
-
- En raison du fait que les données de session sont sérialisées,
- les variables de type resource ne peuvent être stockées
- dans une session.
-
-
- Les gestionnaires de sérialisation (php
- et php_binary) héritent des limitations de
- register_globals. Aussi, les index numériques ou les index
- sous forme de chaînes de caractères contenant des caractères
- spéciaux (| et !) ne
- peuvent pas être utilisés. Le fait de les utiliser génèrera des
- erreurs en fin de script. php_serialize
- n'a pas ce genre de limitations.
-
-
-
-
- Notez que lorsque vous travaillez avec les sessions, un enregistrement
- dans la session ne sera pas créé tant que la variable ne sera pas
- enregistrée en ajoutant une clé à la variable super-globale
- $_SESSION. Cela n'est vrai que si vous avez débuté une
- session en appelant la fonction session_start.
-
-
-
-
-
- &reference.session.setup;
- &reference.session.constants;
- &reference.session.examples;
- &reference.session.upload-progress;
- &reference.session.security;
- &reference.session.reference;
- &reference.session.sessionhandler;
- &reference.session.sessionhandlerinterface;
- &reference.session.sessionidinterface;
- &reference.session.sessionupdatetimestamphandlerinterface;
-
-
-
-
+
+
+
+
+
+
+
+ Gestion des sessions
+ Sessions
+
+
+
+ &reftitle.intro;
+
+ Le support des sessions de PHP est un moyen de préserver
+ des données entre plusieurs accès.
+
+
+ Chaque visiteur accédant à votre page web se voit assigner un
+ identifiant unique, appelé "identifiant de session". Il peut
+ être stocké soit dans un cookie, soit propagé dans l'URL.
+
+
+ Le support des sessions vous permet de stocker des données
+ entre les requêtes dans le tableau superglobal $_SESSION.
+ Lorsqu'un visiteur accède à votre site, PHP va vérifier automatiquement (si
+ est activé) ou sur demande (explicitement avec
+ session_start) s'il existe une
+ session du même nom. Si c'est le cas, l'environnement
+ précédemment sauvé sera recréé.
+
+
+
+ Si vous activez
+ session.auto_start alors le seul moyen de mettre des objets
+ en session est de charger les définitions de classe avec
+ auto_prepend_file
+ dans lequel vous chargez les définitions dont vous avez besoin,
+ ou bien vous devrez utiliser serialize
+ sur votre objet, et unserialize
+ pour le récupérer.
+
+
+
+ La variable $_SESSION (et toutes les variables
+ enregistrées) sont sérialisées en interne par PHP en utilisant le
+ gestionnaire de sérialisation spécifié par l'option de configuration
+ session.serialize_handler,
+ après l'exécution du script PHP. Les variables qui sont indéfinies sont marquées
+ comme telles. Lors des accès ultérieurs, elles ne seront pas
+ définies, jusqu'à ce que l'utilisateur le fasse.
+
+
+
+ En raison du fait que les données de session sont sérialisées,
+ les variables de type resource ne peuvent être stockées
+ dans une session.
+
+
+ Les gestionnaires de sérialisation (php
+ et php_binary) héritent des limitations de
+ register_globals. Aussi, les index numériques ou les index
+ sous forme de chaînes de caractères contenant des caractères
+ spéciaux (| et !) ne
+ peuvent pas être utilisés. Le fait de les utiliser génèrera des
+ erreurs en fin de script. php_serialize
+ n'a pas ce genre de limitations.
+
+
+
+
+ Notez que lorsque vous travaillez avec les sessions, un enregistrement
+ dans la session ne sera pas créé tant que la variable ne sera pas
+ enregistrée en ajoutant une clé à la variable super-globale
+ $_SESSION. Cela n'est vrai que si vous avez débuté une
+ session en appelant la fonction session_start.
+
+
+
+
+
+ &reference.session.setup;
+ &reference.session.constants;
+ &reference.session.examples;
+ &reference.session.upload-progress;
+ &reference.session.security;
+ &reference.session.reference;
+ &reference.session.sessionhandler;
+ &reference.session.sessionhandlerinterface;
+ &reference.session.sessionidinterface;
+ &reference.session.sessionupdatetimestamphandlerinterface;
+
+
+
+
From 557f5eba248241c0a8aa5c400c7ab90cd83c00f8 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:41:25 +0100
Subject: [PATCH 71/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/session/security.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/session/security.xml | 1716 ++++++++++++++++----------------
1 file changed, 858 insertions(+), 858 deletions(-)
diff --git a/reference/session/security.xml b/reference/session/security.xml
index 55c0d8fd9a..7eb08ef9df 100644
--- a/reference/session/security.xml
+++ b/reference/session/security.xml
@@ -1,858 +1,858 @@
-
-
-
-
-
-
- Sessions et Sécurité
-
- Lien externe : Session fixation
-
-
- La gestion des sessions HTTP représente le cœur de la sécurité sur le Web.
- Des mesures d'atténuation doivent être prises en compte afin d'assurer la
- sécurité des sessions.
- Les développeurs doivent activer/utiliser les paramètres de sécurité appropriés.
-
-
-
- Gestion basique des sessions
-
-
- Sécurité des sessions
-
- Le module de session ne peut pas garantir que les informations stockées
- dans une session ne sont vues uniquement par l'utilisateur qui
- a créé la session. Des mesures supplémentaires sont nécessaires pour
- protéger la confidentialité de la session, suivant la valeur
- qu'on lui associe.
-
-
-
- L'importance des données stockées dans une session doit être évaluée
- et des protections supplémentaires peuvent être déployées ;
- ceci a obligatoirement un coût tel qu'être moins pratique pour
- l'utilisateur. Par exemple, pour protéger les utilisateurs
- d'une tactique simple, la directive session.use_only_cookies
- doit être activée. Dans ce cas, les cookies doivent être
- activés obligatoirement côté client sinon les sessions ne
- fonctionneront pas.
-
-
-
- Il y a plusieurs façons de divulguer des identifiants de session à
- des tierces personnes. I.E. injections Javascripts, identifiants
- de session dans les URLs, reniflement de paquets, accès physique
- au périphérique, etc.
- Un identifiant de session divulgué permet à un tiers d'accéder
- à toutes les ressources associées avec cet identifiant. Tout d'abord,
- les URLs contenant les identifiants de session. S'il y a des liens
- vers des sites ou des ressources externes, l'URL incluant l'identifiant
- de session doit être stockée dans les logs referrer du site externe.
- Si ces données ne sont pas chiffrées, les identifiants de session
- vont être transmis en texte clair sur le réseau. La solution ici est
- d'implémenter SSL/TLS sur le serveur et le rendre mandataire pour les
- utilisateurs. HSTS devrait être utilisé pour améliorer également la
- sécurité.
-
-
-
-
- Même HTTPS ne peut protéger la confidentialité des données
- dans tous les cas. Par exemple, les vulnérabilités CRIME et BEAST
- permettent à un attaquant de lire les données. De plus, notez
- que certains réseaux utilisent des proxys HTTPS MITM pour
- des audits. Les attaquants peuvent également mettre en place
- ce genre de proxy.
-
-
-
-
-
-
- Gestion des sessions non adaptatives
-
-
- Le gestionnaire de sessions PHP est adaptatif, par défaut.
- Un gestionnaire de sessions adaptatif apporte des
- risques supplémentaires.
-
-
-
- Lorsque session.use_strict_mode
- est activé, et que le gestionnaire de sauvegarde des sessions le supporte,
- un identifiant de session non initialisé est rejeté, et un nouveau est créé.
- Ceci prévient une attaque qui force les utilisateurs à utiliser un
- identifiant de session connu.
- Un attaquant peut passer des liens ou envoyer des emails qui contient
- l'identifiant de session.
- I.e. http://example.com/page.php?PHPSESSID=123456789 si
- session.use_trans_sid est activé,
- la victime commencera une session en utilisant l'identifiant de session
- fourni par l'attaquant.
- session.use_strict_mode
- permet d'annuler ce type de risque.
-
-
-
-
- Les gestionnaires de sauvegarde définis par l'utilisateur peuvent
- aussi supporter le mode de session strict en implémentant
- la validation des identifiants de session. Tous les gestionnaires de
- sauvegarde définis par l'utilisateur devraient implémenter la validation
- des identifiants de session.
-
-
-
-
- Le cookie d'identifiant de session peut être défini avec les
- attributs domain, path, httponly, secure et, depuis PHP 7.3, SameSite.
- Il existe une priorité définie par les navigateurs.
- En utilisant les priorités, un attaquant peut définir l'identifiant de
- session qui peut être utilisé en permanence. L'utilisation de la
- directive session.use_only_cookies
- ne permet pas de résoudre ce problème.
- session.use_strict_mode
- permet de mitiger ce risque. Avec la directive
- session.use_strict_mode=On,
- l'identifiant de session non initialisé sera refusé.
-
-
-
-
- Même si la directive
- session.use_strict_mode
- limite les risques concernant le gestionnaire adaptatif de session, un
- attaquant peut forcer les utilisateurs à utiliser un identifiant de
- session non initialisé qui a été créé par l'attaquant, i.e. via des injections
- Javascript. Ce type d'attaque peut être limité en utilisant les
- recommandations de ce manuel.
-
-
-
- En suivant ce manuel, les développeurs devraient activer la directive
- session.use_strict_mode,
- utiliser les timestamps basés sur le gestionnaire de session,
- et régénérer les identifiants de session en utilisant la fonction
- session_regenerate_id avec les procédures
- recommandées. Si les développeurs suivent ces instructions, un identifiant de session
- généré par un attaquant sera normalement supprimé.
-
-
-
- Lorsqu'un accès à une session obsolète survient, les développeurs
- devraient sauvegarder toutes les données de la session active de
- l'utilisateur ; ces informations seront utiles pour de futures
- investigations. L'utilisateur devrait être forcé à se déconnecter
- de toutes les sessions, i.e. le forçant ainsi à s'identifier de
- nouveau. Ceci permet de contrer les attaques utilisant des sessions
- volées.
-
-
-
-
-
- L'accès à une session obsolète ne veut pas forcément dire qu'il s'agit d'une
- attaque. Un réseau instable et/ou l'effacement immédiat de la session
- active va conduire des utilisateurs légitimes à utiliser des sessions
- obsolètes.
-
-
-
-
- Depuis 7.1.0, la fonction session_create_id a été
- ajoutée. Cette fonction permet d'accéder à toutes les sessions actives
- d'un utilisateur en préfixant les identifiants de session avec l'identifiant
- de l'utilisateur. L'activation de la directive
- session.use_strict_mode
- est vital dans cette configuration. Sinon, les utilisateurs malicieux
- peuvent définir des identifiants de sessions pour les autres utilisateurs.
-
-
-
-
- Les utilisateurs des versions antérieures à PHP 7.1.0 doivent
- utiliser CSPRNG, i.e. /dev/urandom, ou la fonction
- random_bytes et les fonctions de hachage
- pour générer un nouvel identifiant de session. La fonction
- session_create_id possède des mécanismes de détection
- de collision, et génère un identifiant de session suivant les
- configurations INI des sessions. L'utilisation de la fonction
- session_create_id est recommandée.
-
-
-
-
-
-
- Regénération d'un identifiant de session
-
-
- La directive
- session.use_strict_mode
- est un bon compromis mais n'est pas suffisant. Les développeurs doivent
- également utiliser la fonction session_regenerate_id
- pour la sécurité des sessions.
-
-
-
- La regénération d'un identifiant de session réduit le risque de vol d'identifiants
- de session, aussi, la fonction session_regenerate_id
- doit être utilisée périodiquement; i.e. Regénérer l'identifiant de session toutes
- les 15 minutes pour sécuriser le contenu sensible. Même dans le cas où
- un identifiant de session est volé, à la fois le légitime utilisateur
- et l'attaquant aura sa session qui va expirer. En d'autres termes, l'accès
- au contenu par l'utilisateur ou l'attaquant va générer une erreur d'accès
- à une session obsolète.
-
-
-
- Les identifiants de session doivent être régénérés lorsque
- les privilèges de l'utilisateur sont élevés, comme après une authentification.
- La fonction session_regenerate_id doit être appelée
- avant le stockage des informations d'authentification dans $_SESSION.
- (la fonction session_regenerate_id
- sauvegarde les données de session courantes automatiquement afin de
- sauvegarder les timestamps/etc... dans la session courante.)
- Assurez-vous que la nouvelle session contient le drapeau d'authentification.
-
-
-
- Les développeurs ne doivent pas se baser sur
- l'expiration de l'identifiant de session définie par la directive
- session.gc_maxlifetime.
- Les attaquants peuvent accéder à l'identifiant de session de la victime
- de façon périodique pour éviter son expiration, et permettre son exploitation
- y compris avec des sessions authentifiées.
-
-
-
- Au lieu de cela, les développeurs doivent implémenter un timestamp
- basé sur la gestion des données de session.
-
-
-
-
- Même si le gestionnaire de session peut gérer les timestamps de façon
- transparente, cette fonctionnalité n'est pas implémentée. Les données
- des anciennes sessions doivent être conservées tant que le récupérateur
- de mémoire ne soit passé. Simultanément, les développeurs doivent s'assurer
- eux-mêmes que les données de session obsolètes soient effectivement effacées.
- Cependant, les développeurs ne doivent pas supprimer les données
- de session active trop rapidement. i.e. session_regenerate_id(true);
- et session_destroy ne doivent jamais être appelés
- en même temps pour une session active. Ça peut paraître contradictoire,
- mais c'est une exigence du mandataire.
-
-
-
-
- session_regenerate_idn'effacera pas
- les anciennes sessions par défaut. Les sessions authentifiées obsolètes
- peuvent être présentés pour être utilisées. Les développeurs doivent s'assurer
- que les anciennes sessions ne soient pas utilisées par tout le monde.
- Ils doivent interdire l'accès aux données de session obsolète
- en utilisant eux-même des timestamps.
-
-
-
-
- La suppression soudaine d'une session active produit des effets de bords
- indésirables. Les sessions peuvent disparaître lorsqu'il y a des connexions
- concurentes sur l'application web et/ou lorsque le réseau est instable.
-
-
- Les accès potentiellement malicieux sont indétectables avec la suppression
- soudaine d'une session.
-
-
- Au lieu de supprimer les sessions obsolètes immédiatement, les développeurs
- doivent définir un court temps d'expiration (timestamp) dans
- $_SESSION, et interdire l'accès aux données de session.
-
-
- Les développeurs ne doivent pas interdire l'accès aux données des
- anciennes sessions immédiatement après l'exécution de la fonction
- session_regenerate_id. L'accès doit être interdit
- à un stade ultérieur ; i.e. quelques secondes après pour les réseaux
- stables, comme un réseau filaire et quelques minutes après pour les réseaux
- instables comme des téléphones mobiles ou des réseaux Wi-Fi.
-
-
- Si un utilisateur accède à une session obsolète (session ayant expirée), l'accès
- à cette session doit être refusé. Il est également recommandé de supprimer le
- statut d'authentification de toutes les sessions utilisateurs, car cela
- peut représenter un axe d'attaque.
-
-
-
-
- L'utilisation de la directive session.use_only_cookies et de la fonction
- session_regenerate_id peuvent causer des DoS personnel
- avec des cookies non-supprimés définis par les attaquants. Dans ce cas,
- les développeurs peuvent inviter les utilisateurs à supprimer les cookies
- et les avertir qu'ils peuvent rencontrer un problème de sécurité.
- Les attaquants peuvent définir des cookies malicieux via une application
- web vulnérable, un plugin de navigateur exposé ou vicié, un périphérique
- physique compromis, etc...
-
-
-
-
- Ne vous méprenez pas sur le risque DoS. session.use_strict_mode=On
- est obligatoire pour la sécurité des identifiants de session !
- Tous les sites sont encouragés à activer la directive
- session.use_strict_mode.
-
-
- DoS peut uniquement survenir lorsque le compte subit une attaque. Une injection
- Javascript dans une application représente la plupart des axes d'attaque.
-
-
-
-
-
-
- Suppression des données de session
-
-
- Les données de sessions obsolètes doivent être inaccessibles
- et doivent être supprimées. Le module courant de session
- ne prend pas en charge cet aspect.
-
-
-
- Les données de sessions obsolètes doivent être supprimées aussi vite
- que possible. Cependant, les sessions actives ne doivent pas être
- supprimées instantanément. Pour satisfaire ces recommandations, les développeurs
- eux-mêmes doivent implémenter un gestionnaire des données de session basé sur
- un timestamp.
-
-
-
- Définissez et gérez l'expiration du timestamp dans la variable
- globale $_SESSION. Interdisez l'accès aux données de sessions
- périmées. Lorsqu'un accès à des données de session obsolète est détecté,
- il convient de supprimer toutes les statuts authentifiés des sessions
- utilisateurs et forcer les utilisateurs à s'authentifier de nouveau.
- L'accès à des données de sessions obsolètes peut représenter une attaque.
- Pour arriver à cette fin, les développeurs doivent suivre toutes les sessions
- actives de tous les utilisateurs.
-
-
-
-
- L'accès à une session obsolète peut également survenir à cause d'un réseau instable
- et/ou d'un accès concurrent à un site web, i.e. le serveur tente de définir un
- nouvel identifiant de session via un cookie, mais le paquet Set-Cookie n'a jamais
- atteint le client en raison d'une perte de connexion. Une connexion peut
- créer un nouvel identifiant de session via la fonction session_regenerate_id,
- mais une autre connexion concurrente peut ne pas avoir encore reçu
- l'identifiant de session. Toutefois, les développeurs doivent interdire l'accès
- à une session obsolète à un moment plus éloigné. i.e. la gestion des sessions
- basés sur le timestamp est obligatoire.
-
-
-
-
- En résumé, les données de sessions ne doivent pas être détruites avec la fonction
- session_regenerate_id, ni avec la fonction session_destroy,
- mais les timestamps doivent être utilisés pour contrôler l'accès aux données de
- session. Laissez la fonction session_gc supprimer les données obsolètes
- depuis le stockage des données de sessions.
-
-
-
-
-
- Session et Verrouillage
-
-
- Les données de session sont verrouillées par défaut pour éviter les
- accès concurrent. Le verrouillage est obligatoire pour conserver une
- consistance des données de session au travers les requêtes.
-
-
-
- Cependant, le verrouillage de session peut être utilisé par les attaquants
- pour réaliser des attaques DoS. Pour minimiser le risque d'une attaque DoS
- par verrouillage de session, il convient de minimiser les verrous.
- Utilisez des données en lecture seule lorsque les données de session
- n'ont pas besoin d'être mises à jour. Utilisez l'option 'read_and_close'
- avec la fonction session_start.
- session_start(['read_and_close'=>1]); va clôre
- la session aussi vite que possible après la mise à jour de la variable
- globale $_SESSION en utilisant la fonction session_commit.
-
-
-
- Le module de session courant ne détecte pas
- toutes les modifications de la variable $_SESSION lorsque
- la session est inactive. Il en va de la responsabilité du développeur
- de ne pas modifier la variable $_SESSION lorsque la session est inactive.
-
-
-
-
-
- Sessions actives
-
-
- Les développeurs doivent conserver une trace de toutes les sessions
- actives de chaque utilisateur, et leur notifier le nombre de sessions
- actives, depuis quelle adresse IP, depuis combien de temps, etc.
- PHP ne conserve pas de traces de ces informations. Les développeurs
- sont supposés le faire eux-mêmes.
-
-
-
- Il existe différentes façons de faire cela. Une implémentation possible
- est de définir une base de données qui conserve une trace des données
- nécessaires, et y stocker toutes les informations pertinentes.
- Depuis que les données de session sont GCed, les développeurs doivent
- faire attention aux données GCed pour maintenir la base de données
- des sessions actives consistante.
-
-
-
- Une des implémentations simple est "l'identifiant utilisateur préfixant
- l'identifiant de session" et stocker les informations nécessaires dans
- la variable $_SESSION. La plupart des bases de données sont relativement
- performantes pour sélectionner un préfixe sous la forme d'une &string;.
- Les développeurs DOIVENT utiliser la fonction session_regenerate_id
- ainsi que la fonction session_create_id pour cela.
-
-
-
-
- N'utilisez jamais de données confidentielles comme préfixe.
- Si l'identifiant utilisateur est confidentiel, vous devriez utiliser
- la fonction hash_hmac.
-
-
-
-
-
- L'activation de la directive
- session.use_strict_mode
- est obligatoire pour ce type de configuration. Assurez vous qu'il
- est activé. Sinon, la base de données des sessions actives
- peut être compromise.
-
-
-
-
- Le gestionnaire de session basé sur un timestamp est obligatoire
- pour détecter l'accès à des sessions obsolètes. Lorsque l'accès à une
- session obsolète est détecté, le drapeau d'authentification doit
- être supprimé de toutes les sessions actives de l'utilisateur.
- Ceci permet d'éviter aux attaquants de continuer à exploiter les sessions
- volées.
-
-
-
-
-
- Session et l'auto-identification
-
-
- Les développeurs ne doivent pas utiliser d'identifiants de session avec une
- grande durée de vie pour l'auto-identification, car cela accroit le risque
- d'utiliser des sessions volées. Une fonctionnalité d'auto-identification
- doit être implémenté par le développeur.
-
-
-
- Utilisez une clé de hachage sécurisé à usage unique comme clé
- d'auto-identification en utilisant la fonction
- setcookie. Utilisez un hachage sécurisé
- plus fort que SHA-2. i.e. SHA-256 ou supérieur avec des données
- aléatoires depuis la fonction random_bytes
- ou via /dev/urandom.
-
-
-
- Si l'utilisateur est non authentifié, vérifiez si la clé d'auto-identification
- à usage unique est valide ou non. Dans ce cas où elle est valide, authentifiez
- l'utilisateur et définissez une nouvelle clé de hachage sécurisée à usage unique.
- Une clé d'auto-identification ne doit être utilisée qu'une seule fois, i.e. n'utilisez
- jamais une clé d'auto-identification, et régénérez-la toujours.
-
-
-
- Une clé d'auto-identification est une clé d'authentification avec une
- longue durée, elle doit être protégée autant que possible.
- Utilisez les attributs de cookie path/httponly/secure/SameSite pour la sécurité.
- i.e. ne transmettez jamais la clé d'auto-identification tant que cela
- n'est pas nécessaire.
-
-
-
- Les développeurs doivent implémenter les fonctionnalités qui
- désactivent l'auto-identification, et suppriment les cookies
- contenant les clés d'auto-identification non nécessaires.
-
-
-
-
-
- Attaques CSRF (Cross-Site Request Forgeries)
-
-
- Les sessions et les authentifications ne protègent pas contre les
- attaques CSRF. Les développeurs doivent implémenter des protections
- CSRF eux mêmes.
-
-
-
- La fonction output_add_rewrite_var peut être utilisée pour
- la protection CSRF. Référez vous aux pages du manuel pour plus de détails.
-
-
-
-
- PHP, avant sa version 7.2.0, utilise le même buffer de sortie et les
- mêmes configurations INI que la configuration trans-sid. Toutefois, l'utilisation
- de la fonction output_add_rewrite_var avec les versions
- de PHP antérieures à 7.2.0 n'est pas conseillé.
-
-
-
-
- La plupart des frameworks d'applications web supporte
- la protection CSRF. Référez vous au manuel de votre
- framework d'application web pour plus de détails.
-
-
-
- Depuis PHP 7.3, l'attribut SameSite du cookie de session peut être défini.
- Ceci est une mesure supplémentaire qui peut minimiser
- les vulnérabilités CSRF.
-
-
-
-
-
- Sécurisation des configurations INI de session
-
-
- En sécurisant les configurations INI de sessions, les développeurs
- peuvent éprouver la sécurité des sessions. Beaucoup de configurations
- INI n'ont pas de configuration recommandée. Les développeurs sont
- responsables de la bonne configuration des sessions.
-
-
-
-
-
- session.cookie_lifetime=0
-
-
- La valeur 0 a une signification importante.
- Elle informe les navigateurs de ne pas stocker le cookie dans un
- espace de stockage permanent. Aussi, lorsque le navigateur se ferme,
- le cookie d'identification de session est supprimé immédiatement.
- Si les développeurs définissent une valeur différente de 0, cela permet
- aux autres utilisateurs d'utiliser l'identifiant de session. La
- plupart des applications devraient utiliser "0" comme
- valeur.
-
-
- Si une fonctionnalité d'auto-identification est désirée, les développeurs
- doivent implémenter leur propre système d'auto-identification sécurité.
- N'utilisez pas des identifiants de session à longue durée pour cela.
- Pour plus d'informations, veuillez vous rapporter à la bonne section
- de cette documentation.
-
-
-
-
-
- session.use_cookies=On
-
-
- session.use_only_cookies=On
-
-
- Bien que les cookies HTTP souffrent de soucis techniques, ils
- restent la façon préférée de gérer les identifiants de sessions.
- N'utilisez que les cookies pour la gestion des identifiants de sessions
- lorsque cela est possible. La plupart des applications doivent utiliser
- un cookie pour l'identifiant de session.
-
-
- Si session.use_only_cookies=Off,
- le module de session utilisera les valeurs de l'identifiant
- de sessions définies par les variables GET ou POST fournies,
- et le cookie de l'identifiant de session ne sera pas initialisé.
-
-
-
-
-
- session.use_strict_mode=On
-
-
- Bien que l'activation de session.use_strict_mode
- soit obligatoire pour la sécurité des sessions, cette directive est
- désactivée par défaut.
-
-
- Ce mode évite que le module de session utilise un identifiant de session
- non initialisé. Dit différemment, le module de session ne va accepter
- que les identifiants de sessions valides générés par le module de session.
- Il va rejeter tous les identifiants de session fournis par les utilisateurs.
-
-
- En raison de la spécification des cookies, les attaquants sont capable
- de placer des cookies contenant les identifiants de sessions en configurant
- localement une base de données de cookie ou par injections Javascript.
- session.use_strict_mode peut éviter qu'un attaquant
- n'initialise un identifiant de session.
-
-
-
- Les attaquants peuvent initialiser un identifiant de session avec leur
- propre périphérique, et peuvent définir l'identifiant de session
- de leur victime. Ils doivent alors conserver l'identifiant de session
- actif pour pouvoir en abuser.
- Les attaquants doivent passer par bien d'autres étapes pour réussir leur attaque
- dans ce scénario. Aussi, l'utilisation de la directive
- session.use_strict_mode permet de limiter les risques.
-
-
-
-
-
-
- session.cookie_httponly=On
-
-
- Permet de refuser l'accès à un cookie de session depuis javascript.
- Cette configuration évite qu'un cookie ne soit corrompu par une
- injection Javascript.
-
-
- Il est possible d'utiliser un identifiant de session comme jeton CSRF, mais
- ce n'est pas recommandé. Par exemple, des sources HTML peuvent être
- sauvegardées et envoyées à d'autres utilisateurs.
- Les développeurs ne doivent pas écrire les identifiants de session dans les
- pages web pour des raisons de sécurité. Toutes les applications web doivent
- utiliser l'attribut httponly pour le cookie contenant l'identifiant de session.
-
-
-
- Le jeton CSRF doit être renouvellé périodiquement, tout comme l'identifiant
- de session.
-
-
-
-
-
-
- session.cookie_secure=On
-
-
- Permet d'accéder au cookie d'identifiant de session uniquement lorsque
- le protocole est HTTPS. Si un site web n'est accessible que par HTTPS,
- cette directive doit être activée.
-
-
- HSTS doit être utilisé pour les sites web accessibles que par HTTPS.
-
-
-
-
-
- session.cookie_samesite="Lax" ou
- session.cookie_samesite="Strict"
-
-
- Depuis PHP 7.3, l'attribut "SameSite" peut être défini
- pour le cookie d'identifiant de session. Cet attribut est une façon de
- mitiger les attaques CSRF (Cross Site Request Forgery).
-
-
- La différence entre Lax et Strict est l'accessibilité du cookie dans les requêtes
- originaires d'autres domaines employant la méthode HTTP GET.
- Les cookies utilisant Lax seront accessible via une requête GET originaire
- d'un autre domaine, alors que les cookies utilisant Strict ne le seront pas..
-
-
-
-
-
- session.gc_maxlifetime=[choisissez le plus petit possible]
-
-
- session.gc_maxlifetime est une configuration pour supprimer
- l'identifiant de session obsolète. Le fait de se reposer
- entièrement sur cette configuration n'est pas recommandé.
- Les développeurs doivent gérer la durée de vie des session avec un timestamp
- par eux même.
-
-
- Le GC des sessions (garbage collection) est mieux réalisé en utilisant
- la fonction session_gc.
- La fonction session_gc doit être exécutée par un gestionnaire
- de tâches ; i.e. un cron sur les systèmes Unix.
-
-
- GC est exécuté par probabilité, par défaut. Cette configuration
- ne garantie pas que les anciennes sessions soient
- supprimées. Bien que les développeurs ne doivent pas s'appuyer sur ce paramètre,
- il est recommandé tout de même de le définir à une valeur la plus petite possible.
- Il convient d'ajuster les directives session.gc_probability
- et session.gc_divisor de sorte à ce que
- les sessions obsolètes soient supprimées à fréquence appropriée.
- Si la fonctionnalité d'auto-identification est nécessaire, les développeurs
- doivent implémenter leur propre fonctionnalité d'auto-identification sécurisée ;
- voir ci-dessous pour plus d'informations. N'utilisez jamais l'identifiant
- de session de longue durée pour réaliser ce genre de fonctionnalité.
-
-
-
- Quelques modules de gestion de sauvegarde des sessions n'utilisent pas cette
- fonctionnalité basé sur l'expiration et sur la probabilité ; i.e.
- memcached, memcache. Référez vous à la documentation de ces gestionnaires
- de sauvegarde des sessions pour plus de détails.
-
-
-
-
-
-
- session.use_trans_sid=Off
-
-
- L'utilisation d'un gestionnaire d'identifiants de sessions transparent
- n'est pas interdit. Les développeurs doivent l'employer lorsque nécessaire.
- Pourtant, la désactivation de la gestion des identifiants de session de
- façon transparente permet de sécuriser un peu plus les identifiants de session
- en éliminant la possibilité d'une injection d'identifiant de sessions ou
- de fuite de cet identifiant.
-
-
-
- L'identifiant de session peut fuiter depuis des URLs sauvegardées,
- des URLs dans des emails, d'une source HTML sauvegardée, etc...
-
-
-
-
-
-
- session.trans_sid_tags=[drapeaux limités]
-
-
- (PHP 7.1.0 >=) Les développers ne doivent pas réécrire de drapeaux HTML
- non nécessaires. La valeur par défaut doit être suffisante pour la
- plupart des utilisations. Pour les versions de PHP plus anciennes,
- utilisez plutôt
- url_rewriter.tags.
-
-
-
-
-
- session.trans_sid_hosts=[hôtes limités]
-
-
- (PHP 7.1.0 >=) Ce paramètre définit une liste blanche des hôtes qui sont
- autorisés à réécrire les identifiants de session transparents. Ne jamais
- ajouter d'hôte qui ne sont pas de confiance !
- Le module de session autorise uniquement $_SERVER['HTTP_HOST']
- lorsque ce paramètre est vide.
-
-
-
-
-
- session.referer_check=[URL d'origine]
-
-
- Lorsque le paramètre session.use_trans_sid
- est actif.
- Ce paramètre réduit les risques d'injection d'identifiant de session.
- Si un site web est http://example.com/,
- définissez comme valeur à ce paramètre http://example.com/.
- Notez que les navigateurs HTTPS n'envoient pas l'en-tête referrer.
- Les navigateurs peuvent ne pas envoyer l'en-tête referrer de part
- leur propre configuration. Aussi, ce paramètre ne peut pas être
- considéré comme une mesure fiable de sécurité.
- Malgré tout, son utilisation est recommandée.
-
-
-
-
-
- session.cache_limiter=nocache
-
-
- S'assure que le contenu HTTP n'est pas mis en cache pour les sessions
- authentifiées. Permet la mise en cache que pour les contenus
- qui ne sont pas privés. Sinon, le contenu sera exposé.
- La valeur "private" doit être employé si le contenu HTTP n'inclut pas
- des données sensibles d'un point de vue sécurité. Notez que "private"
- peut transmettre des données privées mises en cache pour les clients
- partagés. "public" doit être uniquement utilisé lorsque le contenu HTML
- ne contient aucune donnée privée.
-
-
-
-
-
- session.hash_function="sha256"
-
-
- (PHP 7.1.0 <) Une fonction de hachage forte va générer un identifiant
- de session fort. Bien qu'une collision de hachage soit peu probable avec des
- algorithme de hachage MD5, les développeurs doivent utiliser SHA-2 ou un
- algorithme de hachage plus fort comme sha384 et sha512.
- Les développeurs doivent s'assurer d'une longueur suffisante de
- l'entropie pour la
- fonction de hachage utilisée.
-
-
-
-
-
- session.save_path=[dossier non lisible par tout le monde]
-
-
- Si ce paramètre est défini à un dossier accessible en lecture par tout le monde,
- comme /tmp (par défaut), les autres utilisateurs du serveur
- seront capables de récupérer les sessions en listant les fichiers présents
- dans ce répertoire.
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+ Sessions et Sécurité
+
+ Lien externe : Session fixation
+
+
+ La gestion des sessions HTTP représente le cœur de la sécurité sur le Web.
+ Des mesures d'atténuation doivent être prises en compte afin d'assurer la
+ sécurité des sessions.
+ Les développeurs doivent activer/utiliser les paramètres de sécurité appropriés.
+
+
+
+ Gestion basique des sessions
+
+
+ Sécurité des sessions
+
+ Le module de session ne peut pas garantir que les informations stockées
+ dans une session ne sont vues uniquement par l'utilisateur qui
+ a créé la session. Des mesures supplémentaires sont nécessaires pour
+ protéger la confidentialité de la session, suivant la valeur
+ qu'on lui associe.
+
+
+
+ L'importance des données stockées dans une session doit être évaluée
+ et des protections supplémentaires peuvent être déployées ;
+ ceci a obligatoirement un coût tel qu'être moins pratique pour
+ l'utilisateur. Par exemple, pour protéger les utilisateurs
+ d'une tactique simple, la directive session.use_only_cookies
+ doit être activée. Dans ce cas, les cookies doivent être
+ activés obligatoirement côté client sinon les sessions ne
+ fonctionneront pas.
+
+
+
+ Il y a plusieurs façons de divulguer des identifiants de session à
+ des tierces personnes. I.E. injections Javascripts, identifiants
+ de session dans les URLs, reniflement de paquets, accès physique
+ au périphérique, etc.
+ Un identifiant de session divulgué permet à un tiers d'accéder
+ à toutes les ressources associées avec cet identifiant. Tout d'abord,
+ les URLs contenant les identifiants de session. S'il y a des liens
+ vers des sites ou des ressources externes, l'URL incluant l'identifiant
+ de session doit être stockée dans les logs referrer du site externe.
+ Si ces données ne sont pas chiffrées, les identifiants de session
+ vont être transmis en texte clair sur le réseau. La solution ici est
+ d'implémenter SSL/TLS sur le serveur et le rendre mandataire pour les
+ utilisateurs. HSTS devrait être utilisé pour améliorer également la
+ sécurité.
+
+
+
+
+ Même HTTPS ne peut protéger la confidentialité des données
+ dans tous les cas. Par exemple, les vulnérabilités CRIME et BEAST
+ permettent à un attaquant de lire les données. De plus, notez
+ que certains réseaux utilisent des proxys HTTPS MITM pour
+ des audits. Les attaquants peuvent également mettre en place
+ ce genre de proxy.
+
+
+
+
+
+
+ Gestion des sessions non adaptatives
+
+
+ Le gestionnaire de sessions PHP est adaptatif, par défaut.
+ Un gestionnaire de sessions adaptatif apporte des
+ risques supplémentaires.
+
+
+
+ Lorsque session.use_strict_mode
+ est activé, et que le gestionnaire de sauvegarde des sessions le supporte,
+ un identifiant de session non initialisé est rejeté, et un nouveau est créé.
+ Ceci prévient une attaque qui force les utilisateurs à utiliser un
+ identifiant de session connu.
+ Un attaquant peut passer des liens ou envoyer des emails qui contient
+ l'identifiant de session.
+ I.e. http://example.com/page.php?PHPSESSID=123456789 si
+ session.use_trans_sid est activé,
+ la victime commencera une session en utilisant l'identifiant de session
+ fourni par l'attaquant.
+ session.use_strict_mode
+ permet d'annuler ce type de risque.
+
+
+
+
+ Les gestionnaires de sauvegarde définis par l'utilisateur peuvent
+ aussi supporter le mode de session strict en implémentant
+ la validation des identifiants de session. Tous les gestionnaires de
+ sauvegarde définis par l'utilisateur devraient implémenter la validation
+ des identifiants de session.
+
+
+
+
+ Le cookie d'identifiant de session peut être défini avec les
+ attributs domain, path, httponly, secure et, depuis PHP 7.3, SameSite.
+ Il existe une priorité définie par les navigateurs.
+ En utilisant les priorités, un attaquant peut définir l'identifiant de
+ session qui peut être utilisé en permanence. L'utilisation de la
+ directive session.use_only_cookies
+ ne permet pas de résoudre ce problème.
+ session.use_strict_mode
+ permet de mitiger ce risque. Avec la directive
+ session.use_strict_mode=On,
+ l'identifiant de session non initialisé sera refusé.
+
+
+
+
+ Même si la directive
+ session.use_strict_mode
+ limite les risques concernant le gestionnaire adaptatif de session, un
+ attaquant peut forcer les utilisateurs à utiliser un identifiant de
+ session non initialisé qui a été créé par l'attaquant, i.e. via des injections
+ Javascript. Ce type d'attaque peut être limité en utilisant les
+ recommandations de ce manuel.
+
+
+
+ En suivant ce manuel, les développeurs devraient activer la directive
+ session.use_strict_mode,
+ utiliser les timestamps basés sur le gestionnaire de session,
+ et régénérer les identifiants de session en utilisant la fonction
+ session_regenerate_id avec les procédures
+ recommandées. Si les développeurs suivent ces instructions, un identifiant de session
+ généré par un attaquant sera normalement supprimé.
+
+
+
+ Lorsqu'un accès à une session obsolète survient, les développeurs
+ devraient sauvegarder toutes les données de la session active de
+ l'utilisateur ; ces informations seront utiles pour de futures
+ investigations. L'utilisateur devrait être forcé à se déconnecter
+ de toutes les sessions, i.e. le forçant ainsi à s'identifier de
+ nouveau. Ceci permet de contrer les attaques utilisant des sessions
+ volées.
+
+
+
+
+
+ L'accès à une session obsolète ne veut pas forcément dire qu'il s'agit d'une
+ attaque. Un réseau instable et/ou l'effacement immédiat de la session
+ active va conduire des utilisateurs légitimes à utiliser des sessions
+ obsolètes.
+
+
+
+
+ Depuis 7.1.0, la fonction session_create_id a été
+ ajoutée. Cette fonction permet d'accéder à toutes les sessions actives
+ d'un utilisateur en préfixant les identifiants de session avec l'identifiant
+ de l'utilisateur. L'activation de la directive
+ session.use_strict_mode
+ est vital dans cette configuration. Sinon, les utilisateurs malicieux
+ peuvent définir des identifiants de sessions pour les autres utilisateurs.
+
+
+
+
+ Les utilisateurs des versions antérieures à PHP 7.1.0 doivent
+ utiliser CSPRNG, i.e. /dev/urandom, ou la fonction
+ random_bytes et les fonctions de hachage
+ pour générer un nouvel identifiant de session. La fonction
+ session_create_id possède des mécanismes de détection
+ de collision, et génère un identifiant de session suivant les
+ configurations INI des sessions. L'utilisation de la fonction
+ session_create_id est recommandée.
+
+
+
+
+
+
+ Regénération d'un identifiant de session
+
+
+ La directive
+ session.use_strict_mode
+ est un bon compromis mais n'est pas suffisant. Les développeurs doivent
+ également utiliser la fonction session_regenerate_id
+ pour la sécurité des sessions.
+
+
+
+ La regénération d'un identifiant de session réduit le risque de vol d'identifiants
+ de session, aussi, la fonction session_regenerate_id
+ doit être utilisée périodiquement; i.e. Regénérer l'identifiant de session toutes
+ les 15 minutes pour sécuriser le contenu sensible. Même dans le cas où
+ un identifiant de session est volé, à la fois le légitime utilisateur
+ et l'attaquant aura sa session qui va expirer. En d'autres termes, l'accès
+ au contenu par l'utilisateur ou l'attaquant va générer une erreur d'accès
+ à une session obsolète.
+
+
+
+ Les identifiants de session doivent être régénérés lorsque
+ les privilèges de l'utilisateur sont élevés, comme après une authentification.
+ La fonction session_regenerate_id doit être appelée
+ avant le stockage des informations d'authentification dans $_SESSION.
+ (la fonction session_regenerate_id
+ sauvegarde les données de session courantes automatiquement afin de
+ sauvegarder les timestamps/etc... dans la session courante.)
+ Assurez-vous que la nouvelle session contient le drapeau d'authentification.
+
+
+
+ Les développeurs ne doivent pas se baser sur
+ l'expiration de l'identifiant de session définie par la directive
+ session.gc_maxlifetime.
+ Les attaquants peuvent accéder à l'identifiant de session de la victime
+ de façon périodique pour éviter son expiration, et permettre son exploitation
+ y compris avec des sessions authentifiées.
+
+
+
+ Au lieu de cela, les développeurs doivent implémenter un timestamp
+ basé sur la gestion des données de session.
+
+
+
+
+ Même si le gestionnaire de session peut gérer les timestamps de façon
+ transparente, cette fonctionnalité n'est pas implémentée. Les données
+ des anciennes sessions doivent être conservées tant que le récupérateur
+ de mémoire ne soit passé. Simultanément, les développeurs doivent s'assurer
+ eux-mêmes que les données de session obsolètes soient effectivement effacées.
+ Cependant, les développeurs ne doivent pas supprimer les données
+ de session active trop rapidement. i.e. session_regenerate_id(true);
+ et session_destroy ne doivent jamais être appelés
+ en même temps pour une session active. Ça peut paraître contradictoire,
+ mais c'est une exigence du mandataire.
+
+
+
+
+ session_regenerate_idn'effacera pas
+ les anciennes sessions par défaut. Les sessions authentifiées obsolètes
+ peuvent être présentés pour être utilisées. Les développeurs doivent s'assurer
+ que les anciennes sessions ne soient pas utilisées par tout le monde.
+ Ils doivent interdire l'accès aux données de session obsolète
+ en utilisant eux-même des timestamps.
+
+
+
+
+ La suppression soudaine d'une session active produit des effets de bords
+ indésirables. Les sessions peuvent disparaître lorsqu'il y a des connexions
+ concurentes sur l'application web et/ou lorsque le réseau est instable.
+
+
+ Les accès potentiellement malicieux sont indétectables avec la suppression
+ soudaine d'une session.
+
+
+ Au lieu de supprimer les sessions obsolètes immédiatement, les développeurs
+ doivent définir un court temps d'expiration (timestamp) dans
+ $_SESSION, et interdire l'accès aux données de session.
+
+
+ Les développeurs ne doivent pas interdire l'accès aux données des
+ anciennes sessions immédiatement après l'exécution de la fonction
+ session_regenerate_id. L'accès doit être interdit
+ à un stade ultérieur ; i.e. quelques secondes après pour les réseaux
+ stables, comme un réseau filaire et quelques minutes après pour les réseaux
+ instables comme des téléphones mobiles ou des réseaux Wi-Fi.
+
+
+ Si un utilisateur accède à une session obsolète (session ayant expirée), l'accès
+ à cette session doit être refusé. Il est également recommandé de supprimer le
+ statut d'authentification de toutes les sessions utilisateurs, car cela
+ peut représenter un axe d'attaque.
+
+
+
+
+ L'utilisation de la directive session.use_only_cookies et de la fonction
+ session_regenerate_id peuvent causer des DoS personnel
+ avec des cookies non-supprimés définis par les attaquants. Dans ce cas,
+ les développeurs peuvent inviter les utilisateurs à supprimer les cookies
+ et les avertir qu'ils peuvent rencontrer un problème de sécurité.
+ Les attaquants peuvent définir des cookies malicieux via une application
+ web vulnérable, un plugin de navigateur exposé ou vicié, un périphérique
+ physique compromis, etc...
+
+
+
+
+ Ne vous méprenez pas sur le risque DoS. session.use_strict_mode=On
+ est obligatoire pour la sécurité des identifiants de session !
+ Tous les sites sont encouragés à activer la directive
+ session.use_strict_mode.
+
+
+ DoS peut uniquement survenir lorsque le compte subit une attaque. Une injection
+ Javascript dans une application représente la plupart des axes d'attaque.
+
+
+
+
+
+
+ Suppression des données de session
+
+
+ Les données de sessions obsolètes doivent être inaccessibles
+ et doivent être supprimées. Le module courant de session
+ ne prend pas en charge cet aspect.
+
+
+
+ Les données de sessions obsolètes doivent être supprimées aussi vite
+ que possible. Cependant, les sessions actives ne doivent pas être
+ supprimées instantanément. Pour satisfaire ces recommandations, les développeurs
+ eux-mêmes doivent implémenter un gestionnaire des données de session basé sur
+ un timestamp.
+
+
+
+ Définissez et gérez l'expiration du timestamp dans la variable
+ globale $_SESSION. Interdisez l'accès aux données de sessions
+ périmées. Lorsqu'un accès à des données de session obsolète est détecté,
+ il convient de supprimer toutes les statuts authentifiés des sessions
+ utilisateurs et forcer les utilisateurs à s'authentifier de nouveau.
+ L'accès à des données de sessions obsolètes peut représenter une attaque.
+ Pour arriver à cette fin, les développeurs doivent suivre toutes les sessions
+ actives de tous les utilisateurs.
+
+
+
+
+ L'accès à une session obsolète peut également survenir à cause d'un réseau instable
+ et/ou d'un accès concurrent à un site web, i.e. le serveur tente de définir un
+ nouvel identifiant de session via un cookie, mais le paquet Set-Cookie n'a jamais
+ atteint le client en raison d'une perte de connexion. Une connexion peut
+ créer un nouvel identifiant de session via la fonction session_regenerate_id,
+ mais une autre connexion concurrente peut ne pas avoir encore reçu
+ l'identifiant de session. Toutefois, les développeurs doivent interdire l'accès
+ à une session obsolète à un moment plus éloigné. i.e. la gestion des sessions
+ basés sur le timestamp est obligatoire.
+
+
+
+
+ En résumé, les données de sessions ne doivent pas être détruites avec la fonction
+ session_regenerate_id, ni avec la fonction session_destroy,
+ mais les timestamps doivent être utilisés pour contrôler l'accès aux données de
+ session. Laissez la fonction session_gc supprimer les données obsolètes
+ depuis le stockage des données de sessions.
+
+
+
+
+
+ Session et Verrouillage
+
+
+ Les données de session sont verrouillées par défaut pour éviter les
+ accès concurrent. Le verrouillage est obligatoire pour conserver une
+ consistance des données de session au travers les requêtes.
+
+
+
+ Cependant, le verrouillage de session peut être utilisé par les attaquants
+ pour réaliser des attaques DoS. Pour minimiser le risque d'une attaque DoS
+ par verrouillage de session, il convient de minimiser les verrous.
+ Utilisez des données en lecture seule lorsque les données de session
+ n'ont pas besoin d'être mises à jour. Utilisez l'option 'read_and_close'
+ avec la fonction session_start.
+ session_start(['read_and_close'=>1]); va clôre
+ la session aussi vite que possible après la mise à jour de la variable
+ globale $_SESSION en utilisant la fonction session_commit.
+
+
+
+ Le module de session courant ne détecte pas
+ toutes les modifications de la variable $_SESSION lorsque
+ la session est inactive. Il en va de la responsabilité du développeur
+ de ne pas modifier la variable $_SESSION lorsque la session est inactive.
+
+
+
+
+
+ Sessions actives
+
+
+ Les développeurs doivent conserver une trace de toutes les sessions
+ actives de chaque utilisateur, et leur notifier le nombre de sessions
+ actives, depuis quelle adresse IP, depuis combien de temps, etc.
+ PHP ne conserve pas de traces de ces informations. Les développeurs
+ sont supposés le faire eux-mêmes.
+
+
+
+ Il existe différentes façons de faire cela. Une implémentation possible
+ est de définir une base de données qui conserve une trace des données
+ nécessaires, et y stocker toutes les informations pertinentes.
+ Depuis que les données de session sont GCed, les développeurs doivent
+ faire attention aux données GCed pour maintenir la base de données
+ des sessions actives consistante.
+
+
+
+ Une des implémentations simple est "l'identifiant utilisateur préfixant
+ l'identifiant de session" et stocker les informations nécessaires dans
+ la variable $_SESSION. La plupart des bases de données sont relativement
+ performantes pour sélectionner un préfixe sous la forme d'une &string;.
+ Les développeurs DOIVENT utiliser la fonction session_regenerate_id
+ ainsi que la fonction session_create_id pour cela.
+
+
+
+
+ N'utilisez jamais de données confidentielles comme préfixe.
+ Si l'identifiant utilisateur est confidentiel, vous devriez utiliser
+ la fonction hash_hmac.
+
+
+
+
+
+ L'activation de la directive
+ session.use_strict_mode
+ est obligatoire pour ce type de configuration. Assurez vous qu'il
+ est activé. Sinon, la base de données des sessions actives
+ peut être compromise.
+
+
+
+
+ Le gestionnaire de session basé sur un timestamp est obligatoire
+ pour détecter l'accès à des sessions obsolètes. Lorsque l'accès à une
+ session obsolète est détecté, le drapeau d'authentification doit
+ être supprimé de toutes les sessions actives de l'utilisateur.
+ Ceci permet d'éviter aux attaquants de continuer à exploiter les sessions
+ volées.
+
+
+
+
+
+ Session et l'auto-identification
+
+
+ Les développeurs ne doivent pas utiliser d'identifiants de session avec une
+ grande durée de vie pour l'auto-identification, car cela accroit le risque
+ d'utiliser des sessions volées. Une fonctionnalité d'auto-identification
+ doit être implémenté par le développeur.
+
+
+
+ Utilisez une clé de hachage sécurisé à usage unique comme clé
+ d'auto-identification en utilisant la fonction
+ setcookie. Utilisez un hachage sécurisé
+ plus fort que SHA-2. i.e. SHA-256 ou supérieur avec des données
+ aléatoires depuis la fonction random_bytes
+ ou via /dev/urandom.
+
+
+
+ Si l'utilisateur est non authentifié, vérifiez si la clé d'auto-identification
+ à usage unique est valide ou non. Dans ce cas où elle est valide, authentifiez
+ l'utilisateur et définissez une nouvelle clé de hachage sécurisée à usage unique.
+ Une clé d'auto-identification ne doit être utilisée qu'une seule fois, i.e. n'utilisez
+ jamais une clé d'auto-identification, et régénérez-la toujours.
+
+
+
+ Une clé d'auto-identification est une clé d'authentification avec une
+ longue durée, elle doit être protégée autant que possible.
+ Utilisez les attributs de cookie path/httponly/secure/SameSite pour la sécurité.
+ i.e. ne transmettez jamais la clé d'auto-identification tant que cela
+ n'est pas nécessaire.
+
+
+
+ Les développeurs doivent implémenter les fonctionnalités qui
+ désactivent l'auto-identification, et suppriment les cookies
+ contenant les clés d'auto-identification non nécessaires.
+
+
+
+
+
+ Attaques CSRF (Cross-Site Request Forgeries)
+
+
+ Les sessions et les authentifications ne protègent pas contre les
+ attaques CSRF. Les développeurs doivent implémenter des protections
+ CSRF eux mêmes.
+
+
+
+ La fonction output_add_rewrite_var peut être utilisée pour
+ la protection CSRF. Référez vous aux pages du manuel pour plus de détails.
+
+
+
+
+ PHP, avant sa version 7.2.0, utilise le même buffer de sortie et les
+ mêmes configurations INI que la configuration trans-sid. Toutefois, l'utilisation
+ de la fonction output_add_rewrite_var avec les versions
+ de PHP antérieures à 7.2.0 n'est pas conseillé.
+
+
+
+
+ La plupart des frameworks d'applications web supporte
+ la protection CSRF. Référez vous au manuel de votre
+ framework d'application web pour plus de détails.
+
+
+
+ Depuis PHP 7.3, l'attribut SameSite du cookie de session peut être défini.
+ Ceci est une mesure supplémentaire qui peut minimiser
+ les vulnérabilités CSRF.
+
+
+
+
+
+ Sécurisation des configurations INI de session
+
+
+ En sécurisant les configurations INI de sessions, les développeurs
+ peuvent éprouver la sécurité des sessions. Beaucoup de configurations
+ INI n'ont pas de configuration recommandée. Les développeurs sont
+ responsables de la bonne configuration des sessions.
+
+
+
+
+
+ session.cookie_lifetime=0
+
+
+ La valeur 0 a une signification importante.
+ Elle informe les navigateurs de ne pas stocker le cookie dans un
+ espace de stockage permanent. Aussi, lorsque le navigateur se ferme,
+ le cookie d'identification de session est supprimé immédiatement.
+ Si les développeurs définissent une valeur différente de 0, cela permet
+ aux autres utilisateurs d'utiliser l'identifiant de session. La
+ plupart des applications devraient utiliser "0" comme
+ valeur.
+
+
+ Si une fonctionnalité d'auto-identification est désirée, les développeurs
+ doivent implémenter leur propre système d'auto-identification sécurité.
+ N'utilisez pas des identifiants de session à longue durée pour cela.
+ Pour plus d'informations, veuillez vous rapporter à la bonne section
+ de cette documentation.
+
+
+
+
+
+ session.use_cookies=On
+
+
+ session.use_only_cookies=On
+
+
+ Bien que les cookies HTTP souffrent de soucis techniques, ils
+ restent la façon préférée de gérer les identifiants de sessions.
+ N'utilisez que les cookies pour la gestion des identifiants de sessions
+ lorsque cela est possible. La plupart des applications doivent utiliser
+ un cookie pour l'identifiant de session.
+
+
+ Si session.use_only_cookies=Off,
+ le module de session utilisera les valeurs de l'identifiant
+ de sessions définies par les variables GET ou POST fournies,
+ et le cookie de l'identifiant de session ne sera pas initialisé.
+
+
+
+
+
+ session.use_strict_mode=On
+
+
+ Bien que l'activation de session.use_strict_mode
+ soit obligatoire pour la sécurité des sessions, cette directive est
+ désactivée par défaut.
+
+
+ Ce mode évite que le module de session utilise un identifiant de session
+ non initialisé. Dit différemment, le module de session ne va accepter
+ que les identifiants de sessions valides générés par le module de session.
+ Il va rejeter tous les identifiants de session fournis par les utilisateurs.
+
+
+ En raison de la spécification des cookies, les attaquants sont capable
+ de placer des cookies contenant les identifiants de sessions en configurant
+ localement une base de données de cookie ou par injections Javascript.
+ session.use_strict_mode peut éviter qu'un attaquant
+ n'initialise un identifiant de session.
+
+
+
+ Les attaquants peuvent initialiser un identifiant de session avec leur
+ propre périphérique, et peuvent définir l'identifiant de session
+ de leur victime. Ils doivent alors conserver l'identifiant de session
+ actif pour pouvoir en abuser.
+ Les attaquants doivent passer par bien d'autres étapes pour réussir leur attaque
+ dans ce scénario. Aussi, l'utilisation de la directive
+ session.use_strict_mode permet de limiter les risques.
+
+
+
+
+
+
+ session.cookie_httponly=On
+
+
+ Permet de refuser l'accès à un cookie de session depuis javascript.
+ Cette configuration évite qu'un cookie ne soit corrompu par une
+ injection Javascript.
+
+
+ Il est possible d'utiliser un identifiant de session comme jeton CSRF, mais
+ ce n'est pas recommandé. Par exemple, des sources HTML peuvent être
+ sauvegardées et envoyées à d'autres utilisateurs.
+ Les développeurs ne doivent pas écrire les identifiants de session dans les
+ pages web pour des raisons de sécurité. Toutes les applications web doivent
+ utiliser l'attribut httponly pour le cookie contenant l'identifiant de session.
+
+
+
+ Le jeton CSRF doit être renouvellé périodiquement, tout comme l'identifiant
+ de session.
+
+
+
+
+
+
+ session.cookie_secure=On
+
+
+ Permet d'accéder au cookie d'identifiant de session uniquement lorsque
+ le protocole est HTTPS. Si un site web n'est accessible que par HTTPS,
+ cette directive doit être activée.
+
+
+ HSTS doit être utilisé pour les sites web accessibles que par HTTPS.
+
+
+
+
+
+ session.cookie_samesite="Lax" ou
+ session.cookie_samesite="Strict"
+
+
+ Depuis PHP 7.3, l'attribut "SameSite" peut être défini
+ pour le cookie d'identifiant de session. Cet attribut est une façon de
+ mitiger les attaques CSRF (Cross Site Request Forgery).
+
+
+ La différence entre Lax et Strict est l'accessibilité du cookie dans les requêtes
+ originaires d'autres domaines employant la méthode HTTP GET.
+ Les cookies utilisant Lax seront accessible via une requête GET originaire
+ d'un autre domaine, alors que les cookies utilisant Strict ne le seront pas..
+
+
+
+
+
+ session.gc_maxlifetime=[choisissez le plus petit possible]
+
+
+ session.gc_maxlifetime est une configuration pour supprimer
+ l'identifiant de session obsolète. Le fait de se reposer
+ entièrement sur cette configuration n'est pas recommandé.
+ Les développeurs doivent gérer la durée de vie des session avec un timestamp
+ par eux même.
+
+
+ Le GC des sessions (garbage collection) est mieux réalisé en utilisant
+ la fonction session_gc.
+ La fonction session_gc doit être exécutée par un gestionnaire
+ de tâches ; i.e. un cron sur les systèmes Unix.
+
+
+ GC est exécuté par probabilité, par défaut. Cette configuration
+ ne garantie pas que les anciennes sessions soient
+ supprimées. Bien que les développeurs ne doivent pas s'appuyer sur ce paramètre,
+ il est recommandé tout de même de le définir à une valeur la plus petite possible.
+ Il convient d'ajuster les directives session.gc_probability
+ et session.gc_divisor de sorte à ce que
+ les sessions obsolètes soient supprimées à fréquence appropriée.
+ Si la fonctionnalité d'auto-identification est nécessaire, les développeurs
+ doivent implémenter leur propre fonctionnalité d'auto-identification sécurisée ;
+ voir ci-dessous pour plus d'informations. N'utilisez jamais l'identifiant
+ de session de longue durée pour réaliser ce genre de fonctionnalité.
+
+
+
+ Quelques modules de gestion de sauvegarde des sessions n'utilisent pas cette
+ fonctionnalité basé sur l'expiration et sur la probabilité ; i.e.
+ memcached, memcache. Référez vous à la documentation de ces gestionnaires
+ de sauvegarde des sessions pour plus de détails.
+
+
+
+
+
+
+ session.use_trans_sid=Off
+
+
+ L'utilisation d'un gestionnaire d'identifiants de sessions transparent
+ n'est pas interdit. Les développeurs doivent l'employer lorsque nécessaire.
+ Pourtant, la désactivation de la gestion des identifiants de session de
+ façon transparente permet de sécuriser un peu plus les identifiants de session
+ en éliminant la possibilité d'une injection d'identifiant de sessions ou
+ de fuite de cet identifiant.
+
+
+
+ L'identifiant de session peut fuiter depuis des URLs sauvegardées,
+ des URLs dans des emails, d'une source HTML sauvegardée, etc...
+
+
+
+
+
+
+ session.trans_sid_tags=[drapeaux limités]
+
+
+ (PHP 7.1.0 >=) Les développers ne doivent pas réécrire de drapeaux HTML
+ non nécessaires. La valeur par défaut doit être suffisante pour la
+ plupart des utilisations. Pour les versions de PHP plus anciennes,
+ utilisez plutôt
+ url_rewriter.tags.
+
+
+
+
+
+ session.trans_sid_hosts=[hôtes limités]
+
+
+ (PHP 7.1.0 >=) Ce paramètre définit une liste blanche des hôtes qui sont
+ autorisés à réécrire les identifiants de session transparents. Ne jamais
+ ajouter d'hôte qui ne sont pas de confiance !
+ Le module de session autorise uniquement $_SERVER['HTTP_HOST']
+ lorsque ce paramètre est vide.
+
+
+
+
+
+ session.referer_check=[URL d'origine]
+
+
+ Lorsque le paramètre session.use_trans_sid
+ est actif.
+ Ce paramètre réduit les risques d'injection d'identifiant de session.
+ Si un site web est http://example.com/,
+ définissez comme valeur à ce paramètre http://example.com/.
+ Notez que les navigateurs HTTPS n'envoient pas l'en-tête referrer.
+ Les navigateurs peuvent ne pas envoyer l'en-tête referrer de part
+ leur propre configuration. Aussi, ce paramètre ne peut pas être
+ considéré comme une mesure fiable de sécurité.
+ Malgré tout, son utilisation est recommandée.
+
+
+
+
+
+ session.cache_limiter=nocache
+
+
+ S'assure que le contenu HTTP n'est pas mis en cache pour les sessions
+ authentifiées. Permet la mise en cache que pour les contenus
+ qui ne sont pas privés. Sinon, le contenu sera exposé.
+ La valeur "private" doit être employé si le contenu HTTP n'inclut pas
+ des données sensibles d'un point de vue sécurité. Notez que "private"
+ peut transmettre des données privées mises en cache pour les clients
+ partagés. "public" doit être uniquement utilisé lorsque le contenu HTML
+ ne contient aucune donnée privée.
+
+
+
+
+
+ session.hash_function="sha256"
+
+
+ (PHP 7.1.0 <) Une fonction de hachage forte va générer un identifiant
+ de session fort. Bien qu'une collision de hachage soit peu probable avec des
+ algorithme de hachage MD5, les développeurs doivent utiliser SHA-2 ou un
+ algorithme de hachage plus fort comme sha384 et sha512.
+ Les développeurs doivent s'assurer d'une longueur suffisante de
+ l'entropie pour la
+ fonction de hachage utilisée.
+
+
+
+
+
+ session.save_path=[dossier non lisible par tout le monde]
+
+
+ Si ce paramètre est défini à un dossier accessible en lecture par tout le monde,
+ comme /tmp (par défaut), les autres utilisateurs du serveur
+ seront capables de récupérer les sessions en listant les fichiers présents
+ dans ce répertoire.
+
+
+
+
+
+
+
+
+
+
From 6cb4855a73d45aa48532e4040289daa6d75e6620 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:41:26 +0100
Subject: [PATCH 72/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/simdjson/functions/simdjson-ke?=
=?UTF-8?q?y-value.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../simdjson/functions/simdjson-key-value.xml | 254 +++++++++---------
1 file changed, 127 insertions(+), 127 deletions(-)
diff --git a/reference/simdjson/functions/simdjson-key-value.xml b/reference/simdjson/functions/simdjson-key-value.xml
index a67590e017..0f79d1a04d 100644
--- a/reference/simdjson/functions/simdjson-key-value.xml
+++ b/reference/simdjson/functions/simdjson-key-value.xml
@@ -1,127 +1,127 @@
-
-
-
-
-
- simdjson_key_value
- Décode la valeur d'une chaîne JSON située à l'indicateur JSON demandé.
-
-
-
- &reftitle.description;
-
- mixedsimdjson_key_value
- stringjson
- stringkey
- boolassociative&false;
- intdepth512
-
-
- Décode et renvoie la valeur trouvée à l'indicateur JSON demandé.
-
-
-
-
- &reftitle.parameters;
-
-
- json
-
-
- Le jsonstring à interroger et décoder.
-
-
- Cette fonction ne fonctionne qu'avec des chaînes encodées en UTF-8.
-
-
- Cette fonction analyse les entrées valides que
- json_decode peut décoder,
- à condition qu'elles soient inférieures à 4 Go de longueur.
-
-
-
-
- key
-
-
- Le string du pointeur JSON.
-
-
-
-
- associative
-
-
- Lorsque &true; les objets JSON seront retournés sous forme
- de &array; associatifs ; lorsqu'ils sont &false;, les objets JSON seront retournés sous forme d'&object;s.
-
-
-
-
- depth
-
-
- La profondeur maximale de la structure à décoder.
- La valeur doit être supérieure à 0,
- et inférieure ou égale à 2147483647.
-
- Ceux qui appellent cette fonction devraient utiliser des valeurs raisonnablement petites,
- car des profondeurs plus importantes nécessitent plus d'espace tampon et augmenteront
- la profondeur de récursion, contrairement à l'implémentation actuelle de json_decode.
-
-
-
-
-
-
-
- &reftitle.returnvalues;
-
- Renvoie la partie de la valeur encodée dans json
- que key référence dans le type PHP approprié.
- Les valeurs true, false et
- null sont renvoyées respectivement comme &true;, &false; et &null;.
-
-
-
- &reftitle.errors;
-
- Si json ou key est invalide,
- ou si key n'a pas pu être trouvé dans json,
- une SimdJsonException est lancée à partir de PECL simdjson 2.1.0,
- alors qu'auparavant, une RuntimeException était lancée.
-
-
- Si depth est en dehors de la plage autorisée,
- une SimdJsonValueError est lancée à partir de PECL simdjson 3.0.0,
- alors qu'auparavant, une erreur de niveau E_WARNING était lancée.
-
-
-
- &reftitle.seealso;
-
- json_encode
- simdjson_decode
-
-
-
-
+
+
+
+
+
+ simdjson_key_value
+ Décode la valeur d'une chaîne JSON située à l'indicateur JSON demandé.
+
+
+
+ &reftitle.description;
+
+ mixedsimdjson_key_value
+ stringjson
+ stringkey
+ boolassociative&false;
+ intdepth512
+
+
+ Décode et renvoie la valeur trouvée à l'indicateur JSON demandé.
+
+
+
+
+ &reftitle.parameters;
+
+
+ json
+
+
+ Le jsonstring à interroger et décoder.
+
+
+ Cette fonction ne fonctionne qu'avec des chaînes encodées en UTF-8.
+
+
+ Cette fonction analyse les entrées valides que
+ json_decode peut décoder,
+ à condition qu'elles soient inférieures à 4 Go de longueur.
+
+
+
+
+ key
+
+
+ Le string du pointeur JSON.
+
+
+
+
+ associative
+
+
+ Lorsque &true; les objets JSON seront retournés sous forme
+ de &array; associatifs ; lorsqu'ils sont &false;, les objets JSON seront retournés sous forme d'&object;s.
+
+
+
+
+ depth
+
+
+ La profondeur maximale de la structure à décoder.
+ La valeur doit être supérieure à 0,
+ et inférieure ou égale à 2147483647.
+
+ Ceux qui appellent cette fonction devraient utiliser des valeurs raisonnablement petites,
+ car des profondeurs plus importantes nécessitent plus d'espace tampon et augmenteront
+ la profondeur de récursion, contrairement à l'implémentation actuelle de json_decode.
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+
+ Renvoie la partie de la valeur encodée dans json
+ que key référence dans le type PHP approprié.
+ Les valeurs true, false et
+ null sont renvoyées respectivement comme &true;, &false; et &null;.
+
+
+
+ &reftitle.errors;
+
+ Si json ou key est invalide,
+ ou si key n'a pas pu être trouvé dans json,
+ une SimdJsonException est lancée à partir de PECL simdjson 2.1.0,
+ alors qu'auparavant, une RuntimeException était lancée.
+
+
+ Si depth est en dehors de la plage autorisée,
+ une SimdJsonValueError est lancée à partir de PECL simdjson 3.0.0,
+ alors qu'auparavant, une erreur de niveau E_WARNING était lancée.
+
+
+
+ &reftitle.seealso;
+
+ json_encode
+ simdjson_decode
+
+
+
+
From e8a790e4f70e714df94048b0f274eccdbfa956e8 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:41:26 +0100
Subject: [PATCH 73/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/spl/arrayobject.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/spl/arrayobject.xml | 262 +++++++++++++++++-----------------
1 file changed, 131 insertions(+), 131 deletions(-)
diff --git a/reference/spl/arrayobject.xml b/reference/spl/arrayobject.xml
index f896b93589..bd8559242c 100644
--- a/reference/spl/arrayobject.xml
+++ b/reference/spl/arrayobject.xml
@@ -1,131 +1,131 @@
-
-
-
-
- &class.theclass; ArrayObject
- ArrayObject
-
-
-
-
-
- &reftitle.intro;
-
- Cette classe permet aux objets de fonctionner comme des tableaux.
-
-
-
- Envelopper des objets avec cette classe est fondamentalement défectueux, et son utilisation avec des objets est donc déconseillée.
-
-
-
-
-
-
-
- &reftitle.classsynopsis;
-
-
-
-
- ArrayObject
-
-
-
- implements
- IteratorAggregate
-
-
-
- ArrayAccess
-
-
-
- Serializable
-
-
-
- Countable
-
-
- &Constants;
-
- public
- const
- int
- ArrayObject::STD_PROP_LIST
-
-
- public
- const
- int
- ArrayObject::ARRAY_AS_PROPS
-
-
- &Methods;
-
-
-
-
-
-
-
-
-
-
-
- &reftitle.constants;
-
- Options de ArrayObject
-
-
-
- ArrayObject::STD_PROP_LIST
-
-
- Les propriétés de l'objet ont leur fonctionnement normal lorsqu'on
- y accède depuis la liste (var_dump, &foreach;, etc.).
-
-
-
-
-
- ArrayObject::ARRAY_AS_PROPS
-
-
- Les éléments peuvent être accédé comme des propriétés (lecture et écriture).
- La classe ArrayObject utilise sa propre logique
- pour accéder aux propriétés, ainsi aucun avertissement ou erreur est
- émise lors d'une tentative de lecture ou écriture de propriétés dynamiques.
-
-
-
-
-
-
-
-
-
- &reference.spl.entities.arrayobject;
-
-
-
+
+
+
+
+ &class.theclass; ArrayObject
+ ArrayObject
+
+
+
+
+
+ &reftitle.intro;
+
+ Cette classe permet aux objets de fonctionner comme des tableaux.
+
+
+
+ Envelopper des objets avec cette classe est fondamentalement défectueux, et son utilisation avec des objets est donc déconseillée.
+
+
+
+
+
+
+
+ &reftitle.classsynopsis;
+
+
+
+
+ ArrayObject
+
+
+
+ implements
+ IteratorAggregate
+
+
+
+ ArrayAccess
+
+
+
+ Serializable
+
+
+
+ Countable
+
+
+ &Constants;
+
+ public
+ const
+ int
+ ArrayObject::STD_PROP_LIST
+
+
+ public
+ const
+ int
+ ArrayObject::ARRAY_AS_PROPS
+
+
+ &Methods;
+
+
+
+
+
+
+
+
+
+
+
+ &reftitle.constants;
+
+ Options de ArrayObject
+
+
+
+ ArrayObject::STD_PROP_LIST
+
+
+ Les propriétés de l'objet ont leur fonctionnement normal lorsqu'on
+ y accède depuis la liste (var_dump, &foreach;, etc.).
+
+
+
+
+
+ ArrayObject::ARRAY_AS_PROPS
+
+
+ Les éléments peuvent être accédé comme des propriétés (lecture et écriture).
+ La classe ArrayObject utilise sa propre logique
+ pour accéder aux propriétés, ainsi aucun avertissement ou erreur est
+ émise lors d'une tentative de lecture ou écriture de propriétés dynamiques.
+
+
+
+
+
+
+
+
+
+ &reference.spl.entities.arrayobject;
+
+
+
From a49926439a660414a9c9f9361caea8aebbcb0a07 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:41:26 +0100
Subject: [PATCH 74/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/sqlite3/setup.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/sqlite3/setup.xml | 94 ++++++++++++++++++-------------------
1 file changed, 47 insertions(+), 47 deletions(-)
diff --git a/reference/sqlite3/setup.xml b/reference/sqlite3/setup.xml
index 7bf9f9401a..d6836cb54e 100644
--- a/reference/sqlite3/setup.xml
+++ b/reference/sqlite3/setup.xml
@@ -1,47 +1,47 @@
-
-
-
-
-
-
- &reftitle.setup;
-
-
- &reftitle.required;
-
- Depuis PHP 7.4.0, libsqlite ≥ 3.7.4 est requise.
- Auparavant, la bibliothèque libsqlite intégrée aurait pu être utilisée à la place.
-
-
-
-
- &reference.sqlite3.configure;
-
-
-
- &reference.sqlite3.ini;
-
-
-
-
-
-
+
+
+
+
+
+
+ &reftitle.setup;
+
+
+ &reftitle.required;
+
+ Depuis PHP 7.4.0, libsqlite ≥ 3.7.4 est requise.
+ Auparavant, la bibliothèque libsqlite intégrée aurait pu être utilisée à la place.
+
+
+
+
+ &reference.sqlite3.configure;
+
+
+
+ &reference.sqlite3.ini;
+
+
+
+
+
+
From 6c1261f6c8805919ab54d3b9931708529716789d Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:41:27 +0100
Subject: [PATCH 75/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/sqlsrv/constants.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/sqlsrv/constants.xml | 2038 ++++++++++++++++----------------
1 file changed, 1019 insertions(+), 1019 deletions(-)
diff --git a/reference/sqlsrv/constants.xml b/reference/sqlsrv/constants.xml
index ec734ad299..35da4a340d 100644
--- a/reference/sqlsrv/constants.xml
+++ b/reference/sqlsrv/constants.xml
@@ -1,1019 +1,1019 @@
-
-
-
-
- &reftitle.constants;
- &extension.constants;
-
-
-
- SQLSRV_FETCH_ASSOC
- (int)
-
-
-
- Force sqlsrv_fetch_array à retourner un tableau
- associatif quand il est passé en paramètre.
-
-
-
-
-
- SQLSRV_FETCH_NUMERIC
- (int)
-
-
-
- Force sqlsrv_fetch_array à retourner un tableau
- indexé numériquement quand il est passé en paramètre.
-
-
-
-
-
- SQLSRV_FETCH_BOTH
- (int)
-
-
-
- Force sqlsrv_fetch_array à retourner un tableau
- associatif et un tableau indexé numériquement quand il est passé en
- paramètre (comportement par défaut).
-
-
-
-
-
- SQLSRV_ERR_ALL
- (int)
-
-
-
- Force sqlsrv_errors à retourner les erreurs
- et avertissements quand il est passé en paramètre (comportement par
- défaut).
-
-
-
-
-
- SQLSRV_ERR_ERRORS
- (int)
-
-
-
- Force sqlsrv_errors à retourner seulement
- les erreurs (pas les avertissements) quand il est passé en paramètre.
-
-
-
-
-
- SQLSRV_ERR_WARNINGS
- (int)
-
-
-
- Force sqlsrv_errors à retourner seulement
- les avertissements (pas les erreurs) quand il est passé en paramètre.
-
-
-
-
-
- SQLSRV_LOG_SYSTEM_ALL
- (int)
-
-
-
- Active les logs de tous les sous-systèmes quand il est passé à la fonction
- sqlsrv_configure comme paramère.
-
-
-
-
-
- SQLSRV_LOG_SYSTEM_CONN
- (int)
-
-
-
- Active les logs de toute l'activité des connexions quand il est passé
- à la fonction sqlsrv_configure comme paramère.
-
-
-
-
-
- SQLSRV_LOG_SYSTEM_INIT
- (int)
-
-
-
- Active les logs de toute l'activité des initialisations quand il est
- passé à la fonction sqlsrv_configure comme paramère.
-
-
-
-
-
- SQLSRV_LOG_SYSTEM_OFF
- (int)
-
-
-
- Désactive les logs de tous les sous-systèmes quand il est passé à la fonction
- sqlsrv_configure comme paramère.
-
-
-
-
-
- SQLSRV_LOG_SYSTEM_STMT
- (int)
-
-
-
- Active les logs des requêtes quand il est passé à la fonction
- sqlsrv_configure comme paramère.
-
-
-
-
-
- SQLSRV_LOG_SYSTEM_UTIL
- (int)
-
-
-
- Active les logs des erreurs de fonction quand il est passé à la fonction
- sqlsrv_configure comme paramère.
-
-
-
-
-
- SQLSRV_LOG_SEVERITY_ALL
- (int)
-
-
-
- Active les logs des erreurs, avertissements et notes quand il est
- passé à la fonction sqlsrv_configure comme paramère.
-
-
-
-
-
- SQLSRV_LOG_SEVERITY_ERROR
- (int)
-
-
-
- Spécifie que les erreurs seront enregistrées quand il est passé à la fonction
- sqlsrv_configure comme paramère.
-
-
-
-
-
- SQLSRV_LOG_SEVERITY_NOTICE
- (int)
-
-
-
- Spécifie que les notes seront enregistrées quand il est passé à la fonction
- sqlsrv_configure comme paramère.
-
-
-
-
-
- SQLSRV_LOG_SEVERITY_WARNING
- (int)
-
-
-
- Spécifie que les avertissements seront enregistrées quand il est passé à
- la fonction sqlsrv_configure comme paramère.
-
-
-
-
-
- SQLSRV_NULLABLE_YES
- (int)
-
-
-
- Indique qu'une colonne peut être nulle.
-
-
-
-
-
- SQLSRV_NULLABLE_NO
- (int)
-
-
-
- Indique qu'une colonne ne peut pas être nulle.
-
-
-
-
-
- SQLSRV_NULLABLE_UNKNOWN
- (int)
-
-
-
- Indique s'il est connu qu'une colonne est nulle.
-
-
-
-
-
- SQLSRV_PARAM_IN
- (int)
-
-
-
- Indique un paramètre d'entrée quand il est passé à la fonction
- sqlsrv_query ou à la fonction
- sqlsrv_prepare.
-
-
-
-
-
- SQLSRV_PARAM_INOUT
- (int)
-
-
-
- Indique un paramètre d'entrée ou de sortie quand il est passé à la
- fonction sqlsrv_query ou à la fonction
- sqlsrv_prepare.
-
-
-
-
-
- SQLSRV_PARAM_OUT
- (int)
-
-
-
- Indique un paramètre de sortie quand il est passé à la fonction
- sqlsrv_query ou à la fonction
- sqlsrv_prepare.
-
-
-
-
-
- SQLSRV_PHPTYPE_INT
- (int)
-
-
-
- Spécifie une donnée de type entier PHP. Pour plus d'informations, voir
- Comment spécifier les types PHP.
-
-
-
-
-
- SQLSRV_PHPTYPE_DATETIME
- (int)
-
-
-
- Spécifie une donnée de type datetime (date et heure) PHP. Pour plus d'informations, voir
- Comment spécifier les types PHP.
-
-
-
-
-
- SQLSRV_PHPTYPE_FLOAT
- (int)
-
-
-
- Spécifie une donnée de type nombre à virgule flottante PHP. Pour plus d'informations, voir
- Comment spécifier les types PHP.
-
-
-
-
-
- SQLSRV_PHPTYPE_STREAM
- (int)
-
-
-
- Spécifie une donnée de type flux de PHP. Cette constante fonctionne comme une fonction
- et accepte une constante encodée. Voir les constantes SQLSRV_ENC_*. Pour plus d'informations,
- repotrez-vous à Comment spécifier les types PHP.
-
-
-
-
-
- SQLSRV_PHPTYPE_STRING
- (int)
-
-
-
- Spécifie une donnée de type chaîne de caractère PHP. Cette constante fonctionne comme une fonction
- et accepte une constante encodée. Voir les constantes SQLSRV_ENC_*. Pour plus d'informations,
- reportez-vous à Comment spécifier les types PHP.
-
-
-
-
-
- SQLSRV_ENC_BINARY
- (int)
-
-
-
- Spécifie que la donnée est retournée sous la forme d'un flux brute d'octets
- depuis le serveur sans y effectuer un encodage ou une transformation. Pour plus
- d'informations, reportez-vous à Comment spécifier
- les types PHP.
-
-
-
-
-
- SQLSRV_ENC_CHAR
- (int)
-
-
-
- Les données sont retournées sous la forme de caractères sur 8 octets, tels que
- spécifiés dans la page de code des paramètres régionaux Windows définis sur le système. Tout
- caractère multioctet ou caractères qui ne correspondent pas à cette page
- de code seront substitués par un point d'interrogation sur un octet (?).
- C'est l'encodage par défaut. Pour plus d'informations, reportez-vous à
- Comment spécifier les types PHP.
-
-
-
-
-
- SQLSRV_SQLTYPE_BIGINT
- (int)
-
-
-
- Décrit le type de données bigint SQL Server. Pour plus d'informations, reportez-vous à
- Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_BINARY
- (int)
-
-
-
- Décrit le type de données binaire SQL Server. Pour plus d'informations, reportez-vous à
- Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_BIT
- (int)
-
-
-
- Décrit le type de données bit SQL Server. Pour plus d'informations, reportez-vous à
- Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_CHAR
- (int)
-
-
-
- Décrit le type de données caractère SQL Server. Cette constante fonctionne comme
- une fonction et accepte un paramètre indiquant le nombre de caractères. Pour plus
- d'informations, reportez-vous à
- Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_DATE
- (int)
-
-
-
- Décrit le type de données date SQL Server. Pour plus d'informations, reportez-vous à
- Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_DATETIME
- (int)
-
-
-
- Décrit le type de données datetime SQL Server. Pour plus d'informations,
- reportez-vous à
- Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_DATETIME2
- (int)
-
-
-
- Décrit le type de données datetime2 SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_DATETIMEOFFSET
- (int)
-
-
-
- Décrit le type de données datetimeoffset SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_DECIMAL
- (int)
-
-
-
- Décrit le type de données décimal. Cette constante fonctionne comme une fonction
- et accepte 2 paramètres indiquant (dans l'ordre) la précision et l'échelle.
- Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_FLOAT
- (int)
-
-
-
- Décrit le type de données nombre à virgule flottante SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_IMAGE
- (int)
-
-
-
- Décrit le type de données image SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_INT
- (int)
-
-
-
- Décrit le type de données entier SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_MONEY
- (int)
-
-
-
- Décrit le type de données monnaie SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_NCHAR
- (int)
-
-
-
- Décrit le type de données nchar SQL Server. Cette constante fonctionne comme une
- fonction et accepte un seul paramètre indiquant le nombre de caractères.
- Pour plus d'informations, reportez-vous à
- Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_NUMERIC
- (int)
-
-
-
- Décrit le type de données numérique SQL Server. Cette constante fonctionne comme
- une fonction et accepte 2 paramètres (dans l'ordre), la précision et l'échelle.
- Pour plus d'informations, reportez-vous à
- Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_NVARCHAR
- (int)
-
-
-
- Décrit le type de données nvarchar SQL Server. Cette constante fonctionne comme une
- fonction et accepte un seul paramètre indiquant le nombre de caractères.
- Pour plus d'informations, reportez-vous à
- Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_NVARCHAR('max')
- (int)
-
-
-
- Décrit le type de données nvarchar(MAX) SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_NTEXT
- (int)
-
-
-
- Décrit le type de données ntext SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_REAL
- (int)
-
-
-
- Décrit le type de données réelle SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_SMALLDATETIME
- (int)
-
-
-
- Décrit le type de données smalldatetime SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_SMALLINT
- (int)
-
-
-
- Décrit le type de données smallint SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_SMALLMONEY
- (int)
-
-
-
- Décrit le type de données smallmoney SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_TEXT
- (int)
-
-
-
- Décrit le type de données texte SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_TIME
- (int)
-
-
-
- Décrit le type de données time SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_TIMESTAMP
- (int)
-
-
-
- Décrit le type de données timestamp SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_TINYINT
- (int)
-
-
-
- Décrit le type de données tinyint SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_UNIQUEIDENTIFIER
- (int)
-
-
-
- Décrit le type de données uniqueidentifier SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_UDT
- (int)
-
-
-
- Décrit le type de données UDT SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_VARBINARY
- (int)
-
-
-
- Décrit le type de données varbinary SQL Server. Cette constante fonctionne
- comme une fonction et accepte un seul paramètre indiquant le nombre d'octets.
- Pour plus d'informations, reportez-vous à
- Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_VARBINARY('max')
- (int)
-
-
-
- Décrit le type de données varbinary(MAX) SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_VARCHAR
- (int)
-
-
-
- Décrit le type de données varchar SQL Server. Cette constante fonctionne comme
- une fonction et accepte un seul paramètre indiquant le nombre de caractères.
- Pour plus d'informations, reportez-vous à
- Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_VARCHAR('max')
- (int)
-
-
-
- Décrit le type de données varchar(MAX) SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_SQLTYPE_XML
- (int)
-
-
-
- Décrit le type de données XML SQL Server. Pour plus d'informations, reportez-vous
- à Comment spécifier les types SQL.
-
-
-
-
-
- SQLSRV_TXN_READ_UNCOMMITTED
- (int)
-
-
-
- Indique un niveau d'isolation de la transaction à READ UNCOMMITTED.
- Cette valeur est utilisée pour définir le niveau de l'isolation de la
- transaction dans le tableau $connectionOptions passé à la fonction
- sqlsrv_connect.
-
-
-
-
-
- SQLSRV_TXN_READ_COMMITTED
- (int)
-
-
-
- Indique un niveau d'isolation de la transaction à READ COMMITTED.
- Cette valeur est utilisée pour définir le niveau de l'isolation de la
- transaction dans le tableau $connectionOptions passé à la fonction
- sqlsrv_connect.
-
-
-
-
-
- SQLSRV_TXN_REPEATABLE_READ
- (int)
-
-
-
- Indique un niveau d'isolation de la transaction à REPEATABLE READ.
- Cette valeur est utilisée pour définir le niveau de l'isolation de la
- transaction dans le tableau $connectionOptions passé à la fonction
- sqlsrv_connect.
-
-
-
-
-
- SQLSRV_TXN_SNAPSHOT
- (int)
-
-
-
- Indique un niveau d'isolation de la transaction à SNAPSHOT.
- Cette valeur est utilisée pour définir le niveau de l'isolation de la
- transaction dans le tableau $connectionOptions passé à la fonction
- sqlsrv_connect.
-
-
-
-
-
- SQLSRV_TXN_READ_SERIALIZABLE
- (int)
-
-
-
- Indique un niveau d'isolation de la transaction à SERIALIZABLE.
- Cette valeur est utilisée pour définir le niveau de l'isolation de la
- transaction dans le tableau $connectionOptions passé à la fonction
- sqlsrv_connect.
-
-
-
-
-
- SQLSRV_CURSOR_FORWARD
- (int)
-
-
-
- Indique un curseur de type "suivant uniquement". Pour plus d'informations,
- reportez-vous à la section sur
- la spécification d'un type
- de curseur et la sélection de lignes.
-
-
-
-
-
- SQLSRV_CURSOR_STATIC
- (int)
-
-
-
- Indique un curseur de type "statique". Pour plus d'informations,
- reportez-vous à la section sur
- la spécification d'un type
- de curseur et la sélection de lignes.
-
-
-
-
-
- SQLSRV_CURSOR_DYNAMIC
- (int)
-
-
-
- Indique un curseur de type "dynamique". Pour plus d'informations,
- reportez-vous à la section sur
- la spécification d'un type
- de curseur et la sélection de lignes.
-
-
-
-
-
- SQLSRV_CURSOR_KEYSET
- (int)
-
-
-
- Indique un curseur de type "keyset". Pour plus d'informations,
- reportez-vous à la section sur
- la spécification d'un type
- de curseur et la sélection de lignes.
-
-
-
-
-
- SQLSRV_CURSOR_BUFFERED
- (int)
-
-
-
- Crée une requête de curseur côté client. Cela vous permet d'accéder aux
- lignes dans n'importe quel ordre. Pour des informations quant à son utilisation,
- reportez-vous à la section sur la
- la spécification d'un type
- de curseur et la sélection de lignes.
-
-
-
-
-
- SQLSRV_SCROLL_NEXT
- (int)
-
-
-
- Spécifie la ligne à sélectionner dans un jeu de résultats. Pour plus d'informations,
- reportez-vous à la section sur
- la spécification d'un type
- de curseur et la sélection de lignes.
-
-
-
-
-
- SQLSRV_SCROLL_PRIOR
- (int)
-
-
-
- Spécifie la ligne à sélectionner dans un jeu de résultats. Pour plus d'informations,
- reportez-vous à la section sur
- la spécification d'un type
- de curseur et la sélection de lignes.
-
-
-
-
-
- SQLSRV_SCROLL_FIRST
- (int)
-
-
-
- Spécifie la ligne à sélectionner dans un jeu de résultats. Pour plus d'informations,
- reportez-vous à la section sur la
- spécification d'un type de curseur et la sélection de lignes.
-
-
-
-
-
- SQLSRV_SCROLL_LAST
- (int)
-
-
-
- Spécifie la ligne à sélectionner dans un jeu de résultats. Pour plus d'informations,
- reportez-vous à la section sur la
- spécification d'un type de curseur et la sélection de lignes.
-
-
-
-
-
- SQLSRV_SCROLL_ABSOLUTE
- (int)
-
-
-
- Spécifie la ligne à sélectionner dans un jeu de résultats. Pour plus d'informations,
- reportez-vous à la section sur la
- spécification d'un type de curseur et la sélection de lignes.
-
-
-
-
-
- SQLSRV_SCROLL_RELATIVE
- (int)
-
-
-
- Spécifie la ligne à sélectionner dans un jeu de résultats. Pour plus d'informations,
- reportez-vous à la section sur la
- spécification d'un type de curseur et la sélection de lignes.
-
-
-
-
-
-
+
+
+
+
+ &reftitle.constants;
+ &extension.constants;
+
+
+
+ SQLSRV_FETCH_ASSOC
+ (int)
+
+
+
+ Force sqlsrv_fetch_array à retourner un tableau
+ associatif quand il est passé en paramètre.
+
+
+
+
+
+ SQLSRV_FETCH_NUMERIC
+ (int)
+
+
+
+ Force sqlsrv_fetch_array à retourner un tableau
+ indexé numériquement quand il est passé en paramètre.
+
+
+
+
+
+ SQLSRV_FETCH_BOTH
+ (int)
+
+
+
+ Force sqlsrv_fetch_array à retourner un tableau
+ associatif et un tableau indexé numériquement quand il est passé en
+ paramètre (comportement par défaut).
+
+
+
+
+
+ SQLSRV_ERR_ALL
+ (int)
+
+
+
+ Force sqlsrv_errors à retourner les erreurs
+ et avertissements quand il est passé en paramètre (comportement par
+ défaut).
+
+
+
+
+
+ SQLSRV_ERR_ERRORS
+ (int)
+
+
+
+ Force sqlsrv_errors à retourner seulement
+ les erreurs (pas les avertissements) quand il est passé en paramètre.
+
+
+
+
+
+ SQLSRV_ERR_WARNINGS
+ (int)
+
+
+
+ Force sqlsrv_errors à retourner seulement
+ les avertissements (pas les erreurs) quand il est passé en paramètre.
+
+
+
+
+
+ SQLSRV_LOG_SYSTEM_ALL
+ (int)
+
+
+
+ Active les logs de tous les sous-systèmes quand il est passé à la fonction
+ sqlsrv_configure comme paramère.
+
+
+
+
+
+ SQLSRV_LOG_SYSTEM_CONN
+ (int)
+
+
+
+ Active les logs de toute l'activité des connexions quand il est passé
+ à la fonction sqlsrv_configure comme paramère.
+
+
+
+
+
+ SQLSRV_LOG_SYSTEM_INIT
+ (int)
+
+
+
+ Active les logs de toute l'activité des initialisations quand il est
+ passé à la fonction sqlsrv_configure comme paramère.
+
+
+
+
+
+ SQLSRV_LOG_SYSTEM_OFF
+ (int)
+
+
+
+ Désactive les logs de tous les sous-systèmes quand il est passé à la fonction
+ sqlsrv_configure comme paramère.
+
+
+
+
+
+ SQLSRV_LOG_SYSTEM_STMT
+ (int)
+
+
+
+ Active les logs des requêtes quand il est passé à la fonction
+ sqlsrv_configure comme paramère.
+
+
+
+
+
+ SQLSRV_LOG_SYSTEM_UTIL
+ (int)
+
+
+
+ Active les logs des erreurs de fonction quand il est passé à la fonction
+ sqlsrv_configure comme paramère.
+
+
+
+
+
+ SQLSRV_LOG_SEVERITY_ALL
+ (int)
+
+
+
+ Active les logs des erreurs, avertissements et notes quand il est
+ passé à la fonction sqlsrv_configure comme paramère.
+
+
+
+
+
+ SQLSRV_LOG_SEVERITY_ERROR
+ (int)
+
+
+
+ Spécifie que les erreurs seront enregistrées quand il est passé à la fonction
+ sqlsrv_configure comme paramère.
+
+
+
+
+
+ SQLSRV_LOG_SEVERITY_NOTICE
+ (int)
+
+
+
+ Spécifie que les notes seront enregistrées quand il est passé à la fonction
+ sqlsrv_configure comme paramère.
+
+
+
+
+
+ SQLSRV_LOG_SEVERITY_WARNING
+ (int)
+
+
+
+ Spécifie que les avertissements seront enregistrées quand il est passé à
+ la fonction sqlsrv_configure comme paramère.
+
+
+
+
+
+ SQLSRV_NULLABLE_YES
+ (int)
+
+
+
+ Indique qu'une colonne peut être nulle.
+
+
+
+
+
+ SQLSRV_NULLABLE_NO
+ (int)
+
+
+
+ Indique qu'une colonne ne peut pas être nulle.
+
+
+
+
+
+ SQLSRV_NULLABLE_UNKNOWN
+ (int)
+
+
+
+ Indique s'il est connu qu'une colonne est nulle.
+
+
+
+
+
+ SQLSRV_PARAM_IN
+ (int)
+
+
+
+ Indique un paramètre d'entrée quand il est passé à la fonction
+ sqlsrv_query ou à la fonction
+ sqlsrv_prepare.
+
+
+
+
+
+ SQLSRV_PARAM_INOUT
+ (int)
+
+
+
+ Indique un paramètre d'entrée ou de sortie quand il est passé à la
+ fonction sqlsrv_query ou à la fonction
+ sqlsrv_prepare.
+
+
+
+
+
+ SQLSRV_PARAM_OUT
+ (int)
+
+
+
+ Indique un paramètre de sortie quand il est passé à la fonction
+ sqlsrv_query ou à la fonction
+ sqlsrv_prepare.
+
+
+
+
+
+ SQLSRV_PHPTYPE_INT
+ (int)
+
+
+
+ Spécifie une donnée de type entier PHP. Pour plus d'informations, voir
+ Comment spécifier les types PHP.
+
+
+
+
+
+ SQLSRV_PHPTYPE_DATETIME
+ (int)
+
+
+
+ Spécifie une donnée de type datetime (date et heure) PHP. Pour plus d'informations, voir
+ Comment spécifier les types PHP.
+
+
+
+
+
+ SQLSRV_PHPTYPE_FLOAT
+ (int)
+
+
+
+ Spécifie une donnée de type nombre à virgule flottante PHP. Pour plus d'informations, voir
+ Comment spécifier les types PHP.
+
+
+
+
+
+ SQLSRV_PHPTYPE_STREAM
+ (int)
+
+
+
+ Spécifie une donnée de type flux de PHP. Cette constante fonctionne comme une fonction
+ et accepte une constante encodée. Voir les constantes SQLSRV_ENC_*. Pour plus d'informations,
+ repotrez-vous à Comment spécifier les types PHP.
+
+
+
+
+
+ SQLSRV_PHPTYPE_STRING
+ (int)
+
+
+
+ Spécifie une donnée de type chaîne de caractère PHP. Cette constante fonctionne comme une fonction
+ et accepte une constante encodée. Voir les constantes SQLSRV_ENC_*. Pour plus d'informations,
+ reportez-vous à Comment spécifier les types PHP.
+
+
+
+
+
+ SQLSRV_ENC_BINARY
+ (int)
+
+
+
+ Spécifie que la donnée est retournée sous la forme d'un flux brute d'octets
+ depuis le serveur sans y effectuer un encodage ou une transformation. Pour plus
+ d'informations, reportez-vous à Comment spécifier
+ les types PHP.
+
+
+
+
+
+ SQLSRV_ENC_CHAR
+ (int)
+
+
+
+ Les données sont retournées sous la forme de caractères sur 8 octets, tels que
+ spécifiés dans la page de code des paramètres régionaux Windows définis sur le système. Tout
+ caractère multioctet ou caractères qui ne correspondent pas à cette page
+ de code seront substitués par un point d'interrogation sur un octet (?).
+ C'est l'encodage par défaut. Pour plus d'informations, reportez-vous à
+ Comment spécifier les types PHP.
+
+
+
+
+
+ SQLSRV_SQLTYPE_BIGINT
+ (int)
+
+
+
+ Décrit le type de données bigint SQL Server. Pour plus d'informations, reportez-vous à
+ Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_BINARY
+ (int)
+
+
+
+ Décrit le type de données binaire SQL Server. Pour plus d'informations, reportez-vous à
+ Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_BIT
+ (int)
+
+
+
+ Décrit le type de données bit SQL Server. Pour plus d'informations, reportez-vous à
+ Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_CHAR
+ (int)
+
+
+
+ Décrit le type de données caractère SQL Server. Cette constante fonctionne comme
+ une fonction et accepte un paramètre indiquant le nombre de caractères. Pour plus
+ d'informations, reportez-vous à
+ Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_DATE
+ (int)
+
+
+
+ Décrit le type de données date SQL Server. Pour plus d'informations, reportez-vous à
+ Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_DATETIME
+ (int)
+
+
+
+ Décrit le type de données datetime SQL Server. Pour plus d'informations,
+ reportez-vous à
+ Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_DATETIME2
+ (int)
+
+
+
+ Décrit le type de données datetime2 SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_DATETIMEOFFSET
+ (int)
+
+
+
+ Décrit le type de données datetimeoffset SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_DECIMAL
+ (int)
+
+
+
+ Décrit le type de données décimal. Cette constante fonctionne comme une fonction
+ et accepte 2 paramètres indiquant (dans l'ordre) la précision et l'échelle.
+ Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_FLOAT
+ (int)
+
+
+
+ Décrit le type de données nombre à virgule flottante SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_IMAGE
+ (int)
+
+
+
+ Décrit le type de données image SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_INT
+ (int)
+
+
+
+ Décrit le type de données entier SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_MONEY
+ (int)
+
+
+
+ Décrit le type de données monnaie SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_NCHAR
+ (int)
+
+
+
+ Décrit le type de données nchar SQL Server. Cette constante fonctionne comme une
+ fonction et accepte un seul paramètre indiquant le nombre de caractères.
+ Pour plus d'informations, reportez-vous à
+ Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_NUMERIC
+ (int)
+
+
+
+ Décrit le type de données numérique SQL Server. Cette constante fonctionne comme
+ une fonction et accepte 2 paramètres (dans l'ordre), la précision et l'échelle.
+ Pour plus d'informations, reportez-vous à
+ Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_NVARCHAR
+ (int)
+
+
+
+ Décrit le type de données nvarchar SQL Server. Cette constante fonctionne comme une
+ fonction et accepte un seul paramètre indiquant le nombre de caractères.
+ Pour plus d'informations, reportez-vous à
+ Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_NVARCHAR('max')
+ (int)
+
+
+
+ Décrit le type de données nvarchar(MAX) SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_NTEXT
+ (int)
+
+
+
+ Décrit le type de données ntext SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_REAL
+ (int)
+
+
+
+ Décrit le type de données réelle SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_SMALLDATETIME
+ (int)
+
+
+
+ Décrit le type de données smalldatetime SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_SMALLINT
+ (int)
+
+
+
+ Décrit le type de données smallint SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_SMALLMONEY
+ (int)
+
+
+
+ Décrit le type de données smallmoney SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_TEXT
+ (int)
+
+
+
+ Décrit le type de données texte SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_TIME
+ (int)
+
+
+
+ Décrit le type de données time SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_TIMESTAMP
+ (int)
+
+
+
+ Décrit le type de données timestamp SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_TINYINT
+ (int)
+
+
+
+ Décrit le type de données tinyint SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_UNIQUEIDENTIFIER
+ (int)
+
+
+
+ Décrit le type de données uniqueidentifier SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_UDT
+ (int)
+
+
+
+ Décrit le type de données UDT SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_VARBINARY
+ (int)
+
+
+
+ Décrit le type de données varbinary SQL Server. Cette constante fonctionne
+ comme une fonction et accepte un seul paramètre indiquant le nombre d'octets.
+ Pour plus d'informations, reportez-vous à
+ Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_VARBINARY('max')
+ (int)
+
+
+
+ Décrit le type de données varbinary(MAX) SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_VARCHAR
+ (int)
+
+
+
+ Décrit le type de données varchar SQL Server. Cette constante fonctionne comme
+ une fonction et accepte un seul paramètre indiquant le nombre de caractères.
+ Pour plus d'informations, reportez-vous à
+ Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_VARCHAR('max')
+ (int)
+
+
+
+ Décrit le type de données varchar(MAX) SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_SQLTYPE_XML
+ (int)
+
+
+
+ Décrit le type de données XML SQL Server. Pour plus d'informations, reportez-vous
+ à Comment spécifier les types SQL.
+
+
+
+
+
+ SQLSRV_TXN_READ_UNCOMMITTED
+ (int)
+
+
+
+ Indique un niveau d'isolation de la transaction à READ UNCOMMITTED.
+ Cette valeur est utilisée pour définir le niveau de l'isolation de la
+ transaction dans le tableau $connectionOptions passé à la fonction
+ sqlsrv_connect.
+
+
+
+
+
+ SQLSRV_TXN_READ_COMMITTED
+ (int)
+
+
+
+ Indique un niveau d'isolation de la transaction à READ COMMITTED.
+ Cette valeur est utilisée pour définir le niveau de l'isolation de la
+ transaction dans le tableau $connectionOptions passé à la fonction
+ sqlsrv_connect.
+
+
+
+
+
+ SQLSRV_TXN_REPEATABLE_READ
+ (int)
+
+
+
+ Indique un niveau d'isolation de la transaction à REPEATABLE READ.
+ Cette valeur est utilisée pour définir le niveau de l'isolation de la
+ transaction dans le tableau $connectionOptions passé à la fonction
+ sqlsrv_connect.
+
+
+
+
+
+ SQLSRV_TXN_SNAPSHOT
+ (int)
+
+
+
+ Indique un niveau d'isolation de la transaction à SNAPSHOT.
+ Cette valeur est utilisée pour définir le niveau de l'isolation de la
+ transaction dans le tableau $connectionOptions passé à la fonction
+ sqlsrv_connect.
+
+
+
+
+
+ SQLSRV_TXN_READ_SERIALIZABLE
+ (int)
+
+
+
+ Indique un niveau d'isolation de la transaction à SERIALIZABLE.
+ Cette valeur est utilisée pour définir le niveau de l'isolation de la
+ transaction dans le tableau $connectionOptions passé à la fonction
+ sqlsrv_connect.
+
+
+
+
+
+ SQLSRV_CURSOR_FORWARD
+ (int)
+
+
+
+ Indique un curseur de type "suivant uniquement". Pour plus d'informations,
+ reportez-vous à la section sur
+ la spécification d'un type
+ de curseur et la sélection de lignes.
+
+
+
+
+
+ SQLSRV_CURSOR_STATIC
+ (int)
+
+
+
+ Indique un curseur de type "statique". Pour plus d'informations,
+ reportez-vous à la section sur
+ la spécification d'un type
+ de curseur et la sélection de lignes.
+
+
+
+
+
+ SQLSRV_CURSOR_DYNAMIC
+ (int)
+
+
+
+ Indique un curseur de type "dynamique". Pour plus d'informations,
+ reportez-vous à la section sur
+ la spécification d'un type
+ de curseur et la sélection de lignes.
+
+
+
+
+
+ SQLSRV_CURSOR_KEYSET
+ (int)
+
+
+
+ Indique un curseur de type "keyset". Pour plus d'informations,
+ reportez-vous à la section sur
+ la spécification d'un type
+ de curseur et la sélection de lignes.
+
+
+
+
+
+ SQLSRV_CURSOR_BUFFERED
+ (int)
+
+
+
+ Crée une requête de curseur côté client. Cela vous permet d'accéder aux
+ lignes dans n'importe quel ordre. Pour des informations quant à son utilisation,
+ reportez-vous à la section sur la
+ la spécification d'un type
+ de curseur et la sélection de lignes.
+
+
+
+
+
+ SQLSRV_SCROLL_NEXT
+ (int)
+
+
+
+ Spécifie la ligne à sélectionner dans un jeu de résultats. Pour plus d'informations,
+ reportez-vous à la section sur
+ la spécification d'un type
+ de curseur et la sélection de lignes.
+
+
+
+
+
+ SQLSRV_SCROLL_PRIOR
+ (int)
+
+
+
+ Spécifie la ligne à sélectionner dans un jeu de résultats. Pour plus d'informations,
+ reportez-vous à la section sur
+ la spécification d'un type
+ de curseur et la sélection de lignes.
+
+
+
+
+
+ SQLSRV_SCROLL_FIRST
+ (int)
+
+
+
+ Spécifie la ligne à sélectionner dans un jeu de résultats. Pour plus d'informations,
+ reportez-vous à la section sur la
+ spécification d'un type de curseur et la sélection de lignes.
+
+
+
+
+
+ SQLSRV_SCROLL_LAST
+ (int)
+
+
+
+ Spécifie la ligne à sélectionner dans un jeu de résultats. Pour plus d'informations,
+ reportez-vous à la section sur la
+ spécification d'un type de curseur et la sélection de lignes.
+
+
+
+
+
+ SQLSRV_SCROLL_ABSOLUTE
+ (int)
+
+
+
+ Spécifie la ligne à sélectionner dans un jeu de résultats. Pour plus d'informations,
+ reportez-vous à la section sur la
+ spécification d'un type de curseur et la sélection de lignes.
+
+
+
+
+
+ SQLSRV_SCROLL_RELATIVE
+ (int)
+
+
+
+ Spécifie la ligne à sélectionner dans un jeu de résultats. Pour plus d'informations,
+ reportez-vous à la section sur la
+ spécification d'un type de curseur et la sélection de lignes.
+
+
+
+
+
+
From 54ad3fba32182152c44a64b05b47e1157b3c8ef7 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:41:40 +0100
Subject: [PATCH 76/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/swoole/ini.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/swoole/ini.xml | 314 +++++++++++++++++++--------------------
1 file changed, 157 insertions(+), 157 deletions(-)
diff --git a/reference/swoole/ini.xml b/reference/swoole/ini.xml
index 9b336beffe..1b5fead1ed 100644
--- a/reference/swoole/ini.xml
+++ b/reference/swoole/ini.xml
@@ -1,157 +1,157 @@
-
-
-
-
- &reftitle.runtime;
- &extension.runtime;
-
-
-
-
- &ini.descriptions.title;
-
-
-
-
-
- swoole.enable_library
- string
-
-
-
- Active ou désactive la bibliothèque intégrée de l’extension.
-
-
-
-
-
- swoole.enable_fiber_mock
- string
-
-
-
- Active ou désactive l’utilisation de l’extension xdebug pour déboguer les programmes Swoole.
-
-
-
-
-
- swoole.enable_preemptive_scheduler
- string
-
-
-
- Empêche certaines coroutines de consommer trop de temps CPU dans une boucle serrée (10 ms de temps CPU),
- ce qui pourrait empêcher la planification des autres coroutines.
-
-
-
-
-
- swoole.display_errors
- string
-
-
-
- Active ou désactive l’affichage des messages d’erreur Swoole.
-
-
-
-
-
-
- swoole.use_shortname
- string
-
-
-
- Active ou désactive les alias courts.
-
-
-
-
-
-
- swoole.unixsock_buffer_size
- int
-
-
-
- Définit la taille du tampon Socket pour la communication inter-processus.
-
-
-
-
-
-
-
-
+
+
+
+
+ &reftitle.runtime;
+ &extension.runtime;
+
+
+
+
+ &ini.descriptions.title;
+
+
+
+
+
+ swoole.enable_library
+ string
+
+
+
+ Active ou désactive la bibliothèque intégrée de l’extension.
+
+
+
+
+
+ swoole.enable_fiber_mock
+ string
+
+
+
+ Active ou désactive l’utilisation de l’extension xdebug pour déboguer les programmes Swoole.
+
+
+
+
+
+ swoole.enable_preemptive_scheduler
+ string
+
+
+
+ Empêche certaines coroutines de consommer trop de temps CPU dans une boucle serrée (10 ms de temps CPU),
+ ce qui pourrait empêcher la planification des autres coroutines.
+
+
+
+
+
+ swoole.display_errors
+ string
+
+
+
+ Active ou désactive l’affichage des messages d’erreur Swoole.
+
+
+
+
+
+
+ swoole.use_shortname
+ string
+
+
+
+ Active ou désactive les alias courts.
+
+
+
+
+
+
+ swoole.unixsock_buffer_size
+ int
+
+
+
+ Définit la taille du tampon Socket pour la communication inter-processus.
+
+
+
+
+
+
+
+
From 893b67892161c8227857fa7e6fc2f395d759702f Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:41:41 +0100
Subject: [PATCH 77/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/swoole/swoole/coroutine/lock/l?=
=?UTF-8?q?ock.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../swoole/swoole/coroutine/lock/lock.xml | 116 +++++++++---------
1 file changed, 58 insertions(+), 58 deletions(-)
diff --git a/reference/swoole/swoole/coroutine/lock/lock.xml b/reference/swoole/swoole/coroutine/lock/lock.xml
index 0133ffe705..c4e616b412 100644
--- a/reference/swoole/swoole/coroutine/lock/lock.xml
+++ b/reference/swoole/swoole/coroutine/lock/lock.xml
@@ -1,58 +1,58 @@
-
-
-
-
-
-
- Swoole\Coroutine\Lock::lock
- Acquiert le verrou, en bloquant si nécessaire
-
-
-
- &reftitle.description;
-
- publicboolSwoole\Coroutine\Lock::lock
-
-
-
- Lors de l'exécution de l'opération de verrouillage, si le verrou est déjà détenu par une autre coroutine,
- la coroutine actuelle cédera activement le contrôle du CPU et entrera dans un état suspendu.
- Lorsque la coroutine qui détient le verrou appelle unlock(), la coroutine en attente sera réveillée
- et tentera de réacquérir le verrou.
-
-
-
-
- &reftitle.parameters;
- &no.function.parameters;
-
-
-
- &reftitle.returnvalues;
-
- Renvoie &true; si le verrou a été acquis avec succès,
- sinon &false;.
-
-
-
-
-
+
+
+
+
+
+
+ Swoole\Coroutine\Lock::lock
+ Acquiert le verrou, en bloquant si nécessaire
+
+
+
+ &reftitle.description;
+
+ publicboolSwoole\Coroutine\Lock::lock
+
+
+
+ Lors de l'exécution de l'opération de verrouillage, si le verrou est déjà détenu par une autre coroutine,
+ la coroutine actuelle cédera activement le contrôle du CPU et entrera dans un état suspendu.
+ Lorsque la coroutine qui détient le verrou appelle unlock(), la coroutine en attente sera réveillée
+ et tentera de réacquérir le verrou.
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ Renvoie &true; si le verrou a été acquis avec succès,
+ sinon &false;.
+
+
+
+
+
From e218ff68ce4e0e630e4a2c5d30d10383dd29f424 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:41:41 +0100
Subject: [PATCH 78/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/swoole/swoole/coroutine/lock/t?=
=?UTF-8?q?rylock.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../swoole/swoole/coroutine/lock/trylock.xml | 116 +++++++++---------
1 file changed, 58 insertions(+), 58 deletions(-)
diff --git a/reference/swoole/swoole/coroutine/lock/trylock.xml b/reference/swoole/swoole/coroutine/lock/trylock.xml
index 6386777c9b..f1955e4bf7 100644
--- a/reference/swoole/swoole/coroutine/lock/trylock.xml
+++ b/reference/swoole/swoole/coroutine/lock/trylock.xml
@@ -1,58 +1,58 @@
-
-
-
-
-
-
- Swoole\Coroutine\Lock::trylock
- Essaie d'acquérir le verrou sans bloquer
-
-
-
- &reftitle.description;
-
- publicboolSwoole\Coroutine\Lock::trylock
-
-
-
- Lors de l'appel de l'opération de verrouillage, si le verrou est déjà détenu par une autre coroutine,
- la fonction renverra immédiatement false sans suspendre la coroutine actuelle
- ou céder le contrôle du CPU. Cette conception non-bloquante permet à l'appelant de gérer de manière flexible
- les situations de contention, telles que la réessayer, abandonner ou exécuter d'autres logiques.
-
-
-
-
- &reftitle.parameters;
- &no.function.parameters;
-
-
-
- &reftitle.returnvalues;
-
- Renvoie &true; si le verrou a été acquis avec succès,
- &false; si le verrou n'est pas disponible.
-
-
-
-
-
+
+
+
+
+
+
+ Swoole\Coroutine\Lock::trylock
+ Essaie d'acquérir le verrou sans bloquer
+
+
+
+ &reftitle.description;
+
+ publicboolSwoole\Coroutine\Lock::trylock
+
+
+
+ Lors de l'appel de l'opération de verrouillage, si le verrou est déjà détenu par une autre coroutine,
+ la fonction renverra immédiatement false sans suspendre la coroutine actuelle
+ ou céder le contrôle du CPU. Cette conception non-bloquante permet à l'appelant de gérer de manière flexible
+ les situations de contention, telles que la réessayer, abandonner ou exécuter d'autres logiques.
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ Renvoie &true; si le verrou a été acquis avec succès,
+ &false; si le verrou n'est pas disponible.
+
+
+
+
+
From 4e41c65a534ae5151ed39e325cb8e332504822d1 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:41:41 +0100
Subject: [PATCH 79/96] =?UTF-8?q?fix:=20normalise=20fins=20de=20ligne=20CR?=
=?UTF-8?q?LF=E2=86=92LF=20dans=20reference/swoole/swoole/coroutine/lock/u?=
=?UTF-8?q?nlock.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../swoole/swoole/coroutine/lock/unlock.xml | 138 +++++++++---------
1 file changed, 69 insertions(+), 69 deletions(-)
diff --git a/reference/swoole/swoole/coroutine/lock/unlock.xml b/reference/swoole/swoole/coroutine/lock/unlock.xml
index 73dd947f9b..e5cacd28c0 100644
--- a/reference/swoole/swoole/coroutine/lock/unlock.xml
+++ b/reference/swoole/swoole/coroutine/lock/unlock.xml
@@ -1,69 +1,69 @@
-
-
-
-
-
-
- Swoole\Coroutine\Lock::unlock
- Relâche le verrou
-
-
-
- &reftitle.description;
-
- publicboolSwoole\Coroutine\Lock::unlock
-
-
-
-
-
- Unlock Behavior
-
-
-
- Avec io_uring futex: le système réveillera précisément une coroutine dans la file d'attente d'attente.
-
-
-
-
- Sans io_uring futex: attends la fin du temps de backoff des coroutines en attente
- et essaie de réacquérir le verrou.
-
-
-
-
-
-
- &reftitle.parameters;
- &no.function.parameters;
-
-
-
- &reftitle.returnvalues;
-
- Renvoie &true; si le verrou a été relâché avec succès,
- sinon &false;.
-
-
-
-
-
+
+
+
+
+
+
+ Swoole\Coroutine\Lock::unlock
+ Relâche le verrou
+
+
+
+ &reftitle.description;
+
+ publicboolSwoole\Coroutine\Lock::unlock
+
+
+
+
+
+ Unlock Behavior
+
+
+
+ Avec io_uring futex: le système réveillera précisément une coroutine dans la file d'attente d'attente.
+
+
+
+
+ Sans io_uring futex: attends la fin du temps de backoff des coroutines en attente
+ et essaie de réacquérir le verrou.
+
+
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ Renvoie &true; si le verrou a été relâché avec succès,
+ sinon &false;.
+
+
+
+
+
From 1bc478366eaa4925c353ae483d528a25375dd80f Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:46:44 +0100
Subject: [PATCH 80/96] Fix translation errors across 24 extensions: curl, xml,
soap, zip, hash, filter, iconv, ctype, calendar, bcmath, gmp, ftp, sockets,
stream, errorfunc, exec, misc, classobj, math, var, info, outcontrol
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Major fixes:
- curl-errno: refpurpose said "message" instead of "numéro" d'erreur
- filter/ini: wrong function name input_get→filter_input + broken grammar
- hash/setup: missing "but could be disabled" clause
- math/pow: inverted meaning "non-negative integers"
- var/serialize: wrong description "tableau" instead of "valeur"
- soap/book: "échanges" mistranslation + missing "sous-ensembles"
- sockets: rewrote socket type descriptions (séquentiels, non fiable, bidirectionnel)
- zip/constants: swapped ER_RDONLY/ER_OPNOTSUPP descriptions
- calendar: "A.J." → "av. J.-C."
- errorfunc: untranslated "before" → "avant"
- outcontrol/ob-start: chunk_size behavior mistranslation
Grammar/spelling (100+ fixes):
- Gender agreements, plural agreements, verb conjugations
- Typos: optionel, personalisé, flotant, exposent, décimals, Datagramm
- Missing accents, wrong prepositions, broken sentences
---
reference/bc/book.xml | 2 +-
reference/bc/functions/bcpow.xml | 4 ++--
reference/calendar/book.xml | 2 +-
reference/calendar/constants.xml | 2 +-
reference/classobj/functions/class-exists.xml | 2 +-
reference/ctype/book.xml | 6 ++---
reference/ctype/functions/ctype-space.xml | 6 ++---
reference/curl/functions/curl-close.xml | 2 +-
reference/curl/functions/curl-errno.xml | 2 +-
reference/curl/functions/curl-exec.xml | 4 ++--
reference/curl/setup.xml | 2 +-
.../errorfunc/functions/error-reporting.xml | 2 +-
.../errorfunc/functions/set-error-handler.xml | 10 ++++----
reference/exec/functions/proc-open.xml | 10 ++++----
reference/filter/functions/filter-var.xml | 14 +++++------
reference/filter/ini.xml | 4 ++--
reference/ftp/book.xml | 4 ++--
reference/ftp/functions/ftp-put.xml | 4 ++--
reference/gmp/book.xml | 10 ++++----
reference/hash/functions/hash-hkdf.xml | 4 ++--
reference/hash/functions/hash-init.xml | 2 +-
reference/hash/functions/hash-pbkdf2.xml | 2 +-
reference/hash/setup.xml | 7 +++---
.../iconv/functions/iconv-mime-encode.xml | 12 +++++-----
reference/iconv/functions/iconv-strlen.xml | 2 +-
reference/iconv/functions/iconv-strpos.xml | 6 ++---
reference/iconv/functions/iconv-substr.xml | 4 ++--
reference/iconv/functions/iconv.xml | 4 ++--
reference/info/constants.xml | 6 ++---
reference/info/functions/getenv.xml | 6 ++---
reference/info/functions/ini-set.xml | 4 ++--
reference/math/book.xml | 8 +++----
reference/math/constants.xml | 4 ++--
reference/math/functions/base-convert.xml | 2 +-
reference/math/functions/intdiv.xml | 4 ++--
reference/math/functions/max.xml | 4 ++--
reference/math/functions/min.xml | 4 ++--
reference/math/functions/pow.xml | 6 ++---
reference/math/functions/round.xml | 2 +-
reference/misc/functions/sleep.xml | 2 +-
reference/outcontrol/book.xml | 2 +-
reference/outcontrol/constants.xml | 6 ++---
reference/soap/book.xml | 4 ++--
reference/soap/soapfault/construct.xml | 2 +-
reference/soap/soapserver/handle.xml | 2 +-
reference/sockets/functions/socket-create.xml | 24 +++++++++----------
reference/sockets/functions/socket-select.xml | 4 ++--
reference/stream/book.xml | 6 ++---
reference/stream/functions/stream-select.xml | 2 +-
reference/var/functions/isset.xml | 6 ++---
reference/var/functions/serialize.xml | 2 +-
reference/var/functions/unserialize.xml | 6 ++---
reference/var/functions/var-dump.xml | 2 +-
.../xml/functions/xml-parse-into-struct.xml | 4 ++--
reference/xml/functions/xml-parser-create.xml | 2 +-
.../xml/functions/xml-parser-set-option.xml | 4 ++--
.../xml/functions/xml-set-element-handler.xml | 2 +-
reference/zip/constants.xml | 10 ++++----
reference/zip/ziparchive/open.xml | 2 +-
59 files changed, 140 insertions(+), 139 deletions(-)
diff --git a/reference/bc/book.xml b/reference/bc/book.xml
index 54303cdfaf..4ba93959d4 100644
--- a/reference/bc/book.xml
+++ b/reference/bc/book.xml
@@ -14,7 +14,7 @@
Pour les calculs mathématiques d'une grande précision, PHP fournit
BCMath, qui supporte n'importe quelle précision et
n'importe quelle taille de nombres jusqu'à 2147483647 (ou
- 0x7FFFFFFF) chiffres décimals, s'il y a suffisamment de mémoire,
+ 0x7FFFFFFF) chiffres décimaux, s'il y a suffisamment de mémoire,
représentés sous la forme d'une &string;.
diff --git a/reference/bc/functions/bcpow.xml b/reference/bc/functions/bcpow.xml
index 78862b5fd6..480858cdbc 100644
--- a/reference/bc/functions/bcpow.xml
+++ b/reference/bc/functions/bcpow.xml
@@ -99,7 +99,7 @@
7.3.0bcpow retourne désormais les nombres avec la précision demandée.
- Auparavant, les nombres retournés pouvait omettre les zéros décimaux trainant à la fin.
+ Auparavant, les nombres retournés pouvaient omettre les zéros décimaux trainant à la fin.
@@ -129,7 +129,7 @@ echo bcpow('4.2', '3', 2); // 74.08
Antérieur à PHP 7.3.0 bcpow peut retourner un résultat avec moins de chiffres
après la virgule que le paramètre scale indique. Ceci ne
- se produit que le résultat ne nécessite pas toute la précision autorisée par
+ se produit que lorsque le résultat ne nécessite pas toute la précision autorisée par
scale. Par exemple:
bcpow exemple pour scale
diff --git a/reference/calendar/book.xml b/reference/calendar/book.xml
index ca68ad4fb8..5c5a598e2f 100644
--- a/reference/calendar/book.xml
+++ b/reference/calendar/book.xml
@@ -14,7 +14,7 @@
L'extension Calendar contient une série de fonctions afin de
convertir simplement les différents formats de calendrier.
Elles sont basées sur un comptage de jour Julien. Le comptage
- Julien est un comptage commençant le 1er Janvier 4713 A.J.
+ Julien est un comptage commençant le 1er Janvier 4713 av. J.-C.
Pour convertir les différents calendriers, vous devez tout d'abord
convertir en nombre de jours Julien, puis, dans le type de calendrier
de votre choix. Le comptage de jours Julien est très différent
diff --git a/reference/calendar/constants.xml b/reference/calendar/constants.xml
index b4de11a4b4..59929cd791 100644
--- a/reference/calendar/constants.xml
+++ b/reference/calendar/constants.xml
@@ -116,7 +116,7 @@
- Le nombre de calendriers disponible.
+ Le nombre de calendriers disponibles.
diff --git a/reference/classobj/functions/class-exists.xml b/reference/classobj/functions/class-exists.xml
index 0435fa03bc..c3293e6775 100644
--- a/reference/classobj/functions/class-exists.xml
+++ b/reference/classobj/functions/class-exists.xml
@@ -72,7 +72,7 @@ if (class_exists('MyClass')) {
Il est important de garder à l'esprit que les fonctions ctype sont toujours
- préférées pour les expressions régulières ainsi que pour les fonctions
- préfixées pas "str_*" et "is_*".
+ préférées aux expressions régulières ainsi qu'aux fonctions
+ préfixées par "str_*" et "is_*".
En effet, ctype utilisant la bibliothèque native C, le
traitement est extrêmement rapide.
Ces fonctions ne sont absolument pas relatives à la bibliothèque Python
- "ctypes". Les noms des fonctions sont relatives à l'en-tête du fichier
+ "ctypes". Les noms des fonctions sont relatifs à l'en-tête du fichier
C ctype.h où les fonctions C équivalentes sont définies.
diff --git a/reference/ctype/functions/ctype-space.xml b/reference/ctype/functions/ctype-space.xml
index cd158cb4da..17a6859bd5 100644
--- a/reference/ctype/functions/ctype-space.xml
+++ b/reference/ctype/functions/ctype-space.xml
@@ -42,9 +42,9 @@
&reftitle.returnvalues;
Retourne &true; si tous les caractères de text
- vont créer des espaces blancs, &false; sinon. Cela inclut les tabulations,
- les tabulations verticales, les nouvelles lignes, les retours chariots
- et les retours à la ligne.
+ vont créer des espaces blancs, &false; sinon. Cela inclut les espaces, les tabulations,
+ les tabulations verticales, les retours à la ligne, les retours chariot
+ et les sauts de page.
&ctype.result.empty-string;
diff --git a/reference/curl/functions/curl-close.xml b/reference/curl/functions/curl-close.xml
index 951adff217..9fc95989bd 100644
--- a/reference/curl/functions/curl-close.xml
+++ b/reference/curl/functions/curl-close.xml
@@ -5,7 +5,7 @@
curl_close
- Ferme une session CURL
+ Ferme une session cURL
diff --git a/reference/curl/functions/curl-errno.xml b/reference/curl/functions/curl-errno.xml
index bae16dcb6f..e2748aa1ff 100644
--- a/reference/curl/functions/curl-errno.xml
+++ b/reference/curl/functions/curl-errno.xml
@@ -4,7 +4,7 @@
curl_errno
- Retourne le dernier message d'erreur cURL
+ Retourne le dernier numéro d'erreur cURL
diff --git a/reference/curl/functions/curl-exec.xml b/reference/curl/functions/curl-exec.xml
index 3cec9ce3a9..0c98377dde 100644
--- a/reference/curl/functions/curl-exec.xml
+++ b/reference/curl/functions/curl-exec.xml
@@ -34,7 +34,7 @@
&reftitle.returnvalues;
- En cas de succès, cette fonction vide le résultat directement dans
+ En cas de succès, cette fonction envoie le résultat directement dans
stdout et renvoie &true;, &return.falseforfailure;.
Cependant, si CURLOPT_RETURNTRANSFER
est définie, la fonction
@@ -44,7 +44,7 @@
&return.falseproblem;
- Notez que les codes de status d'une réponse qui indiquent des erreurs (tels que
+ Notez que les codes de statut d'une réponse qui indiquent des erreurs (tels que
404 Not found) ne sont pas considérés comme des échecs.
curl_getinfo peut être utilisé pour vérifier ces cas.
diff --git a/reference/curl/setup.xml b/reference/curl/setup.xml
index 67d852d177..f2e0001d2a 100644
--- a/reference/curl/setup.xml
+++ b/reference/curl/setup.xml
@@ -11,7 +11,7 @@
Afin de pouvoir utiliser les fonctions cURL dans PHP, vous devez
installer le paquet libcurl.
- PHP requiert libcurl version 7.10.5 ou supérieur.
+ PHP requiert libcurl version 7.10.5 ou supérieure.
À partir de PHP 7.3.0, la version 7.15.5 ou ultérieure est requise.
A partir de PHP 8.0.0, la version 7.29.0 ou ultérieure est requise.
A partir de PHP 8.4.0, la version 7.61.0 ou supérieure est requise.
diff --git a/reference/errorfunc/functions/error-reporting.xml b/reference/errorfunc/functions/error-reporting.xml
index f317776f59..e6891f6115 100644
--- a/reference/errorfunc/functions/error-reporting.xml
+++ b/reference/errorfunc/functions/error-reporting.xml
@@ -57,7 +57,7 @@
&reftitle.returnvalues;
Retourne le niveau d'error_reporting,
- before qu'il ne soit changé en error_level
+ avant qu'il ne soit changé en error_level
diff --git a/reference/errorfunc/functions/set-error-handler.xml b/reference/errorfunc/functions/set-error-handler.xml
index dbb066ee1e..ff098e546b 100644
--- a/reference/errorfunc/functions/set-error-handler.xml
+++ b/reference/errorfunc/functions/set-error-handler.xml
@@ -102,7 +102,7 @@
errfile
- Si la fermeture accepte un troisième paramètre, errfile,
+ Si la fonction de rappel accepte un troisième paramètre, errfile,
il sera passé le nom du fichier dans lequel l'erreur a été identifiée, sous forme de chaîne.
@@ -111,7 +111,7 @@
errline
- Si la fermeture accepte un quatrième paramètre, errline,
+ Si la fonction de rappel accepte un quatrième paramètre, errline,
il sera passé le numéro de ligne à laquelle l'erreur a été identifiée, sous la forme d'un entier.
@@ -120,18 +120,18 @@
errcontext
- Si la fermeture accepte un cinquième paramètre, errcontext,
+ Si la fonction de rappel accepte un cinquième paramètre, errcontext,
il sera passé comme un tableau qui pointe sur la table des symboles actifs à
l'instant où l'erreur est survenue. En d'autres termes, errcontext
contient un tableau avec toutes les variables qui existaient lorsque
l'erreur a été déclenchée.
- Les gestionnaires d'erreurs utilisateur ne doit pas modifier le contexte d'erreur.
+ Les gestionnaires d'erreurs utilisateur ne doivent pas modifier le contexte d'erreur.
Ce paramètre est OBSOLÈTE à partir de PHP 7.2.0,
et SUPPRIMÉ à partir de PHP 8.0.0. Si la
- fonction définie ce paramètre sans valeur par défaut, une erreur de
+ fonction définit ce paramètre sans valeur par défaut, une erreur de
"too few arguments" sera levée lors de son appel.
diff --git a/reference/exec/functions/proc-open.xml b/reference/exec/functions/proc-open.xml
index 5c9b6b9c61..b245267697 100644
--- a/reference/exec/functions/proc-open.xml
+++ b/reference/exec/functions/proc-open.xml
@@ -42,12 +42,12 @@
Sur Windows, sauf si bypass_shell est définie à &true; dans
options, command est
passé à cmd.exe (en fait, %ComSpec%)
- avec le drapeau /c est une &string; sans
+ avec le drapeau /c comme une &string; sans
guillemets (c.à.d. exactement comment elle a été fournie à
proc_open). Ceci peut causer
- cmd.exe à supprimer les guillemets entourant de
+ cmd.exe à supprimer les guillemets entourant
command (pour plus de détails voir la documentation
- de cmd.exe), résultant dans du comportement
+ de cmd.exe), ce qui peut engendrer un comportement
inattendu, et potentiellement dangereux, car les messages d'erreurs de
cmd.exe peuvent contenir (une partie de) la
command passée (voir exemple ci-dessous).
@@ -245,7 +245,7 @@
array("pipe", "r"), // // stdin est un pipe où le processus va lire
+ 0 => array("pipe", "r"), // stdin est un pipe où le processus va lire
1 => array("pipe", "w"), // stdout est un pipe où le processus va écrire
2 => array("file", "/tmp/error-output.txt", "a") // stderr est un fichier
);
@@ -319,7 +319,7 @@ operable program or batch file.
Pour contourner ce comportement, il est généralement suffisant d'entourer
- command de guillemets additionnelles :
+ command de guillemets additionnels :
FILTER_VALIDATE_*,
un filtre de purification
FILTER_SANITIZE_*,
- ou un filtre personalisé.
+ ou un filtre personnalisé.
@@ -36,9 +36,9 @@
- Les valeurs scalaire sont
- convertie en string
- en interne avant d'être filtré.
+ Les valeurs scalaires sont
+ converties en chaîne
+ en interne avant d'être filtrées.
@@ -52,14 +52,14 @@
FILTER_VALIDATE_*,
un filtre de purification en utilisant une des constantes
FILTER_SANITIZE_*,
- ou FILTER_UNSAFE_RAW, ou un filtre personalisé
+ ou FILTER_UNSAFE_RAW, ou un filtre personnalisé
en utilisant FILTER_CALLBACK.
Le filtre par défaut est FILTER_DEFAULT,
qui est un alias de FILTER_UNSAFE_RAW.
- Ceci resulte en aucun filtrage par default.
+ Ceci résulte en aucun filtrage par défaut.
@@ -95,7 +95,7 @@
&reftitle.examples;
- Un example pour filter_var
+ Un exemple pour filter_var
$_GET,
$_POST, $_COOKIE,
$_REQUEST et $_SERVER avec ce filtre.
- Les données originales peut être à l'aide de la fonction
- input_get.
+ Les données originales peuvent être récupérées à l'aide de la fonction
+ filter_input.
Doit être le nom d'un filtre pouvant être déterminé en utilisant
diff --git a/reference/ftp/book.xml b/reference/ftp/book.xml
index 2e112c19df..1a970960e3 100644
--- a/reference/ftp/book.xml
+++ b/reference/ftp/book.xml
@@ -9,8 +9,8 @@
&reftitle.intro;
- Les fonctions de cette extension implémentent l'accès au client
- à un serveur de fichiers qui gère le protocole FTP comme défini dans la RFC
+ Les fonctions de cette extension implémentent l'accès client
+ aux serveurs de fichiers utilisant le protocole FTP comme défini dans la RFC
&url.rfc;959.
Cette extension permet un accès détaillé au serveur FTP fournissant
un éventail de commandes pour vos scripts. Si vous voulez seulement
diff --git a/reference/ftp/functions/ftp-put.xml b/reference/ftp/functions/ftp-put.xml
index 8d9961a2ee..8889dda4e4 100644
--- a/reference/ftp/functions/ftp-put.xml
+++ b/reference/ftp/functions/ftp-put.xml
@@ -61,7 +61,7 @@
La position dans le fichier distant à partir de laquelle
- le téléchargement commencera.
+ l'envoi commencera.
@@ -90,7 +90,7 @@
7.3.0
- Le paramètre mode est maintenant optionel. Précédemment il
+ Le paramètre mode est maintenant optionnel. Précédemment il
était obligatoire.
diff --git a/reference/gmp/book.xml b/reference/gmp/book.xml
index 7b223ce0a8..f1aefd6f25 100644
--- a/reference/gmp/book.xml
+++ b/reference/gmp/book.xml
@@ -17,13 +17,13 @@
- La plupart des fonctions GMP accepte des nombres GMP comme arguments.
+ La plupart des fonctions GMP acceptent des nombres GMP comme arguments.
Ils sont montrés dans la documentation comme des objets GMP.
- La plupart de ces fonctions accepte également des arguments
+ La plupart de ces fonctions acceptent également des arguments
sous la forme numérique et de chaîne de caractères, tant qu'il est possible
de les convertir plus tard en nombre. Ainsi, s'il existe une fonction plus
performante qui peut fonctionner sur les arguments (entiers seulement),
- alors il sera utilisé à la place (cela est fait de manière transparente).
+ alors elle sera utilisée à la place (cela est fait de manière transparente).
Voir aussi la fonction gmp_init.
@@ -33,7 +33,7 @@
arithmétiques,
sur les bits, et
de comparaison
- peuvent être utilisé avec les objets GMP retournés
+ peuvent être utilisés avec les objets GMP retournés
depuis gmp_init et les autres fonctions GMP.
@@ -46,7 +46,7 @@
que GMP n'entre en jeu.
Les entiers volumineux doivent être spécifiés en tant que chaînes -
- autrement, PHP les forces en &float;, entraînant une perte de précision.
+ autrement, PHP les force en &float;, entraînant une perte de précision.
diff --git a/reference/hash/functions/hash-hkdf.xml b/reference/hash/functions/hash-hkdf.xml
index 80cb5b9bb5..68a2a43982 100644
--- a/reference/hash/functions/hash-hkdf.xml
+++ b/reference/hash/functions/hash-hkdf.xml
@@ -27,7 +27,7 @@
algo
- Nom de l'algorithme de hachage sélectioné (par exemple : "sha256").
+ Nom de l'algorithme de hachage sélectionné (par exemple : "sha256").
Pour une liste des algorithmes supportés voir hash_hmac_algos.
@@ -74,7 +74,7 @@
Sel à utiliser lors de la dérivation.
- Bien qu'optionel, ajouté un sel aléatoire augmente de façon significative la
+ Bien qu'optionnel, ajouter un sel aléatoire augmente de façon significative la
robustesse de HKDF.
diff --git a/reference/hash/functions/hash-init.xml b/reference/hash/functions/hash-init.xml
index d795a7636f..e6eba7727e 100644
--- a/reference/hash/functions/hash-init.xml
+++ b/reference/hash/functions/hash-init.xml
@@ -61,7 +61,7 @@
options
- Un tableau d'options pour les algorithmes dives de hachage.
+ Un tableau d'options pour les divers algorithmes de hachage.
Actuellement, seul le paramètre "seed" est
supporté pour les variantes MurmurHash.
diff --git a/reference/hash/functions/hash-pbkdf2.xml b/reference/hash/functions/hash-pbkdf2.xml
index b514ef7311..32b8a8e808 100644
--- a/reference/hash/functions/hash-pbkdf2.xml
+++ b/reference/hash/functions/hash-pbkdf2.xml
@@ -205,7 +205,7 @@ string(20) "120fb6cffcf8b32c43e7"
pour le stockage. Cependant, vous devez garder à l'esprit que
la fonction password_hash ou la fonction
crypt avec la constante CRYPT_BLOWFISH
- est meilleur pour cet usage.
+ sont mieux adaptées pour cet usage.
diff --git a/reference/hash/setup.xml b/reference/hash/setup.xml
index 6c045a882a..603e2a0017 100644
--- a/reference/hash/setup.xml
+++ b/reference/hash/setup.xml
@@ -12,11 +12,12 @@
L'extension Hash est une extension du cœur de PHP, donc elle est toujours activée.
- Auparavant PHP 7.4.0, l'extension Hash était incluse et compilée
- dans PHP par défaut .
+ Avant PHP 7.4.0, l'extension Hash était incluse et compilée dans PHP
+ par défaut, mais pouvait être explicitement désactivée en utilisant
+ .
- Auparavant 5.1.2, l'extension Hash était installée en tant que
+ Avant PHP 5.1.2, l'extension Hash était installée en tant que
module PECL.
diff --git a/reference/iconv/functions/iconv-mime-encode.xml b/reference/iconv/functions/iconv-mime-encode.xml
index 2072510a12..d0d9a5bb61 100644
--- a/reference/iconv/functions/iconv-mime-encode.xml
+++ b/reference/iconv/functions/iconv-mime-encode.xml
@@ -47,7 +47,7 @@ Subject: =?ISO-8859-1?Q?Pr=FCfung_f=FCr?= Entwerfen von einer MIME kopfzeile
field_value
- La valeur du champs.
+ La valeur du champ.
@@ -90,7 +90,7 @@ Subject: =?ISO-8859-1?Q?Pr=FCfung_f=FCr?= Entwerfen von einer MIME kopfzeile
input-charsetstring
- Spécifie le jeux de caractères pour représenter le premier paramètre
+ Spécifie le jeu de caractères pour représenter le premier paramètre
field_name et le second paramètre
field_value. S'il est omis,
iconv_mime_encode
@@ -107,7 +107,7 @@ Subject: =?ISO-8859-1?Q?Pr=FCfung_f=FCr?= Entwerfen von einer MIME kopfzeile
output-charsetstring
- Spécifie le jeux de caractères à utiliser pour composer
+ Spécifie le jeu de caractères à utiliser pour composer
l'en-tête MIME.
@@ -120,8 +120,8 @@ Subject: =?ISO-8859-1?Q?Pr=FCfung_f=FCr?= Entwerfen von einer MIME kopfzeile
int
Spécifie la longueur maximale de chaque en-tête.
- Si l'en-tête est plus grande que la longueur défini par ce paramètre,
- l'en-tête résultant sera un en-tête composée de plusieurs lignes
+ Si l'en-tête est plus grand que la longueur définie par ce paramètre,
+ l'en-tête résultant sera un en-tête composé de plusieurs lignes
conformément au standard RFC2822 - Internet Message Format.
S'il est omis, la longueur maximale sera fixée à 76 caractères.
@@ -154,7 +154,7 @@ Subject: =?ISO-8859-1?Q?Pr=FCfung_f=FCr?= Entwerfen von einer MIME kopfzeile
&reftitle.returnvalues;
- Retourne un champs MIME en cas de succès,
+ Retourne un champ MIME en cas de succès,
ou &false; si une erreur survient durant l'encodage.
diff --git a/reference/iconv/functions/iconv-strlen.xml b/reference/iconv/functions/iconv-strlen.xml
index 90e89861b4..bf5ba00cab 100644
--- a/reference/iconv/functions/iconv-strlen.xml
+++ b/reference/iconv/functions/iconv-strlen.xml
@@ -40,7 +40,7 @@
encoding
- Si encoding est omit ou &null;,
+ Si encoding est omis ou &null;,
string est supposée être encodée en
iconv.internal_encoding.
diff --git a/reference/iconv/functions/iconv-strpos.xml b/reference/iconv/functions/iconv-strpos.xml
index f3e44968af..107f3613ca 100644
--- a/reference/iconv/functions/iconv-strpos.xml
+++ b/reference/iconv/functions/iconv-strpos.xml
@@ -25,7 +25,7 @@
À l'opposé de strpos, la valeur retournée par
iconv_strpos est le nombre de caractères
se trouvant avant needle, plutôt que la position en octets où needle a été trouvé.
- Les caractères sont comptés en se basant sur le jeux de caractères spécifié par
+ Les caractères sont comptés en se basant sur le jeu de caractères spécifié par
encoding.
@@ -56,7 +56,7 @@
Le paramètre optionnel offset spécifie la position
à partir de laquelle la recherche doit commencer.
- Si la position est négative, elle est compté depuis la fin de la &string;
+ Si la position est négative, elle est comptée depuis la fin de la &string;
@@ -112,7 +112,7 @@
7.1.0
- Suppport pour les offsets négatifs a été ajouté.
+ Support pour les offsets négatifs a été ajouté.
diff --git a/reference/iconv/functions/iconv-substr.xml b/reference/iconv/functions/iconv-substr.xml
index 00b3d66ac4..d18174b342 100644
--- a/reference/iconv/functions/iconv-substr.xml
+++ b/reference/iconv/functions/iconv-substr.xml
@@ -95,14 +95,14 @@
&reftitle.returnvalues;
- Retourne la portion de string spécifié par les paramètres
+ Retourne la portion de string spécifiée par les paramètres
offset et length.
Si string est plus petit que offset,
&false; sera retourné.
Si string est égal à offset
- caractères long, une &string; vide sera retourné.
+ caractères long, une &string; vide sera retournée.
diff --git a/reference/iconv/functions/iconv.xml b/reference/iconv/functions/iconv.xml
index b0b743b011..5272b21220 100644
--- a/reference/iconv/functions/iconv.xml
+++ b/reference/iconv/functions/iconv.xml
@@ -56,7 +56,7 @@
Si et comment //TRANSLIT fonctionne exactement dépend
de l'implémentation iconv() du système (cf. ICONV_IMPL).
- Certaines implémentation sont connues pour ignorer //TRANSLIT,
+ Certaines implémentations sont connues pour ignorer //TRANSLIT,
donc la conversion de caractères illégaux échouera probablement pour
to_encoding.
@@ -117,7 +117,7 @@ Ceci est le symbole de l'Euro '
&reftitle.notes;
- L'encodage de caractères et les options disponibles dépende de l'implémentation d'iconv.
+ L'encodage de caractères et les options disponibles dépendent de l'implémentation d'iconv.
Si l'argument de from_encoding ou to_encoding n'est
pas pris en charge sur le système actuel, &false; sera retourné.
diff --git a/reference/info/constants.xml b/reference/info/constants.xml
index 660caab3e7..3d1b379dcd 100644
--- a/reference/info/constants.xml
+++ b/reference/info/constants.xml
@@ -414,7 +414,7 @@
- La version mineur du paquet de service installé. Cette valeur est
+ La version mineure du paquet de service installé. Cette valeur est
0 si aucun paquet de service n'est installé.
@@ -485,7 +485,7 @@
- La table ci-desous présente les fonctionnalités qui peuvent être
+ La table ci-dessous présente les fonctionnalités qui peuvent être
vérifiées dans le champ de bit de la constante
PHP_WINDOWS_VERSION_SUITEMASK.
@@ -549,7 +549,7 @@
0x00000001
Microsoft Small Business Server a été installé sur le système, mais
- a été mis à joru vers une nouvelle version de Windows.
+ a été mis à jour vers une nouvelle version de Windows.
diff --git a/reference/info/functions/getenv.xml b/reference/info/functions/getenv.xml
index e45e130b25..cf34720c47 100644
--- a/reference/info/functions/getenv.xml
+++ b/reference/info/functions/getenv.xml
@@ -59,8 +59,8 @@
Retourne la valeur de la variable d'environnement
name, ou &false; si la variable
d'environnement name n'existe pas.
- Si name est omit, toutes les variables
- d'environnement sont retournée en tant qu'un &array; associatif.
+ Si name est omis, toutes les variables
+ d'environnement sont retournées en tant qu'un &array; associatif.
@@ -84,7 +84,7 @@
7.1.0
- name peut désormais être omit pour récupérer
+ name peut désormais être omis pour récupérer
un &array; associatif de toutes les variables d'environnement.
diff --git a/reference/info/functions/ini-set.xml b/reference/info/functions/ini-set.xml
index 2acd8d1ac0..b2ec0b3e18 100644
--- a/reference/info/functions/ini-set.xml
+++ b/reference/info/functions/ini-set.xml
@@ -16,8 +16,8 @@
stringintfloatboolnullvalue
- Change la valeur de l'option de configuration varname
- et lui donne celle de newvalue.
+ Change la valeur de l'option de configuration option
+ et lui donne celle de value.
La valeur de l'option de configuration sera modifiée durant toute
l'exécution du script et pour ce script spécifiquement. Elle reprendra
sa valeur par défaut dès la fin du script.
diff --git a/reference/math/book.xml b/reference/math/book.xml
index 4add0b3012..94db61aef8 100644
--- a/reference/math/book.xml
+++ b/reference/math/book.xml
@@ -10,7 +10,7 @@
&reftitle.intro;
- Ces fonctions de mathématique sont uniquement capable de manipuler des
+ Ces fonctions de mathématique sont uniquement capables de manipuler des
valeurs qui sont dans la plage des types int et float.
Pour manipuler des nombres plus larges, voir les fonctions
précision mathématique arbitraire ou
@@ -22,13 +22,13 @@
- arithmetic operators
+ opérateurs arithmétiques
- Arbitrary precision math functions
+ Fonctions mathématiques de précision arbitraire
- GNU Multiple Precision functions
+ Fonctions de précision multiple GNU
diff --git a/reference/math/constants.xml b/reference/math/constants.xml
index 8c551a178c..6298e0b3ee 100644
--- a/reference/math/constants.xml
+++ b/reference/math/constants.xml
@@ -224,7 +224,7 @@
- Non-Un-Numérique
+ Pas un nombre
@@ -246,7 +246,7 @@
À partir de PHP 8.4.0, il est recommandé d'utiliser
- l'énumération RoundingMode au lieu.
+ l'énumération RoundingMode à la place.
diff --git a/reference/math/functions/base-convert.xml b/reference/math/functions/base-convert.xml
index 58e8a0905d..36ac3ab91f 100644
--- a/reference/math/functions/base-convert.xml
+++ b/reference/math/functions/base-convert.xml
@@ -17,7 +17,7 @@
Retourne une chaîne contenant l'argument num
représenté dans la base to_base. La base de
- représentation de number est donnée par
+ représentation de num est donnée par
from_base. from_base et
to_base doivent être compris entre 2 et 36 inclus.
Les chiffres supérieurs à 10 des bases supérieures à 10 seront représentés
diff --git a/reference/math/functions/intdiv.xml b/reference/math/functions/intdiv.xml
index 001601e01a..e97fc7328a 100644
--- a/reference/math/functions/intdiv.xml
+++ b/reference/math/functions/intdiv.xml
@@ -119,9 +119,9 @@ DivisionByZeroError: Division by zero
&reftitle.seealso;
- / - Division de nombre flotant
+ / - Division de nombre flottant% - Modulo entier
- fmod - Modulo de nombre flotant
+ fmod - Modulo de nombre flottant
diff --git a/reference/math/functions/max.xml b/reference/math/functions/max.xml
index 5ba9e46466..d03f117ed9 100644
--- a/reference/math/functions/max.xml
+++ b/reference/math/functions/max.xml
@@ -14,7 +14,7 @@
mixedvaluemixedvalues
- Signature alternative (non supporté avec les arguments nommés) :
+ Signature alternative (non supportée avec les arguments nommés) :mixedmaxarrayvalue_array
@@ -60,7 +60,7 @@
values
- Toute valeurs comparable.
+ Toutes valeurs comparables.
diff --git a/reference/math/functions/min.xml b/reference/math/functions/min.xml
index 7d8f3670ff..7b27b9079e 100644
--- a/reference/math/functions/min.xml
+++ b/reference/math/functions/min.xml
@@ -13,7 +13,7 @@
mixedvaluemixedvalues
- Signature alternative (non supporté avec les arguments nommés) :
+ Signature alternative (non supportée avec les arguments nommés) :mixedminarrayvalue_array
@@ -59,7 +59,7 @@
values
- Toute valeurs comparable.
+ Toutes valeurs comparables.
diff --git a/reference/math/functions/pow.xml b/reference/math/functions/pow.xml
index f9adbba219..af31815cca 100644
--- a/reference/math/functions/pow.xml
+++ b/reference/math/functions/pow.xml
@@ -40,7 +40,7 @@
exponent
- L'exposent
+ L'exposant
@@ -51,9 +51,9 @@
&reftitle.returnvalues;
num élevé à la puissance exponent.
- Si les arguments ne sont pas des entiers négatifs, et que le résultat
+ Si les deux arguments sont des entiers non négatifs et que le résultat
peut être représenté sous la forme d'un entier, le résultat sera
- &integer;, sinon s'il sera retourné en tant que &float;.
+ un &integer;, sinon il sera retourné en tant que &float;.
Les extensions PHP peuvent remplacer le comportement de cette opération et la faire retourner un objet.
diff --git a/reference/math/functions/round.xml b/reference/math/functions/round.xml
index ce275987f4..970899e8f9 100644
--- a/reference/math/functions/round.xml
+++ b/reference/math/functions/round.xml
@@ -65,7 +65,7 @@
Si le paramètre precision est négatif,
- num arrondi en utilisant le paramètre
+ num sera arrondi en utilisant le paramètre
precision pour définir le nombre significatif
de chiffres avant le point décimal, i.e. le multiple le plus proche
de pow(10, -$precision), i.e. pour une
diff --git a/reference/misc/functions/sleep.xml b/reference/misc/functions/sleep.xml
index b4b76e4cbf..892ac6c524 100644
--- a/reference/misc/functions/sleep.xml
+++ b/reference/misc/functions/sleep.xml
@@ -36,7 +36,7 @@
seconds
- Le temps d'arret, en nombre de secondes (doit être supérieur ou égal à 0).
+ Le temps d'arrêt, en nombre de secondes (doit être supérieur ou égal à 0).
diff --git a/reference/outcontrol/book.xml b/reference/outcontrol/book.xml
index dfe940ca52..96cba7d726 100644
--- a/reference/outcontrol/book.xml
+++ b/reference/outcontrol/book.xml
@@ -12,7 +12,7 @@
&reftitle.intro;
Les fonctions de bufferisation de sortie vous permettent de contrôler
- quand les données ont été envoyées par le script. Cela peut
+ quand les données sont envoyées par le script. Cela peut
être utile dans certaines situations, notamment si vous devez
envoyer des en-têtes au navigateur après avoir envoyé
des données. Ces fonctions n'affectent pas les en-têtes
diff --git a/reference/outcontrol/constants.xml b/reference/outcontrol/constants.xml
index ddafc7ec71..a8b5401488 100644
--- a/reference/outcontrol/constants.xml
+++ b/reference/outcontrol/constants.xml
@@ -114,7 +114,7 @@
Contrôle si un tampon de sortie créé par la fonction
- ob_start peut être supprimée
+ ob_start peut être nettoyé
par ob_clean.
Cet indicateur ne contrôle pas le comportement de
ob_end_clean ou ob_get_clean.
@@ -129,7 +129,7 @@
Contrôle si un tampon de sortie créé par la fonction
- ob_start peut être envoyée à la sortie standard
+ ob_start peut être envoyé à la sortie standard
par ob_flush.
Cet indicateur ne contrôle pas le comportement de
ob_end_flush ou ob_get_flush.
@@ -144,7 +144,7 @@
Contrôle si un tampon de sortie créé par la fonction
- ob_start peut être supprimée avant la fin
+ ob_start peut être supprimé avant la fin
du script ou lors de l'appel de ob_end_clean,
ob_end_flush, ob_get_clean ou ob_get_flush.
diff --git a/reference/soap/book.xml b/reference/soap/book.xml
index aea5af6c56..7f3334d771 100644
--- a/reference/soap/book.xml
+++ b/reference/soap/book.xml
@@ -11,8 +11,8 @@
&reftitle.intro;
- L'extension SOAP peut être utilisée pour les échanges clients/serveurs SOAP.
- Elle supporte les spécifications
+ L'extension SOAP peut être utilisée pour écrire des serveurs et des clients SOAP.
+ Elle supporte des sous-ensembles des spécifications
SOAP 1.1,
SOAP 1.2 et
WSDL 1.1.
diff --git a/reference/soap/soapfault/construct.xml b/reference/soap/soapfault/construct.xml
index 17277f742e..81baca3e8d 100644
--- a/reference/soap/soapfault/construct.xml
+++ b/reference/soap/soapfault/construct.xml
@@ -21,7 +21,7 @@
SoapFault sert à envoyer des erreurs SOAP depuis
- le PHP. code, string,
+ le gestionnaire PHP. code, string,
actor et details sont
les éléments standards SOAP.
diff --git a/reference/soap/soapserver/handle.xml b/reference/soap/soapserver/handle.xml
index a9270b8f56..23df8eea34 100644
--- a/reference/soap/soapserver/handle.xml
+++ b/reference/soap/soapserver/handle.xml
@@ -28,7 +28,7 @@
La requête SOAP. Si cet argument est omis, la requête est supposée être
- dans les données POST brûtes de la requête HTTP.
+ dans les données POST brutes de la requête HTTP.
diff --git a/reference/sockets/functions/socket-create.xml b/reference/sockets/functions/socket-create.xml
index bf4aebbc5b..6bada7c0ab 100755
--- a/reference/sockets/functions/socket-create.xml
+++ b/reference/sockets/functions/socket-create.xml
@@ -63,9 +63,9 @@
AF_UNIX
- Famille de protocoles locales de communication. Le rendement
- élevé et des moindres coûts supplémentaires lui font une
- grande force d'IPC (Interprocess Communication).
+ Famille de protocoles locales de communication. Son rendement
+ élevé et ses faibles coûts supplémentaires en font une
+ excellente forme d'IPC (Interprocess Communication).
@@ -93,8 +93,8 @@
SOCK_STREAM
- Fournit des flux d'octets ordonnancés, fiables, full-duplex,
- raccordés sur la base. Un mécanisme de transmission des données
+ Fournit des flux d'octets séquentiels, fiables, full-duplex
+ et basés sur la connexion. Un mécanisme de transmission des données
"out-of-band" peut être supporté.
Le protocole TCP est basé sur ce type de sockets.
@@ -102,7 +102,7 @@
SOCK_DGRAM
- Support des datagrammes (moins de connexion, message non garanti
+ Support des datagrammes (sans connexion, messages non fiables
d'une longueur maximum fixe). Le protocole UDP est basé sur ce
type de sockets.
@@ -111,7 +111,7 @@
SOCK_SEQPACKET
Fournit un chemin de transmission de données séquentiel, fiable,
- connecté à la base par deux chemins pour les datagrammes de
+ bidirectionnel et basé sur la connexion pour les datagrammes de
longueur maximale fixe ; un consommateur est requis pour lire la
totalité d'un paquet avec chaque appel à la lecture.
@@ -175,17 +175,17 @@
udp
- Le protocole UDP (User Datagramm Protocol)
- est un protocole sans connexion, incertain avec les longueurs
- d'enregistrements fixes. De ce fait, UDP
- requiert une quantité minimum de protocole aérienne.
+ Le protocole UDP (User Datagram Protocol)
+ est un protocole sans connexion, non fiable, avec des longueurs
+ d'enregistrement fixes. De ce fait, UDP
+ requiert une quantité minimum de surcharge protocolaire.
tcp
Le protocole TCP (Transmission Control Protocol)
- est un protocole fiable, connecté sur la base, orienté flux et
+ est un protocole fiable, basé sur la connexion, orienté flux et
full-duplex. TCP garantit que chaque paquet est
reçu dans l'ordre dans lequel il a été envoyé. Si quelques paquets
sont perdus pendant la communication, TCP
diff --git a/reference/sockets/functions/socket-select.xml b/reference/sockets/functions/socket-select.xml
index 5a0209d465..559d36fdf0 100755
--- a/reference/sockets/functions/socket-select.xml
+++ b/reference/sockets/functions/socket-select.xml
@@ -67,7 +67,7 @@
Les paramètres seconds et microseconds
- ensembles forment le paramètre timeout (durée de vie).
+ ensembles forment le paramètre timeout (délai d'expiration).
Le timeout est la durée maximale de temps avant que
socket_select ne se termine.
seconds peut être zéro, ce qui fera que
@@ -88,7 +88,7 @@
- En sortie de fonction, les tableaux sont modifiées pour indiquer
+ En sortie de fonction, les tableaux sont modifiés pour indiquer
quels sockets ont changé d'état.
diff --git a/reference/stream/book.xml b/reference/stream/book.xml
index 715f86a51d..d5ba08ef47 100644
--- a/reference/stream/book.xml
+++ b/reference/stream/book.xml
@@ -16,8 +16,8 @@
qui partagent des opérations communes. Dans sa définition la plus simple,
un flux est une resource qui
présente des capacités de flux : c'est-à-dire que ces objets peuvent
- être lus ou recevoir des écritures de manière linéaire, et dispose aussi
- de moyen d'accéder à une position arbitraire dans le flux.
+ être lus ou recevoir des écritures de manière linéaire, et disposent aussi de moyens
+ d'accéder à une position arbitraire dans le flux.
Un gestionnaire (littéralement,
@@ -44,7 +44,7 @@
Le nom du gestionnaire a utiliser. Par exemple, file,
http, https,
ftp, ftps, compress.zlib,
- compress.bz. et php..
+ compress.bz2 et php.
Voir
pour une liste complète des gestionnaires enregistrés de PHP.
Si aucun gestionnaire n'est spécifié, la fonction par défaut est utilisée (typiquement,
diff --git a/reference/stream/functions/stream-select.xml b/reference/stream/functions/stream-select.xml
index 17cf9da962..ba7f53dad6 100644
--- a/reference/stream/functions/stream-select.xml
+++ b/reference/stream/functions/stream-select.xml
@@ -56,7 +56,7 @@
Les flux qui sont listés dans le paramètre except
- seront surveillés pour voir si une exception est levée.
+ seront surveillés pour détecter l'arrivée de données exceptionnelles ("out-of-band") de haute priorité.
diff --git a/reference/var/functions/isset.xml b/reference/var/functions/isset.xml
index 3d16a5ad3a..6e6cc89b79 100644
--- a/reference/var/functions/isset.xml
+++ b/reference/var/functions/isset.xml
@@ -21,12 +21,12 @@
Si une variable a été détruite avec la fonction
- unset, elle n'est plus considéré comme définie.
+ unset, elle n'est plus considérée comme définie.
isset renverra &false; lors de la vérification
d'une variable de valeur &null;.
- Il est à noter que aussi que le caractère nul ("\0") n'est
+ Il est aussi à noter que le caractère nul ("\0") n'est
pas équivalent à la constante PHP &null;.
@@ -169,7 +169,7 @@ bool(false)
isset fonctionne uniquement avec des variables car l'utilisation
de toute autre chose aura comme conséquence une erreur d'analyse.
- Pour vérifier si une constants est définie,
+ Pour vérifier si une constante est définie,
utilisez la fonction defined.
diff --git a/reference/var/functions/serialize.xml b/reference/var/functions/serialize.xml
index 5271734d79..d00e414ff7 100644
--- a/reference/var/functions/serialize.xml
+++ b/reference/var/functions/serialize.xml
@@ -15,7 +15,7 @@
mixedvalue
- Retourne un tableau en chaîne de caractères.
+ Génère une représentation stockable d'une valeur.
C'est une technique pratique pour stocker ou passer des valeurs PHP
diff --git a/reference/var/functions/unserialize.xml b/reference/var/functions/unserialize.xml
index c460bf0e94..030e278a00 100644
--- a/reference/var/functions/unserialize.xml
+++ b/reference/var/functions/unserialize.xml
@@ -32,7 +32,7 @@
à l'utilisateur.
- Si vous avez besoin de désérialiser des données sérialisées enregistré à l'extérieur,
+ Si vous avez besoin de désérialiser des données sérialisées enregistrées à l'extérieur,
considérez l'utilisation de hash_hmac pour valider les
données. Assurez-vous que les données n'ont été modifiées par personne d'autre
que vous.
@@ -52,7 +52,7 @@
Si la variable désérialisée est un objet, après avoir réussi à le
- reconstruire, PHP tentera automatiquement d'appeller les méthodes
+ reconstruire, PHP tentera automatiquement d'appeler les méthodes
__unserialize() ou
__wakeup (si l'une d'elles existent).
@@ -101,7 +101,7 @@
__PHP_Incomplete_Class.
- Le fait d'ommettre cette option revient à le définir comme &true; :
+ Le fait d'omettre cette option revient à le définir comme &true; :
PHP va tenter d'instancier les objets de n'importe quelle classe.
diff --git a/reference/var/functions/var-dump.xml b/reference/var/functions/var-dump.xml
index 039a44ba79..aff4ac3326 100644
--- a/reference/var/functions/var-dump.xml
+++ b/reference/var/functions/var-dump.xml
@@ -37,7 +37,7 @@
value
- L'expression afficher.
+ L'expression à afficher.
diff --git a/reference/xml/functions/xml-parse-into-struct.xml b/reference/xml/functions/xml-parse-into-struct.xml
index 6f91e8dd7b..8cd8c922fb 100644
--- a/reference/xml/functions/xml-parse-into-struct.xml
+++ b/reference/xml/functions/xml-parse-into-struct.xml
@@ -18,7 +18,7 @@
Cette fonction analyse la chaîne
- XML data et le place dans deux tableaux :
+ XML data et la place dans deux tableaux :
le premier index contient des pointeurs
sur la position des valeurs correspondantes dans le tableau
values. Ces deux paramètres sont
@@ -34,7 +34,7 @@
parser
- Une référence à une analyseur XML.
+ Une référence à un analyseur XML.
diff --git a/reference/xml/functions/xml-parser-create.xml b/reference/xml/functions/xml-parser-create.xml
index f2688277fa..2abbf0abfe 100644
--- a/reference/xml/functions/xml-parser-create.xml
+++ b/reference/xml/functions/xml-parser-create.xml
@@ -33,7 +33,7 @@
Si une chaîne vide est passée, l'analyseur tente d'identifier dans quel
encodage le document est encodé en regardant les 3 ou 4 octets du haut.
Le jeu de caractères de sortie par défaut est UTF-8. Les encodages
- supportées sont ISO-8859-1, UTF-8,
+ supportés sont ISO-8859-1, UTF-8,
et US-ASCII.
diff --git a/reference/xml/functions/xml-parser-set-option.xml b/reference/xml/functions/xml-parser-set-option.xml
index f307f722d3..32874c584b 100644
--- a/reference/xml/functions/xml-parser-set-option.xml
+++ b/reference/xml/functions/xml-parser-set-option.xml
@@ -73,7 +73,7 @@
XML_OPTION_SKIP_TAGSTART
- bool
+ integer
Spécifie combien de caractères doivent être éludés du début du nom de la balise.
@@ -165,7 +165,7 @@
8.0.0
Une exception ValueError est désormais lancée si
- le option est invalide.
+ l'option est invalide.
diff --git a/reference/xml/functions/xml-set-element-handler.xml b/reference/xml/functions/xml-set-element-handler.xml
index 65a8860554..b5c22da85a 100644
--- a/reference/xml/functions/xml-set-element-handler.xml
+++ b/reference/xml/functions/xml-set-element-handler.xml
@@ -70,7 +70,7 @@
L'ordre dans lequel attributes est traversé
- est identique à l'ordre dans lequel les attributs ont été déclaré.
+ est identique à l'ordre dans lequel les attributs ont été déclarés.
diff --git a/reference/zip/constants.xml b/reference/zip/constants.xml
index 9845282da4..1983abbd5b 100644
--- a/reference/zip/constants.xml
+++ b/reference/zip/constants.xml
@@ -36,7 +36,7 @@
- Si l'archivage existe, ignorer son contenu actuel. En d'autres termes,
+ Si l'archive existe, ignorer son contenu actuel. En d'autres termes,
gérer de la même manière qu'une archive vide.
@@ -459,7 +459,7 @@
- LZMA algorithm
+ Algorithme LZMA.
@@ -829,7 +829,7 @@
- Opération non supportée.
+ Archive en lecture seule.
Disponible à partir de PHP 7.4.3 et PECL zip 1.16.1, respectivement.
@@ -865,7 +865,7 @@
- Archive en lecture seule.
+ Opération non supportée.
Disponible à partir de PHP 7.4.3 et PECL zip 1.16.1, respectivement
si compilé avec la bibliothèque libzip ≥ 1.0.0.
@@ -891,7 +891,7 @@
- Erreur dite.
+ Erreur de positionnement (tell).
Disponible à partir de PHP 7.4.3 et PECL zip 1.16.1, respectivement
si compilé avec la bibliothèque libzip ≥ 1.0.0.
diff --git a/reference/zip/ziparchive/open.xml b/reference/zip/ziparchive/open.xml
index fa32111e73..a02f7b1815 100644
--- a/reference/zip/ziparchive/open.xml
+++ b/reference/zip/ziparchive/open.xml
@@ -73,7 +73,7 @@
&reftitle.returnvalues;
- Retourne &true; en cas de succès ou un des codes d'erreur suivants :
+ Retourne &true; en cas de succès, &false; ou un des codes d'erreur suivants :
ZipArchive::ER_EXISTS
From df43d46af06d9f7f64dcd56085d65d153a58a7e0 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 09:54:42 +0100
Subject: [PATCH 81/96] Fix translation errors across 26 more extensions
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Critical fixes:
- sodium: reversed sender/recipient keys in crypto-box, ciphertext≠encryption key
- random/getint: wrong error type (TypeError→ValueError) and condition
- network/header: inverted logic "même si"→"à moins que"
- dns-get-record: octets→bits for masklen (technical error)
- pdo_mysql: inverted "sans mysqlnd"→"avec mysqlnd"
- password: broken grammar "que sera passer", duplicate code line
- ldap: "dossiers"→"annuaires" (directory servers), "nombre d'alias"→"comment les alias"
- snmp: "préfixé"→"suffixé", "virgule"→"deux-points"
- sqlite3: "cryptage"→"chiffrement", missing "de chiffrement" module
Other fixes:
- opcache: Insinue→Implique, Antérieur→Avant, prêt→prêtes
- pcntl: untranslated FORK_*/RF* titles, pendante→pendant, process→processus
- libxml: untranslated English notes, empèche→empêche, entité récursion
- simplexml: Ceux sont→Ce sont, ignorée→ignorées, préfix→préfixe
- exif: feront parties→partie, elle→elles, donnés→données, lui→elle-même
- pspell: wrong parameter name spelling→language, missing "qu'un"
- Various: gender/plural agreements, typos, accent fixes
---
reference/dba/functions/dba-open.xml | 2 +-
reference/exif/functions/exif-read-data.xml | 14 ++++++-------
reference/fileinfo/constants.xml | 2 +-
reference/imap/functions/imap-open.xml | 6 +++---
reference/ldap/book.xml | 2 +-
reference/ldap/constants.xml | 20 +++++++++----------
reference/ldap/functions/ldap-search.xml | 2 +-
reference/libxml/constants.xml | 8 ++++----
reference/mail/functions/mail.xml | 2 +-
.../network/functions/dns-get-record.xml | 4 ++--
reference/network/functions/header.xml | 8 ++++----
reference/network/functions/ip2long.xml | 4 ++--
reference/opcache/ini.xml | 12 +++++------
reference/password/constants.xml | 4 ++--
.../functions/password-needs-rehash.xml | 3 +--
reference/pcntl/constants.xml | 6 +++---
reference/pcntl/functions/pcntl-fork.xml | 2 +-
reference/pdo_mysql/pdo-mysql.xml | 4 ++--
reference/posix/functions/posix-getpwuid.xml | 4 ++--
reference/posix/functions/posix-kill.xml | 2 +-
reference/pspell/functions/pspell-new.xml | 4 ++--
reference/random/random/randomizer/getint.xml | 4 ++--
.../random/randomizer/pickarraykeys.xml | 2 +-
reference/reflection/reflectionclass.xml | 2 +-
reference/shmop/functions/shmop-open.xml | 4 ++--
reference/simplexml/examples.xml | 2 +-
.../simplexml/simplexmlelement/construct.xml | 4 ++--
reference/snmp/snmp/construct.xml | 4 ++--
...m-crypto-aead-chacha20poly1305-encrypt.xml | 4 ++--
.../sodium/functions/sodium-crypto-box.xml | 2 +-
reference/sqlite3/sqlite3/construct.xml | 6 +++---
reference/tidy/constants.xml | 2 +-
.../tokenizer/functions/token-get-all.xml | 4 ++--
reference/url/functions/http-build-query.xml | 2 +-
reference/url/functions/parse-url.xml | 2 +-
reference/xmlreader/xmlreader/open.xml | 2 +-
reference/yaml/functions/yaml-parse.xml | 2 +-
37 files changed, 81 insertions(+), 82 deletions(-)
diff --git a/reference/dba/functions/dba-open.xml b/reference/dba/functions/dba-open.xml
index 161df85632..48bc36d1bc 100644
--- a/reference/dba/functions/dba-open.xml
+++ b/reference/dba/functions/dba-open.xml
@@ -183,7 +183,7 @@
Les pilotes db1, db2,
db3, db4, dbm,
gdbm,
- Les pilotes ndbm et lmdb prennent en charge le
+ ndbm et lmdb prennent en charge le
paramètre permission.
diff --git a/reference/exif/functions/exif-read-data.xml b/reference/exif/functions/exif-read-data.xml
index a33ef989a3..27c3eee76a 100755
--- a/reference/exif/functions/exif-read-data.xml
+++ b/reference/exif/functions/exif-read-data.xml
@@ -32,7 +32,7 @@
Les paramètres Height et Width
sont calculés de la même façon que pour la fonction getimagesize,
- donc leurs valeurs ne feront parties d'aucun en-tête retourné. De même, l'index
+ donc leurs valeurs ne feront partie d'aucun en-tête retourné. De même, l'index
html est la représentation textuelle de la hauteur/largeur
utilisée dans une balise image HTML classique.
@@ -81,7 +81,7 @@
required_sections
- Liste de valeur séparées par des virgules
+ Liste de valeurs séparées par des virgules
des sections qui devront être présentées dans le tableau de résultat.
Si aucune des sections demandées n'est trouvée, la valeur retournée
est &false;.
@@ -152,7 +152,7 @@
Spécifie si chaque section doit devenir un tableau ou non.
Les required_sectionsCOMPUTED,
THUMBNAIL et COMMENT seront
- toujours transformées en tableau, car elle contiennent des noms qui
+ toujours transformées en tableau, car elles contiennent des noms qui
risquent d'être en conflit.
@@ -244,7 +244,7 @@
\n";
$exif = exif_read_data('tests/test1.jpg', 'IFD0');
-echo $exif===false ? "Aucun en-tête de donnés n'a été trouvé. \n" : "L'image contient des en-têtes \n";
+echo $exif===false ? "Aucun en-tête de données n'a été trouvé. \n" : "L'image contient des en-têtes \n";
$exif = exif_read_data('tests/test2.jpg', 0, true);
echo "test2.jpg: \n";
@@ -263,7 +263,7 @@ foreach ($exif as $key => $section) {
- exif_read_data avec les flux disponible depuis PHP 7.2.0
+ exif_read_data avec les flux disponibles depuis PHP 7.2.0
exif.decode_unicode_motorola et
exif.decode_unicode_intel.
- L'extension EXIF ne tentera pas de déterminer l'encodage de lui même, et il
+ L'extension EXIF ne tentera pas de déterminer l'encodage d'elle-même, et il
appartient à l'utilisateur de spécifier correctement l'encodage à utiliser
pour le décodage en définissant l'une des deux directives INI avant
d'appeler exif_read_data.
diff --git a/reference/fileinfo/constants.xml b/reference/fileinfo/constants.xml
index a91950a7fb..46317724e6 100644
--- a/reference/fileinfo/constants.xml
+++ b/reference/fileinfo/constants.xml
@@ -127,7 +127,7 @@
- Retourne l'extension de fichier approprié pour un type MIME détecté
+ Retourne l'extension de fichier appropriée pour un type MIME détecté
dans le fichier.
diff --git a/reference/imap/functions/imap-open.xml b/reference/imap/functions/imap-open.xml
index fecbc59c93..d038dfa02c 100644
--- a/reference/imap/functions/imap-open.xml
+++ b/reference/imap/functions/imap-open.xml
@@ -112,7 +112,7 @@
/debug
- la télémétrie d'enregistrement du protocole dans les logs de déboguage de
+ la télémétrie d'enregistrement du protocole dans les logs de débogage de
l'application
@@ -156,12 +156,12 @@
/tlsforce l'utilisation de start-TLS pour chiffrer la session et
- rejette les connexions aux serveurs qui ne le supporte pas
+ rejette les connexions aux serveurs qui ne le supportent pas/notlsn'utilise pas start-TLS pour chiffrer la session,
- y compris avec les serveurs qui le supporte
+ y compris avec les serveurs qui le supportent/readonly
diff --git a/reference/ldap/book.xml b/reference/ldap/book.xml
index 5f84d58c96..f0d076b204 100644
--- a/reference/ldap/book.xml
+++ b/reference/ldap/book.xml
@@ -13,7 +13,7 @@
LDAP signifie : Lightweight Directory Access Protocol
(Protocole léger d'accès aux annuaires). C'est un protocole
- utilisé pour accéder aux "serveurs de dossiers". Ces serveurs
+ utilisé pour accéder aux "serveurs d'annuaires". Ces serveurs
sont des bases de données particulières, qui stockent les informations
sous forme d'arborescence.
diff --git a/reference/ldap/constants.xml b/reference/ldap/constants.xml
index e04cecca88..f54a08e21f 100644
--- a/reference/ldap/constants.xml
+++ b/reference/ldap/constants.xml
@@ -74,7 +74,7 @@
- La limite réelle peut aussi être donnée du coté du serveur.
+ La limite réelle peut aussi être donnée du côté du serveur.
La plus petite des deux sera celle utilisée.
@@ -91,7 +91,7 @@
- La limite réelle peut aussi être donnée du coté du serveur.
+ La limite réelle peut aussi être donnée du côté du serveur.
La plus petite des deux sera celle utilisée.
@@ -138,7 +138,7 @@
- Spécifie si oui ou non suivre les référrants retournés par le serveur.
+ Spécifie si oui ou non suivre les referrals retournés par le serveur.
@@ -160,7 +160,7 @@
- Définit/obtient les hôtes séparé par un espace lorsque vous essayez de vous connecter.
+ Définit/obtient les hôtes séparés par un espace lorsque vous essayez de vous connecter.
@@ -226,7 +226,7 @@
- Spécifie un niveau pour les traces de déboguage, sous forme de masque de bits.
+ Spécifie un niveau pour les traces de débogage, sous forme de masque de bits.
@@ -238,7 +238,7 @@
Spécifie le nombre de secondes pendant lesquelles une connexion doit rester
- inactif avant que TCP ne commence à envoyer des sondes KeepAlive.
+ inactive avant que TCP ne commence à envoyer des sondes KeepAlive.
@@ -614,7 +614,7 @@
- Constante de contrôle - Résultats paginé (RFC 2696).
+ Constante de contrôle - Résultats paginés (RFC 2696).
&php.version.added; 7.3.0.
@@ -650,7 +650,7 @@
- Constante de contrôle - Opération de Synchronisation du Contenue (RFC 4533).
+ Constante de contrôle - Opération de Synchronisation du Contenu (RFC 4533).
&php.version.added; 7.3.0.
@@ -662,7 +662,7 @@
- Constante de contrôle - Etat de l'Opération de Synchronisation du Contenue (RFC 4533).
+ Constante de contrôle - Etat de l'Opération de Synchronisation du Contenu (RFC 4533).
&php.version.added; 7.3.0.
@@ -674,7 +674,7 @@
- Constante de contrôle - Opération de Synchronisation du Contenue Faite (RFC 4533).
+ Constante de contrôle - Opération de Synchronisation du Contenu Faite (RFC 4533).
&php.version.added; 7.3.0.
diff --git a/reference/ldap/functions/ldap-search.xml b/reference/ldap/functions/ldap-search.xml
index 48c0b8530a..e1b37fb6ad 100644
--- a/reference/ldap/functions/ldap-search.xml
+++ b/reference/ldap/functions/ldap-search.xml
@@ -128,7 +128,7 @@
deref
- Spécifie le nombre d'alias qui doivent être gérés pendant la recherche.
+ Spécifie comment les alias doivent être gérés pendant la recherche.
Il peut être un parmi les suivants :
diff --git a/reference/libxml/constants.xml b/reference/libxml/constants.xml
index 9b8868888f..962259aedf 100755
--- a/reference/libxml/constants.xml
+++ b/reference/libxml/constants.xml
@@ -116,12 +116,12 @@
- Définit le drapeau HTML_PARSE_NODEFDTD, qui empèche l'ajout automatique
+ Définit le drapeau HTML_PARSE_NODEFDTD, qui empêche l'ajout automatique
d'un doctype si aucun n'est trouvé.
- Only available in Libxml >= 2.7.8 (as of PHP >= 5.4.0)
+ Uniquement disponible avec Libxml >= 2.7.8 (depuis PHP >= 5.4.0)
@@ -280,7 +280,7 @@
Affecte le drapeau XML_PARSE_HUGE. Désactive toute limite du
parseur codée en dur. Ceci affecte les limites comme la profondeur
- maximale d'un document ou l'entité récursion, mais aussi
+ maximale d'un document ou la récursion d'entités, mais aussi
les limites de la taille du texte des nœuds.
@@ -303,7 +303,7 @@
- Available as of PHP >= 5.4.0
+ Disponible depuis PHP >= 5.4.0
diff --git a/reference/mail/functions/mail.xml b/reference/mail/functions/mail.xml
index b34f8e212f..2f1b90e4e8 100644
--- a/reference/mail/functions/mail.xml
+++ b/reference/mail/functions/mail.xml
@@ -158,7 +158,7 @@
Depuis que la fonction escapeshellcmd est appliquée automatiquement,
quelques caractères autorisés dans les adresses emails par les RFCs d'internet ne peuvent
plus être utilisés. La fonction mail ne peut autoriser ces caractères,
- aussi, dans les programme où leur utilisation est nécessaire, vous devriez utiliser
+ aussi, dans les programmes où leur utilisation est nécessaire, vous devriez utiliser
une méthode alternative pour l'envoi des emails (comme l'utilisation d'un framework
ou d'une bibliothèque.
diff --git a/reference/network/functions/dns-get-record.xml b/reference/network/functions/dns-get-record.xml
index fb01521dd5..966cc5c1ec 100644
--- a/reference/network/functions/dns-get-record.xml
+++ b/reference/network/functions/dns-get-record.xml
@@ -40,7 +40,7 @@
- En terme de standards DNS, les adresses email sont données au format
+ En termes de standards DNS, les adresses email sont données au format
utilisateur.hote (par exemple :
webmestre.example.com au contraire du
format webmestre@example.com). N'oubliez pas
@@ -248,7 +248,7 @@
A6
- masklen : longueur (en octets) à hériter depuis
+ masklen : longueur (en bits) à hériter depuis
la cible spécifiée par chain.
ipv6 : adresse pour que cet enregistrement spécifique fusionne
avec chain.
diff --git a/reference/network/functions/header.xml b/reference/network/functions/header.xml
index 2fd902980c..bfb369d03f 100644
--- a/reference/network/functions/header.xml
+++ b/reference/network/functions/header.xml
@@ -273,15 +273,15 @@ header('Set-Cookie: name=value; Secure; Path=/; SameSite=None; Partitioned;');
Le code statut HTTP doit toujours être le premier à être envoyé au client,
au regard de l'actuel header qui peut être le premier
ou non. Le statut peut être écrasé en appelant header
- avec un nouveau statut à n'importe quel moment même si l'en-tête HTTP a
- déjà été envoyé.
+ avec un nouveau statut à n'importe quel moment à moins que les en-têtes HTTP
+ n'aient déjà été envoyés.
- La plupart des clients moderne accepte des URIs relative comme argument de
+ La plupart des clients modernes acceptent des URI relatives comme argument de
Location:,
- mais certains client plus ancien exigent une URI absolue
+ mais certains clients plus anciens exigent une URI absolue
y compris le protocole, l'hôte et le chemin absolu. Vous pouvez généralement
utiliser les variables globales $_SERVER['HTTP_HOST'],
$_SERVER['PHP_SELF'] et dirname pour
diff --git a/reference/network/functions/ip2long.xml b/reference/network/functions/ip2long.xml
index 8242ce90c1..ac00c92823 100644
--- a/reference/network/functions/ip2long.xml
+++ b/reference/network/functions/ip2long.xml
@@ -84,7 +84,7 @@ if ($long == -1 || $long === FALSE) {
echo 'IP invalide, merci d\'essayer encore';
} else {
echo $ip . "\n"; // 192.0.34.166
- echo $long . "\n"; // 3221234342 (-1073732954 sur les sytèmes 32-bit, à cause du débordement d'entier)
+ echo $long . "\n"; // 3221234342 (-1073732954 sur les systèmes 32-bit, à cause du débordement d'entier)
printf("%u\n", ip2long($ip)); // 3221234342
}
?>
@@ -102,7 +102,7 @@ if ($long == -1 || $long === FALSE) {
résulteront en des entiers négatifs sur les architectures 32-bits, vous
devez utiliser le motif "%u" de la fonction sprintf
ou de la fonction printf pour récupérer la représentation
- sous forme de &string; d'une adresse IP non signé.
+ sous forme de &string; d'une adresse IP non signée.
diff --git a/reference/opcache/ini.xml b/reference/opcache/ini.xml
index f79a7dc7c7..a18457b61e 100644
--- a/reference/opcache/ini.xml
+++ b/reference/opcache/ini.xml
@@ -261,7 +261,7 @@
opcache.jit"disable"INI_ALL
- Disponible à partir de PHP 8.0.0. Auparavant à PHP 8.4.0, la valeur par défaut était "tracing"
+ Disponible à partir de PHP 8.0.0. Avant PHP 8.4.0, la valeur par défaut était "tracing"opcache.jit_buffer_size
@@ -458,7 +458,7 @@
Le pourcentage maximum de mémoire gaspillée autorisée avant qu'un redémarrage
ne soit programmé, s'il n'y a pas assez de mémoire disponible.
La valeur maximale permissible est "50",
- qui est forcé si une valeur plus large est définie.
+ qui est forcé si une valeur plus grande est définie.
@@ -830,7 +830,7 @@ function getA() { return A; }
- Si vaut différent de zéro, OPcache va vérifier la somme de contrôle
+ Si la valeur est différente de zéro, OPcache va vérifier la somme de contrôle
du cache toutes les N requêtes, où N est la valeur de cette directive
de configuration. Ceci ne doit être activé que lors du débogage, sachant
qu'il impacte fortement les performances.
@@ -1041,7 +1041,7 @@ function getA() { return A; }
- Antérieur à PHP 8.1.0, désactiver cette directive avec un fichier de
+ Avant PHP 8.1.0, désactiver cette directive avec un fichier de
cache déjà rempli nécessite le vidage manuel du cache.
@@ -1066,7 +1066,7 @@ function getA() { return A; }
- Insinue opcache.file_cache_only=1 pour un certain processus qui a échoué de
+ Implique opcache.file_cache_only=1 pour un certain processus qui a échoué de
se rattacher à la mémoire partagée (pour Windows uniquement).
Le cache de fichiers activé explicitement est requis.
@@ -1114,7 +1114,7 @@ function getA() { return A; }
et qui peut précharger d'autres fichiers, soit grâce à include
ou en utilisant la fonction opcache_compile_file. Toutes
les entités (par exemple fonctions et classes) définies dans ces fichiers seront
- disponibles aux requêtes prêt à l'emploi, jusqu'à ce que le serveur soit éteint.
+ disponibles aux requêtes prêtes à l'emploi, jusqu'à ce que le serveur soit éteint.
diff --git a/reference/password/constants.xml b/reference/password/constants.xml
index b35540e032..7672b47696 100644
--- a/reference/password/constants.xml
+++ b/reference/password/constants.xml
@@ -132,7 +132,7 @@
- Quantité de mémoire par défaut (en octets) qui sera utilisé en
+ Quantité de mémoire par défaut (en octets) qui sera utilisée en
essayant de calculer un hachage.
@@ -147,7 +147,7 @@
- Durée de temps par défaut que sera passer pour essayer de calculer
+ Durée de temps par défaut qui sera consacrée pour essayer de calculer
un hachage.
diff --git a/reference/password/functions/password-needs-rehash.xml b/reference/password/functions/password-needs-rehash.xml
index 26e68270df..05c72d20e8 100644
--- a/reference/password/functions/password-needs-rehash.xml
+++ b/reference/password/functions/password-needs-rehash.xml
@@ -105,11 +105,10 @@ $options = ['cost' => 13];
if (password_verify($password, $hash)) {
// Vérifie si soit l'algorithme ou les options ont changé
if (password_needs_rehash($hash, $algorithm, $options)) {
- if (password_needs_rehash($hash, PASSWORD_DEFAULT, $options)) {
// On crée un nouveau hachage afin de mettre à jour l'ancien
$newHash = password_hash($password, $algorithm, $options);
- // Mettre à jour l'entré de l'utilisateur avec $newHash
+ // Mettre à jour l'entrée de l'utilisateur avec $newHash
}
// Exécute la connexion de l'utilisateur
diff --git a/reference/pcntl/constants.xml b/reference/pcntl/constants.xml
index 2f7c99c998..9679911110 100644
--- a/reference/pcntl/constants.xml
+++ b/reference/pcntl/constants.xml
@@ -1389,7 +1389,7 @@
Typiquement, cette erreur survient lorsqu'un chemin d'accès spécifié
n'existe pas, ou lorsqu'un des composants dans le répertoire
préfixe d'un chemin d'accès n'existe pas, ou lorsque le chemin d'accès spécifié
- est un lien symbolique pendante.
+ est un lien symbolique pendant.
@@ -1483,7 +1483,7 @@
- FORK_* constants
+ Les constantes FORK_*FORK_NOSIGCHLD
@@ -1506,7 +1506,7 @@
- RF* constants
+ Les constantes RF*RFCFDG
diff --git a/reference/pcntl/functions/pcntl-fork.xml b/reference/pcntl/functions/pcntl-fork.xml
index 215eaadc87..c98a07816b 100644
--- a/reference/pcntl/functions/pcntl-fork.xml
+++ b/reference/pcntl/functions/pcntl-fork.xml
@@ -4,7 +4,7 @@
pcntl_fork
- Duplique le process courant
+ Duplique le processus courant
diff --git a/reference/pdo_mysql/pdo-mysql.xml b/reference/pdo_mysql/pdo-mysql.xml
index cb11ee4015..a0b3f4a74c 100644
--- a/reference/pdo_mysql/pdo-mysql.xml
+++ b/reference/pdo_mysql/pdo-mysql.xml
@@ -224,7 +224,7 @@ foreach ($unbufferedResult as $row) {
Pdo\Mysql::ATTR_LOCAL_INFILE
- Enable LOAD LOCAL INFILE.
+ Active LOAD LOCAL INFILE.
@@ -337,7 +337,7 @@ foreach ($unbufferedResult as $row) {
- Cette constante n'est pas supportée lorsqu'elle est compilée sans mysqlnd.
+ Cette constante n'est pas supportée lorsqu'elle est compilée avec mysqlnd.
diff --git a/reference/posix/functions/posix-getpwuid.xml b/reference/posix/functions/posix-getpwuid.xml
index 25b6235cf7..9a01717187 100644
--- a/reference/posix/functions/posix-getpwuid.xml
+++ b/reference/posix/functions/posix-getpwuid.xml
@@ -103,8 +103,8 @@
shell
- Cet élément contient le chemin absolu jusqu'au dossier d'exécution du
- shell de l'utilisateur.
+ Cet élément contient le chemin absolu vers l'exécutable du shell par défaut
+ de l'utilisateur.
diff --git a/reference/posix/functions/posix-kill.xml b/reference/posix/functions/posix-kill.xml
index 3cec2dd21d..82db5af53d 100644
--- a/reference/posix/functions/posix-kill.xml
+++ b/reference/posix/functions/posix-kill.xml
@@ -37,7 +37,7 @@
signal
- Une des constantes de signals PCNTL.
+ Une des constantes de signaux PCNTL.
diff --git a/reference/pspell/functions/pspell-new.xml b/reference/pspell/functions/pspell-new.xml
index 7da4dc0632..6409e4f1af 100644
--- a/reference/pspell/functions/pspell-new.xml
+++ b/reference/pspell/functions/pspell-new.xml
@@ -36,7 +36,7 @@
language
- Le paramètre de langue spelling est constitué des
+ Le paramètre de langue language est constitué des
deux lettres du codage de langue ISO 639, et du codage optionnel de pays ISO
3166, séparés par un '_'.
@@ -114,7 +114,7 @@
listées ci-dessus. Cependant, PSPELL_FAST,
PSPELL_NORMAL et
PSPELL_BAD_SPELLERS sont mutuellement exclusives :
- vous ne devez en utiliser à la fois.
+ vous ne devez en utiliser qu'un à la fois.
diff --git a/reference/random/random/randomizer/getint.xml b/reference/random/random/randomizer/getint.xml
index 4576b50c13..77bd791011 100644
--- a/reference/random/random/randomizer/getint.xml
+++ b/reference/random/random/randomizer/getint.xml
@@ -56,8 +56,8 @@
- Si min ou max ne sont pas
- des entiers, une TypeError sera lancée.
+ Si max est inférieur à min,
+ une ValueError sera lancée.
&random.engineErrors;
diff --git a/reference/random/random/randomizer/pickarraykeys.xml b/reference/random/random/randomizer/pickarraykeys.xml
index 9995b522f3..52ab3d7a6d 100644
--- a/reference/random/random/randomizer/pickarraykeys.xml
+++ b/reference/random/random/randomizer/pickarraykeys.xml
@@ -106,7 +106,7 @@ Keys: red, green, yellow
- Prendre des valeurs aléatoire
+ Prendre des valeurs aléatoires
- The ReflectionClass class
+ La classe ReflectionClassReflectionClass
diff --git a/reference/shmop/functions/shmop-open.xml b/reference/shmop/functions/shmop-open.xml
index b6f3d7bfa8..4485a6ffe5 100644
--- a/reference/shmop/functions/shmop-open.xml
+++ b/reference/shmop/functions/shmop-open.xml
@@ -69,8 +69,8 @@
"n" crée un nouveau segment de mémoire partagée
(utilise IPC_CREATE|IPC_EXCL). Utilisez cette option
lorsque vous voulez créer un nouveau segment de mémoire
- partagée sauf s'il en existe déjà un corrompu avec la
- même option. Ceci est très pratique pour des raisons
+ partagée. Si un segment existe déjà avec la même clé,
+ la fonction échouera. Ceci est très pratique pour des raisons
de sécurité, pour éviter des trous de sécurité
qui exploiteraient la course aux ressources.
diff --git a/reference/simplexml/examples.xml b/reference/simplexml/examples.xml
index 1fa5d0ccda..8f53a6874b 100644
--- a/reference/simplexml/examples.xml
+++ b/reference/simplexml/examples.xml
@@ -140,7 +140,7 @@ Mr. Coder played by El ActÓr
Les propriétés ($movies->movie dans notre précédent exemple)
- ne sont pas des tableaux. Ceux sont des objets
+ ne sont pas des tableaux. Ce sont des objets
itérables et
accessibles.
diff --git a/reference/simplexml/simplexmlelement/construct.xml b/reference/simplexml/simplexmlelement/construct.xml
index 59260fb822..3f1315a202 100644
--- a/reference/simplexml/simplexmlelement/construct.xml
+++ b/reference/simplexml/simplexmlelement/construct.xml
@@ -45,7 +45,7 @@
paramètres Libxml additionnels,
qui affecte la lecture de documents XML. Les options affectant la sortie
des documents XML (par exemple LIBXML_NOEMPTYTAG)
- sont ignorée silencieusement.
+ sont ignorées silencieusement.
@@ -78,7 +78,7 @@
isPrefix
- &true; si namespaceOrPrefix est un préfix, &false; sinon.
+ &true; si namespaceOrPrefix est un préfixe, &false; sinon.
Valeur par défaut : &false;.
diff --git a/reference/snmp/snmp/construct.xml b/reference/snmp/snmp/construct.xml
index 44efd200ec..92f8b84ebc 100644
--- a/reference/snmp/snmp/construct.xml
+++ b/reference/snmp/snmp/construct.xml
@@ -42,8 +42,8 @@
L'agent SNMP. Le paramètre hostname
- peut être préfixé avec le port de l'agent optionnel SNMP
- après une virgule. Les adresses IPV6 doivent être entourées de crochets ([])
+ peut être suffixé avec le port de l'agent optionnel SNMP
+ après deux-points. Les adresses IPV6 doivent être entourées de crochets ([])
si vous utilisez en plus les ports. Si FQDN est utilisé pour le paramètre
hostname, il sera résolu par l'extension PHP SNMP,
et non par le moteur Net-SNMP. L'utilisation des adresses IPV6
diff --git a/reference/sodium/functions/sodium-crypto-aead-chacha20poly1305-encrypt.xml b/reference/sodium/functions/sodium-crypto-aead-chacha20poly1305-encrypt.xml
index 93a18a3889..f376e107aa 100644
--- a/reference/sodium/functions/sodium-crypto-aead-chacha20poly1305-encrypt.xml
+++ b/reference/sodium/functions/sodium-crypto-aead-chacha20poly1305-encrypt.xml
@@ -37,7 +37,7 @@
additional_data
- Additionnel, données authentifiées. Cela est utilisé dans la vérification de l'étiquette d'authentification
+ Données additionnelles authentifiées. Cela est utilisé dans la vérification de l'étiquette d'authentification
ajoutée au texte chiffré, mais il n'est pas chiffré ou stocké dans le texte chiffré.
@@ -64,7 +64,7 @@
&reftitle.returnvalues;
- Renvoie la clé de chiffrement et l'étiquette en cas de succès, &return.falseforfailure;.
+ Renvoie le texte chiffré et l'étiquette en cas de succès, &return.falseforfailure;.
diff --git a/reference/sodium/functions/sodium-crypto-box.xml b/reference/sodium/functions/sodium-crypto-box.xml
index 2f5a9764f3..511280e41c 100644
--- a/reference/sodium/functions/sodium-crypto-box.xml
+++ b/reference/sodium/functions/sodium-crypto-box.xml
@@ -51,7 +51,7 @@
Voir sodium_crypto_box_keypair_from_secretkey_and_publickey.
- Ceci inclut la clé publique de l'expéditeur et la clé secrète du destinataire.
+ Ceci inclut la clé secrète de l'expéditeur et la clé publique du destinataire.
diff --git a/reference/sqlite3/sqlite3/construct.xml b/reference/sqlite3/sqlite3/construct.xml
index a9bf7033ba..41f0b57a2e 100644
--- a/reference/sqlite3/sqlite3/construct.xml
+++ b/reference/sqlite3/sqlite3/construct.xml
@@ -5,7 +5,7 @@
SQLite3::__construct
- Instantie un objet SQLite3 et ouvre la base de données SQLite 3
+ Instancie un objet SQLite3 et ouvre la base de données SQLite 3
@@ -75,8 +75,8 @@
encryptionKey
- Une clé de cryptage optionnelle, à utiliser lors du cryptage/décryptage
- de la base de données SQLite. Si le module SQLite n'est pas installé,
+ Une clé de chiffrement optionnelle, à utiliser lors du chiffrement/déchiffrement
+ de la base de données SQLite. Si le module de chiffrement SQLite n'est pas installé,
ce paramètre n'aura aucun effet.
diff --git a/reference/tidy/constants.xml b/reference/tidy/constants.xml
index f54c9528c5..d8da470209 100644
--- a/reference/tidy/constants.xml
+++ b/reference/tidy/constants.xml
@@ -7,7 +7,7 @@
&reftitle.constants;
&extension.constants;
- Chaque TIDY_TAG_* représente un balise HTML. Par exemple,
+ Chaque TIDY_TAG_* représente une balise HTML. Par exemple,
TIDY_TAG_A représente une balise
"<a href="XX">link</a>".
diff --git a/reference/tokenizer/functions/token-get-all.xml b/reference/tokenizer/functions/token-get-all.xml
index ab7c7dbb8c..2de0e89f89 100755
--- a/reference/tokenizer/functions/token-get-all.xml
+++ b/reference/tokenizer/functions/token-get-all.xml
@@ -15,8 +15,8 @@
intflags0
- token_get_all analyse la chaîne donnée
- source en utilisant l'analyseur lexical du moteur Zend.
+ token_get_all analyse la chaîne code
+ donnée en utilisant l'analyseur lexical du moteur Zend.
Pour une liste des tokens, voir , ou utilisez la fonction
diff --git a/reference/url/functions/http-build-query.xml b/reference/url/functions/http-build-query.xml
index b6dd96ce31..2d49940c55 100644
--- a/reference/url/functions/http-build-query.xml
+++ b/reference/url/functions/http-build-query.xml
@@ -117,7 +117,7 @@
8.4.0
- Auparavant PHP 8.4.0, les propriétés de BackedEnum
+ Avant PHP 8.4.0, les propriétés de BackedEnum
de data étaient converties en objets, plutôt que leurs équivalents scalaires.
diff --git a/reference/url/functions/parse-url.xml b/reference/url/functions/parse-url.xml
index 7a73f3a0ff..6a2943bc08 100644
--- a/reference/url/functions/parse-url.xml
+++ b/reference/url/functions/parse-url.xml
@@ -127,7 +127,7 @@
Si le paramètre component est spécifié, parse_url
retourne une string (ou un &integer; dans le cas d'utilisation de la
- constante PHP_URL_PORT)au lieu d'un array. Si le composant
+ constante PHP_URL_PORT) au lieu d'un array. Si le composant
demandé n'existe pas dans l'URL, &null; sera retourné.
À partir de PHP 8.0.0, parse_url distingue entre les
fragments et requêtes absentes et vides :
diff --git a/reference/xmlreader/xmlreader/open.xml b/reference/xmlreader/xmlreader/open.xml
index 6f488ff50c..3ffb2dbbf2 100644
--- a/reference/xmlreader/xmlreader/open.xml
+++ b/reference/xmlreader/xmlreader/open.xml
@@ -77,7 +77,7 @@
- Cette méthode peut être appelée statiquement, mais, antérieur à PHP 8.0.0,
+ Cette méthode peut être appelée statiquement, mais, avant PHP 8.0.0,
cela génèrera une erreur E_DEPRECATED dans ce cas.
diff --git a/reference/yaml/functions/yaml-parse.xml b/reference/yaml/functions/yaml-parse.xml
index b83724a700..7540c62544 100644
--- a/reference/yaml/functions/yaml-parse.xml
+++ b/reference/yaml/functions/yaml-parse.xml
@@ -212,7 +212,7 @@ array(8) {
Le fait de traiter une entrée utilisateur non sécurisée avec
yaml_parse est dangereux si l'utilisation de
- unserialize est activé pour les nœuds utilisant
+ unserialize est activée pour les nœuds utilisant
la balise !php/object. Ce comportement peut être
désactivé en utilisant la configuration ini
yaml.decode_php.
From 71fcc412ba14ec89208bf4ab41721115c57ac155 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 10:07:10 +0100
Subject: [PATCH 82/96] fix(reference): batch 6 - corrections across 24
extensions
Fix ~108 translation issues across imagick, oauth, oci8, memcached,
mongodb, mysql_xdevapi, mysqlinfo, com, apache, phpdbg, fpm, ds, apcu,
mcrypt, mhash, recode, wddx, uodbc, ssh2, xmlrpc, phar, mysql
Critical fixes:
- oci8: stray "E" char, untranslated English, LOB->ROWID descriptor
- memcached: 200->2000 octets (order of magnitude), "survenir"->survenues
- mcrypt: "anthropie"->"entropie", "compression"->peripheriques aleatoires
- oauth: setReqeustEngine typo, gender agreements
- com: "La classe m"->"La classe com", "poins/prexie" typos
- mysql: wrong function name mysql_escape_string->mysql_real_escape_string
- ssh2: "identification"->"authentification" for MAC
- mysqlinfo: multiple grammar fixes, subjunctive mood corrections
- apache: xbithack mistranslation, "chaine requise"->"chaine de requete"
- recode: "delie et deplacer"->"retiree et deplacee"
Maintainer: lacatoire
---
reference/apache/functions/virtual.xml | 4 ++--
reference/apache/ini.xml | 6 +++---
reference/apcu/book.xml | 2 +-
reference/com/book.xml | 8 ++++----
reference/com/com.xml | 2 +-
reference/com/error-handling.xml | 2 +-
reference/com/ini.xml | 6 +++---
reference/com/variant.xml | 10 +++++-----
reference/ds/book.xml | 2 +-
reference/fpm/status.xml | 2 +-
reference/imagick/book.xml | 6 +++---
reference/mcrypt/constants.xml | 8 ++++----
.../mcrypt/functions/mcrypt-create-iv.xml | 2 +-
reference/mcrypt/functions/mcrypt-decrypt.xml | 4 ++--
reference/mcrypt/functions/mcrypt-encrypt.xml | 2 +-
reference/memcached/constants.xml | 20 +++++++++----------
reference/mhash/book.xml | 5 ++---
reference/mhash/functions/mhash.xml | 6 +++---
reference/mongodb/constants.xml | 4 ++--
reference/mysql/functions/mysql-connect.xml | 6 +++---
.../mysql/functions/mysql-fetch-array.xml | 8 ++++----
reference/mysql/functions/mysql-query.xml | 2 +-
.../functions/mysql-real-escape-string.xml | 6 +++---
reference/mysql_xdevapi/book.xml | 4 ++--
reference/mysql_xdevapi/setup.xml | 2 +-
reference/mysqlinfo/concepts.xml | 16 +++++++--------
reference/mysqlinfo/set.xml | 20 +++++++++----------
reference/oauth/constants.xml | 16 +++++++--------
reference/oauth/oauth/fetch.xml | 4 ++--
reference/oci8/configure.xml | 20 +++++++++----------
reference/oci8/constants.xml | 12 +++++------
reference/oci8/functions/oci-execute.xml | 4 ++--
reference/phar/Phar/extractTo.xml | 2 +-
reference/phar/constants.xml | 2 +-
reference/phpdbg/book.xml | 2 +-
reference/phpdbg/functions/phpdbg-exec.xml | 3 +--
reference/recode/book.xml | 4 ++--
reference/ssh2/functions/ssh2-connect.xml | 6 +++---
reference/ssh2/functions/ssh2-sftp-stat.xml | 4 ++--
reference/uodbc/book.xml | 4 +---
reference/uodbc/functions/odbc-connect.xml | 2 +-
reference/uodbc/functions/odbc-exec.xml | 2 +-
reference/wddx/book.xml | 6 +++---
reference/xmlrpc/book.xml | 6 +++---
44 files changed, 130 insertions(+), 134 deletions(-)
diff --git a/reference/apache/functions/virtual.xml b/reference/apache/functions/virtual.xml
index c88800939d..78add4329d 100644
--- a/reference/apache/functions/virtual.xml
+++ b/reference/apache/functions/virtual.xml
@@ -70,10 +70,10 @@
&reftitle.notes;
- La chaîne requise peut être passée au fichier inclus,
+ La chaîne de requête peut être passée au fichier inclus,
mais $_GET est copié depuis le script parent et
seule la variable $_SERVER['QUERY_STRING']
- est transmise en passant la chaîne requise. La chaîne requise passée fonctionne
+ est transmise en passant la chaîne requise. La chaîne de requête passée fonctionne
uniquement sous Apache 2. Les fichiers demandés ne sont pas listés dans
les logs d'accès Apache.
diff --git a/reference/apache/ini.xml b/reference/apache/ini.xml
index 2f3d2bb074..24b5685c9f 100644
--- a/reference/apache/ini.xml
+++ b/reference/apache/ini.xml
@@ -73,7 +73,7 @@
Active ou non PHP.
Cette directive est utile uniquement pour le module Apache. Elle est
utilisée par les sites qui souhaitent activer ou non PHP, au
- cas par cas, par dossier ou par dossier virtuel. En utilisant
+ cas par cas, par dossier ou par serveur virtuel. En utilisant
engine off au bon endroit dans le fichier
&httpd.conf;, PHP peut être activé ou non.
@@ -110,8 +110,8 @@
- Analyse les fichiers avec l'exécutable PHP, indépendamment de leur
- extension.
+ Analyse les fichiers dont le bit d'exécution est activé comme des fichiers PHP,
+ quelle que soit leur extension.
diff --git a/reference/apcu/book.xml b/reference/apcu/book.xml
index 7f854810dc..efeb7038c6 100644
--- a/reference/apcu/book.xml
+++ b/reference/apcu/book.xml
@@ -15,7 +15,7 @@
Le cache APCu est par processus sous Windows, donc lors de l'utilisation d'un SAPI
- basée sur les processus (plutôt que sur les thread), il ne sera pas partagé entre
+ basé sur les processus (plutôt que sur les threads), il ne sera pas partagé entre
différents processus.
diff --git a/reference/com/book.xml b/reference/com/book.xml
index 90fa2614ff..116cb67313 100644
--- a/reference/com/book.xml
+++ b/reference/com/book.xml
@@ -14,19 +14,19 @@
COM est un acronyme pour Component Object Model;
c'est une couche orientée objet (et services associés) au-dessus de
- DCE RPC (un standard libre) qui
+ DCE RPC (un standard ouvert) qui
définit une convention de nommage commune permettant à un code écrit en
n'importe quel langage de communiquer avec du code écrit dans un autre
langage, pour peu que ces deux langages soient compatibles avec COM.
- Les codes n'ont pas besoin de faire partie du même exécutable. le code peut
+ Les codes n'ont pas besoin de faire partie du même exécutable. Le code peut
être chargé à partir d'une DLL, trouvé dans un autre processus fonctionnant
sur le même serveur, ou, avec DCOM (Distributed COM), trouvé sur une machine
distante, sans même que votre code ait à savoir où il se trouve.
Il y a une partie de COM connue sous le nom de OLE Automation qui comprend un
- jeu d'interfaces COM qui permettent de perdre l'attache aux objets COM, pour
- qu'ils puissent être découverts et appelés en cours d'exécution sans savoir
+ jeu d'interfaces COM qui permettent une liaison lâche avec les objets COM, afin
+ qu'ils puissent être introspectés et appelés en cours d'exécution sans savoir
au moment de la compilation comment l'objet fonctionne. L'extension COM de PHP
utilise les interfaces OLE Automation pour vous permettre de créer et appeler des
objets compatibles depuis vos scripts. Techniquement parlant, cela devrait
diff --git a/reference/com/com.xml b/reference/com/com.xml
index e2203ec005..4a5e834a94 100644
--- a/reference/com/com.xml
+++ b/reference/com/com.xml
@@ -11,7 +11,7 @@
&reftitle.intro;
- La classe m vous permet d'instancier un objet COM compatible OLE et
+ La classe com vous permet d'instancier un objet COM compatible OLE et
d'appeler ses méthodes et d'accéder à ses propriétés.
diff --git a/reference/com/error-handling.xml b/reference/com/error-handling.xml
index 0c7f93600b..b0e5f13efa 100644
--- a/reference/com/error-handling.xml
+++ b/reference/com/error-handling.xml
@@ -8,7 +8,7 @@
Cette extension lancera des instances de la classe com_exception
- pour toute erreur fatale reportée par COM. Toutes les exceptions COM ont une
+ pour toute erreur potentiellement fatale signalée par COM. Toutes les exceptions COM ont une
propriété code qui correspond à la valeur de retour HRESULT
des diverses opérations COM. Vous pouvez utiliser ce code pour choisir de façon
automatique comment gérer cette exception.
diff --git a/reference/com/ini.xml b/reference/com/ini.xml
index 3be30461ec..e75a737298 100644
--- a/reference/com/ini.xml
+++ b/reference/com/ini.xml
@@ -121,7 +121,7 @@
Cette directive est activée par défaut et fait que les constantes
- trouvées dans les bibliothèques de types autochargé lors de l'instanciation d'objets COM seront enregistrées en mode
+ trouvées dans les bibliothèques de types auto-chargées lors de l'instanciation d'objets COM seront enregistrées en mode
sensible à la casse. Voyez com_load_typelib
pour plus de détails.
@@ -156,10 +156,10 @@
- La version du framework .NET framework à utiliser pour les objets
+ La version du framework .NET à utiliser pour les objets
dotnet. La valeur de cette configuration
correspond aux trois premiers numéros du numéro de la version du framework,
- séparé par des poins, et préxié par la lettre v, i.e.
+ séparés par des points, et préfixés par la lettre v, c.-à-d.
v4.0.30319.
diff --git a/reference/com/variant.xml b/reference/com/variant.xml
index 0bdc36dd9e..e02bfb191c 100644
--- a/reference/com/variant.xml
+++ b/reference/com/variant.xml
@@ -12,7 +12,7 @@
Le VARIANT est l'équivalent COM de zval pour PHP ; c'est une structure qui
- peut contenir une valeur avec un intervalle de différent types possibles.
+ peut contenir une valeur avec une gamme de différents types possibles.
La classe variant fournie par l'extension COM vous permet d'avoir plus de
contrôle sur ce que PHP envoie et reçoit de COM.
@@ -55,15 +55,15 @@ print "The value is " . $v . " ";
- Lors du retour d'une valeur ou récupérer une propriété variant, le variant
+ Lors du retour d'une valeur ou de la récupération d'une propriété variant, le variant
est converti en une valeur PHP seulement quand il y a une correspondance
directe entre les types qui ne produiraient pas une perte d'information.
- Dans tous les autres cas, la valeur est retourné en tant qu'une instance
- de la classe variant. Vous pouvez forcer PHP de convertir ou évaluer le
+ Dans tous les autres cas, la valeur est retournée en tant qu'une instance
+ de la classe variant. Vous pouvez forcer PHP à convertir ou évaluer le
variant en tant que type PHP natif en utilisant les opérateurs de transtypage
explicitement, ou implicitement vers une &string; en l'affichant
grâce à print. Vous pouvez utiliser la grande variété
- de fonctions variant pour effectuer des opérations arithmétrique sans
+ de fonctions variant pour effectuer des opérations arithmétiques sans
forcer une conversion et risquer une perte de données.
diff --git a/reference/ds/book.xml b/reference/ds/book.xml
index c2485014e0..15ccc3d107 100644
--- a/reference/ds/book.xml
+++ b/reference/ds/book.xml
@@ -12,7 +12,7 @@
Structures de données efficaces pour PHP 7, fournies en alternative aux &array;.
- Voir ce poste de blog
+ Voir cet article de blog
pour des benchmarks, des discussions et des questions fréquemment posées.
diff --git a/reference/fpm/status.xml b/reference/fpm/status.xml
index cfb14e1195..43f3086d80 100644
--- a/reference/fpm/status.xml
+++ b/reference/fpm/status.xml
@@ -217,7 +217,7 @@
request duration
- Le temps total en microsecondes passées à traiter les requêtes.
+ Le temps total en microsecondes passé à servir la dernière requête.request method
diff --git a/reference/imagick/book.xml b/reference/imagick/book.xml
index 13255ea749..a19b68c801 100644
--- a/reference/imagick/book.xml
+++ b/reference/imagick/book.xml
@@ -26,9 +26,9 @@
DPX, EXR, GIF, JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG et TIFF.
- ImageMagick Studio LLC, une organisation à but
- non-lucratif dont le but est de rendre la création de logiciel relatif
- à la manipulation d'images librement disponible.
+ ImageMagick Studio LLC, une organisation à but
+ non lucratif dont la vocation est de rendre les logiciels de
+ manipulation d'images librement disponibles.
diff --git a/reference/mcrypt/constants.xml b/reference/mcrypt/constants.xml
index be9cef1326..153bbb61b0 100644
--- a/reference/mcrypt/constants.xml
+++ b/reference/mcrypt/constants.xml
@@ -57,16 +57,16 @@
MCRYPT_MODE_STREAM est un mode supplémentaire, pour inclure
- des algorithme de flot tels que "WAKE" ou "RC4".
+ des algorithmes de flot tels que "WAKE" ou "RC4".
- Mcrypt supporte d'autres mode d'opération pour lesquelles il n'y a pas de constantes
+ Mcrypt supporte d'autres modes d'opération pour lesquelles il n'y a pas de constantes
prédéfinies.
- Ils peuvent être utilisé en passant une &string; à la place des constantes manquantes.
+ Ils peuvent être utilisés en passant une &string; à la place des constantes manquantes.
@@ -84,7 +84,7 @@
- Voici quelques autres modes et méthodes de compression :
+ Voici quelques autres constantes de modes et de périphériques aléatoires :
diff --git a/reference/mcrypt/functions/mcrypt-create-iv.xml b/reference/mcrypt/functions/mcrypt-create-iv.xml
index 0c380dc6c9..56c76dab30 100644
--- a/reference/mcrypt/functions/mcrypt-create-iv.xml
+++ b/reference/mcrypt/functions/mcrypt-create-iv.xml
@@ -66,7 +66,7 @@
Notez que la constante MCRYPT_DEV_RANDOM
- peut se bloquer en attendant que d'autre anthropie ne soit disponible.
+ peut se bloquer en attendant que plus d'entropie ne soit disponible.
diff --git a/reference/mcrypt/functions/mcrypt-decrypt.xml b/reference/mcrypt/functions/mcrypt-decrypt.xml
index a4c1ec74fc..77f6401816 100644
--- a/reference/mcrypt/functions/mcrypt-decrypt.xml
+++ b/reference/mcrypt/functions/mcrypt-decrypt.xml
@@ -38,7 +38,7 @@
La clé utilisée lors du chiffrement des données. Si la taille de la clé
- fournit n'est pas supportée par le cipher, la fonction émettra un
+ fournie n'est pas supportée par le cipher, la fonction émettra un
warning et retournera &false;
@@ -47,7 +47,7 @@
data
- Les données qui seront déchiffrées avec utilisant les paramètres
+ Les données qui seront déchiffrées en utilisant les paramètres
cipher et mode.
Si la taille des données ne correspond pas à n * la taille du bloc,
les données seront complétées par des '\0'.
diff --git a/reference/mcrypt/functions/mcrypt-encrypt.xml b/reference/mcrypt/functions/mcrypt-encrypt.xml
index a19107435b..9e6d4d3f53 100644
--- a/reference/mcrypt/functions/mcrypt-encrypt.xml
+++ b/reference/mcrypt/functions/mcrypt-encrypt.xml
@@ -96,7 +96,7 @@
# la clé devrait être un binaire aléatoire, utilisez la fonction scrypt, bcrypt
# ou PBKDF2 pour convertir une chaîne de caractères en une clé.
- # La clé est spécifiée en utilisant une notation héxadécimale.
+ # La clé est spécifiée en utilisant une notation hexadécimale.
$key = pack('H*', "bcb04b7e103a0cd8b54763051cef08bc55abe029fdebae5e1d417e2ffb2a00a3");
# Montre la taille de la clé utilisée ; soit des clés sur 16, 24 ou 32 octets pour
diff --git a/reference/memcached/constants.xml b/reference/memcached/constants.xml
index 18b87121b9..36485eb41a 100644
--- a/reference/memcached/constants.xml
+++ b/reference/memcached/constants.xml
@@ -14,7 +14,7 @@
Active ou désactive la compression du contenu. Si elle est
activée, les éléments qui dépassent une taille (actuellement
- 200 octets), seront compressés durant le stockage, et
+ 2000 octets), seront compressés durant le stockage, et
décompressés au déstockage, de manière transparente. Le seuil peut être configuré à
l'aide du paramètre ini memcached.compression_threshold.
@@ -173,7 +173,7 @@
Memcached::OPT_HASH
- Spécifie l'algorithme de hachage utilisé pour les clé. Les valeurs valides
+ Spécifie l'algorithme de hachage utilisé pour les clés. Les valeurs valides
sont fournies avec les constantes Memcached::HASH_*.
Chaque algorithme de hachage a ses avantages et inconvénients. Utilisez
celui qui est donné par défaut, si vous ne comprenez pas, ou que peu vous
@@ -272,7 +272,7 @@
Spécifie la méthode de distribution des clés sur les serveurs.
Actuellement, cette option supporte les modulo et le hachage cohérent.
Le hachage cohérent fournit la meilleure distribution, et permet
- aux serveurs d'être ajouté au groupe avec un minimum de pertes de
+ aux serveurs d'être ajoutés au groupe avec un minimum de pertes de
cache.
Type : int, par défaut : Memcached::DISTRIBUTION_MODULA.
@@ -332,7 +332,7 @@
Memcached::OPT_LIBKETAMA_HASH
- Spécifie l'algorithme de hachage pour la mappemon de l'hôte.
+ Spécifie l'algorithme de hachage pour la mappage de l'hôte.
Type : int.
@@ -390,12 +390,12 @@
Memcached::OPT_NOREPLY
- Active ou désactive l'ignoration du résultat des commendes de stockage
+ Active ou désactive l'ignorance du résultat des commandes de stockage
(set, add, replace, append, prepend, delete, increment, decrement, etc.).
- Les commendes de stockage seront envoyé sans passer du temps à attendre
+ Les commandes de stockage seront envoyées sans passer du temps à attendre
pour une réponse (il n'y aurait pas de réponse).
Les commandes de récupérations tel que Memcached::get
- ne sont pas affecté par ce paramètrage.
+ ne sont pas affectées par ce paramétrage.
Type: bool, par défaut: &false;.
@@ -406,7 +406,7 @@
Active ou non les connexions sans délai des sockets (cela peut être
- un gain de performances dans certains environnements.
+ un gain de performances dans certains environnements).
Type: bool, par défaut: &false;.
@@ -784,7 +784,7 @@
L'élément n'a pas été stocké, mais pas à cause d'une erreur. Ceci est
normal, et signifie qu'une condition pour un ajout "add"
ou un remplacement "replace" n'a pas été satisfait, ou
- qu'un élément a été mise dans une queue d'effacement.
+ qu'un élément a été mis dans une file d'effacement.
@@ -812,7 +812,7 @@
Memcached::RES_SOME_ERRORS
- Des erreurs sont survenir durant une lecture multiple.
+ Des erreurs sont survenues durant une lecture multiple.
diff --git a/reference/mhash/book.xml b/reference/mhash/book.xml
index fb096e07e4..17fdcbc45b 100644
--- a/reference/mhash/book.xml
+++ b/reference/mhash/book.xml
@@ -12,8 +12,7 @@
&reftitle.intro;
Ces fonctions ont été prévues pour fonctionner avec
- mhash. Mhash peut être utilisée pour créer une
- somme de contrôle, un hachage et bien plus.
+ mhash. Mhash peut être utilisée pour créer des sommes de contrôle, des condensés de messages, des codes d'authentification de messages et bien plus.
Cet ensemble de fonctions représente une interface avec la bibliothèque mhash.
@@ -33,7 +32,7 @@
- À partir de PHP 7.0.0 l'extension Mhash a été completement intégré dans
+ À partir de PHP 7.0.0 l'extension Mhash a été complètement intégrée dans
l'extension Hash. Par conséquent il n'est
plus possible de détecter le support de Mhash grâce à
extension_loaded ; utilisez function_exists à
diff --git a/reference/mhash/functions/mhash.xml b/reference/mhash/functions/mhash.xml
index a1a48c50c2..6ded5d67e5 100644
--- a/reference/mhash/functions/mhash.xml
+++ b/reference/mhash/functions/mhash.xml
@@ -51,9 +51,9 @@
key
- Spécifié, la fonction retournera le HMAC résultant. HMAC est un hash indexé
- utilisé pour l'identification de message, ou bien un simple rapport de
- message, suivant la clé spécifiée. Certains algorithmes supportés dans
+ Spécifié, la fonction retournera le HMAC résultant. HMAC est un hachage à clé
+ utilisé pour l'authentification de messages, ou simplement un condensé de
+ message qui dépend de la clé spécifiée. Certains algorithmes supportés dans
mhash ne sont pas compatibles avec le mode HMAC.
diff --git a/reference/mongodb/constants.xml b/reference/mongodb/constants.xml
index 09e75a0683..a5235f8bd2 100644
--- a/reference/mongodb/constants.xml
+++ b/reference/mongodb/constants.xml
@@ -15,7 +15,7 @@
- x.y.z style du numéro de version de l'extension
+ Numéro de version de l'extension au format x.y.z
@@ -26,7 +26,7 @@
- Stabilité courante (alpha/beta/stable)
+ Stabilité actuelle (alpha/beta/stable)
diff --git a/reference/mysql/functions/mysql-connect.xml b/reference/mysql/functions/mysql-connect.xml
index a7a11a689d..77e6709be6 100644
--- a/reference/mysql/functions/mysql-connect.xml
+++ b/reference/mysql/functions/mysql-connect.xml
@@ -142,7 +142,7 @@ if (!$link) {
echo 'Connecté correctement';
mysql_close($link);
-// on se connect à localhost au port 3307
+// on se connecte à localhost au port 3307
$link = mysql_connect('127.0.0.1:3307', 'mysql_user', 'mysql_password');
if (!$link) {
die('Connexion impossible : ' . mysql_error());
@@ -158,7 +158,7 @@ mysql_close($link);
Toutes les fois que vous spécifiez "localhost" ou
- "localhost:port" en tant que serveur, le bibliothèque client
+ "localhost:port" en tant que serveur, la bibliothèque client
MySQL surchargera cela et essaiera de se connecter à un socket local
(nommé pipe sous Windows). Si vous souhaitez utiliser TCP/IP, utilisez
"127.0.0.1" au lieu de "localhost". Si la bibliothèque
diff --git a/reference/mysql/functions/mysql-fetch-array.xml b/reference/mysql/functions/mysql-fetch-array.xml
index 6b6c3116dd..02a2ed0e11 100644
--- a/reference/mysql/functions/mysql-fetch-array.xml
+++ b/reference/mysql/functions/mysql-fetch-array.xml
@@ -65,7 +65,7 @@
les indices associatifs (comme le fonctionnement de la fonction
mysql_fetch_assoc), en utilisant MYSQL_NUM,
vous ne récupérerez que les indices numériques (comme le fonctionnement
- de la fonctionmysql_fetch_row).
+ de la fonction mysql_fetch_row).
Si plusieurs colonnes portent le même nom, la dernière colonne
@@ -156,9 +156,9 @@ mysql_free_result($result);
Une chose importante à noter est que l'utilisation de
mysql_fetch_array n'est pas
- significativement plus lent que l'utilisation de
- mysql_fetch_row, alors qu'il fournit
- des valeurs significatives ajoutées.
+ significativement plus lente que l'utilisation de
+ mysql_fetch_row, alors qu'elle fournit
+ une valeur ajoutée significative.
&database.field-case;
diff --git a/reference/mysql/functions/mysql-query.xml b/reference/mysql/functions/mysql-query.xml
index eb502cd249..6cde7d7a49 100644
--- a/reference/mysql/functions/mysql-query.xml
+++ b/reference/mysql/functions/mysql-query.xml
@@ -120,7 +120,7 @@ $firstname = 'fred';
$lastname = 'fox';
// Formulation de la requête
-// C'est la meilleur façon d'exécuter une requête SQL
+// C'est la meilleure façon d'exécuter une requête SQL
// Pour plus d'exemples, voir mysql_real_escape_string()
$query = sprintf("SELECT firstname, lastname, address, age FROM friends
WHERE firstname='%s' AND lastname='%s'",
diff --git a/reference/mysql/functions/mysql-real-escape-string.xml b/reference/mysql/functions/mysql-real-escape-string.xml
index 61ae2364ec..494b9a8261 100644
--- a/reference/mysql/functions/mysql-real-escape-string.xml
+++ b/reference/mysql/functions/mysql-real-escape-string.xml
@@ -34,7 +34,7 @@
mysql_real_escape_string appelle la fonction
- mysql_escape_string
+ mysql_real_escape_string
de la bibliothèque MySQL qui ajoute un antislash aux caractères suivants :
NULL, \x00, \n,
\r, \, ',
@@ -49,7 +49,7 @@
Securité : le jeu de caractères par défaut
- Le jeu de caractèrs doit être défini soit au niveau
+ Le jeu de caractères doit être défini soit au niveau
serveur, soit avec la fonction API mysql_set_charset
pour qu'il ait un effet sur la fonction
mysql_real_escape_string. Voir
@@ -114,7 +114,7 @@ mysql_real_escape_string($password));
Exemple avec mysql_real_escape_string et la nécessité
de la présence d'une connexion
- Cet exemple démonte ce qui survient si une connexion MySQL n'est pas présente
+ Cet exemple démontre ce qui survient si une connexion MySQL n'est pas présente
lors de l'appel à la fonction.
diff --git a/reference/mysql_xdevapi/book.xml b/reference/mysql_xdevapi/book.xml
index ee74ca62f9..58d7e17ec3 100644
--- a/reference/mysql_xdevapi/book.xml
+++ b/reference/mysql_xdevapi/book.xml
@@ -12,13 +12,13 @@
&reftitle.intro;
Cette extension fournit un accès au Document Store de MySQL à travers la DevAPI X.
- La DevAPI X est une API commune fournie par plusieurs MySQL Connectors fournissant un
+ La DevAPI X est une API commune fournie par plusieurs connecteurs MySQL fournissant un
accès facile aux tables relationnelles aussi bien qu'aux collections de documents,
qui sont représentés en JSON, depuis une API avec des opérations de style CRUD.
La DevAPI de X utilise le protocole X, le protocole nouvelle génération client-serveur
- de MySQL serveur 8.0.
+ du serveur MySQL 8.0.
Pour des informations générales sur MySQL Document Store, référez-vous au chapitre
diff --git a/reference/mysql_xdevapi/setup.xml b/reference/mysql_xdevapi/setup.xml
index ae2311590d..56d34e0b16 100644
--- a/reference/mysql_xdevapi/setup.xml
+++ b/reference/mysql_xdevapi/setup.xml
@@ -8,7 +8,7 @@
&reftitle.required;
Cette extension nécessite un serveur MySQL 8+ avec le plugin X
- ctivé (par défaut).
+ activé (par défaut).
Les bibliothèques prérequises pour compiler cette extension sont :
diff --git a/reference/mysqlinfo/concepts.xml b/reference/mysqlinfo/concepts.xml
index 0695e58da6..aec1901fc1 100644
--- a/reference/mysqlinfo/concepts.xml
+++ b/reference/mysqlinfo/concepts.xml
@@ -14,9 +14,9 @@
Les requêtes utilisent par défaut le mode Mémoire tampon.
Cela signifie que le résultat des requêtes est immédiatement
- transféré du serveur MySQL à PHP et sont ensuite conservé dans la mémoire
+ transférés du serveur MySQL à PHP et sont ensuite conservés dans la mémoire
du processus PHP. Cela permet des opérations complémentaires
- comme compter le nombre de résultat, et déplacer le
+ comme compter le nombre de résultats, et déplacer le
pointeur de résultat actuel. Il permet également d'exécuter des
requêtes supplémentaires sur la même connexion tout en travaillant
sur le jeu de résultats. L'inconvénient de la mise en mémoire
@@ -27,14 +27,14 @@
libérés, ce qui arrive de manière automatique à la fin du
processus. La terminologie "store result" est également utilisée
avec le mode mémoire tampon, vu que la totalité des résultats
- est stocké à la fois.
+ est stockée en une seule fois.
Lorsque vous utilisez libmysqlclient comme bibliothèque, la limite
mémoire de PHP ne comptera pas la mémoire utilisée pour les
- jeux de résultats à moins que les données sont lues dans les
+ jeux de résultats à moins que les données ne soient lues dans les
variables PHP. Avec mysqlnd, la mémoire utilisée comprendra
le jeu de résultats complet.
@@ -46,7 +46,7 @@
que les données du serveur MySQL soient récupérées. Cela utilise moins de mémoire
côté PHP, mais peut augmenter la charge
sur le serveur. À moins que le jeu de résultats complet ait été
- récupéré depuis le serveur, aucune autre requête peut être
+ récupéré depuis le serveur, aucune autre requête ne peut être
envoyée sur la même connexion. Les requêtes n'utilisant pas la
mémoire tampon peuvent également faire référence à un
"use result". Une fois que toutes les lignes de l'ensemble de résultats
@@ -54,7 +54,7 @@
- Suivant ces caractéristiques, Les requêtes non mises en mémoire tampon doivent être utilisées uniquement
+ Suivant ces caractéristiques, les requêtes non mises en mémoire tampon doivent être utilisées uniquement
lorsqu'on s'attend à obtenir un grand ensemble de résultats qui sera traité séquentiellement.
Les requêtes non mises en mémoire tampon présentent plusieurs pièges qui les rendent plus
difficiles à utiliser, par exemple le nombre de lignes dans l'ensemble de résultats n'est pas connu
@@ -161,9 +161,9 @@ $mysqli->set_charset('UTF-8');
Confusion possible avec UTF-8
Dû au fait que les noms des jeux de caractères dans MySQL ne contiennent pas de tiret,
- la chaîne "utf8" est correcte dans MySQL et définira le jeu de caractère en UTF-8.
+ la chaîne "utf8" est correcte dans MySQL et définira le jeu de caractères en UTF-8.
La chaîne "UTF-8" n'est pas correcte, et utiliser "utf-8" échouera à modifier le
- jeu de caractère.
+ jeu de caractères.
diff --git a/reference/mysqlinfo/set.xml b/reference/mysqlinfo/set.xml
index 1d9c476874..ee8b5e42fe 100644
--- a/reference/mysqlinfo/set.xml
+++ b/reference/mysqlinfo/set.xml
@@ -13,7 +13,7 @@
Les différences et les fonctionnalités des extensions MySQL
- sont décrites dans la résumé de cette section.
+ sont décrites dans le résumé de cette section.
Les extensions listées prennent en charge le protocole MySQL.
@@ -92,7 +92,7 @@
Dans la documentation MySQL, le terme connecteur
se réfère à la partie du programme qui autorise votre application
à se connecter au serveur de base de données MySQL. MySQL fournit
- des connecteurs pour bons nombres de langages, incluant PHP.
+ des connecteurs pour bon nombre de langages, incluant PHP.
@@ -125,8 +125,8 @@
Par le biais d'un exemple, la couche d'abstraction de base de données
PHP Data Objects (PDO) peut
- utiliser un des drivers spécifiques au base de données. Un de ces drivers
- disponible est le driver PDO MYSQL, qui fournit une interface
+ utiliser un des drivers spécifiques au base de données. Un des drivers
+ disponibles est le driver PDO MYSQL, qui fournit une interface
avec le serveur MySQL.
@@ -146,8 +146,8 @@
extension. Le code PHP est constitué
d'un cœur, avec des extensions optionnelles permettant
d'étendre les fonctionnalités du cœur. Les extensions PHP relatives
- aux bases de données, comme l'extension mysqli
- qui est implémentée en utilisant le framework des extensions PHP.
+ aux bases de données, comme l'extension mysqli,
+ sont implémentées en utilisant le framework des extensions PHP.
@@ -309,7 +309,7 @@ echo htmlentities($row['_message']);
Choisir une bibliothèque
- Les extensions PHP mysqli et PDO_MySQL sont des enveloppes légeres d'une
+ Les extensions PHP mysqli et PDO_MySQL sont des enveloppes légères d'une
bibliothèque cliente C. Les extensions peuvent soit utiliser la bibliothèque
mysqlnd, soit la bibliothèque libmysqlclient.
Le choix de la bibliothèque se fait au moment de la compilation.
@@ -320,7 +320,7 @@ echo htmlentities($row['_message']);
la mise en cache de requêtes, qui ne sont pas disponibles avec libmysqlclient,
aussi, nous vous recommandons d'utiliser la bibliothèque interne mysqlnd.
Voir la documentation de mysqlnd
- pour plus d'informations,ainsi qu'une liste des fonctionnalités qu'elle offre.
+ pour plus d'informations, ainsi qu'une liste des fonctionnalités qu'elle offre.
Commande de configuration pour l'utilisation de mysqlnd ou de libmysqlclient
@@ -399,8 +399,8 @@ echo htmlentities($row['District']);
Cycle de vie
- Pas de fin d'annoncé
- Pas de fin d'annoncé
+ Pas de fin annoncée
+ Pas de fin annoncéeCompilé par défaut (pour toutes les extensions MySQL)
diff --git a/reference/oauth/constants.xml b/reference/oauth/constants.xml
index fb40d60d52..5eb77abba8 100644
--- a/reference/oauth/constants.xml
+++ b/reference/oauth/constants.xml
@@ -7,9 +7,9 @@
&extension.constants;
La plupart de ces constantes impliquent des problèmes décrits dans la documentation
- officiels de rapport de problèmes
+ officielle de rapport de problèmes
d'OAuth. Notez cependant que les noms des constantes sont spécifiques à PHP, malgré
- le fait que le schéma de nommage est similaire.
+ le fait que le schéma de nommage soit similaire.
@@ -166,7 +166,7 @@
- Utilisé par la méthode Oauth::setReqeustEngine
+ Utilisé par la méthode Oauth::setRequestEngine
pour définir le moteur de Curl,
à l'opposé de OAUTH_REQENGINE_STREAMS pour
les flux PHP.
@@ -216,9 +216,9 @@
- oauth_consumer_key est temporairement innaceptable
+ oauth_consumer_key est temporairement inacceptable
par le prestataire de service. Par exemple, le prestataire de service
- surcharge le consommateur.
+ limite le débit du consommateur.
@@ -252,8 +252,8 @@
- oauth_token a été consommé. Elle ne peut plus être utilisée
- car elle a déjà été utilisée dans une ou plusieurs précédentes requêtes.
+ oauth_token a été consommé. Il ne peut plus être utilisé
+ car il a déjà été utilisé dans une ou plusieurs précédentes requêtes.
@@ -275,7 +275,7 @@
- oauth_token a été révoquée et ne pourra plus être acceptée.
+ oauth_token a été révoqué et ne pourra plus être accepté.
diff --git a/reference/oauth/oauth/fetch.xml b/reference/oauth/oauth/fetch.xml
index 26252e8f15..b7fa257b50 100644
--- a/reference/oauth/oauth/fetch.xml
+++ b/reference/oauth/oauth/fetch.xml
@@ -45,14 +45,14 @@
http_method
- Une des constantes OAUTH constants
+ Une des constantes constantes OAUTH
OAUTH_HTTP_METHOD_*, incluant
GET, POST, PUT, HEAD, ou DELETE.
HEAD (OAUTH_HTTP_METHOD_HEAD) peut être utile
pour découvrir des informations avant la demande (si les autorisations
- OAuth sont dans l'en-tête Authorization header).
+ OAuth sont dans l'en-tête Authorization).
diff --git a/reference/oci8/configure.xml b/reference/oci8/configure.xml
index f3cc620d6e..1c85facb41 100755
--- a/reference/oci8/configure.xml
+++ b/reference/oci8/configure.xml
@@ -389,7 +389,7 @@ extension=oci8.so
Avec les bibliothèques Oracle 12c (ou ultérieures), décommentez l'une des
lignes suivantes dans votre fichier &php.ini; extension=php_oci8_12c.dll
ou extension=php_oci8_11g.dll, ou bien
- extension=php_oci8.dll. Seule une de ces DLLs doivt
+ extension=php_oci8.dll. Seule une de ces DLL doit
être active au même moment. Les DLLs avec des versions supérieures peuvent
contenir plus de fonctionnalités. Toutes les DLLs peuvent ne pas être disponibles
pour toutes les versions de PHP. Assurez-vous que l'option
@@ -409,7 +409,7 @@ extension=oci8.so
Oracle sont correctement définies pour l'utilisateur exécutant le serveur Web.
Si votre serveur Web est automatiquement démarré au démarrage de votre serveur,
alors assurez-vous également de la bonne configuration de la variable
- d'environnement utilisé à ce moment ci.
+ d'environnement utilisée à ce moment-ci.
@@ -418,7 +418,7 @@ extension=oci8.so
Oracle sont chargées et initialisées avant l'exécution de votre script.
Les variables définies avec putenv pourraient
ainsi entrer en conflit et provoquer aussi bien des crashs que des
- comportements totalement inattendu. Des fonctions peuvent réagir
+ comportements totalement inattendus. Des fonctions peuvent réagir
normalement, d'autres peuvent provoquer des erreurs. Les variables
doivent être définies avant le démarrage du
serveur.
@@ -442,7 +442,7 @@ extension=oci8.so
elle doit contenir toutes les variables définies.
- Les variables qui doivent vous êtes nécessaires sont
+ Les variables qui pourraient vous être nécessaires sont
inclues dans la table suivante. Reportez-vous à la documentation Oracle
pour plus d'informations sur toutes les variables.
@@ -460,7 +460,7 @@ extension=oci8.so
Chemin vers le dossier contenant le logiciel de base de données
Oracle. Ne définissez pas cette variable si vous utilisez le client
- Oracle Instant. En effet, elle n'est pas nécessaire mais peu causer
+ Oracle Instant. En effet, elle n'est pas nécessaire mais peut causer
des problèmes lors de l'installation.
@@ -484,8 +484,8 @@ extension=oci8.so
Cette variable n'est pas nécessaire si les bibliothèques
sont localisées par un mécanisme de recherche différent, comme
avec ldconfig ou
- avec LD_PRELOADau lieu
- de LD_LIBRARY_PATH..
+ avec LD_PRELOAD au lieu
+ de LD_LIBRARY_PATH.
@@ -530,7 +530,7 @@ extension=oci8.so
En cas de problème
Le problème le plus courant lors de l'installation d'OCI8 est
- d'avoir mal configuré le jeu de variables d'environnement correctement.
+ de ne pas avoir configuré correctement les variables d'environnement.
C'est un problème typique lorsque vous recevez un message
d'erreur lors de l'utilisation des fonctions
oci_connect ou oci_pconnect.
@@ -554,7 +554,7 @@ extension=oci8.so
version d'Oracle.
- Un utilitaire permettent d'examiner les bibliothèques recherchées
+ Un utilitaire permettant d'examiner les bibliothèques recherchées
et chargées peut vous aider quant à la résolution de ce genre
de problème, tout particulièrement sous Windows.
@@ -579,7 +579,7 @@ extension=oci8.so
- Si la bibliothèque libpthread n'est pas listé, réinstallez Apache :
+ Si la bibliothèque libpthread n'est pas listée, réinstallez Apache :
diff --git a/reference/oci8/constants.xml b/reference/oci8/constants.xml
index 0e730fad56..ab849435b7 100755
--- a/reference/oci8/constants.xml
+++ b/reference/oci8/constants.xml
@@ -149,7 +149,7 @@
OCI_SYSDBA
Utilisé avec oci_connect pour se connecter comme SYSDBA
- utilisant des créances externes (oci8.privileged_connect
doit être activé pour utiliser cette constante).
@@ -158,7 +158,7 @@
OCI_SYSOPER
Utilisé avec oci_connect pour se connecter comme SYSOPER
- utilisant des créances externes (oci8.privileged_connect
doit être activé pour utiliser cette constante).
@@ -436,7 +436,7 @@
- OCI_DTYPE_FILEE
+ OCI_DTYPE_FILE
Cette option indique à oci_new_descriptor
d'initialiser un nouveau pointeur FILE.
@@ -445,15 +445,15 @@
OCI_DTYPE_LOB
- This flag tells oci_new_descriptor to
- initialize a new LOB descriptor.
+ Cette option indique à oci_new_descriptor
+ d'initialiser un nouveau descripteur LOB.
OCI_DTYPE_ROWID
Cette option indique à oci_new_descriptor
- d'initialiser un nouveau pointeur LOB.
+ d'initialiser un nouveau descripteur ROWID.
diff --git a/reference/oci8/functions/oci-execute.xml b/reference/oci8/functions/oci-execute.xml
index ab46b9ddd1..864e0ad02d 100644
--- a/reference/oci8/functions/oci-execute.xml
+++ b/reference/oci8/functions/oci-execute.xml
@@ -28,7 +28,7 @@
oci_fetch_array.
- Chaque requête analysé peut être exécutée plusieurs fois, inutile
+ Chaque requête analysée peut être exécutée plusieurs fois, inutile
donc de les analyser de nouveau. Ceci est pratique pour des requêtes
de type INSERT lorsque des données y sont liées
grâce à la fonction oci_bind_by_name.
@@ -266,7 +266,7 @@ for ($i = 1; $i <= oci_num_fields($stid); ++$i) {
À cause du fait que la fonction oci_execute envoie
généralement la requête à la base de données, la fonction
oci_execute peut identifier les erreurs de syntaxe
- de la requête que la fonction oci_parse aurait pû
+ de la requête que la fonction oci_parse aurait pu
ne pas détecter.
diff --git a/reference/phar/Phar/extractTo.xml b/reference/phar/Phar/extractTo.xml
index 6dfc410099..df137378ff 100644
--- a/reference/phar/Phar/extractTo.xml
+++ b/reference/phar/Phar/extractTo.xml
@@ -26,7 +26,7 @@
répertoire, soit un tableau de noms de fichiers et de répertoires à extraire.
Par défaut, cette méthode n'écrasant pas les fichiers existants, le troisième
paramètre peut être passé à &true; pour activer l'écrasement de fichiers.
- Cette méthode est identique à ZipArchive::extractTo.
+ Cette méthode est similaire à ZipArchive::extractTo.
diff --git a/reference/phar/constants.xml b/reference/phar/constants.xml
index b063878913..9e4729cdcb 100644
--- a/reference/phar/constants.xml
+++ b/reference/phar/constants.xml
@@ -140,7 +140,7 @@
0x0010signature avec une paire de clé privée/publique OpenSSL. C'est une véritable
- signature à clé asymétrique/
+ signature à clé asymétrique.
diff --git a/reference/phpdbg/book.xml b/reference/phpdbg/book.xml
index cdd9d09a76..0ee04a1bc8 100644
--- a/reference/phpdbg/book.xml
+++ b/reference/phpdbg/book.xml
@@ -47,7 +47,7 @@
- Option en ligne de commande
+ Options en ligne de commande
diff --git a/reference/phpdbg/functions/phpdbg-exec.xml b/reference/phpdbg/functions/phpdbg-exec.xml
index 4b82340a8d..93a3ffc62c 100644
--- a/reference/phpdbg/functions/phpdbg-exec.xml
+++ b/reference/phpdbg/functions/phpdbg-exec.xml
@@ -39,8 +39,7 @@
&reftitle.returnvalues;
- Si le contexte d'exécution a été défini avec succès, ce contexte sera
- retourné.
+ Si le contexte d'exécution a été défini précédemment, il sera retourné.
Si le contexte d'exécution n'a pas été défini, &true; sera retourné.
Si une erreur est survenue pendant la définition du contexte, &false;
sera retourné et une erreur de niveau E_WARNING sera
diff --git a/reference/recode/book.xml b/reference/recode/book.xml
index 807df852ab..e424943a9b 100644
--- a/reference/recode/book.xml
+++ b/reference/recode/book.xml
@@ -23,9 +23,9 @@
- Cette extension est délié et déplacer dans
+ Cette extension a été retirée et déplacée dans
PECL à partir de PHP 7.4.0.
- Considérer l'utilisation des extensions
+ Considérez l'utilisation des extensions
Chaînes Multioctets ou
iconv à la place.
diff --git a/reference/ssh2/functions/ssh2-connect.xml b/reference/ssh2/functions/ssh2-connect.xml
index e5afa5a0d6..71acf8cc0b 100644
--- a/reference/ssh2/functions/ssh2-connect.xml
+++ b/reference/ssh2/functions/ssh2-connect.xml
@@ -90,7 +90,7 @@
client_to_server
Tableau associatif contenant les codes des méthodes de chiffrement,
- de compression et de messages d'identification (MAC) préférés
+ de compression et de code d'authentification de message (MAC) préférés
pour l'envoi des messages depuis le client vers le serveur.
@@ -99,7 +99,7 @@
server_to_client
Tableau associatif contenant les codes des méthodes de chiffrement,
- de compression et de messages d'identification (MAC) préférés
+ de compression et de code d'authentification de message (MAC) préférés
pour l'envoi des messages depuis le serveur vers le client.
@@ -224,7 +224,7 @@
macerror
Nom de la fonction à appeler lorsqu'un paquet est reçu mais que
- le code message d'identification échoue. Si la fonction de rappel
+ le code d'authentification de message échoue. Si la fonction de rappel
retourne &true;, l'erreur sera ignorée, sinon, la connexion se terminera.
bool macerror_cb($packet)
diff --git a/reference/ssh2/functions/ssh2-sftp-stat.xml b/reference/ssh2/functions/ssh2-sftp-stat.xml
index 1fc542fdc7..58fcd6a19b 100644
--- a/reference/ssh2/functions/ssh2-sftp-stat.xml
+++ b/reference/ssh2/functions/ssh2-sftp-stat.xml
@@ -5,7 +5,7 @@
ssh2_sftp_stat
- Statue un fichier sur un système de fichiers distant
+ Lit les informations d'un fichier sur un système de fichiers distant
@@ -16,7 +16,7 @@
stringpath
- Statue un fichier sur un système de fichiers distant, en suivant les liens
+ Lit les informations d'un fichier sur un système de fichiers distant, en suivant les liens
symboliques.
diff --git a/reference/uodbc/book.xml b/reference/uodbc/book.xml
index 6d6f384a94..74eaf604b5 100644
--- a/reference/uodbc/book.xml
+++ b/reference/uodbc/book.xml
@@ -30,9 +30,7 @@
Mis à part pour IODBC, il n'y a pas d'ODBC utilisé lors des connexions
- aux bases de données ci-dessus. Les fonctions que vous utiliserez portent
- des noms évocateurs, et utilisent les mêmes syntaxes que leurs cousines
- d'ODBC. L'exception à ceci est iODBC. En compilant PHP avec le
+ aux bases de données ci-dessus. Les fonctions que vous utiliserez partagent les mêmes noms et syntaxes que les fonctions ODBC. L'exception à ceci est iODBC. En compilant PHP avec le
support iODBC, vous pourrez utiliser n'importe quel pilote
compatible ODBC avec vos applications PHP. Plus d'informations
sur iODBC, ainsi qu'un HOWTO (en anglais), sont disponibles sur
diff --git a/reference/uodbc/functions/odbc-connect.xml b/reference/uodbc/functions/odbc-connect.xml
index d0bc7bf46b..17ae1464f0 100644
--- a/reference/uodbc/functions/odbc-connect.xml
+++ b/reference/uodbc/functions/odbc-connect.xml
@@ -28,7 +28,7 @@
other than a single select statement in it", ce qui signifie :
"Impossible de créer un pointeur de résultat dans une procédure
enregistrée qui est réduite à une simple sélection
- (SELECT)". Utiliser l'option SQL_CUR_USE_ODBC permet d'éviter
+ (SELECT)". Utiliser l'option SQL_CUR_USE_ODBC peut permettre d'éviter
cette erreur. De plus, certains pilotes ne supportent pas le paramètre
optionnel de numéro de ligne dans odbc_fetch_row.
SQL_CUR_USE_ODBC peut aussi permettre de résoudre ces problèmes.
diff --git a/reference/uodbc/functions/odbc-exec.xml b/reference/uodbc/functions/odbc-exec.xml
index 7306a40378..de00401067 100644
--- a/reference/uodbc/functions/odbc-exec.xml
+++ b/reference/uodbc/functions/odbc-exec.xml
@@ -17,7 +17,7 @@
odbc_exec envoie une commande SQL
à la source de données ODBC, représentée par
- connection_id.
+ odbc.
diff --git a/reference/wddx/book.xml b/reference/wddx/book.xml
index 2c05ccc1eb..6e3787934c 100644
--- a/reference/wddx/book.xml
+++ b/reference/wddx/book.xml
@@ -13,7 +13,7 @@
&reftitle.intro;
- Cette extension est OBSOLÈTE et DÉGROUPÉ
+ Cette extension est OBSOLÈTE et RETIRÉE
à partir de PHP 7.4.0.
@@ -25,9 +25,9 @@
Ne passez pas de données utilisateurs qui ne sont pas de confiance à la fonction
wddx_deserialize. La désérialisation peut conduire au chargement
- et à l'exécution des données lors de l'instansiation de l'objet et de son autochargement,
+ et à l'exécution des données lors de l'instanciation de l'objet et de son autochargement,
aussi, un utilisateur malicieux peut être capable d'exploiter ce comportement.
- Utiliser donc des données sécurisées avec un format de données comme JSON
+ Utilisez donc un format sécurisé et standardisé d'échange de données tel que JSON
(via la fonction json_decode et la fonction
json_encode) si vous devez passer les données sérialisées à l'utilisateur.
diff --git a/reference/xmlrpc/book.xml b/reference/xmlrpc/book.xml
index 19d6b3e3c3..1cd37f51e7 100644
--- a/reference/xmlrpc/book.xml
+++ b/reference/xmlrpc/book.xml
@@ -11,11 +11,11 @@
&reftitle.intro;
- Ces fonctions servent à écrire sur les serveurs XML-RPC,
- mais aussi sur les clients. Vous pouvez trouver plus
+ Ces fonctions servent à écrire des serveurs et des clients XML-RPC.
+ Vous pouvez trouver plus
d'informations sur XML-RPC sur
&url.xmlrpc;, et plus de
- documentations sur cette extension et ces fonctions, sur
+ documentation sur cette extension et ses fonctions, sur
&url.xmlrpc-epi;.
&warn.experimental;
From 8ba29f4032e1caf57cac65ec87f09d214069f54b Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 14:53:25 +0100
Subject: [PATCH 83/96] =?UTF-8?q?fix(componere):=20corriger=20faute=20de?=
=?UTF-8?q?=20frappe=20m=C3=A9thod=C3=A9=20->=20m=C3=A9thode?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/componere/componere/abstract/definition/addmethod.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/reference/componere/componere/abstract/definition/addmethod.xml b/reference/componere/componere/abstract/definition/addmethod.xml
index b921f48e4e..c3ac430f46 100644
--- a/reference/componere/componere/abstract/definition/addmethod.xml
+++ b/reference/componere/componere/abstract/definition/addmethod.xml
@@ -4,7 +4,7 @@
Componere\Abstract\Definition::addMethod
- Ajoute une méthodé
+ Ajoute une méthode
From c9f4b791eaabdcd338fff06bf3d9a89580e96980 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 15:11:41 +0100
Subject: [PATCH 84/96] fix(mysqli): sync mysqli_driver.xml avec EN - ajout
changelog, warning reconnect, typo
---
reference/mysqli/mysqli_driver.xml | 50 ++++++++++++++++++++++++++++--
1 file changed, 48 insertions(+), 2 deletions(-)
diff --git a/reference/mysqli/mysqli_driver.xml b/reference/mysqli/mysqli_driver.xml
index a4a037e742..9e20030396 100644
--- a/reference/mysqli/mysqli_driver.xml
+++ b/reference/mysqli/mysqli_driver.xml
@@ -99,7 +99,12 @@
reconnect
- Permet ou non la reconnexion (voir la directive INI mysqli.reconnect)
+ Permet ou non la reconnexion (voir la directive INI mysqli.reconnect)
+
+ Cette propriété a été supprimée
+ ainsi que la directive INI mysqli.reconnect à partir de PHP 8.2.0.
+
+
@@ -108,7 +113,7 @@
Définit à MYSQLI_REPORT_OFF,
MYSQLI_REPORT_ALL ou n'importe quelle combinaison de
- MYSQLI_REPORT_STRICT (lane des exceptions lors d'erreurs),
+ MYSQLI_REPORT_STRICT (lance des exceptions lors d'erreurs),
MYSQLI_REPORT_ERROR (rapporte les erreurs) et
MYSQLI_REPORT_INDEX (erreurs sur les index).
Voir aussi mysqli_report.
@@ -119,6 +124,47 @@
+
+ &reftitle.changelog;
+
+
+
+
+ &Version;
+ &Description;
+
+
+
+
+ 8.2.0
+
+ mysqli_driver::$reconnect a été supprimée.
+
+
+
+ 8.1.0
+
+ mysqli_driver::$driver_version est obsolète.
+
+
+
+ 8.0.0
+
+ mysqli_driver::$embedded a été supprimée.
+
+
+
+ 7.4.0
+
+ mysqli_driver::embedded_server_start et
+ mysqli_driver:embedded_server_end ont été supprimées.
+
+
+
+
+
+
+
&reference.mysqli.entities.mysqli-driver;
From 387e0c247431708a49f8cfe5a00dc7f6af2947c2 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 15:13:30 +0100
Subject: [PATCH 85/96] =?UTF-8?q?fix(mongodb):=20corriger=20fautes=20de=20?=
=?UTF-8?q?fran=C3=A7ais=20dans=20cursor/isdead.xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/mongodb/mongodb/driver/cursor/isdead.xml | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/reference/mongodb/mongodb/driver/cursor/isdead.xml b/reference/mongodb/mongodb/driver/cursor/isdead.xml
index bac08720f2..ad38e2a878 100644
--- a/reference/mongodb/mongodb/driver/cursor/isdead.xml
+++ b/reference/mongodb/mongodb/driver/cursor/isdead.xml
@@ -27,11 +27,11 @@
satisfait l'une des conditions ci-dessous:
- Le lot actuel a était complètement itéré et l'ID du
+ Le lot actuel a été complètement itéré et l'ID du
curseur est zéro (c.à.d. il est impossible de délivrer un getMore).
- Une erreur a été rencontré lors de l'itération du curseur.
+ Une erreur a été rencontrée lors de l'itération du curseur.Le curseur a atteint sa limite configurée.
@@ -41,13 +41,13 @@
avoir plus de données disponibles sont les suivants :
- Il y a des documents supplémentaires dans le lot courrant, qui sont tamponée
- du côté client. Itérer récupèrera un document du tampon local.
+ Il y a des documents supplémentaires dans le lot courant, qui sont tamponnés
+ du côté client. Itérer récupérera un document du tampon local.
- Il n'y a pas de documents supplémentairesdans le lot courrant (c.à.d.
- tampon local), mais le l'ID du curseur est différent de zéro. Itérer
- solliicitera plus de documents depuis le serveur via une opération
+ Il n'y a pas de documents supplémentaires dans le lot courant (c.à.d.
+ tampon local), mais l'ID du curseur est différent de zéro. Itérer
+ sollicitera plus de documents depuis le serveur via une opération
getMore,
qui retournera ou pas des résultats supplémentaires et / ou indiquera que
le curseur a été fermé sur le serveur en retournant zéro pour son ID.
From 80d7faf9dd1ac293e06b2b2410a57381dbc3cdaa Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 15:14:22 +0100
Subject: [PATCH 86/96] =?UTF-8?q?fix:=20corriger=20fautes=20d'orthographe?=
=?UTF-8?q?=20courrant->courant,=20r=C3=A9cup=C3=A8rera->r=C3=A9cup=C3=A9r?=
=?UTF-8?q?era?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
reference/com/compersisthelper/getcurfilename.xml | 4 ++--
reference/hrtime/hrtime-performancecounter/getticks.xml | 2 +-
reference/mongodb/bson/iterator/current.xml | 4 ++--
reference/mongodb/bson/iterator/key.xml | 4 ++--
reference/rar/rararchive/getentry.xml | 2 +-
5 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/reference/com/compersisthelper/getcurfilename.xml b/reference/com/compersisthelper/getcurfilename.xml
index 3708156abe..c7690cd470 100644
--- a/reference/com/compersisthelper/getcurfilename.xml
+++ b/reference/com/compersisthelper/getcurfilename.xml
@@ -14,7 +14,7 @@
- Renvoie le nom du fichier courrant associé à l'objet.
+ Renvoie le nom du fichier courant associé à l'objet.
@@ -26,7 +26,7 @@
&reftitle.returnvalues;
- Renvoie le nom du fichier courrant associé à l'objet.
+ Renvoie le nom du fichier courant associé à l'objet.
diff --git a/reference/hrtime/hrtime-performancecounter/getticks.xml b/reference/hrtime/hrtime-performancecounter/getticks.xml
index 04bcd4966b..85c7486a19 100644
--- a/reference/hrtime/hrtime-performancecounter/getticks.xml
+++ b/reference/hrtime/hrtime-performancecounter/getticks.xml
@@ -5,7 +5,7 @@
HRTime\PerformanceCounter::getTicks
- Ticks courrant depuis le système
+ Ticks courant depuis le système
diff --git a/reference/mongodb/bson/iterator/current.xml b/reference/mongodb/bson/iterator/current.xml
index 277cbb6dee..a7347746a5 100644
--- a/reference/mongodb/bson/iterator/current.xml
+++ b/reference/mongodb/bson/iterator/current.xml
@@ -4,7 +4,7 @@
MongoDB\BSON\Iterator::current
- Renvoie l'élément actuel/courrant
+ Renvoie l'élément actuel
@@ -23,7 +23,7 @@
&reftitle.returnvalues;
- Renvoie la valeur de l'élément actuel/courrant.
+ Renvoie la valeur de l'élément actuel.
diff --git a/reference/mongodb/bson/iterator/key.xml b/reference/mongodb/bson/iterator/key.xml
index 70acdc1aeb..769ca21424 100644
--- a/reference/mongodb/bson/iterator/key.xml
+++ b/reference/mongodb/bson/iterator/key.xml
@@ -4,7 +4,7 @@
MongoDB\BSON\Iterator::key
- Renvoie la clé de l'élément actuel/courrant
+ Renvoie la clé de l'élément actuel
@@ -23,7 +23,7 @@
&reftitle.returnvalues;
- Renvoie la clé de l'élément actuel/courrant. Lors de l'itération d'un document BSON, la
+ Renvoie la clé de l'élément actuel. Lors de l'itération d'un document BSON, la
clé sera toujours une string. Lors de l'itération d'un tableau BSON, la
clé sera un int.
diff --git a/reference/rar/rararchive/getentry.xml b/reference/rar/rararchive/getentry.xml
index d1b1a0a74f..3e9005fef8 100644
--- a/reference/rar/rararchive/getentry.xml
+++ b/reference/rar/rararchive/getentry.xml
@@ -32,7 +32,7 @@
Notez qu'une archive RAR peut avoir plusieurs entrées portant le même nom ;
- cette méthode ne récupèrera que la première.
+ cette méthode ne récupérera que la première.
From 5d25f26db4559022ca47db490d16de23da10664f Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 15:19:12 +0100
Subject: [PATCH 87/96] fix: sync methodsynopsis et tags avec EN - 14 fichiers
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- imap_delete: type retour bool -> true
- IntlDateFormatter::setTimeZone: retirer null du union type
- intl_get_error_message: type retour int -> string
- MongoDB\BSON\Timestamp::__toString: type ReturnType -> string, préfixe MongoDB\
- mysqli_stmt more-results/next-result: mysql_stmt -> mysqli_stmt
- mysqli_stmt::prepare: type retour mixed -> bool
- pg_result_seek: type resource -> PgSql\Result
- Threaded::shift: type retour bool -> mixed
- ReflectionProperty::setValue: corriger paramètres synopsis
- gmp/book.xml: simplifier warning comme EN
- die.xml: literal -> function pour exit
- exit.xml: literal -> function pour exit
- print.xml: literal -> function pour echo
---
reference/gmp/book.xml | 8 +-------
reference/imap/functions/imap-delete.xml | 2 +-
reference/intl/dateformatter/settimezone.xml | 2 +-
reference/intl/intlbreakiterator/geterrormessage.xml | 2 +-
reference/misc/functions/die.xml | 2 +-
reference/misc/functions/exit.xml | 2 +-
reference/mongodb/bson/timestamp/tostring.xml | 2 +-
reference/mysqli/mysqli_stmt/more-results.xml | 2 +-
reference/mysqli/mysqli_stmt/next-result.xml | 2 +-
reference/mysqli/mysqli_stmt/prepare.xml | 2 +-
reference/pgsql/functions/pg-result-seek.xml | 2 +-
reference/pthreads/threaded/shift.xml | 2 +-
reference/reflection/reflectionproperty/setvalue.xml | 4 ++--
reference/strings/functions/print.xml | 2 +-
14 files changed, 15 insertions(+), 21 deletions(-)
diff --git a/reference/gmp/book.xml b/reference/gmp/book.xml
index f1aefd6f25..e2b18f8170 100644
--- a/reference/gmp/book.xml
+++ b/reference/gmp/book.xml
@@ -39,13 +39,7 @@
- Si vous voulez explicitement spécifier un entier de grande taille,
- spécifiez-le sous forme de chaîne. Si vous ne le faites pas, PHP va
- interpréter votre entier et le transformer en une représentation
- interne, qui vous fera sûrement perdre de la précision, avant même
- que GMP n'entre en jeu.
-
- Les entiers volumineux doivent être spécifiés en tant que chaînes -
+ Les entiers volumineux doivent être spécifiés en tant que chaînes -
autrement, PHP les force en &float;, entraînant une perte de précision.
diff --git a/reference/imap/functions/imap-delete.xml b/reference/imap/functions/imap-delete.xml
index e36c6b5d2c..02ae94ec42 100644
--- a/reference/imap/functions/imap-delete.xml
+++ b/reference/imap/functions/imap-delete.xml
@@ -9,7 +9,7 @@
&reftitle.description;
- boolimap_delete
+ trueimap_deleteIMAP\Connectionimapstringmessage_numsintflags0
diff --git a/reference/intl/dateformatter/settimezone.xml b/reference/intl/dateformatter/settimezone.xml
index f0e7bc2f03..dd0ccca121 100644
--- a/reference/intl/dateformatter/settimezone.xml
+++ b/reference/intl/dateformatter/settimezone.xml
@@ -15,7 +15,7 @@
&style.oop;
- publicboolnullIntlDateFormatter::setTimeZone
+ publicboolIntlDateFormatter::setTimeZoneIntlTimeZoneDateTimeZonestringnulltimezone
diff --git a/reference/intl/intlbreakiterator/geterrormessage.xml b/reference/intl/intlbreakiterator/geterrormessage.xml
index 7b1f66a189..7e10fef2c2 100644
--- a/reference/intl/intlbreakiterator/geterrormessage.xml
+++ b/reference/intl/intlbreakiterator/geterrormessage.xml
@@ -17,7 +17,7 @@
&style.procedural;:
- intintl_get_error_message
+ stringintl_get_error_message
diff --git a/reference/misc/functions/die.xml b/reference/misc/functions/die.xml
index d44d170919..8000f82658 100644
--- a/reference/misc/functions/die.xml
+++ b/reference/misc/functions/die.xml
@@ -6,7 +6,7 @@
die
- Alias de la fonction exit
+ &Alias; exit
diff --git a/reference/misc/functions/exit.xml b/reference/misc/functions/exit.xml
index 5115566a29..c74bfe5a05 100644
--- a/reference/misc/functions/exit.xml
+++ b/reference/misc/functions/exit.xml
@@ -19,7 +19,7 @@
Termine le script courant.
Les fonctions d'extinction
et les destructeurs d'objets
- seront toujours exécutés même si exit est appelé.
+ seront toujours exécutés même si exit est appelé.
Cependant, les blocs &finally; ne sont jamais exécutés.
diff --git a/reference/mongodb/bson/timestamp/tostring.xml b/reference/mongodb/bson/timestamp/tostring.xml
index f0910fce56..3fc8c284d0 100644
--- a/reference/mongodb/bson/timestamp/tostring.xml
+++ b/reference/mongodb/bson/timestamp/tostring.xml
@@ -12,7 +12,7 @@
&reftitle.description;
- finalpublicReturnTypeBSON\Timestamp::__toString
+ finalpublicstringMongoDB\BSON\Timestamp::__toString
diff --git a/reference/mysqli/mysqli_stmt/more-results.xml b/reference/mysqli/mysqli_stmt/more-results.xml
index da7964cdd6..bf154782e7 100644
--- a/reference/mysqli/mysqli_stmt/more-results.xml
+++ b/reference/mysqli/mysqli_stmt/more-results.xml
@@ -18,7 +18,7 @@
&style.procedural;:boolmysqli_stmt_more_results
- mysql_stmtstatement
+ mysqli_stmtstatement
Vérifie s'il y a encore des résultats depuis une requête multiple.
diff --git a/reference/mysqli/mysqli_stmt/next-result.xml b/reference/mysqli/mysqli_stmt/next-result.xml
index 75c3ab2829..8ac0aa23f3 100644
--- a/reference/mysqli/mysqli_stmt/next-result.xml
+++ b/reference/mysqli/mysqli_stmt/next-result.xml
@@ -18,7 +18,7 @@
&style.procedural;:boolmysqli_stmt_next_result
- mysql_stmtstatement
+ mysqli_stmtstatement
Lit le résultat suivant depuis une requête multiple.
diff --git a/reference/mysqli/mysqli_stmt/prepare.xml b/reference/mysqli/mysqli_stmt/prepare.xml
index cac386fc4a..6732d94734 100644
--- a/reference/mysqli/mysqli_stmt/prepare.xml
+++ b/reference/mysqli/mysqli_stmt/prepare.xml
@@ -12,7 +12,7 @@
&reftitle.description;
&style.oop;
- publicmixedmysqli_stmt::prepare
+ publicboolmysqli_stmt::preparestringquery&style.procedural;
diff --git a/reference/pgsql/functions/pg-result-seek.xml b/reference/pgsql/functions/pg-result-seek.xml
index 6e41b490bb..1fa65ef556 100644
--- a/reference/pgsql/functions/pg-result-seek.xml
+++ b/reference/pgsql/functions/pg-result-seek.xml
@@ -11,7 +11,7 @@
&reftitle.description;
boolpg_result_seek
- resourceresult
+ PgSql\Resultresultintrow
diff --git a/reference/pthreads/threaded/shift.xml b/reference/pthreads/threaded/shift.xml
index 6409b074a6..4892037c52 100644
--- a/reference/pthreads/threaded/shift.xml
+++ b/reference/pthreads/threaded/shift.xml
@@ -11,7 +11,7 @@
&reftitle.description;
- publicboolThreaded::shift
+ publicmixedThreaded::shift
diff --git a/reference/reflection/reflectionproperty/setvalue.xml b/reference/reflection/reflectionproperty/setvalue.xml
index 3e70153465..47206edf2a 100644
--- a/reference/reflection/reflectionproperty/setvalue.xml
+++ b/reference/reflection/reflectionproperty/setvalue.xml
@@ -11,8 +11,8 @@
&reftitle.description;
publicvoidReflectionProperty::setValue
- objectobject
- objectnullobjectmixedvalue
+ objectnullobject
+ mixedvaluepublicvoidReflectionProperty::setValue
diff --git a/reference/strings/functions/print.xml b/reference/strings/functions/print.xml
index e14e51cc20..a8eb349b31 100644
--- a/reference/strings/functions/print.xml
+++ b/reference/strings/functions/print.xml
@@ -23,7 +23,7 @@
et n'est pas délimité par des parenthèses.
- La différence majeure avec echo est que
+ La différence majeure avec echo est que
print n'accepte qu'un seul argument et retourne toujours 1.
From 99db14d6604c40c9e9762f149dd0c72ab914fb4a Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 15:21:49 +0100
Subject: [PATCH 88/96] fix: corriger espaces manquants et fautes d'orthographe
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- appeller -> appeler (igbinary, com/dotnet)
- instancié -> instanciées (com/dotnet)
- espace manquant entre fonction et (rar x4, pgsql, oci8)
---
reference/com/dotnet.xml | 2 +-
reference/igbinary/functions/igbinary-unserialize.xml | 2 +-
reference/oci8/connection.xml | 2 +-
reference/pgsql/functions/pg-escape-literal.xml | 2 +-
reference/rar/rararchive/close.xml | 2 +-
reference/rar/rararchive/getcomment.xml | 2 +-
reference/rar/rararchive/getentry.xml | 2 +-
reference/rar/rararchive/issolid.xml | 2 +-
8 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/reference/com/dotnet.xml b/reference/com/dotnet.xml
index 8b6570b7e7..8691922895 100644
--- a/reference/com/dotnet.xml
+++ b/reference/com/dotnet.xml
@@ -23,7 +23,7 @@
Quelque classes .Net n'implémente pas IDispatch, donc bien qu'elles
- peuvent être instancié, appeller des méthodes ou accéder aux propriétés
+ peuvent être instanciées, appeler des méthodes ou accéder aux propriétés
sur ces classes n'est pas supporté.
diff --git a/reference/igbinary/functions/igbinary-unserialize.xml b/reference/igbinary/functions/igbinary-unserialize.xml
index 732fa5ca31..ae74bf4a18 100644
--- a/reference/igbinary/functions/igbinary-unserialize.xml
+++ b/reference/igbinary/functions/igbinary-unserialize.xml
@@ -56,7 +56,7 @@
Si la variable désérialisée est un &object;, après avoir réussi à le reconstruire,
- PHP tentera automatiquement d'appeller les méthodes magiques
+ PHP tentera automatiquement d'appeler les méthodes magiques
__unserialize() ou
__wakeup() (si l'une d'elles existe).
diff --git a/reference/oci8/connection.xml b/reference/oci8/connection.xml
index d053d517f3..bb51fdd8d8 100644
--- a/reference/oci8/connection.xml
+++ b/reference/oci8/connection.xml
@@ -33,7 +33,7 @@
(elles vous donnent le contrôle sur la taille et la durée de vie du cache
de connexions persistantes) ou utilisez le pool de connexions résidentes d'Oracle
(pour les bases de données Oracle 11g et suivants), ou encore, utilisez plutôt
- la fonctionoci_connect.
+ la fonction oci_connect.
Les fonctions oci_connect et oci_pconnect
diff --git a/reference/pgsql/functions/pg-escape-literal.xml b/reference/pgsql/functions/pg-escape-literal.xml
index 1f72edf6cc..81622c4716 100644
--- a/reference/pgsql/functions/pg-escape-literal.xml
+++ b/reference/pgsql/functions/pg-escape-literal.xml
@@ -23,7 +23,7 @@
quotes avant et après les données. Les utilisateurs ne doivent donc pas ajouter des simples quotes.
L'utilisation de cette fonction est recommandée à la place
de pg_escape_string. Si la
- colonne est de type bytea, il convient d'utiliser à la place la fonctionpg_escape_bytea.
+ colonne est de type bytea, il convient d'utiliser à la place la fonction pg_escape_bytea.
Pour protéger les identifiants (par exemple les noms de table, nom de champs), il convient d'utiliser la fonction
pg_escape_identifier.
diff --git a/reference/rar/rararchive/close.xml b/reference/rar/rararchive/close.xml
index c37473c45c..386992c153 100644
--- a/reference/rar/rararchive/close.xml
+++ b/reference/rar/rararchive/close.xml
@@ -34,7 +34,7 @@
Un objet RarArchive,
- ouvert avec la fonctionrar_open.
+ ouvert avec la fonction rar_open.
diff --git a/reference/rar/rararchive/getcomment.xml b/reference/rar/rararchive/getcomment.xml
index 902264bfaa..aab105cee8 100644
--- a/reference/rar/rararchive/getcomment.xml
+++ b/reference/rar/rararchive/getcomment.xml
@@ -40,7 +40,7 @@
Un objet RarArchive,
- ouvert avec la fonctionrar_open.
+ ouvert avec la fonction rar_open.
diff --git a/reference/rar/rararchive/getentry.xml b/reference/rar/rararchive/getentry.xml
index 3e9005fef8..388553e386 100644
--- a/reference/rar/rararchive/getentry.xml
+++ b/reference/rar/rararchive/getentry.xml
@@ -45,7 +45,7 @@
Un objet RarArchive,
- ouvert avec la fonctionrar_open.
+ ouvert avec la fonction rar_open.
diff --git a/reference/rar/rararchive/issolid.xml b/reference/rar/rararchive/issolid.xml
index f0f9a63419..ee6fe0d259 100644
--- a/reference/rar/rararchive/issolid.xml
+++ b/reference/rar/rararchive/issolid.xml
@@ -35,7 +35,7 @@
Un objet RarArchive,
- ouvert avec la fonctionrar_open.
+ ouvert avec la fonction rar_open.
From 6939ce73712d581ed94b56e870bb5ccad7d4dbd5 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 15:23:48 +0100
Subject: [PATCH 89/96] =?UTF-8?q?fix:=20corriger=20accord=20du=20participe?=
=?UTF-8?q?=20pass=C3=A9=20avec=20avoir=20(=C3=A9chou=C3=A9e=20->=20=C3=A9?=
=?UTF-8?q?chou=C3=A9)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Le participe passé conjugué avec avoir ne s'accorde pas avec le sujet :
- a échouée -> a échoué (event, pgsql, phar)
- ayant échouée -> ayant échoué (gearman, mongodb, sqlite3 x2)
- doit échouée -> doit échouer (info/assert-options)
- informatons -> informations (mongodb)
- connexion a la base -> connexion à la base (pgsql)
---
reference/event/eventhttp/accept.xml | 2 +-
reference/gearman/gearmanworker/register.xml | 2 +-
reference/info/functions/assert-options.xml | 2 +-
.../mongodb/mongodb/driver/monitoring/commandfailedevent.xml | 2 +-
reference/pgsql/functions/pg-fetch-object.xml | 2 +-
reference/phar/PharFileInfo/getCRC32.xml | 2 +-
reference/sqlite3/sqlite3/lasterrorcode.xml | 4 ++--
reference/sqlite3/sqlite3/lasterrormsg.xml | 2 +-
8 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/reference/event/eventhttp/accept.xml b/reference/event/eventhttp/accept.xml
index bd4ec7faef..2623c44554 100644
--- a/reference/event/eventhttp/accept.xml
+++ b/reference/event/eventhttp/accept.xml
@@ -91,7 +91,7 @@ foreach ($addresses as $port => $ip) {
socket_set_nonblock($socket[$i]);
if (!$http->accept($socket[$i])) {
- echo "L'acceptation a échouée\n";
+ echo "L'acceptation a échoué\n";
exit(1);
}
diff --git a/reference/gearman/gearmanworker/register.xml b/reference/gearman/gearmanworker/register.xml
index 5ea224b947..984b9f2de3 100644
--- a/reference/gearman/gearmanworker/register.xml
+++ b/reference/gearman/gearmanworker/register.xml
@@ -17,7 +17,7 @@
Enregistre un nom de fonction avec un serveur de travaux avec un optionnel
délai maximal d'exécution. Ce délai spécifie le nombre de secondes que le serveur
- doit attendre avant de marquer une tâche comme ayant échouée. Si ce délai
+ doit attendre avant de marquer une tâche comme ayant échoué. Si ce délai
est défini à zéro, il n'y aura aucun délai.
diff --git a/reference/info/functions/assert-options.xml b/reference/info/functions/assert-options.xml
index 4230ae5fab..b2e6e8d178 100644
--- a/reference/info/functions/assert-options.xml
+++ b/reference/info/functions/assert-options.xml
@@ -239,7 +239,7 @@ assert_options(ASSERT_BAIL, true);
assert_options(ASSERT_WARNING, false);
assert_options(ASSERT_CALLBACK, 'assert_failure');
-// Une assertion qui doit échouée
+// Une assertion qui doit échouer
test_assert(1);
// Ceci n'est jamais atteint, car ASSERT_BAIL
diff --git a/reference/mongodb/mongodb/driver/monitoring/commandfailedevent.xml b/reference/mongodb/mongodb/driver/monitoring/commandfailedevent.xml
index cf95fce155..f354f841e5 100644
--- a/reference/mongodb/mongodb/driver/monitoring/commandfailedevent.xml
+++ b/reference/mongodb/mongodb/driver/monitoring/commandfailedevent.xml
@@ -15,7 +15,7 @@
&reftitle.intro;
La classe MongoDB\Driver\Monitoring\CommandFailedEvent
- contient les informatons sur une commande ayant échouée.
+ contient les informations sur une commande ayant échoué.
diff --git a/reference/pgsql/functions/pg-fetch-object.xml b/reference/pgsql/functions/pg-fetch-object.xml
index 71b7b0cb1b..3561d7eccb 100644
--- a/reference/pgsql/functions/pg-fetch-object.xml
+++ b/reference/pgsql/functions/pg-fetch-object.xml
@@ -136,7 +136,7 @@ $database = 'store';
$db_conn = pg_connect("host=localhost port=5432 dbname=$database");
if (!$db_conn) {
- echo "La connexion a la base $database a échouée\n";
+ echo "La connexion à la base $database a échoué\n";
exit;
}
diff --git a/reference/phar/PharFileInfo/getCRC32.xml b/reference/phar/PharFileInfo/getCRC32.xml
index 8d88c6a52e..b1dc9a5353 100644
--- a/reference/phar/PharFileInfo/getCRC32.xml
+++ b/reference/phar/PharFileInfo/getCRC32.xml
@@ -57,7 +57,7 @@ try {
$file = $p['monfichier.txt'];
echo $file->getCRC32();
} catch (Exception $e) {
- echo 'L'écriture de mon.phar.phar a échouée : ', $e;
+ echo 'L\'écriture de mon.phar.phar a échoué : ', $e;
}
?>
]]>
diff --git a/reference/sqlite3/sqlite3/lasterrorcode.xml b/reference/sqlite3/sqlite3/lasterrorcode.xml
index 1625f97717..d17c9e3ed8 100644
--- a/reference/sqlite3/sqlite3/lasterrorcode.xml
+++ b/reference/sqlite3/sqlite3/lasterrorcode.xml
@@ -5,7 +5,7 @@
SQLite3::lastErrorCode
- Retourne le code erreur de la dernière requête SQL ayant échouée
+ Retourne le code erreur de la dernière requête SQL ayant échoué
@@ -16,7 +16,7 @@
- Retourne le code erreur de la dernière requête SQL ayant échouée.
+ Retourne le code erreur de la dernière requête SQL ayant échoué.
diff --git a/reference/sqlite3/sqlite3/lasterrormsg.xml b/reference/sqlite3/sqlite3/lasterrormsg.xml
index 1bc8ee3266..d8a382af1c 100644
--- a/reference/sqlite3/sqlite3/lasterrormsg.xml
+++ b/reference/sqlite3/sqlite3/lasterrormsg.xml
@@ -5,7 +5,7 @@
SQLite3::lastErrorMsg
- Retourne le message d'erreur, en anglais, de la dernière requête ayant échouée
+ Retourne le message d'erreur, en anglais, de la dernière requête ayant échoué
From 0570c15e6016ab735618ea603318be7c2e1cb126 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 15:27:09 +0100
Subject: [PATCH 90/96] fix: corriger fautes d'orthographe et conjugaison dans
53 fichiers
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- Défini -> Définit (conjugaison 3e pers.) : 47 fichiers fann/event/curl
- compre -> compare (array/array-multisort)
- valuer -> valeur (ds/sequence/find)
- tableaux -> tableau (ev/evstat, fann, filesystem)
- param-tres -> paramètres (filesystem/realpath-cache-get)
- constructor -> constructeur (datetime/date-create)
---
reference/array/functions/array-multisort.xml | 2 +-
reference/curl/constants_curl_setopt.xml | 4 ++--
reference/datetime/functions/date-create.xml | 2 +-
reference/ds/ds/sequence/find.xml | 2 +-
reference/ev/evstat/attr.xml | 2 +-
reference/event/event/setpriority.xml | 2 +-
reference/event/eventbase/priorityinit.xml | 2 +-
reference/event/eventbufferevent/settimeouts.xml | 2 +-
reference/event/eventhttpconnection/setclosecallback.xml | 2 +-
reference/fann/fannconnection/setweight.xml | 2 +-
.../fann/functions/fann-set-activation-function-hidden.xml | 2 +-
.../fann/functions/fann-set-activation-function-layer.xml | 2 +-
.../fann/functions/fann-set-activation-function-output.xml | 2 +-
reference/fann/functions/fann-set-activation-function.xml | 2 +-
.../fann/functions/fann-set-activation-steepness-hidden.xml | 2 +-
.../fann/functions/fann-set-activation-steepness-layer.xml | 2 +-
.../fann/functions/fann-set-activation-steepness-output.xml | 2 +-
reference/fann/functions/fann-set-activation-steepness.xml | 2 +-
reference/fann/functions/fann-set-bit-fail-limit.xml | 2 +-
reference/fann/functions/fann-set-callback.xml | 2 +-
.../fann/functions/fann-set-cascade-activation-functions.xml | 2 +-
.../functions/fann-set-cascade-activation-steepnesses.xml | 4 ++--
.../functions/fann-set-cascade-candidate-change-fraction.xml | 2 +-
reference/fann/functions/fann-set-cascade-candidate-limit.xml | 2 +-
.../fann-set-cascade-candidate-stagnation-epochs.xml | 2 +-
reference/fann/functions/fann-set-cascade-max-cand-epochs.xml | 2 +-
reference/fann/functions/fann-set-cascade-max-out-epochs.xml | 2 +-
reference/fann/functions/fann-set-cascade-min-cand-epochs.xml | 2 +-
reference/fann/functions/fann-set-cascade-min-out-epochs.xml | 2 +-
.../fann/functions/fann-set-cascade-num-candidate-groups.xml | 2 +-
.../functions/fann-set-cascade-output-change-fraction.xml | 2 +-
.../functions/fann-set-cascade-output-stagnation-epochs.xml | 2 +-
.../fann/functions/fann-set-cascade-weight-multiplier.xml | 2 +-
reference/fann/functions/fann-set-error-log.xml | 2 +-
reference/fann/functions/fann-set-learning-momentum.xml | 2 +-
reference/fann/functions/fann-set-learning-rate.xml | 2 +-
reference/fann/functions/fann-set-quickprop-decay.xml | 2 +-
reference/fann/functions/fann-set-quickprop-mu.xml | 2 +-
reference/fann/functions/fann-set-rprop-decrease-factor.xml | 2 +-
reference/fann/functions/fann-set-rprop-delta-max.xml | 2 +-
reference/fann/functions/fann-set-rprop-delta-min.xml | 2 +-
reference/fann/functions/fann-set-rprop-delta-zero.xml | 2 +-
reference/fann/functions/fann-set-rprop-increase-factor.xml | 2 +-
.../fann/functions/fann-set-sarprop-step-error-shift.xml | 2 +-
.../fann-set-sarprop-step-error-threshold-factor.xml | 2 +-
reference/fann/functions/fann-set-sarprop-temperature.xml | 2 +-
.../fann/functions/fann-set-sarprop-weight-decay-shift.xml | 2 +-
reference/fann/functions/fann-set-train-error-function.xml | 2 +-
reference/fann/functions/fann-set-train-stop-function.xml | 2 +-
reference/fann/functions/fann-set-training-algorithm.xml | 2 +-
reference/fann/functions/fann-set-weight-array.xml | 2 +-
reference/fann/functions/fann-set-weight.xml | 2 +-
reference/filesystem/functions/realpath-cache-get.xml | 4 ++--
53 files changed, 56 insertions(+), 56 deletions(-)
diff --git a/reference/array/functions/array-multisort.xml b/reference/array/functions/array-multisort.xml
index 49663dc9e8..b45a89d7bd 100644
--- a/reference/array/functions/array-multisort.xml
+++ b/reference/array/functions/array-multisort.xml
@@ -85,7 +85,7 @@
- SORT_NATURAL - compre les éléments sous forme de chaînes de caractères, en utilisant
+ SORT_NATURAL - compare les éléments sous forme de chaînes de caractères, en utilisant
le "tri naturel", comme le fait la fonction natsort
diff --git a/reference/curl/constants_curl_setopt.xml b/reference/curl/constants_curl_setopt.xml
index 717623e7d4..ba9fd30abd 100644
--- a/reference/curl/constants_curl_setopt.xml
+++ b/reference/curl/constants_curl_setopt.xml
@@ -88,7 +88,7 @@
transferts utilisant ce gestionnaire. cURL n'accepte que les en-têtes Alt-Svc sur HTTPS. Il ne complétera également
une demande à une origine alternative que si cette origine est correctement hébergée sur HTTPS.
Définir un bit activera le moteur alt-svc.
- Défini sur l'une des constantes
+ Définit sur l'une des constantes
CURLALTSVC_*.
Par défaut, la gestion Alt-Svc est désactivée.
Disponible à partir de PHP 8.2.0 et cURL 7.64.1.
@@ -3847,7 +3847,7 @@
- Défini le délai, en secondes, que le système d'exploitation attendra pendant que la connexion est
+ Définit le délai, en secondes, que le système d'exploitation attendra pendant que la connexion est
inutilisée avant d'envoyer des sondes de maintien de la connexion, si CURLOPT_TCP_KEEPALIVE est
activé. Tous les systèmes d'exploitation ne supportent pas cette option.
La valeur par défaut est 60.
diff --git a/reference/datetime/functions/date-create.xml b/reference/datetime/functions/date-create.xml
index e99f074922..c12192e80a 100644
--- a/reference/datetime/functions/date-create.xml
+++ b/reference/datetime/functions/date-create.xml
@@ -18,7 +18,7 @@
Version procédurale de DateTime::__construct
- Contrairement au constructor de DateTime,
+ Contrairement au constructeur de DateTime,
il renverra &false; au lieu d'une exception si la chaîne
datetime n'est pas valide.
diff --git a/reference/ds/ds/sequence/find.xml b/reference/ds/ds/sequence/find.xml
index 140bdeb8cd..313a53230c 100644
--- a/reference/ds/ds/sequence/find.xml
+++ b/reference/ds/ds/sequence/find.xml
@@ -28,7 +28,7 @@
value
- La valuer à trouver.
+ La valeur à trouver.
diff --git a/reference/ev/evstat/attr.xml b/reference/ev/evstat/attr.xml
index 9014cddbb3..d6603cc88b 100644
--- a/reference/ev/evstat/attr.xml
+++ b/reference/ev/evstat/attr.xml
@@ -29,7 +29,7 @@
Retourne un tableau des valeurs les plus récentes détectées par Ev
(sans le stat courant) :
- Liste des clés du tableaux retournés par la méthode EvStat::attr
+ Liste des clés du tableau retourné par la méthode EvStat::attr
diff --git a/reference/event/event/setpriority.xml b/reference/event/event/setpriority.xml
index f2ff13211b..eb01a7cda5 100644
--- a/reference/event/event/setpriority.xml
+++ b/reference/event/event/setpriority.xml
@@ -6,7 +6,7 @@
Event::setPriority
- Défini la priorité de l'événement
+ Définit la priorité de l'événement
&reftitle.description;
diff --git a/reference/event/eventbase/priorityinit.xml b/reference/event/eventbase/priorityinit.xml
index 3d3441cefe..35bb2d593d 100644
--- a/reference/event/eventbase/priorityinit.xml
+++ b/reference/event/eventbase/priorityinit.xml
@@ -6,7 +6,7 @@
EventBase::priorityInit
- Défini le nombre de propriétés par événement de base
+ Définit le nombre de propriétés par événement de base
&reftitle.description;
diff --git a/reference/event/eventbufferevent/settimeouts.xml b/reference/event/eventbufferevent/settimeouts.xml
index ff9b6babd3..536b09b626 100644
--- a/reference/event/eventbufferevent/settimeouts.xml
+++ b/reference/event/eventbufferevent/settimeouts.xml
@@ -6,7 +6,7 @@
EventBufferEvent::setTimeouts
- Défini le mode lecture et écriture pour le délai d'attente maximal d'un tampon d'événement
+ Définit le mode lecture et écriture pour le délai d'attente maximal d'un tampon d'événement
&reftitle.description;
diff --git a/reference/event/eventhttpconnection/setclosecallback.xml b/reference/event/eventhttpconnection/setclosecallback.xml
index b220f3322d..97ed44a73d 100644
--- a/reference/event/eventhttpconnection/setclosecallback.xml
+++ b/reference/event/eventhttpconnection/setclosecallback.xml
@@ -5,7 +5,7 @@
EventHttpConnection::setCloseCallback
- Défini une fonction de rappel lors de la fermeture de la connexion
+ Définit une fonction de rappel lors de la fermeture de la connexion
&reftitle.description;
diff --git a/reference/fann/fannconnection/setweight.xml b/reference/fann/fannconnection/setweight.xml
index 317978c547..725f371ae7 100644
--- a/reference/fann/fannconnection/setweight.xml
+++ b/reference/fann/fannconnection/setweight.xml
@@ -6,7 +6,7 @@
FANNConnection::setWeight
- Défini le poids de la connexion
+ Définit le poids de la connexion
diff --git a/reference/fann/functions/fann-set-activation-function-hidden.xml b/reference/fann/functions/fann-set-activation-function-hidden.xml
index 6141c914b2..720c8402a4 100644
--- a/reference/fann/functions/fann-set-activation-function-hidden.xml
+++ b/reference/fann/functions/fann-set-activation-function-hidden.xml
@@ -6,7 +6,7 @@
fann_set_activation_function_hidden
- Défini la fonction d'activation pour toutes les couches cachées
+ Définit la fonction d'activation pour toutes les couches cachées
diff --git a/reference/fann/functions/fann-set-activation-function-layer.xml b/reference/fann/functions/fann-set-activation-function-layer.xml
index 2b7551f554..4b4189e1cd 100644
--- a/reference/fann/functions/fann-set-activation-function-layer.xml
+++ b/reference/fann/functions/fann-set-activation-function-layer.xml
@@ -6,7 +6,7 @@
fann_set_activation_function_layer
- Défini la fonction d'activation pour tous les neurones de la couche spécifiée
+ Définit la fonction d'activation pour tous les neurones de la couche spécifiée
diff --git a/reference/fann/functions/fann-set-activation-function-output.xml b/reference/fann/functions/fann-set-activation-function-output.xml
index 28d376e882..8a6c30332d 100644
--- a/reference/fann/functions/fann-set-activation-function-output.xml
+++ b/reference/fann/functions/fann-set-activation-function-output.xml
@@ -6,7 +6,7 @@
fann_set_activation_function_output
- Défini la fonction d'activation pour la couche d'entrée
+ Définit la fonction d'activation pour la couche d'entrée
diff --git a/reference/fann/functions/fann-set-activation-function.xml b/reference/fann/functions/fann-set-activation-function.xml
index 80d267842f..9ede597d66 100644
--- a/reference/fann/functions/fann-set-activation-function.xml
+++ b/reference/fann/functions/fann-set-activation-function.xml
@@ -6,7 +6,7 @@
fann_set_activation_function
- Défini la fonction d'activation pour le neurone et la couche spécifiés
+ Définit la fonction d'activation pour le neurone et la couche spécifiés
diff --git a/reference/fann/functions/fann-set-activation-steepness-hidden.xml b/reference/fann/functions/fann-set-activation-steepness-hidden.xml
index 454698dcc2..bb31705f80 100644
--- a/reference/fann/functions/fann-set-activation-steepness-hidden.xml
+++ b/reference/fann/functions/fann-set-activation-steepness-hidden.xml
@@ -6,7 +6,7 @@
fann_set_activation_steepness_hidden
- Défini la raideur de la pente d'activation pour tous les neurones
+ Définit la raideur de la pente d'activation pour tous les neurones
des couches cachées
diff --git a/reference/fann/functions/fann-set-activation-steepness-layer.xml b/reference/fann/functions/fann-set-activation-steepness-layer.xml
index b45ce389e3..485ad1498b 100644
--- a/reference/fann/functions/fann-set-activation-steepness-layer.xml
+++ b/reference/fann/functions/fann-set-activation-steepness-layer.xml
@@ -6,7 +6,7 @@
fann_set_activation_steepness_layer
- Défini la pente d'activation pour tous les neurones dans la couche dont le numéro est fourni
+ Définit la pente d'activation pour tous les neurones dans la couche dont le numéro est fourni
diff --git a/reference/fann/functions/fann-set-activation-steepness-output.xml b/reference/fann/functions/fann-set-activation-steepness-output.xml
index e989216343..c01fd1a965 100644
--- a/reference/fann/functions/fann-set-activation-steepness-output.xml
+++ b/reference/fann/functions/fann-set-activation-steepness-output.xml
@@ -6,7 +6,7 @@
fann_set_activation_steepness_output
- Défini la raideur de la pente d'activation dans la couche de sortie
+ Définit la raideur de la pente d'activation dans la couche de sortie
diff --git a/reference/fann/functions/fann-set-activation-steepness.xml b/reference/fann/functions/fann-set-activation-steepness.xml
index 8d9494d110..d9fc5cf51a 100644
--- a/reference/fann/functions/fann-set-activation-steepness.xml
+++ b/reference/fann/functions/fann-set-activation-steepness.xml
@@ -6,7 +6,7 @@
fann_set_activation_steepness
- Défini la pente d'activation pour le neurone et le numéro de couche donnés
+ Définit la pente d'activation pour le neurone et le numéro de couche donnés
diff --git a/reference/fann/functions/fann-set-bit-fail-limit.xml b/reference/fann/functions/fann-set-bit-fail-limit.xml
index 18ca3602bb..459482d886 100644
--- a/reference/fann/functions/fann-set-bit-fail-limit.xml
+++ b/reference/fann/functions/fann-set-bit-fail-limit.xml
@@ -6,7 +6,7 @@
fann_set_bit_fail_limit
- Défini le bit sûr limite, utilisé pendant l'entrainement
+ Définit le bit sûr limite, utilisé pendant l'entrainement
diff --git a/reference/fann/functions/fann-set-callback.xml b/reference/fann/functions/fann-set-callback.xml
index d91fa32c83..00ab9f8381 100644
--- a/reference/fann/functions/fann-set-callback.xml
+++ b/reference/fann/functions/fann-set-callback.xml
@@ -6,7 +6,7 @@
fann_set_callback
- Défini la fonction de rappel à utiliser pendant l'entrainement
+ Définit la fonction de rappel à utiliser pendant l'entrainement
diff --git a/reference/fann/functions/fann-set-cascade-activation-functions.xml b/reference/fann/functions/fann-set-cascade-activation-functions.xml
index 78e0307e18..5facbd96b5 100644
--- a/reference/fann/functions/fann-set-cascade-activation-functions.xml
+++ b/reference/fann/functions/fann-set-cascade-activation-functions.xml
@@ -6,7 +6,7 @@
fann_set_cascade_activation_functions
- Défini le tableau des fonctions d'activation candidate en cascade
+ Définit le tableau des fonctions d'activation candidate en cascade
diff --git a/reference/fann/functions/fann-set-cascade-activation-steepnesses.xml b/reference/fann/functions/fann-set-cascade-activation-steepnesses.xml
index 37943c3dc9..3122ef309f 100644
--- a/reference/fann/functions/fann-set-cascade-activation-steepnesses.xml
+++ b/reference/fann/functions/fann-set-cascade-activation-steepnesses.xml
@@ -6,7 +6,7 @@
fann_set_cascade_activation_steepnesses
- Défini le tableaux des raideurs d'activation candidate en cascade
+ Définit le tableau des raideurs d'activation candidate en cascade
@@ -17,7 +17,7 @@
arraycascade_activation_steepnesses_count
- Définit le tableaux des raideurs d'activation candidate en cascade.
+ Définit le tableau des raideurs d'activation candidate en cascade.
Voir la fonction fann_get_cascade_num_candidates
diff --git a/reference/fann/functions/fann-set-cascade-candidate-change-fraction.xml b/reference/fann/functions/fann-set-cascade-candidate-change-fraction.xml
index 47dca953f7..181adee188 100644
--- a/reference/fann/functions/fann-set-cascade-candidate-change-fraction.xml
+++ b/reference/fann/functions/fann-set-cascade-candidate-change-fraction.xml
@@ -6,7 +6,7 @@
fann_set_cascade_candidate_change_fraction
- Défini la fraction de modification candidate en cascade
+ Définit la fraction de modification candidate en cascade
diff --git a/reference/fann/functions/fann-set-cascade-candidate-limit.xml b/reference/fann/functions/fann-set-cascade-candidate-limit.xml
index 4dc8297d0b..f44bbec503 100644
--- a/reference/fann/functions/fann-set-cascade-candidate-limit.xml
+++ b/reference/fann/functions/fann-set-cascade-candidate-limit.xml
@@ -6,7 +6,7 @@
fann_set_cascade_candidate_limit
- Défini la limite candidate
+ Définit la limite candidate
diff --git a/reference/fann/functions/fann-set-cascade-candidate-stagnation-epochs.xml b/reference/fann/functions/fann-set-cascade-candidate-stagnation-epochs.xml
index 29ef2b9aee..ab8ea5bcbc 100644
--- a/reference/fann/functions/fann-set-cascade-candidate-stagnation-epochs.xml
+++ b/reference/fann/functions/fann-set-cascade-candidate-stagnation-epochs.xml
@@ -6,7 +6,7 @@
fann_set_cascade_candidate_stagnation_epochs
- Défini le nombre d'époques de stagnation candidates en cascade
+ Définit le nombre d'époques de stagnation candidates en cascade
diff --git a/reference/fann/functions/fann-set-cascade-max-cand-epochs.xml b/reference/fann/functions/fann-set-cascade-max-cand-epochs.xml
index c2c76444d3..01e03d619b 100644
--- a/reference/fann/functions/fann-set-cascade-max-cand-epochs.xml
+++ b/reference/fann/functions/fann-set-cascade-max-cand-epochs.xml
@@ -6,7 +6,7 @@
fann_set_cascade_max_cand_epochs
- Défini l'époque maximale candidate
+ Définit l'époque maximale candidate
diff --git a/reference/fann/functions/fann-set-cascade-max-out-epochs.xml b/reference/fann/functions/fann-set-cascade-max-out-epochs.xml
index 61f182b99c..e207446a11 100644
--- a/reference/fann/functions/fann-set-cascade-max-out-epochs.xml
+++ b/reference/fann/functions/fann-set-cascade-max-out-epochs.xml
@@ -6,7 +6,7 @@
fann_set_cascade_max_out_epochs
- Défini l'époque maximale de sortie
+ Définit l'époque maximale de sortie
diff --git a/reference/fann/functions/fann-set-cascade-min-cand-epochs.xml b/reference/fann/functions/fann-set-cascade-min-cand-epochs.xml
index ebb1598086..b478e2e33e 100644
--- a/reference/fann/functions/fann-set-cascade-min-cand-epochs.xml
+++ b/reference/fann/functions/fann-set-cascade-min-cand-epochs.xml
@@ -6,7 +6,7 @@
fann_set_cascade_min_cand_epochs
- Défini l'époque minimale candidate
+ Définit l'époque minimale candidate
diff --git a/reference/fann/functions/fann-set-cascade-min-out-epochs.xml b/reference/fann/functions/fann-set-cascade-min-out-epochs.xml
index 18f459b693..bb860ce5ea 100644
--- a/reference/fann/functions/fann-set-cascade-min-out-epochs.xml
+++ b/reference/fann/functions/fann-set-cascade-min-out-epochs.xml
@@ -6,7 +6,7 @@
fann_set_cascade_min_out_epochs
- Défini l'époque minimale de sortie
+ Définit l'époque minimale de sortie
diff --git a/reference/fann/functions/fann-set-cascade-num-candidate-groups.xml b/reference/fann/functions/fann-set-cascade-num-candidate-groups.xml
index cf423a943e..5c37aa06f7 100644
--- a/reference/fann/functions/fann-set-cascade-num-candidate-groups.xml
+++ b/reference/fann/functions/fann-set-cascade-num-candidate-groups.xml
@@ -6,7 +6,7 @@
fann_set_cascade_num_candidate_groups
- Défini le nombre de groupes candidats
+ Définit le nombre de groupes candidats
diff --git a/reference/fann/functions/fann-set-cascade-output-change-fraction.xml b/reference/fann/functions/fann-set-cascade-output-change-fraction.xml
index 402e3b442f..a6e542afe3 100644
--- a/reference/fann/functions/fann-set-cascade-output-change-fraction.xml
+++ b/reference/fann/functions/fann-set-cascade-output-change-fraction.xml
@@ -6,7 +6,7 @@
fann_set_cascade_output_change_fraction
- Défini la fraction de modification de sortie en cascade
+ Définit la fraction de modification de sortie en cascade
diff --git a/reference/fann/functions/fann-set-cascade-output-stagnation-epochs.xml b/reference/fann/functions/fann-set-cascade-output-stagnation-epochs.xml
index 598a54cb4f..3e79b965d2 100644
--- a/reference/fann/functions/fann-set-cascade-output-stagnation-epochs.xml
+++ b/reference/fann/functions/fann-set-cascade-output-stagnation-epochs.xml
@@ -6,7 +6,7 @@
fann_set_cascade_output_stagnation_epochs
- Défini le nombre d'époques de stagnation en cascade de sortie
+ Définit le nombre d'époques de stagnation en cascade de sortie
diff --git a/reference/fann/functions/fann-set-cascade-weight-multiplier.xml b/reference/fann/functions/fann-set-cascade-weight-multiplier.xml
index f81a0faf4d..4b326feded 100644
--- a/reference/fann/functions/fann-set-cascade-weight-multiplier.xml
+++ b/reference/fann/functions/fann-set-cascade-weight-multiplier.xml
@@ -6,7 +6,7 @@
fann_set_cascade_weight_multiplier
- Défini le multiplicateur de poids
+ Définit le multiplicateur de poids
diff --git a/reference/fann/functions/fann-set-error-log.xml b/reference/fann/functions/fann-set-error-log.xml
index abb2489e7b..0145cfabbf 100644
--- a/reference/fann/functions/fann-set-error-log.xml
+++ b/reference/fann/functions/fann-set-error-log.xml
@@ -6,7 +6,7 @@
fann_set_error_log
- Défini l'endroit où les erreurs seront historisées
+ Définit l'endroit où les erreurs seront historisées
diff --git a/reference/fann/functions/fann-set-learning-momentum.xml b/reference/fann/functions/fann-set-learning-momentum.xml
index 159bd5eddf..8962bc8b99 100644
--- a/reference/fann/functions/fann-set-learning-momentum.xml
+++ b/reference/fann/functions/fann-set-learning-momentum.xml
@@ -6,7 +6,7 @@
fann_set_learning_momentum
- Défini la dynamique d'apprentissage
+ Définit la dynamique d'apprentissage
diff --git a/reference/fann/functions/fann-set-learning-rate.xml b/reference/fann/functions/fann-set-learning-rate.xml
index 5d799402d6..d21f67aa9f 100644
--- a/reference/fann/functions/fann-set-learning-rate.xml
+++ b/reference/fann/functions/fann-set-learning-rate.xml
@@ -6,7 +6,7 @@
fann_set_learning_rate
- Défini le taux d'apprentissage
+ Définit le taux d'apprentissage
diff --git a/reference/fann/functions/fann-set-quickprop-decay.xml b/reference/fann/functions/fann-set-quickprop-decay.xml
index 5853c75081..d8484a16e1 100644
--- a/reference/fann/functions/fann-set-quickprop-decay.xml
+++ b/reference/fann/functions/fann-set-quickprop-decay.xml
@@ -6,7 +6,7 @@
fann_set_quickprop_decay
- Défini le facteur décroissant quickprop
+ Définit le facteur décroissant quickprop
diff --git a/reference/fann/functions/fann-set-quickprop-mu.xml b/reference/fann/functions/fann-set-quickprop-mu.xml
index 7687ef92bd..03721f4ac0 100644
--- a/reference/fann/functions/fann-set-quickprop-mu.xml
+++ b/reference/fann/functions/fann-set-quickprop-mu.xml
@@ -6,7 +6,7 @@
fann_set_quickprop_mu
- Défini le facteur quickprop mu
+ Définit le facteur quickprop mu
diff --git a/reference/fann/functions/fann-set-rprop-decrease-factor.xml b/reference/fann/functions/fann-set-rprop-decrease-factor.xml
index 322e6d31e6..34e73ec241 100644
--- a/reference/fann/functions/fann-set-rprop-decrease-factor.xml
+++ b/reference/fann/functions/fann-set-rprop-decrease-factor.xml
@@ -6,7 +6,7 @@
fann_set_rprop_decrease_factor
- Défini le facteur de diminution utilisé pendant l'entrainement RPROP
+ Définit le facteur de diminution utilisé pendant l'entrainement RPROP
diff --git a/reference/fann/functions/fann-set-rprop-delta-max.xml b/reference/fann/functions/fann-set-rprop-delta-max.xml
index 6d97f36fa9..46232e0021 100644
--- a/reference/fann/functions/fann-set-rprop-delta-max.xml
+++ b/reference/fann/functions/fann-set-rprop-delta-max.xml
@@ -6,7 +6,7 @@
fann_set_rprop_delta_max
- Défini la taille maximale de l'étape
+ Définit la taille maximale de l'étape
diff --git a/reference/fann/functions/fann-set-rprop-delta-min.xml b/reference/fann/functions/fann-set-rprop-delta-min.xml
index 3abd8d3fac..f41b492f11 100644
--- a/reference/fann/functions/fann-set-rprop-delta-min.xml
+++ b/reference/fann/functions/fann-set-rprop-delta-min.xml
@@ -6,7 +6,7 @@
fann_set_rprop_delta_min
- Défini la taille minimale de l'étape
+ Définit la taille minimale de l'étape
diff --git a/reference/fann/functions/fann-set-rprop-delta-zero.xml b/reference/fann/functions/fann-set-rprop-delta-zero.xml
index 318366f859..248726a071 100644
--- a/reference/fann/functions/fann-set-rprop-delta-zero.xml
+++ b/reference/fann/functions/fann-set-rprop-delta-zero.xml
@@ -6,7 +6,7 @@
fann_set_rprop_delta_zero
- Défini la taille de l'étape initiale
+ Définit la taille de l'étape initiale
diff --git a/reference/fann/functions/fann-set-rprop-increase-factor.xml b/reference/fann/functions/fann-set-rprop-increase-factor.xml
index 6355564dc6..b8920ee084 100644
--- a/reference/fann/functions/fann-set-rprop-increase-factor.xml
+++ b/reference/fann/functions/fann-set-rprop-increase-factor.xml
@@ -6,7 +6,7 @@
fann_set_rprop_increase_factor
- Défini le facteur d'augmentation utilisé pendant l'entrainement RPROP
+ Définit le facteur d'augmentation utilisé pendant l'entrainement RPROP
diff --git a/reference/fann/functions/fann-set-sarprop-step-error-shift.xml b/reference/fann/functions/fann-set-sarprop-step-error-shift.xml
index a082cd68f4..76ff325c0b 100644
--- a/reference/fann/functions/fann-set-sarprop-step-error-shift.xml
+++ b/reference/fann/functions/fann-set-sarprop-step-error-shift.xml
@@ -6,7 +6,7 @@
fann_set_sarprop_step_error_shift
- Défini le changement de l'étape d'erreur sarprop
+ Définit le changement de l'étape d'erreur sarprop
diff --git a/reference/fann/functions/fann-set-sarprop-step-error-threshold-factor.xml b/reference/fann/functions/fann-set-sarprop-step-error-threshold-factor.xml
index 9b71ff8fa3..43f7568c94 100644
--- a/reference/fann/functions/fann-set-sarprop-step-error-threshold-factor.xml
+++ b/reference/fann/functions/fann-set-sarprop-step-error-threshold-factor.xml
@@ -6,7 +6,7 @@
fann_set_sarprop_step_error_threshold_factor
- Défini le facteur de seuil de l'étape d'erreur sarprop
+ Définit le facteur de seuil de l'étape d'erreur sarprop
diff --git a/reference/fann/functions/fann-set-sarprop-temperature.xml b/reference/fann/functions/fann-set-sarprop-temperature.xml
index 1ba5b07505..64a99de912 100644
--- a/reference/fann/functions/fann-set-sarprop-temperature.xml
+++ b/reference/fann/functions/fann-set-sarprop-temperature.xml
@@ -6,7 +6,7 @@
fann_set_sarprop_temperature
- Défini la température sarprop
+ Définit la température sarprop
diff --git a/reference/fann/functions/fann-set-sarprop-weight-decay-shift.xml b/reference/fann/functions/fann-set-sarprop-weight-decay-shift.xml
index baf36a6f92..544f867218 100644
--- a/reference/fann/functions/fann-set-sarprop-weight-decay-shift.xml
+++ b/reference/fann/functions/fann-set-sarprop-weight-decay-shift.xml
@@ -6,7 +6,7 @@
fann_set_sarprop_weight_decay_shift
- Défini le changement décroissant du poids de sarprop
+ Définit le changement décroissant du poids de sarprop
diff --git a/reference/fann/functions/fann-set-train-error-function.xml b/reference/fann/functions/fann-set-train-error-function.xml
index 87f4854f89..49a4ba30c6 100644
--- a/reference/fann/functions/fann-set-train-error-function.xml
+++ b/reference/fann/functions/fann-set-train-error-function.xml
@@ -6,7 +6,7 @@
fann_set_train_error_function
- Défini la fonction d'erreur utilisée pendant l'entrainement
+ Définit la fonction d'erreur utilisée pendant l'entrainement
diff --git a/reference/fann/functions/fann-set-train-stop-function.xml b/reference/fann/functions/fann-set-train-stop-function.xml
index 40663f77f4..473ca3d193 100644
--- a/reference/fann/functions/fann-set-train-stop-function.xml
+++ b/reference/fann/functions/fann-set-train-stop-function.xml
@@ -6,7 +6,7 @@
fann_set_train_stop_function
- Défini la fonction d'arrêt à utiliser durant l'entrainement
+ Définit la fonction d'arrêt à utiliser durant l'entrainement
diff --git a/reference/fann/functions/fann-set-training-algorithm.xml b/reference/fann/functions/fann-set-training-algorithm.xml
index b7340d4a4e..241a12d2f3 100644
--- a/reference/fann/functions/fann-set-training-algorithm.xml
+++ b/reference/fann/functions/fann-set-training-algorithm.xml
@@ -6,7 +6,7 @@
fann_set_training_algorithm
- Défini l'algorithme d'entrainement
+ Définit l'algorithme d'entrainement
diff --git a/reference/fann/functions/fann-set-weight-array.xml b/reference/fann/functions/fann-set-weight-array.xml
index a1939dffcc..f799ce7cc9 100644
--- a/reference/fann/functions/fann-set-weight-array.xml
+++ b/reference/fann/functions/fann-set-weight-array.xml
@@ -6,7 +6,7 @@
fann_set_weight_array
- Défini les connexions dans le réseau
+ Définit les connexions dans le réseau
diff --git a/reference/fann/functions/fann-set-weight.xml b/reference/fann/functions/fann-set-weight.xml
index ca32004867..b911a21da7 100644
--- a/reference/fann/functions/fann-set-weight.xml
+++ b/reference/fann/functions/fann-set-weight.xml
@@ -6,7 +6,7 @@
fann_set_weight
- Défini une connexion dans le réseau
+ Définit une connexion dans le réseau
diff --git a/reference/filesystem/functions/realpath-cache-get.xml b/reference/filesystem/functions/realpath-cache-get.xml
index 24c61d3390..036e556969 100644
--- a/reference/filesystem/functions/realpath-cache-get.xml
+++ b/reference/filesystem/functions/realpath-cache-get.xml
@@ -28,9 +28,9 @@
&reftitle.returnvalues;
- Retourne un tableaux d'entrées du cache realpath. Les clés sont les chemins
+ Retourne un tableau d'entrées du cache realpath. Les clés sont les chemins
originaux et les valeurs sont des tableaux de données contenant le chemin
- résolu, la date d'expiration et d'autres param-tres gardés en cache.
+ résolu, la date d'expiration et d'autres paramètres gardés en cache.
From 6550af421e35530dbacedd4db5b2bc2a218a6dbe Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 15:28:25 +0100
Subject: [PATCH 91/96] =?UTF-8?q?fix:=20corriger=20D=C3=A9fini=20->=20D?=
=?UTF-8?q?=C3=A9finit=20(21=20fichiers)=20et=20tableaux=20->=20tableau=20?=
=?UTF-8?q?(3=20fichiers)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- Défini -> Définit : yar, spl, rrd, outcontrol, mongodb, intl, imagick, image, geoip, gearman, zmq
- tableaux -> tableau : fann, pgsql/pg-convert, spl/regexiterator
- associatifs -> associatif (pgsql/pg-convert)
---
.../fann-set-cascade-activation-steepnesses.xml | 2 +-
reference/gearman/gearmanclient/addtask.xml | 4 ++--
.../geoip/functions/geoip-setup-custom-directory.xml | 2 +-
reference/image/functions/imagesetinterpolation.xml | 4 ++--
reference/imagick/imagick/setimageiterations.xml | 2 +-
reference/imagick/imagickpixel/getcolor.xml | 2 +-
reference/intl/intlcalendar/setfirstdayofweek.xml | 2 +-
reference/intl/intlcalendar/settime.xml | 2 +-
reference/intl/intlcalendar/settimezone.xml | 2 +-
reference/mongodb/mongodb/driver/cursor/settypemap.xml | 2 +-
reference/outcontrol/functions/ob-get-status.xml | 2 +-
reference/pgsql/functions/pg-convert.xml | 2 +-
reference/rrd/rrdgraph/setoptions.xml | 2 +-
reference/spl/functions/class-implements.xml | 2 +-
reference/spl/functions/class-parents.xml | 2 +-
reference/spl/functions/class-uses.xml | 2 +-
reference/spl/regexiterator/getflags.xml | 6 +++---
reference/yar/yar_client/setopt.xml | 10 +++++-----
reference/zmq/zmqcontext/setopt.xml | 2 +-
reference/zmq/zmqdevice/setidlecallback.xml | 2 +-
reference/zmq/zmqdevice/setidletimeout.xml | 2 +-
reference/zmq/zmqdevice/settimercallback.xml | 2 +-
reference/zmq/zmqdevice/settimertimeout.xml | 2 +-
reference/zmq/zmqsocket/setsockopt.xml | 2 +-
24 files changed, 32 insertions(+), 32 deletions(-)
diff --git a/reference/fann/functions/fann-set-cascade-activation-steepnesses.xml b/reference/fann/functions/fann-set-cascade-activation-steepnesses.xml
index 3122ef309f..6934776884 100644
--- a/reference/fann/functions/fann-set-cascade-activation-steepnesses.xml
+++ b/reference/fann/functions/fann-set-cascade-activation-steepnesses.xml
@@ -38,7 +38,7 @@
cascade_activation_steepnesses_count
- Le tableaux des raideurs d'activation candidate en cascade.
+ Le tableau des raideurs d'activation candidate en cascade.
diff --git a/reference/gearman/gearmanclient/addtask.xml b/reference/gearman/gearmanclient/addtask.xml
index dce7990d67..f316c12f81 100644
--- a/reference/gearman/gearmanclient/addtask.xml
+++ b/reference/gearman/gearmanclient/addtask.xml
@@ -86,7 +86,7 @@ $gmclient= new GearmanClient();
# Ajoute le serveur de travaux par défaut
$gmclient->addServer();
-# Défini une fonction à appeler lorsque le travail est terminé
+# Définit une fonction à appeler lorsque le travail est terminé
$gmclient->setCompleteCallback("complete");
# Ajoute une tâche exécutant la fonction "reverse" sur la chaîne "Hello World!"
@@ -123,7 +123,7 @@ Terminé : 1, !dlroW olleH
$client = new GearmanClient();
$client->addServer();
-# Défini une fonction à appeler lorsque le travail est terminé
+# Définit une fonction à appeler lorsque le travail est terminé
$client->setCompleteCallback("reverse_complete");
# Ajout de quelques tâches contenant un marqueur à l'emplacement duquel le résultat doit être placé
diff --git a/reference/geoip/functions/geoip-setup-custom-directory.xml b/reference/geoip/functions/geoip-setup-custom-directory.xml
index 520cf37d36..2d169760bf 100644
--- a/reference/geoip/functions/geoip-setup-custom-directory.xml
+++ b/reference/geoip/functions/geoip-setup-custom-directory.xml
@@ -5,7 +5,7 @@
geoip_setup_custom_directory
- Défini un dossier personnalisé pour la base de données GeoIP
+ Définit un dossier personnalisé pour la base de données GeoIP
&reftitle.description;
diff --git a/reference/image/functions/imagesetinterpolation.xml b/reference/image/functions/imagesetinterpolation.xml
index d036cc3682..f4cb644d0e 100644
--- a/reference/image/functions/imagesetinterpolation.xml
+++ b/reference/image/functions/imagesetinterpolation.xml
@@ -6,7 +6,7 @@
imagesetinterpolation
- Défini la méthode d'interpolation
+ Définit la méthode d'interpolation
&reftitle.description;
@@ -16,7 +16,7 @@
intmethodIMG_BILINEAR_FIXED
- Défini la méthode d'interpolation ; le fait de définir une méthode d'interpolation
+ Définit la méthode d'interpolation ; le fait de définir une méthode d'interpolation
affecte le rendu de plusieurs fonctions en GD, comme par exemple la fonction
imagerotate.
diff --git a/reference/imagick/imagick/setimageiterations.xml b/reference/imagick/imagick/setimageiterations.xml
index b2e144eef7..0943a2d739 100644
--- a/reference/imagick/imagick/setimageiterations.xml
+++ b/reference/imagick/imagick/setimageiterations.xml
@@ -28,7 +28,7 @@
iterations
- Le nombre d'itérations de l'image. Défini à 0, la boucle sera infinie.
+ Le nombre d'itérations de l'image. Définit à 0, la boucle sera infinie.
diff --git a/reference/imagick/imagickpixel/getcolor.xml b/reference/imagick/imagickpixel/getcolor.xml
index bc593c5d2f..3ef8ee256c 100644
--- a/reference/imagick/imagickpixel/getcolor.xml
+++ b/reference/imagick/imagickpixel/getcolor.xml
@@ -103,7 +103,7 @@
// Crée un objet ImagickPixel avec comme couleur prédéfinie 'marron'
$color = new ImagickPixel('brown');
-// Défini la couleur pour avoir un canal alpha de 25%
+// Définit la couleur pour avoir un canal alpha de 25%
$color->setColorValue(Imagick::COLOR_ALPHA, 64 / 256.0);
$colorInfo = $color->getColor();
diff --git a/reference/intl/intlcalendar/setfirstdayofweek.xml b/reference/intl/intlcalendar/setfirstdayofweek.xml
index a69aba8769..8736478c78 100644
--- a/reference/intl/intlcalendar/setfirstdayofweek.xml
+++ b/reference/intl/intlcalendar/setfirstdayofweek.xml
@@ -4,7 +4,7 @@
IntlCalendar::setFirstDayOfWeek
- Défini le jour de début de la semaine
+ Définit le jour de début de la semaine
diff --git a/reference/intl/intlcalendar/settime.xml b/reference/intl/intlcalendar/settime.xml
index 1bd6e7d934..316a191dab 100644
--- a/reference/intl/intlcalendar/settime.xml
+++ b/reference/intl/intlcalendar/settime.xml
@@ -4,7 +4,7 @@
IntlCalendar::setTime
- Défini le temps du calendrier en milliseconde depuis l'époque
+ Définit le temps du calendrier en milliseconde depuis l'époque
diff --git a/reference/intl/intlcalendar/settimezone.xml b/reference/intl/intlcalendar/settimezone.xml
index a6889e6b8a..637ba86865 100644
--- a/reference/intl/intlcalendar/settimezone.xml
+++ b/reference/intl/intlcalendar/settimezone.xml
@@ -4,7 +4,7 @@
IntlCalendar::setTimeZone
- Défini le fuseau horaire utilisé par ce calendrier
+ Définit le fuseau horaire utilisé par ce calendrier
diff --git a/reference/mongodb/mongodb/driver/cursor/settypemap.xml b/reference/mongodb/mongodb/driver/cursor/settypemap.xml
index aed4a3e7f2..e0c364305e 100644
--- a/reference/mongodb/mongodb/driver/cursor/settypemap.xml
+++ b/reference/mongodb/mongodb/driver/cursor/settypemap.xml
@@ -6,7 +6,7 @@
MongoDB\Driver\Cursor::setTypeMap
- Défini un type de carte à utiliser pour la désérialisation BSON
+ Définit un type de carte à utiliser pour la désérialisation BSON
diff --git a/reference/outcontrol/functions/ob-get-status.xml b/reference/outcontrol/functions/ob-get-status.xml
index 63fb35728b..4ebba95ee4 100644
--- a/reference/outcontrol/functions/ob-get-status.xml
+++ b/reference/outcontrol/functions/ob-get-status.xml
@@ -100,7 +100,7 @@
chunk_size
- Taille du fragment en octets. Défini par la fonction ob_start
+ Taille du fragment en octets. Définit par la fonction ob_start
ou output_buffering s'il est activé
et sa valeur est définie sur un entier positif
diff --git a/reference/pgsql/functions/pg-convert.xml b/reference/pgsql/functions/pg-convert.xml
index 2bbe0f42fa..08bd01cfb9 100644
--- a/reference/pgsql/functions/pg-convert.xml
+++ b/reference/pgsql/functions/pg-convert.xml
@@ -5,7 +5,7 @@
pg_convert
- Convertit des valeurs d'un tableaux associatifs en une forme convenable pour des requêtes SQL
+ Convertit des valeurs d'un tableau associatif en une forme convenable pour des requêtes SQL
diff --git a/reference/rrd/rrdgraph/setoptions.xml b/reference/rrd/rrdgraph/setoptions.xml
index a99da3475c..c1e4b87e4a 100644
--- a/reference/rrd/rrdgraph/setoptions.xml
+++ b/reference/rrd/rrdgraph/setoptions.xml
@@ -65,7 +65,7 @@ $graphObj->setOptions(array(
- Défini plusieurs options de couleur
+ Définit plusieurs options de couleurautoload
- Défini s'il faut autocharger
+ Définit s'il faut autocharger
si pas déjà autochargé.
diff --git a/reference/spl/functions/class-parents.xml b/reference/spl/functions/class-parents.xml
index acba4da16a..10314a4337 100755
--- a/reference/spl/functions/class-parents.xml
+++ b/reference/spl/functions/class-parents.xml
@@ -39,7 +39,7 @@
autoload
- Défini s'il faut autocharger
+ Définit s'il faut autocharger
si pas déjà autochargé.
diff --git a/reference/spl/functions/class-uses.xml b/reference/spl/functions/class-uses.xml
index d1505ef93a..777b78b0a2 100644
--- a/reference/spl/functions/class-uses.xml
+++ b/reference/spl/functions/class-uses.xml
@@ -38,7 +38,7 @@
autoload
- Défini s'il faut autocharger
+ Définit s'il faut autocharger
si pas déjà autochargé.
diff --git a/reference/spl/regexiterator/getflags.xml b/reference/spl/regexiterator/getflags.xml
index f13c0ea4d5..2c75525f5e 100644
--- a/reference/spl/regexiterator/getflags.xml
+++ b/reference/spl/regexiterator/getflags.xml
@@ -48,9 +48,9 @@ $regexIterator = new RegexIterator($arrayIterator, '/^test/');
$regexIterator->setFlags(RegexIterator::USE_KEY);
if ($regexIterator->getFlags() & RegexIterator::USE_KEY) {
- echo 'Filtrage basé sur les clés du tableaux.';
+ echo 'Filtrage basé sur les clés du tableau.';
} else {
- echo 'Filtrage basé sur les valeurs du tableaux.';
+ echo 'Filtrage basé sur les valeurs du tableau.';
}
?>
]]>
@@ -58,7 +58,7 @@ if ($regexIterator->getFlags() & RegexIterator::USE_KEY) {
&example.outputs;
diff --git a/reference/yar/yar_client/setopt.xml b/reference/yar/yar_client/setopt.xml
index 14c3ab5c1a..9fc68fc372 100644
--- a/reference/yar/yar_client/setopt.xml
+++ b/reference/yar/yar_client/setopt.xml
@@ -6,7 +6,7 @@
Yar_Client::setOpt
- Défini le contexte d'appel
+ Définit le contexte d'appel
@@ -66,16 +66,16 @@
$cient = new Yar_Client("http://host/api/");
-//Défini le délai d'attente maximal à 1s
+//Définit le délai d'attente maximal à 1s
$client->SetOpt(YAR_OPT_CONNECT_TIMEOUT, 1000);
-//Défini le packager à JSON
+//Définit le packager à JSON
$client->SetOpt(YAR_OPT_PACKAGER, "json");
-//Défini l'en-tête personnalisée
+//Définit l'en-tête personnalisée
$client->SetOpt(YAR_OPT_HEADER, array("hr1: val1", "hd2: val2"));
-// Défini le proxy HTTP
+// Définit le proxy HTTP
$client->SetOpt(YAR_OPT_PROXY, "127.0.0.1:8888");
/* Appel le service distant */
diff --git a/reference/zmq/zmqcontext/setopt.xml b/reference/zmq/zmqcontext/setopt.xml
index de11e4792f..bb3f96b990 100644
--- a/reference/zmq/zmqcontext/setopt.xml
+++ b/reference/zmq/zmqcontext/setopt.xml
@@ -6,7 +6,7 @@
ZMQContext::setOpt
- Défini une option de socket
+ Définit une option de socket
diff --git a/reference/zmq/zmqdevice/setidlecallback.xml b/reference/zmq/zmqdevice/setidlecallback.xml
index d4d377b9e1..a0ab12cf7b 100644
--- a/reference/zmq/zmqdevice/setidlecallback.xml
+++ b/reference/zmq/zmqdevice/setidlecallback.xml
@@ -6,7 +6,7 @@
ZMQDevice::setIdleCallback
- Défini la fonction de rappel d'inactivité
+ Définit la fonction de rappel d'inactivité
diff --git a/reference/zmq/zmqdevice/setidletimeout.xml b/reference/zmq/zmqdevice/setidletimeout.xml
index 8e938fa2eb..c7bac34117 100644
--- a/reference/zmq/zmqdevice/setidletimeout.xml
+++ b/reference/zmq/zmqdevice/setidletimeout.xml
@@ -6,7 +6,7 @@
ZMQDevice::setIdleTimeout
- Défini le délai d'attente maximal d'inactivité
+ Définit le délai d'attente maximal d'inactivité
diff --git a/reference/zmq/zmqdevice/settimercallback.xml b/reference/zmq/zmqdevice/settimercallback.xml
index a4cd3b84a2..8f60b5f2eb 100644
--- a/reference/zmq/zmqdevice/settimercallback.xml
+++ b/reference/zmq/zmqdevice/settimercallback.xml
@@ -6,7 +6,7 @@
ZMQDevice::setTimerCallback
- Défini la fonction de rappel du timer
+ Définit la fonction de rappel du timer
diff --git a/reference/zmq/zmqdevice/settimertimeout.xml b/reference/zmq/zmqdevice/settimertimeout.xml
index a7f0556039..3a2b29088e 100644
--- a/reference/zmq/zmqdevice/settimertimeout.xml
+++ b/reference/zmq/zmqdevice/settimertimeout.xml
@@ -6,7 +6,7 @@
ZMQDevice::setTimerTimeout
- Défini le délai d'attente maximal du timer
+ Définit le délai d'attente maximal du timer
diff --git a/reference/zmq/zmqsocket/setsockopt.xml b/reference/zmq/zmqsocket/setsockopt.xml
index 2c5ff2a02d..5632216fab 100644
--- a/reference/zmq/zmqsocket/setsockopt.xml
+++ b/reference/zmq/zmqsocket/setsockopt.xml
@@ -6,7 +6,7 @@
ZMQSocket::setSockOpt
- Défini une option de socket
+ Définit une option de socket
From 729b374eb7763b765977a3008f22417610f8de44 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 15:30:04 +0100
Subject: [PATCH 92/96] fix: corriger fautes d'orthographe dans yaf et imagick
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- Défini -> Définit (yaf/setbaseuri)
- suel -> seul (yaf/setbaseuri)
- Générallement -> Généralement (yaf x2, imagick)
---
reference/imagick/imagick/importimagepixels.xml | 2 +-
reference/yaf/yaf_dispatcher/registerplugin.xml | 2 +-
reference/yaf/yaf_request_abstract/setbaseuri.xml | 8 ++++----
3 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/reference/imagick/imagick/importimagepixels.xml b/reference/imagick/imagick/importimagepixels.xml
index 4a0c2dcee6..4eb82e5796 100644
--- a/reference/imagick/imagick/importimagepixels.xml
+++ b/reference/imagick/imagick/importimagepixels.xml
@@ -23,7 +23,7 @@
Importe des pixels depuis un tableau dans une image.
- Le paramètre map vaut générallement 'RGB'.
+ Le paramètre map vaut généralement 'RGB'.
Cette méthode impose les contraintes suivantes pour les paramètres : le nombre de pixels
du tableau doit correspondre à la longueur width x height x
de la carte.
diff --git a/reference/yaf/yaf_dispatcher/registerplugin.xml b/reference/yaf/yaf_dispatcher/registerplugin.xml
index d5ce0ae2ba..905e536fec 100644
--- a/reference/yaf/yaf_dispatcher/registerplugin.xml
+++ b/reference/yaf/yaf_dispatcher/registerplugin.xml
@@ -17,7 +17,7 @@
Enregistre une plugin (voir Yaf_Plugin_Abstract).
- Générallement, l'enregistrement d'un plugin se situe dans le
+ Généralement, l'enregistrement d'un plugin se situe dans le
bootstrap (voir Yaf_Bootstrap_Abstract).
diff --git a/reference/yaf/yaf_request_abstract/setbaseuri.xml b/reference/yaf/yaf_request_abstract/setbaseuri.xml
index 88122933cc..b92c9f45d6 100644
--- a/reference/yaf/yaf_request_abstract/setbaseuri.xml
+++ b/reference/yaf/yaf_request_abstract/setbaseuri.xml
@@ -6,7 +6,7 @@
Yaf_Request_Abstract::setBaseUri
- Défini l'URI de base
+ Définit l'URI de base
@@ -16,12 +16,12 @@
stringuir
- Défini l'URI de base utilisé lors de la phase de routage de la demande.
+ Définit l'URI de base utilisé lors de la phase de routage de la demande.
Aussi, si une demande survient avec l'URI a/b/c, et que l'URI de base
- est "a/b", suel "/c" sera utilisé lors de la phase de routage.
+ est "a/b", seul "/c" sera utilisé lors de la phase de routage.
- Générallement, vous n'avez pas à le définir, Yaf va le déterminer automatiquement.
+ Généralement, vous n'avez pas à le définir, Yaf va le déterminer automatiquement.
From a838b2eacfb5811b64c1b3a59dd7194dcee02dc1 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 15:31:15 +0100
Subject: [PATCH 93/96] fix: corriger conjugaisons et accents
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- Obtiens -> Obtient (outcontrol/ob-get-clean, sync x2)
- accèder -> accéder (wincache/book)
---
reference/outcontrol/functions/ob-get-clean.xml | 2 +-
reference/sync/syncreaderwriter/readlock.xml | 4 ++--
reference/sync/syncreaderwriter/writelock.xml | 4 ++--
reference/wincache/book.xml | 2 +-
4 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/reference/outcontrol/functions/ob-get-clean.xml b/reference/outcontrol/functions/ob-get-clean.xml
index 773eadef31..a949ab95c8 100644
--- a/reference/outcontrol/functions/ob-get-clean.xml
+++ b/reference/outcontrol/functions/ob-get-clean.xml
@@ -5,7 +5,7 @@
ob_get_clean
- Obtiens le contenu du tampon de sortie actif et désactive-le
+ Obtient le contenu du tampon de sortie actif et désactive-le
diff --git a/reference/sync/syncreaderwriter/readlock.xml b/reference/sync/syncreaderwriter/readlock.xml
index 12d32cfe5b..47b9de8ca6 100644
--- a/reference/sync/syncreaderwriter/readlock.xml
+++ b/reference/sync/syncreaderwriter/readlock.xml
@@ -5,7 +5,7 @@
SyncReaderWriter::readlock
- Obtiens un verrou de lecture
+ Obtient un verrou de lecture
@@ -15,7 +15,7 @@
intwait-1
- Obtiens un verrou de lecture sur un objet SyncReaderWriter.
+ Obtient un verrou de lecture sur un objet SyncReaderWriter.
diff --git a/reference/sync/syncreaderwriter/writelock.xml b/reference/sync/syncreaderwriter/writelock.xml
index 8a08aa48b5..5e4f6f10f9 100644
--- a/reference/sync/syncreaderwriter/writelock.xml
+++ b/reference/sync/syncreaderwriter/writelock.xml
@@ -5,7 +5,7 @@
SyncReaderWriter::writelock
- Obtiens un verrou d'écriture exclusif
+ Obtient un verrou d'écriture exclusif
@@ -15,7 +15,7 @@
intwait-1
- Obtiens un verrou d'écriture exclusif sur un objet SyncReaderWriter.
+ Obtient un verrou d'écriture exclusif sur un objet SyncReaderWriter.
diff --git a/reference/wincache/book.xml b/reference/wincache/book.xml
index b46d293856..53be20c764 100644
--- a/reference/wincache/book.xml
+++ b/reference/wincache/book.xml
@@ -42,7 +42,7 @@
Cache de fichiers - Même avec le cache d'opcode PHP activé, le moteur PHP
- doit accèder aux fichiers de script sur un système de fichiers. Lorsque les scripts PHP sont
+ doit accéder aux fichiers de script sur un système de fichiers. Lorsque les scripts PHP sont
stockés sur le système de fichiers d'un ordinateur distant, les opérations sur ces fichiers
introduisent une surcharge importante des performances. L'extension de Cache Windows pour PHP
inclut un cache de fichier qui est utilisé pour stocker le contenu des fichiers de scripts PHP
From d6ab575b5a265c69503fc2b76ec3bc7d8348d3a1 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 15:32:56 +0100
Subject: [PATCH 94/96] fix: corriger fautes d'orthographe diverses
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- extention -> extension (uopz/setup)
- systéme -> système (quickhash/savetostring)
---
reference/quickhash/quickhashintset/savetostring.xml | 2 +-
reference/uopz/setup.xml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/reference/quickhash/quickhashintset/savetostring.xml b/reference/quickhash/quickhashintset/savetostring.xml
index cb1cac38d2..2c29304341 100644
--- a/reference/quickhash/quickhashintset/savetostring.xml
+++ b/reference/quickhash/quickhashintset/savetostring.xml
@@ -28,7 +28,7 @@
Cette méthode retourne une chaîne de caractères contenant une version sérialisée de l'ensemble.
Chaque élément est stocké sous forme de valeur de quatre octets dans l'ordre d'octets que le
- systéme actuel utilise.
+ système actuel utilise.
diff --git a/reference/uopz/setup.xml b/reference/uopz/setup.xml
index 379180c3f7..c2994bbec7 100644
--- a/reference/uopz/setup.xml
+++ b/reference/uopz/setup.xml
@@ -26,7 +26,7 @@
PECL.
- À partir de uopz 5.0.0, l'extention doit être chargée en tant qu'
+ À partir de uopz 5.0.0, l'extension doit être chargée en tant qu'
extension. Antérieur à cette version, elle doit
être chargée comme une zend_extension.
From a13ab45746b9708e45af76be5e418b3699fef634 Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 15:36:20 +0100
Subject: [PATCH 95/96] fix: corriger fautes d'orthographe diverses
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- requete -> requête (oauth/examples)
- çà -> à (gearman/sendworkload)
- longeur -> longueur (uodbc/odbc-longreadlen)
---
reference/gearman/gearmantask/sendworkload.xml | 2 +-
reference/oauth/examples.xml | 2 +-
reference/uodbc/functions/odbc-longreadlen.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/reference/gearman/gearmantask/sendworkload.xml b/reference/gearman/gearmantask/sendworkload.xml
index 01cfb8dcab..85ab12a465 100644
--- a/reference/gearman/gearmantask/sendworkload.xml
+++ b/reference/gearman/gearmantask/sendworkload.xml
@@ -36,7 +36,7 @@
&reftitle.returnvalues;
- La longueur des données çà envoyer, ou &false;
+ La longueur des données à envoyer, ou &false;
si l'envoi échoue.
diff --git a/reference/oauth/examples.xml b/reference/oauth/examples.xml
index 0f91a8b933..c48056ea36 100644
--- a/reference/oauth/examples.xml
+++ b/reference/oauth/examples.xml
@@ -21,7 +21,7 @@ $conssec = 'your_consumer_secret';
session_start();
-// En état state=1 la prochaine requete doit inclure le oauth_token.
+// En état state=1 la prochaine requête doit inclure le oauth_token.
// Si ce n'est pas le cas, retour à 0
if(!isset($_GET['oauth_token']) && $_SESSION['state']==1) $_SESSION['state'] = 0;
try {
diff --git a/reference/uodbc/functions/odbc-longreadlen.xml b/reference/uodbc/functions/odbc-longreadlen.xml
index f9938163e6..55e4743d97 100644
--- a/reference/uodbc/functions/odbc-longreadlen.xml
+++ b/reference/uodbc/functions/odbc-longreadlen.xml
@@ -18,7 +18,7 @@
Active la gestion des colonnes de type LONG
et LONGVARCHAR et LONGVARBINARY.
- La longeur par défaut peut être définie en utilisant la directive &php.ini;
+ La longueur par défaut peut être définie en utilisant la directive &php.ini;
uodbc.defaultlrl
From 98ce24cd6b321309a9b31bc645236403b9fdcfbb Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Thu, 19 Feb 2026 15:37:11 +0100
Subject: [PATCH 96/96] =?UTF-8?q?fix:=20corriger=20accent=20manquant=20Sec?=
=?UTF-8?q?urit=C3=A9=20->=20S=C3=A9curit=C3=A9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- pdo/quote.xml
- mysql/mysql-real-escape-string.xml
---
reference/mysql/functions/mysql-real-escape-string.xml | 2 +-
reference/pdo/pdo/quote.xml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/reference/mysql/functions/mysql-real-escape-string.xml b/reference/mysql/functions/mysql-real-escape-string.xml
index 494b9a8261..9b227c66f2 100644
--- a/reference/mysql/functions/mysql-real-escape-string.xml
+++ b/reference/mysql/functions/mysql-real-escape-string.xml
@@ -47,7 +47,7 @@
- Securité : le jeu de caractères par défaut
+ Sécurité : le jeu de caractères par défaut
Le jeu de caractères doit être défini soit au niveau
serveur, soit avec la fonction API mysql_set_charset
diff --git a/reference/pdo/pdo/quote.xml b/reference/pdo/pdo/quote.xml
index 6aa1c6271e..80727fd79d 100755
--- a/reference/pdo/pdo/quote.xml
+++ b/reference/pdo/pdo/quote.xml
@@ -37,7 +37,7 @@
les requêtes préparées à la place.
- Securité : le jeu de caractères par défaut
+ Sécurité : le jeu de caractères par défaut
Le jeu de caractères doit être défini soit au niveau
du serveur, soit lors de la connexion à la base de