


Comment les scripts PHP obtiennent-ils l'autorisation de contrôler le démarrage Nginx et l'arrêt?
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.
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
Ajoutez la ligne suivante à la fin du fichier /etc/sudoers
:
<code># 允许www-data用户无需密码执行所有sudo命令www-data ALL=(ALL) NOPASSWD: ALL</code>
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
É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
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

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

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Sujets chauds











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)

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 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

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 ...

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.

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.

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.

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 ...
