[Réglé] Un killall en PHP
12 messages • Page 1 sur 1
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
- objectifweb
- WRInaute occasionnel

- Messages: 130
- Inscription: Mer Oct 06, 2004 9:58
[Réglé] Un killall en PHP
Bonjour,
Pour un client avec son serveur dédié, nous avons besoin de relancer un service sur le serveur, manuellement, nous le faisons avec un killall (shell) et de cette manière, cela fonctionne bien.
Maintenant nous souhaitons ajouter un bouton dans l'admin du client pour faire le même travail. Nous ne parvenons pas à lancer cette commande depuis le PHP avec passthru, exec_shell .... aucune commande ne fait le travail ni ne donne un message d'erreur ...
Identique avec la méthode sudo qui permet de lancer la commande en mode 'root', cela ne marche pas non plus
Il doit y avoir une protection quelque part, bien logique d'ailleurs, mais quelqu'un a une idée de quoi faire pour autoriser apache à lancer cette commande ?
Très cordialement
Patrick
Pour un client avec son serveur dédié, nous avons besoin de relancer un service sur le serveur, manuellement, nous le faisons avec un killall (shell) et de cette manière, cela fonctionne bien.
Maintenant nous souhaitons ajouter un bouton dans l'admin du client pour faire le même travail. Nous ne parvenons pas à lancer cette commande depuis le PHP avec passthru, exec_shell .... aucune commande ne fait le travail ni ne donne un message d'erreur ...
Identique avec la méthode sudo qui permet de lancer la commande en mode 'root', cela ne marche pas non plus
Il doit y avoir une protection quelque part, bien logique d'ailleurs, mais quelqu'un a une idée de quoi faire pour autoriser apache à lancer cette commande ?
Très cordialement
Patrick
Dernière édition par objectifweb le Mar Avr 01, 2008 18:14, édité 1 fois.
- objectifweb
- WRInaute occasionnel

- Messages: 130
- Inscription: Mer Oct 06, 2004 9:58
merci de votre réponse mais non, le safemode n'est pas activé d'après le technicien....
Patrick
Patrick
- objectifweb
- WRInaute occasionnel

