Maison développement back-end tutoriel php Comment les scripts PHP obtiennent-ils l'autorisation de contrôler le démarrage Nginx et l'arrêt?

Comment les scripts PHP obtiennent-ils l'autorisation de contrôler le démarrage Nginx et l'arrêt?

Apr 01, 2025 am 09:24 AM
docker nginx 操作系统 script php

Résolvez le problème du script PHP contrôlant les autorisations de démarrage et d'arrêt de Nginx

Cet article explique comment utiliser les scripts PHP pour contrôler le démarrage et l'arrêt d'un serveur NGINX. De nombreux utilisateurs essaient d'exécuter des commandes système à l'aide shell_exec() , mais l'exécution des commandes échoue en raison d'autorisations insuffisantes. Par exemple, shell_exec('service nginx stop') semble réussir, mais le service nginx ne s'arrête pas réellement.

Comment les scripts PHP obtiennent-ils l'autorisation de contrôler le démarrage Nginx et l'arrêt?

La cause profonde du problème est que les scripts PHP sont généralement exécutés en tant qu'utilisateurs non racinaires (tels que www-data), et la commande service nécessite des autorisations racine pour faire fonctionner le système. Même si la commande renvoie "terminée", cela ne signifie pas que le service a été arrêté avec succès.

Solution: Accordez les autorisations Sudo

Pour résoudre ce problème, il est nécessaire de donner aux coureurs PHP (tels que www-data) l'autorisation d'exécuter des commandes sudo sans mot de passe. Cela nécessite une modification minutieuse du fichier /etc/sudoers . Il est fortement recommandé d'utiliser la commande visudo pour modifier le fichier pour éviter la corruption du fichier:

 Sudo Visudo
Copier après la connexion

Ajoutez la ligne suivante à la fin du fichier /etc/sudoers :

 <code># 允许www-data用户无需密码执行所有sudo命令www-data ALL=(ALL) NOPASSWD: ALL</code>
Copier après la connexion

Remarque: ALL=(ALL) NOPASSWD: ALL donne aux utilisateurs www-data des autorisations extrêmement élevées. Veuillez ajuster la portée de l'autorisation en fonction des besoins réels. Seules les commandes nécessaires peuvent être exécutées, telles que www-data ALL=(ALL) NOPASSWD: /usr/sbin/service nginx * seule le fonctionnement des services nginx est autorisé.

Une fois la modification terminée, les commandes du code PHP doivent être modifiées en:

 $ command = 'sudo service nginx stop';
$ output = shell_exec ($ Command);
Echo $ sortie; // Résultat d'exécution de la commande de sortie
Copier après la connexion

Étapes supplémentaires dans l'environnement Docker:

Dans le conteneur Docker, vous devez d'abord installer Sudo:

 APT-Get Update && apt-get install -y sudo
Copier après la connexion

Ensuite, suivez les étapes ci-dessus pour modifier le fichier /etc/sudoers . Assurez-vous que Sudo est correctement configuré dans le conteneur et que la modification du fichier /etc/sudoers prend effet.

Grâce aux étapes ci-dessus, le script PHP peut obtenir des autorisations suffisantes pour contrôler le début et l'arrêt du service NGINX. N'oubliez pas que la modification du fichier /etc/sudoers nécessite un fonctionnement minutieux, car une configuration incorrecte peut entraîner une instabilité du système. Il est recommandé de sauvegarder le fichier avant la modification et de vérifier soigneusement l'exactitude de la configuration après modification.

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

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

<🎜>: Dead Rails - Comment apprivoiser les loups
3 Il y a quelques semaines By DDD
Niveaux de force pour chaque ennemi et monstre de R.E.P.O.
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
<🎜>: Grow A Garden - Guide de mutation complet
2 Il y a quelques semaines By DDD

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)

Sujets chauds

Tutoriel Java
1655
14
Tutoriel PHP
1253
29
Tutoriel C#
1227
24
Installation du logiciel GIT Installation du logiciel GIT Apr 17, 2025 am 11:57 AM

L'installation du logiciel GIT comprend les étapes suivantes: Téléchargez le package d'installation et exécutez le package d'installation pour vérifier la configuration d'installation Git Installation Git Bash (Windows uniquement)

