Maison développement back-end PHP7 Configuration de php.ini, php-fpm et www.conf en PHP7

Configuration de php.ini, php-fpm et www.conf en PHP7

Aug 23, 2019 pm 02:07 PM
php7

PHP7Configuration de php.ini, php-fpm et www.conf

php.ini est exécuté en php Fichier de configuration de base, voici quelques configurations courantes

extension_dir=""

● Définir le chemin de la bibliothèque d'extension PHP

expose_php = Off

● Évitez d'exposer les informations PHP dans les en-têtes http

display_errors = Off

● Évitez d'exposer les messages d'erreur lorsque PHP appelle mysql

log_errors = On

● Lors de la fermeture Activez le journal des erreurs PHP après display_errors (le chemin est configuré dans php-fpm.conf)

zend_extension=opcache.so extension=mysqli.so extension=pdo_mysql.so

● Configurez l'opcache et la bibliothèque dynamique mysql de PHP

date.timezone = PRC

● Définir le fuseau horaire PHP

opcache.enable=1

● Activer opcache

open_basedir = /usr/share/nginx/html;

● Définissez le script PHP pour autoriser l'accès au répertoire (doit être configuré en fonction de la situation réelle)

php-fpm.conf est le fichier de configuration du service de processus php-fpm. Voici quelques exemples courants. configurations

error_log = /usr/local/php/logs/php-fpm.log

● Définir le chemin du journal des erreurs

