@tuanptit
<?php echo shell_exec('service httpd restart &'); ?>
Vous pourriez avoir des problèmes avec les autorisations d'un tel script essayant de le faire bien. Il semble que vous soyez dans un environnement de développement complet, donc cela ne devrait pas vous importer de lui accorder des privilèges élevés.
Mais la meilleure façon de gérer cela, à mon humble avis, est de donner à l'utilisateur qu'Apache fonctionne sous l'accès pour redémarrer Apache via le sudo command.
Vous voulez modifier votre fichier/etc/sudoers et ajouter des lignes similaires à ce qui suit:
Cmnd_Alias RESTART_APACHE = /sbin/service apache2 restart
www-data ALL=NOPASSWD: RESTART_APACHE
Vous devrez peut-être nobody
au lieu de www-data
, cela dépend de l'utilisateur, qui fonctionne sous Apache. Sur Debian, Apache tourne généralement sous l'utilisateur www-data
, alors que sous Red Hat, souvent Apache fonctionne sous l'utilisateur nobody. En outre, le /sbin/service apache2 restart
peut devoir être /sbin/service apache restart
ou peut-être /sbin/service httpd restart
. Tout dépend de la configuration de votre système.
Une fois cela fait, en PHP, vous pouvez utiliser le code: (. Il est évident que le changement que si la commande pour redémarrer Apache est différent sur votre serveur)
exec('/sbin/service apache2 restart');
S'il vous plaît noter: cela pourrait très bien être considéré comme un risque de sécurité! Si vous faites cela, vous faites entièrement confiance l'sudo
binaire, le binaire service
, et votre système d'obéir aux règles et ne pas laisser un processus Apache/PHP obtenir un shell root. Je recommande fortement de demander au http://serverfault.com pour les implications de ce que vous faites ici.
essayé '' –
double possible de [pourquoi commande php \ 'exec ("service de redémarrage apache2") php echo shell_exec ('service httpd restart &');?>?; \ 'ne pas w ork sur ubuntu?] (http: // stackoverflow.com/questions/8202887/pourquoi-php-command-execservice-apache2-restart-faire-travailler-sur-ubuntu) – cb0
Votre sudoers dit que le redémarrage est autorisé mais que vous rechargez dans votre exec(). C'est une très mauvaise idée en termes de sécurité, pourquoi voulez-vous cela? Pourquoi ne pas rester avec l'accès SSH, ou un moniteur de processus ou quelque chose? – jedifans