Comment définir les propriétés globales de configuration GIT importantes Comment définir les propriétés globales de configuration GIT importantes Apr 17, 2025 pm 12:21 PM

Il existe de nombreuses façons de personnaliser un environnement de développement, mais le fichier global de configuration GIT est celui qui est le plus susceptible d'être utilisé pour des paramètres personnalisés tels que les noms d'utilisateur, les e-mails, les éditeurs de texte préférés et les branches distantes. Voici les éléments clés que vous devez savoir sur les fichiers de configuration globale GIT.

Docker sur Linux: conteneurisation pour les systèmes Linux Docker sur Linux: conteneurisation pour les systèmes Linux Apr 22, 2025 am 12:03 AM

Docker est important sur Linux car Linux est sa plate-forme native qui fournit des outils riches et un support communautaire. 1. Installer Docker: Utilisez Sudoapt-GetUpdate et Sudoapt-GetInstallDocker-Cedocker-Ce-Clicotainerd.io. 2. Créer et gérer les conteneurs: utilisez des commandes Dockerrun, telles que Dockerrun-D --namemyNginx-p80: 80nginx. 3. Écrivez Dockerfile: Optimisez la taille de l'image et utilisez une construction en plusieurs étapes. 4. Optimisation et débogage: utilisez des dockerlogs et dockerex

Quelle est la différence entre les fuites de mémoire dans les programmes Java sur les processeurs ARM et architecture x86? Quelle est la différence entre les fuites de mémoire dans les programmes Java sur les processeurs ARM et architecture x86? Apr 19, 2025 pm 11:18 PM

Analyse du phénomène de fuite de mémoire des programmes Java sur différents processeurs d'architecture. Cet article discutera d'un cas où un programme Java présente différents comportements de mémoire sur les processeurs ARM et architecture x86 ...

Comment les technologies de contenerisation (comme Docker) affectent-elles l'importance de l'indépendance de la plate-forme de Java? Comment les technologies de contenerisation (comme Docker) affectent-elles l'importance de l'indépendance de la plate-forme de Java? Apr 22, 2025 pm 06:49 PM

Les technologies de conteneurisation telles que Docker améliorent plutôt que de remplacer l'indépendance de la plate-forme de Java. 1) Assurer la cohérence entre les environnements, 2) Gérer les dépendances, y compris des versions JVM spécifiques, 3) Simplifier le processus de déploiement pour rendre les applications Java plus adaptables et gérables.

Tutoriel d'installation du logiciel GIT Tutoriel d'installation du logiciel GIT Apr 17, 2025 pm 12:06 PM

Guide d'installation du logiciel GIT: Visitez le site Web officiel de Git pour télécharger l'installateur pour Windows, MacOS ou Linux. Exécutez le programme d'installation et suivez les invites. Configurez Git: définissez le nom d'utilisateur, le courrier électronique et sélectionnez un éditeur de texte. Pour les utilisateurs de Windows, configurez l'environnement Git Bash.

Utilisez le compositeur pour résoudre le reniflement du navigateur: l'application pratique dont la bibliothèque Browser / Parser Utilisez le compositeur pour résoudre le reniflement du navigateur: l'application pratique dont la bibliothèque Browser / Parser Apr 17, 2025 pm 11:21 PM

J'ai rencontré un problème délicat lors du développement d'un site Web compatible multi-appareils: comment identifier avec précision le navigateur et les informations de l'appareil de l'utilisateur. Après avoir essayé plusieurs méthodes, j'ai constaté que l'analyse directe des chaînes d'agent utilisateur (agent utilisateur) est à la fois complexe et peu fiable, et souvent des erreurs de jugement. Heureusement, j'ai résolu ce problème avec succès en installant la bibliothèque WhatBrowser / Parser à l'aide du compositeur.

Quels sont les principes sous-jacents et le processus de mise à niveau de verrouillage synchronisé en Java? Quels sont les principes sous-jacents et le processus de mise à niveau de verrouillage synchronisé en Java? Apr 19, 2025 pm 09:48 PM

Exploration du principe sous-jacent de synchronisé et des détails du processus de mise à niveau de verrouillage dans Java, le mot-clé synchronisé est l'un des outils utilisés pour implémenter la synchronisation du thread, et son sous-jacent ...

See all articles