include=/usr/local/php7/etc/php-fpm.d/*.conf

● Présenter la configuration dans le www. fichier conf (défini par défaut)

Les principales informations de configuration de php-fpm.conf et www.conf

pid = run/php-fpm.pid

greep pid paramètre, la valeur par défaut est var/run/php-fpm.pid dans le répertoire d'installation, il est recommandé d'activer le

error_log = log/php-fpm.log

● journal des erreurs, qui est var/log/ php-fpm.log dans le répertoire d'installation par défaut

log_level = notice

● Niveau d'erreur disponible : alerte (doit être traité immédiatement), erreur (situation d'erreur), avertissement (. situation d'avertissement), avis (informations générales importantes), débogage (informations de débogage). Le nombre de processus php-cgi qui ont des erreurs SIGSEGV ou SIGBUS dans la valeur définie par Emergency_restart_interval dépasse Emergency_restart_threshold, php-fpm redémarrera gracieusement. Ces deux options restent généralement à leurs valeurs par défaut.

emergency_restart_threshold = 60

● Définissez le délai d'attente du processus enfant pour accepter le signal de réutilisation du processus principal. Unités disponibles : s (secondes), m (minutes), h (heures). , ou d (Jours) Unité par défaut : s (secondes). Valeur par défaut : 0.emergency_restart_interval = 60s

● Exécuter fpm en arrière-plan. changé en non pour le débogage. Dans FPM, il est possible d'exécuter plusieurs pools de processus avec des paramètres différents. Ces paramètres peuvent être définis individuellement pour chaque pool de processus. process_control_timeout = 0

● Le port d'écoute est l'adresse traitée par php dans nginx Généralement, la valeur par défaut est suffisante. Les formats disponibles sont : 'ip:port', 'port', '/path/to/unix/socket'. Chaque pool de processus doit être défini.daemonize = yes

gree backlog. Nombre, -1 signifie illimité, déterminé par le système d'exploitation, commentez simplement cette ligne. listen = 127.0.0.1:9000

● Autoriser l'accès à l'adresse IP du processus FastCGI. Définissez any sur une adresse IP sans restriction. Si vous souhaitez configurer nginx d'autres hôtes pour accéder également à ce processus FPM, définissez le. coût à l’écoute. Adresse IP accessible. La valeur par défaut est quelconque. Chaque adresse est séparée par des virgules. S'il n'est pas défini ou est vide, n'importe quel serveur est autorisé à demander une connexion listen.backlog = -1

● Options de configuration du socket Unix, en cas d'accès via TCP, commentez ici. il. listen.allowed_clients = 127.0.0.1

● Compte et groupe pour démarrer le processuslisten.owner = www listen.group = www listen.mode = 0666

Méthode d'optimisation du pool de processus php-fpm

user = www group = www

● Pour les serveurs dédiés, pm peut être réglé sur statique.

Comment contrôler le processus enfant, les options sont statiques et dynamiques. Si static est sélectionné, un nombre fixe de processus enfants est spécifié par pm.max_children. Si dynamique est sélectionné, il est déterminé par les paramètres suivants :

pm = dynamic

● Le nombre de processus php-fpm ouverts en mode statique, et il limite le processus maximum de php- fpm en mode dynamique Nombre (notez ici que la valeur de pm.max_spare_servers ne peut être qu'inférieure ou égale à pm.max_children)

● Le nombre de php-fpm initial processus en mode dynamique. pm.max_children

● Assurez-vous du nombre minimum de processus inactifs. Si le processus inactif est inférieur à cette valeur, créez un nouveau processus enfant pm.start_servers

● Garantir le nombre maximum de processus inactifs si le nombre de processus inactifs est supérieur à cette valeur, il sera nettoyé

.

● Si dm est défini sur static, seul le paramètre pm.max_children prendra effet. Le système ouvrira le nombre de processus php-fpm défini par les paramètres. Un processus php-fpm occupera probablement 20 à 40 mo de mémoire, son paramètre de taille numérique doit donc être défini en fonction de la taille de votre mémoire physique. Vous devez également faire attention aux autres occupations de mémoire, telles que les bases de données, les processus système, etc. , pour déterminer Les valeurs de réglage des 4 paramètres ci-dessus !

● Si dm est réglé sur dynamique, les 4 paramètres prendront effet. Le système démarrera les processus php-fpm pm.start_servers lorsque php-fpm commencera à s'exécuter, puis ajustera dynamiquement le nombre de processus php-fpm entre pm.min_spare_servers et pm.max_spare_servers en fonction des besoins du système. Le paramètre nécessite que la valeur de pm.start_servers soit comprise entre pm.min_spare_servers et pm.max_spare_servers.

pm.max_requests = 1000

● Définissez le nombre de requêtes traitées avant la renaissance de chaque processus enfant

● Le nombre maximum de requêtes traitées fait référence au nombre de requêtes qu'un php-. Le processus de travail fpm est en cours de traitement. Une fois la requête terminée, le processus maître en réengendrera une nouvelle.

● Le but principal de cette configuration est d'éviter les fuites de mémoire provoquées par l'interpréteur php ou les bibliothèques tierces référencées par le programme.

est très utile pour les modules tiers qui peuvent avoir des fuites de mémoire. Si elle est définie sur '0', les requêtes seront toujours acceptées. Équivalent à la variable d'environnement PHP_FCGI_MAX_REQUESTS Valeur par défaut : 0.

pm.status_path = /status

● L'URL de la page d'état FPM Si elle n'est pas définie, la page d'état n'est pas accessible. Valeur par défaut : aucune. La surveillance Munin utilisera

ping.path = /ping ● L'URL du ping de la page de surveillance du FPM Si elle n'est pas définie, la page ping n'est pas accessible. Cette page est utilisée pour détecter en externe si le FPM est vivant et peut répondre aux requêtes. commencez par une barre oblique (/).

ping.response = pong ● Utilisé pour définir la réponse de retour de la requête ping. Le texte renvoyé/texte au format brut est HTTP 200. Valeur par défaut : pong.

request_terminate_timeout = 0 ● Définir le délai d'attente pour une seule requête. Cette option peut être utile si le 'max_execution_time' dans le paramètre php.ini n'abandonne pas le script en cours d'exécution pour des raisons particulières. pour « Désactivé ». Vous pouvez essayer de modifier cette option lorsque des erreurs 502 se produisent fréquemment.

request_slowlog_timeout = 10s ● Lorsqu'une requête est définie pour le délai d'attente, les informations correspondantes de la pile d'appels PHP seront entièrement écrites dans le journal lent. Le définir sur « 0 » signifie « Désactivé ». '

slowlog = log/$pool.log.slow ● Journalisation lente des requêtes, à utiliser avec request_slowlog_timeout

rlimit_files = 1024 ● Définissez la limite rlimit de la limite du descripteur d'ouverture de fichier. Valeur par défaut : la valeur définie par le système du handle d'ouverture par défaut est 1024, qui peut être visualisée à l'aide de ulimit -n et modifiée avec ulimit -n 2048.

rlimit_core = 0 ● Définissez la valeur limite maximale du noyau rlimit Valeurs disponibles : "illimité", 0 ou entier positif : valeur définie par le système.

● Répertoire chroot au démarrage. Le répertoire défini doit être un chemin absolu. S'il n'est pas défini, le chroot ne sera pas utilisé. > ● Paramétrage du répertoire de démarrage, vers lequel sera automatiquement redirigé lors du démarrage. Le répertoire défini doit être un chemin absolu : répertoire actuel, ou /directory (lors du chrooting) chroot =

.

● Redirigez stdout et stderr pendant le processus en cours vers le fichier journal des erreurs principal. S'ils ne sont pas définis, stdout et stderr seront redirigés vers /dev/null selon les règles FastCGI : vide.`chdir =

         

● Nettoyer l'environnement

catch_workers_output = yes

variables_order

Le paramètre variables_order est expliqué dans un autre article clear_env = no  https://www .php .cn/php-weizijiaocheng-429277.html

Erreurs et solutions courantes

Le délai d'expiration de la demande n'est pas défini

● Si la valeur de request_terminate_timeout est définie sur 0 ou trop longue, cela peut entraîner la poursuite de l'exécution du script PHP. De cette façon, lorsque tous les processus php-cgi sont bloqués dans la fonction file_get_contents(), ce serveur Web Nginx+PHP ne peut plus gérer les nouvelles requêtes PHP, et Nginx renverra "502 Bad Gateway" à l'utilisateur. Définir un

temps d'exécution maximum pour les scripts PHP est nécessaire, mais cela traite les symptômes plutôt que la cause première. Par exemple, s'il est modifié en 30s, si file_get_contents() met du temps à obtenir le contenu d'une page Web, cela signifie que 150 processus php-cgi ne peuvent gérer que 5 requêtes par seconde, et il est également difficile pour le serveur Web d'éviter "502 Bad". Porte". La solution consiste à définir request_terminate_timeout sur 10 s ou une valeur raisonnable, ou à ajouter un paramètre timeout à file_get_contents !

Une configuration incorrecte du paramètre max_requests

● Une configuration incorrecte du paramètre max_requests peut provoquer des erreurs 502 intermittentes :

● Définissez le nombre de requêtes servies avant la renaissance de chaque processus enfant. Ceci est très utile pour les modules tiers qui peuvent avoir des fuites de mémoire. Si la valeur est « 0 », les requêtes seront toujours acceptées. variable. Valeur par défaut : 0.

Cette configuration signifie que lorsque le nombre de requêtes traitées par un processus PHP-CGI s'accumule à 500, le processus sera automatiquement redémarré.

● Mais pourquoi devons-nous relancer le processus ?

● Généralement dans les projets, nous utiliserons dans une certaine mesure certaines bibliothèques tierces de PHP. Ces bibliothèques tierces ont souvent des problèmes de fuite de mémoire. Si le processus PHP-CGI n'est pas redémarré régulièrement, il le sera inévitablement. provoquer une utilisation de la mémoire. Par conséquent, PHP-FPM, en tant que gestionnaire de PHP-CGI, fournit une telle fonction de surveillance pour redémarrer le processus PHP-CGI qui a demandé un nombre de fois spécifié afin de garantir que l'utilisation de la mémoire n'augmente pas.

Artefact de dépannage du journal lent, du débogage et des exceptions de php-fpm

● request_slowlog_timeout définit un paramètre de délai d'attente, slowlog définit l'emplacement de stockage du journal lent, tail -f / Vous pouvez voir le processus php qui s'exécute trop lentement dans var/log/www.slow.log.

Vous pouvez voir les problèmes courants de lecture réseau excessive et de requête Mysql lente. Si vous suivez les informations d'invite pour résoudre le problème, vous aurez une direction claire.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Que dois-je faire si le plug-in est installé dans php7.0 mais qu'il indique toujours qu'il n'est pas installé ? Que dois-je faire si le plug-in est installé dans php7.0 mais qu'il indique toujours qu'il n'est pas installé ? Apr 02, 2024 pm 07:39 PM

Pour résoudre le problème du plugin n'affichant pas installé dans PHP 7.0 : Vérifiez la configuration du plugin et activez le plugin. Redémarrez PHP pour appliquer les modifications de configuration. Vérifiez les autorisations du fichier du plugin pour vous assurer qu'elles sont correctes. Installez les dépendances manquantes pour garantir le bon fonctionnement du plugin. Si toutes les autres étapes échouent, reconstruisez PHP. D'autres causes possibles incluent des versions de plugin incompatibles, le chargement d'une mauvaise version ou des problèmes de configuration PHP.

Comment résoudre le problème lorsque php7 détecte que le port TCP ne fonctionne pas Comment résoudre le problème lorsque php7 détecte que le port TCP ne fonctionne pas Mar 22, 2023 am 09:30 AM

En php5, nous pouvons utiliser la fonction fsockopen() pour détecter le port TCP. Cette fonction peut être utilisée pour ouvrir une connexion réseau et effectuer certaines communications réseau. Mais en php7, la fonction fsockopen() peut rencontrer certains problèmes, comme ne pas pouvoir ouvrir le port, ne pas pouvoir se connecter au serveur, etc. Afin de résoudre ce problème, nous pouvons utiliser la fonction socket_create() et la fonction socket_connect() pour détecter le port TCP.

Comment installer l'extension mongo dans php7.0 Comment installer l'extension mongo dans php7.0 Nov 21, 2022 am 10:25 AM

Comment installer l'extension mongo dans php7.0 : 1. Créez le groupe d'utilisateurs et l'utilisateur mongodb ; 2. Téléchargez le package de code source mongodb et placez le package de code source dans le répertoire "/usr/local/src/" ; Entrez le répertoire « src/ » ; 4. Décompressez le package de code source ; 5. Créez le répertoire de fichiers mongodb ; 6. Copiez les fichiers dans le répertoire « mongodb/ » 7. Créez le fichier de configuration mongodb et modifiez la configuration.

Guide FAQ de l'environnement serveur PHP : résoudre rapidement les problèmes courants Guide FAQ de l'environnement serveur PHP : résoudre rapidement les problèmes courants Apr 09, 2024 pm 01:33 PM

Les solutions courantes pour les environnements de serveur PHP consistent à s'assurer que la version correcte de PHP est installée et que les fichiers pertinents ont été copiés dans le répertoire du module. Désactivez SELinux temporairement ou définitivement. Vérifiez et configurez PHP.ini pour vous assurer que les extensions nécessaires ont été ajoutées et configurées correctement. Démarrez ou redémarrez le service PHP-FPM. Vérifiez les paramètres DNS pour les problèmes de résolution.

Comment installer et déployer php7.0 Comment installer et déployer php7.0 Nov 30, 2022 am 09:56 AM

Comment installer et déployer php7.0 : 1. Accédez au site officiel de PHP pour télécharger la version d'installation correspondant au système local ; 2. Extrayez le fichier zip téléchargé dans le répertoire spécifié 3. Ouvrez la fenêtre de ligne de commande et accédez à ; le répertoire "E:\php7" Exécutez simplement la commande "php -v".

Comment définir automatiquement les autorisations d'UnixSocket après le redémarrage du système? Comment définir automatiquement les autorisations d'UnixSocket après le redémarrage du système? Mar 31, 2025 pm 11:54 PM

Comment définir automatiquement les autorisations d'UnixSocket après le redémarrage du système. Chaque fois que le système redémarre, nous devons exécuter la commande suivante pour modifier les autorisations d'UnixSocket: sudo ...

Lequel est le meilleur, php8 ou php7 ? Lequel est le meilleur, php8 ou php7 ? Nov 16, 2023 pm 03:09 PM

Par rapport à PHP7, PHP8 présente certains avantages et améliorations en termes de performances, de nouvelles fonctionnalités et améliorations de la syntaxe, du système de types, de la gestion des erreurs et des extensions. Cependant, le choix de la version à utiliser dépend de vos besoins spécifiques et des circonstances du projet. Introduction détaillée : 1. Amélioration des performances, PHP8 introduit le compilateur Just-in-Time (JIT), qui peut améliorer la vitesse d'exécution du code ; 2. Nouvelles fonctionnalités et améliorations de la syntaxe, PHP8 prend en charge la déclaration des paramètres nommés et des paramètres facultatifs, création de fonctions L'appel est plus flexible ; des classes anonymes, des déclarations de propriétés de type, etc. sont introduites.

Pourquoi une erreur se produit-elle lors de l'installation d'une extension à l'aide de PECL dans un environnement Docker? Comment le résoudre? Pourquoi une erreur se produit-elle lors de l'installation d'une extension à l'aide de PECL dans un environnement Docker? Comment le résoudre? Apr 01, 2025 pm 03:06 PM

Causes et solutions pour les erreurs Lors de l'utilisation de PECL pour installer des extensions dans un environnement Docker Lorsque nous utilisons un environnement Docker, nous rencontrons souvent des maux de tête ...

See all articles