From 417d4785fef9e86a02be9c0f59d74570a390a19a Mon Sep 17 00:00:00 2001 From: lacatoire Date: Tue, 25 Aug 2026 09:26:14 +0200 Subject: [PATCH 1/2] [Sync-En] outcontrol: clarify ob_get_status buffer_size and ob_start chunk_size Closes: php/doc-fr#3338 --- reference/outcontrol/functions/ob-get-status.xml | 13 ++++++++++--- reference/outcontrol/functions/ob-start.xml | 14 ++++++++++---- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/reference/outcontrol/functions/ob-get-status.xml b/reference/outcontrol/functions/ob-get-status.xml index a2c7a9e871..9e921314b6 100644 --- a/reference/outcontrol/functions/ob-get-status.xml +++ b/reference/outcontrol/functions/ob-get-status.xml @@ -1,6 +1,5 @@ - - + ob_get_status @@ -108,7 +107,15 @@ buffer_size - Taille du tampon de sortie en octets + Taille actuellement allouée du tampon de sortie en octets. + Elle démarre à 16384 octets avec le + chunk_size par défaut, ou à + chunk_size arrondi au prochain multiple de + 4096 lorsqu'une valeur est fournie, et croît par + multiples de 4096 au fur et à mesure que des données + sont mises en tampon. + Ce n'est pas la quantité de données dans le tampon (voir + buffer_used). diff --git a/reference/outcontrol/functions/ob-start.xml b/reference/outcontrol/functions/ob-start.xml index 5e37bebca0..387f99985d 100644 --- a/reference/outcontrol/functions/ob-start.xml +++ b/reference/outcontrol/functions/ob-start.xml @@ -1,6 +1,5 @@ - - + ob_start @@ -111,15 +110,22 @@ chunk_size - + Si le paramètre optionnel chunk_size est passé, la mémoire tampon sera vidée après tout bloc de code résultant en une sortie qui fait que la longueur de la mémoire tampon égale ou dépasse chunk_size. La valeur par défaut 0 signifie que toute la sortie est mise en mémoire tampon jusqu'à ce que la mémoire tampon soit désactivée. + Une valeur de 1 signifie que la mémoire tampon sera vidée + après chaque opération de sortie, désactivant ainsi effectivement la mise en mémoire tampon. + chunk_size détermine également la taille initiale du tampon + rapportée par ob_get_status : + 16384 octets lorsqu'il vaut 0, et + chunk_size arrondi au prochain multiple de + 4096 sinon. Consulter pour plus de détails. - + From e8325efdd4c1d34c89066ed7a91e90e89cd9f24c Mon Sep 17 00:00:00 2001 From: lacatoire Date: Tue, 25 Aug 2026 09:31:57 +0200 Subject: [PATCH 2/2] [Sync-En] flock: document Windows deadlock; modernize Apache httpd install guide Closes: php/doc-fr#3326 Closes: php/doc-fr#3327 --- install/unix/apache2.xml | 356 ++++++++++++----------- language-snippets.ent | 8 +- reference/filesystem/functions/flock.xml | 25 +- 3 files changed, 203 insertions(+), 186 deletions(-) diff --git a/install/unix/apache2.xml b/install/unix/apache2.xml index 14b3e6caf1..e61d3bf9dd 100644 --- a/install/unix/apache2.xml +++ b/install/unix/apache2.xml @@ -1,49 +1,72 @@ - - + - Apache 2.x sur les systèmes Unix - + Apache httpd 2.x sur les systèmes Unix + + Cette section contient les notes et conseils d'installation de PHP avec le serveur - Apache 2.x sur les systèmes Unix. - - - &warn.apache2.compat; - - + HTTP Apache 2.x sur les systèmes Linux et de type Unix. + + + + Utiliser PHP-FPM à la place + + Ne pas utiliser mod_php pour les nouvelles + installations. Les instructions de cette page sont conservées + à titre de référence historique et pour les rares cas où l'intégration de PHP + directement dans le processus Apache httpd est spécifiquement requise. + + + Pour tous les déploiements modernes, utiliser + PHP-FPM (FastCGI Process Manager) + avec le module mod_proxy_fcgi d'Apache httpd. PHP-FPM + offre une meilleure gestion des ressources, l'isolation des processus, le redémarrage + indépendant de PHP sans redémarrer Apache httpd, et la compatibilité avec le MPM + event d'Apache httpd (le MPM par défaut depuis Apache httpd 2.4). + Les principales distributions Linux utilisent cette configuration par défaut. + + + L'approche mod_php intègre PHP directement dans chaque processus + worker d'Apache httpd. Sauf si PHP est compilé avec la sécurité des threads + (--enable-zts), mod_php requiert + le MPM prefork, ce qui limite significativement la + simultanéité. L'utilisation de mod_php implique + de bien comprendre les implications en termes de performances et de sécurité. + + + + La Documentation Apache - est la meilleure source d'informations sur le serveur Apache 2.x. - La plupart des informations sur les options d'installation d'Apache + est la meilleure source d'informations sur le serveur Apache httpd 2.x. + La plupart des informations sur les options d'installation d'Apache httpd peut y être trouvée. - - - - La version la plus récente du serveur HTTP Apache peut être obtenue + + + + La version la plus récente d'Apache httpd peut être obtenue depuis la page de téléchargement d'Apache, et une version adaptée de PHP depuis les liens ci-dessus. - Ce guide couvre uniquement les bases de fonctionnement d'Apache 2.x avec PHP. + Ce guide couvre uniquement les bases de fonctionnement d'Apache httpd 2.x avec PHP. Pour plus d'informations, lire la documentation Apache. Les numéros de version sont omis ici, pour s'assurer que les instructions ne soient pas incorrectes. Dans les exemples ci-dessous, 'NN' devra être remplacé - par la version spécifique d'Apache à utiliser. - - - - Il y a actuellement 2 versions d'Apache 2.x - 2.4 et 2.2. - Il y a plusieurs raisons de choisir l'une plutôt que l'autre ; néanmoins, la version - 2.4 est actuellement la dernière version disponible et c'est aussi celle - qui est recommandée. Cependant, les instructions contenues - dans ce guide devraient fonctionner pour la version 2.4 comme pour la version 2.2. Note : Apache httpd 2.2 est officiellement en fin de vie, il n'y aura plus de développement ni de correctif pour cette version. - - + par la version spécifique d'Apache httpd à utiliser. + + + + Ces instructions s'appliquent à Apache httpd 2.4, qui est la seule branche + de version supportée d'Apache httpd. Les versions antérieures (2.2 et inférieures) + sont en fin de vie et ne doivent pas être utilisées. + + - - Télécharger le serveur HTTP Apache depuis le site ci-dessus et le décompresser : - - + + Télécharger Apache httpd depuis le site ci-dessus et le décompresser : + + - + - + De la même façon, télécharger et décompresser les sources de PHP : - - + + - + - - Compiler et installer Apache. Consulter la documentation sur l'installation - d'Apache pour plus de détails quant à la compilation de ce logiciel. - - + + Compiler et installer Apache httpd. Consulter la documentation sur l'installation + d'Apache httpd pour plus de détails. Il est à noter que mod_php + requiert le MPM prefork, sauf si PHP a été compilé + avec la sécurité des threads (--enable-zts). Pour + utiliser PHP-FPM à la place (recommandé), il est possible d'utiliser le MPM + event par défaut et passer directement aux + instructions d'installation de PHP-FPM. + + - + - Maintenant qu'Apache 2.x.NN est disponible sous /usr/local/apache2, - le configurer avec le support pour le chargement de modules, ainsi que le - MPM prefork standard. Pour tester l'installation, utiliser la procédure - normale pour démarrer le serveur Apache, c.-à-d. : + Maintenant qu'Apache httpd 2.x.NN est disponible sous /usr/local/apache2, + configuré avec le support du chargement de modules et le MPM prefork. + Pour tester l'installation, utiliser la procédure normale pour démarrer + le serveur Apache httpd, c.-à-d. : @@ -99,8 +127,9 @@ make install ]]> + et l'arrêter pour continuer la configuration de PHP : - + - + - - + Maintenant, configurer et compiler PHP. Ce sera à ce moment-là où il est possible de personnaliser PHP avec les diverses options disponibles, comme la liste des extensions à activer. Exécuter ./configure --help pour la liste des options disponibles. Dans notre exemple, nous effectuerons - une configuration simple, avec Apache 2 et le support MySQL. - - - - Si Apache a été construit depuis les sources, tel que décrit ci-dessus, + une configuration simple, avec Apache httpd et le support MySQL. + + + + Si Apache httpd a été construit depuis les sources, tel que décrit ci-dessus, l'exemple suivant devrait être correct concernant les chemins vers apxs, mais si - Apache a été installé d'une autre façon, il faut prendre en compte les + Apache httpd a été installé d'une autre façon, il faut prendre en compte les spécificités et ajuster les chemins apxs en conséquence. Il est à noter que suivant les distributions, il peut être nécessaire de renommer apxs en apxs2. - + + - - + + En cas de modification des options de configuration après l'installation, - il faut exécuter de nouveau les étapes configure, make et make install. + il faut exécuter de nouveau les étapes configure, make + et make install. Il suffit alors de redémarrer Apache pour que le nouveau module prenne effet. - Une re-compilation d'Apache n'est pas nécessaire. - - + Une re-compilation d'Apache httpd n'est pas nécessaire. + + - Il est à noter que, sauf indications contraires, l'étape "make install" installera - également PEAR, mais aussi divers outils PHP comme phpize, PHP CLI et - bien plus encore. + Il est à noter que, sauf indications contraires, l'étape make install + installera également PEAR, + divers outils PHP comme phpize, + PHP CLI et bien plus encore. - - + - + Configurer le fichier php.ini. - - + + - - - Il faut éditer le fichier .ini pour définir les options PHP. + + + Il faut éditer le fichier .ini pour définir les options PHP. Pour placer ce fichier dans un autre répertoire, utiliser l'option --with-config-file-path=/some/path à l'étape 5. - - - - En cas d'utilisation du fichier php.ini-production, il faut s'assurer de lire la liste - des modifications correspondante car il peut affecter considérablement la façon - dont PHP fonctionnera. - - + + + + En cas d'utilisation du fichier php.ini-production, il faut s'assurer + de lire la liste des modifications correspondante car il peut affecter considérablement + la façon dont PHP fonctionnera. + - + - - + Éditer le fichier httpd.conf pour charger le module PHP. Le chemin spécifié - à droite de la chaîne LoadModule, doit correspondre au chemin système du module - PHP. L'étape "make install" ci-dessus devrait avoir réalisé cette opération - automatiquement, mais une simple vérification permettra de s'en assurer. - + à droite de l'instruction LoadModule doit correspondre au chemin système + du module PHP. L'étape make install ci-dessus devrait avoir réalisé + cette opération automatiquement, mais une simple vérification permettra de s'en assurer. + - - Pour PHP 8: - - - - - Pour PHP 7: - - - - - - - + - - - Configurer Apache pour analyser certaines extensions comme étant des scripts PHP. - Par exemple, laisser Apache passer à PHP les fichiers dont l'extension est + + Configurer Apache httpd pour analyser certaines extensions comme étant des scripts PHP. + Par exemple, laisser Apache httpd passer à PHP les fichiers dont l'extension est .php. - Au lieu d'utiliser seulement la directive AddType d'Apache, - nous souhaitons éviter tout risque potentiellement dangereux, lors - d'un téléchargement et de la création de fichier comme exploit.php.jpg, + Au lieu d'utiliser seulement la directive AddType, + nous souhaitons éviter tout risque potentiellement dangereux lors + d'un téléchargement et de la création de fichiers comme exploit.php.jpg, d'être exécutés par PHP. En utilisant cet exemple, il est possible d'avoir n'importe - quelle extension analysée par PHP. Nous avons ajouté .php pour l'exemple. - - - + quelle extension analysée par PHP, simplement en les ajoutant. Nous avons ajouté + .php pour l'exemple. + + - + Ou, pour autoriser les fichiers .php, .php2, .php3, .php4, .php5, .php6, et .phtml à être analysés par PHP, mais rien d'autre, nous utiliserons ceci : - + + SetHandler application/x-httpd-php ]]> - + Et pour autoriser les fichiers .phps à être gérés par le filtre du code - source de PHP, et ainsi, être affichés comme code source avec la coloration + source de PHP, et ainsi être affichés comme code source avec la coloration syntaxique, utiliser ceci : - + FallbackResource peut être utilisée. - Elle est disponible à partir d'Apache 2.4.4. @@ -305,7 +316,7 @@ FallbackResource /index.php d'être affiché comme code source avec coloration syntaxique, sans pour autant avoir besoin de le renommer ou de le copier avec une extension .phps : - + - - + + Le filtre de code source PHP ne devrait pas être actif sur des systèmes de production, car il peut exposer du code confidentiel ou des informations sensibles contenues dans le code source. - - + - + - - Utiliser la procédure normale pour démarrer le serveur Apache, c.-à-d. : - - + + Utiliser la procédure normale pour démarrer Apache httpd, c.-à-d. : + + - + Ou - + - + - - - En ayant suivi les étapes précédentes, le serveur web est maintenant un - Apache2 fonctionnel avec le support PHP comme module SAPI. - Bien sûr, il y a une multitude d'autres options de configuration de disponibles - avec Apache et PHP. Pour plus d'informations, entrer la commande + + + En ayant suivi les étapes précédentes, le serveur web Apache httpd est maintenant + fonctionnel avec le support PHP comme module SAPI. + Il y a une multitude d'autres options de configuration disponibles + avec Apache httpd et PHP. Pour plus d'informations, entrer la commande ./configure --help dans l'arbre source correspondant. - - - Apache peut être compilé en mode multithreadé, en sélectionnant - le MPM worker, plutôt que le standard - MPM prefork. Ceci est fait en ajoutant l'option - suivante à l'argument de la commande "./configure", à l'étape 3 ci-dessus : - - - - - - - - Cela ne devrait pas être entrepris sans être conscients des conséquences, - et ayant au moins une juste compréhension de ce que cela implique. - La documentation Apache concernant - MPM-Modules - apportera d'importantes informations qui permettront de prendre - une décision. - + + - - La FAQ Apache - MultiViews traite de l'utilisation MultiViews avec PHP. - + Compatibilité MPM + + Sauf si PHP a été compilé avec la sécurité des threads Zend + (--enable-zts), mod_php requiert + le MPM prefork. + Pour savoir pourquoi, lire l'entrée de la FAQ correspondante sur l'utilisation + d'Apache httpd avec un MPM + threadé. + + + + La plupart des paquets de distribution de + mod_php ne sont pas compilés avec ZTS, donc + prefork est généralement requis. Si vous avez besoin d'un + MPM threadé (recommandé pour de meilleures performances sous charge), utiliser + PHP-FPM avec + mod_proxy_fcgi à la place. + + - - Pour compiler une version multithreadée d'Apache, le système cible - doit supporter les threads. Dans ce cas, PHP doit également être construit - avec Zend Thread Safety (ZTS). Sous cette configuration, toutes les extensions - ne seront pas disponibles. La configuration recommandée est de compiler Apache avec le - module MPM prefork par défaut. - + + La FAQ Apache + MultiViews traite de l'utilisation MultiViews avec PHP. + + -Nous ne recommandons pas - l'utilisation de PHP dans un environnement threadé MPM, avec Apache 2. - Utilisez le mode prefork MPM, qui est le MPM par défaut pour Apache 2.0 et 2.2. - Pour savoir pourquoi, lisez - l'entrée de la FAQ correspondante à l'utilisation - d'Apache 2 dans un environnement threadé MPM.'> Les versions provenant de tiers sont considérées comme non officielles et ne diff --git a/reference/filesystem/functions/flock.xml b/reference/filesystem/functions/flock.xml index f439e7975a..be7787fbbd 100644 --- a/reference/filesystem/functions/flock.xml +++ b/reference/filesystem/functions/flock.xml @@ -1,7 +1,6 @@ - - + flock @@ -193,6 +192,23 @@ fclose($fp); comme FAT et ses dérivés, et retourne forcément &false; sous ces environnements. + + Sur Windows, si PHP essaie d'exécuter un fichier source PHP verrouillé par + LOCK_EX, il va se bloquer jusqu'à ce que le fichier soit + déverrouillé. L'exemple suivant provoquera un interblocage : + + + +]]> + + + @@ -200,6 +216,11 @@ fclose($fp); il ne peut pas accéder au fichier à travers ce gestionnaire jusqu'à ce que le fichier soit déverrouillé. + + Sur Windows, si vous essayez d'inclure avec require un fichier + verrouillé par LOCK_EX, cela échouera avec l'erreur : + ErrorException: require(): Read of X bytes failed with errno=13 Permission denied +