- Messages: 130
- Inscription: Mer Oct 06, 2004 9:58
Merci Vap,
Oui, j'ai testé d'autres commandes, comme par exemple 'ls' et ma variable contient alors le listing de mon répertoire, donc cette commande marche mais pas pour le killall
j'ai aussi testé la commande 'ps...' qui permet de voir les process en cours, et le process qui m'intéresse n'est pas dans la liste, ce qui confirme qu'apache n'a pas les droits de voir le process et ne faire une commande dessus
Il faut être root, c'est d'ailleurs le but de la commande 'sudo' qui permet à apache de se présenter comme root
C'est clair à 99% que c'est un problème de droits, qu'il faut dire au moteur qu'apache a ce droit mais comment.....
La sécurité n'est pas un souci, le serveur appartient au client et il n'héberge que son application
Patrick
Oui, j'ai testé d'autres commandes, comme par exemple 'ls' et ma variable contient alors le listing de mon répertoire, donc cette commande marche mais pas pour le killall
j'ai aussi testé la commande 'ps...' qui permet de voir les process en cours, et le process qui m'intéresse n'est pas dans la liste, ce qui confirme qu'apache n'a pas les droits de voir le process et ne faire une commande dessus
Il faut être root, c'est d'ailleurs le but de la commande 'sudo' qui permet à apache de se présenter comme root
C'est clair à 99% que c'est un problème de droits, qu'il faut dire au moteur qu'apache a ce droit mais comment.....
La sécurité n'est pas un souci, le serveur appartient au client et il n'héberge que son application
Patrick
J'essaierai la chose suivante:
Je ferais une page PHP qui n'a pour but que de faire le kill all. Et cette page devrait avoir root comme propriétaire. Je ne sais pas si ce serait suffisant.
Mais d'une manière générale, c'est rassurant qu'on ne puisse pas facilement détruire tous les process depuis PHP...
Avez vous essaye exec au lieu de shell_exec ?
Vap
Je ferais une page PHP qui n'a pour but que de faire le kill all. Et cette page devrait avoir root comme propriétaire. Je ne sais pas si ce serait suffisant.
Mais d'une manière générale, c'est rassurant qu'on ne puisse pas facilement détruire tous les process depuis PHP...
Avez vous essaye exec au lieu de shell_exec ?
Vap
Hello,
ne pouvez vous pas directement relancer l'application proprement, plutôt que de tenter directement la méthode "barbare" ?
Sinon le fait de mettre root en propriétaire d'une page web ne change (heureusement) rien quand à l'utilisateur faisant tourner tout cela. Et suexec a tendance à interdire le compte root également.
En shell essayez de basculer sous le même compte que PHP et d'essayer d'exécuter les commandes en question ; vous verrez bien ce que ça donne.
Et si cela coince toujours, depuis PHP ajoutez ' 2>&' à la fin de la commande exécutée (afin de récupérer le canal d'erreur) ; ou bien utilisez proc_open() qui permet de gérer correctement le canal d'erreur.
ne pouvez vous pas directement relancer l'application proprement, plutôt que de tenter directement la méthode "barbare" ?
Sinon le fait de mettre root en propriétaire d'une page web ne change (heureusement) rien quand à l'utilisateur faisant tourner tout cela. Et suexec a tendance à interdire le compte root également.
En shell essayez de basculer sous le même compte que PHP et d'essayer d'exécuter les commandes en question ; vous verrez bien ce que ça donne.
Et si cela coince toujours, depuis PHP ajoutez ' 2>&' à la fin de la commande exécutée (afin de récupérer le canal d'erreur) ; ou bien utilisez proc_open() qui permet de gérer correctement le canal d'erreur.
- objectifweb
- WRInaute occasionnel

- Messages: 130
- Inscription: Mer Oct 06, 2004 9:58
Merci Vap, tout a été testé, toutes les commandes php le permettant ...
Bool, merci de ta réponse
Lorsqu'on identifie le user comme apache et qu'on demande les process en cours, ils n'apparaissent pas, donc apache n'a pas le droit de les voir
Pour le moment, on est arrivé à lancer la commande, le process est bien stoppé, mais la page php boucle sans fin ...
On va essayer ta méthode '2>&' et proc_open pour voir si ce bouclage correspond en fait à une erreur
Patrick
Bool, merci de ta réponse
Lorsqu'on identifie le user comme apache et qu'on demande les process en cours, ils n'apparaissent pas, donc apache n'a pas le droit de les voir
Pour le moment, on est arrivé à lancer la commande, le process est bien stoppé, mais la page php boucle sans fin ...
On va essayer ta méthode '2>&' et proc_open pour voir si ce bouclage correspond en fait à une erreur
Patrick
Un killall peut être long à répondre, il n'y a rien d'anormal à cela.
Avec proc_open il devrait par contre y avoir moyen de lancer le processus via un nohup, et ainsi de ne pas avoir à attendre la fin du traitement.
Dans tous les cas il y a très certainement un moyen plus "propre" de relancer ou recharger la configuration de l'application en question.
Avec proc_open il devrait par contre y avoir moyen de lancer le processus via un nohup, et ainsi de ne pas avoir à attendre la fin du traitement.
Dans tous les cas il y a très certainement un moyen plus "propre" de relancer ou recharger la configuration de l'application en question.
- objectifweb
- WRInaute occasionnel

- Messages: 130
- Inscription: Mer Oct 06, 2004 9:58
Pour le moment, on arrive à lancer un batch qui semble faire le boulot, une fois qu'on a lancé le script en php et qu'on vérifie l'id du process, il a bien changé ... donc c'est rapide et ça marche, mais la page en php qui a lancé la commande attend..... on va essayer avec proc_open en disant au script de ne rien attendre en retour
Je ne doute pas qu'il y a une méthode plus propre mais je ne connais pas tous les paramètres, j'essaie d'aider un technicien qui travaille pour le client...
Je ne doute pas qu'il y a une méthode plus propre mais je ne connais pas tous les paramètres, j'essaie d'aider un technicien qui travaille pour le client...
- objectifweb
- WRInaute occasionnel

- Messages: 130
- Inscription: Mer Oct 06, 2004 9:58
héhéhé moi non plus si je devais héberger un site dessus mais ici c'est un serveur qui appartient au client, pas sur internet donc en local et il héberge uniquement sa propre application, donc aucun risque ...
Finalement on a trouvé la finale, on utilise popen qui n'attend pas la fin et tout fonctionne bien
Merci de vos conseils
Patrick
Finalement on a trouvé la finale, on utilise popen qui n'attend pas la fin et tout fonctionne bien
Merci de vos conseils
Patrick
12 messages • Page 1 sur 1
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- [réglé] Referer en php : possible ?
- [Réglé] Script php en cron
- [Réglé][PHP] Conversion de caractères
- [réglé] Petite modif de nouveaute.php de categorizator ?
- [REGLE] interpreter .htm comme du .php via htaccess
- [réglé]Requete php qui ne s'affiche pas à cause du Where
- [réglé]creer en PHP des variables
- [REGLE][PHP-PEAR]Antispam et HTML_QuickForm
- [reglé] Contenu entre 2 balises - PHP
- [réglé] Créer un cadre en php et y afficher un résultat
- (Réglé) Galère PHP : too many connections entre autres...
- [réglé] Lire et écrire un fichier XML en PHP
- [réglé]Problème avec script lourdingue optimisation php?
- [Reglé] Retirer les doublons d'un tableau PHP ?
- [Réglé] PB PHP/SQL et JavaScript pour affichage de news
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités


le forum