Tu sais tu peux chercher aussi, tu n'es pas obligé de simplement nous rapporter les messages d'erreur.
La tu es sur des questions purement Linux et pas du tout PHP.
Version imprimable
Tu sais tu peux chercher aussi, tu n'es pas obligé de simplement nous rapporter les messages d'erreur.
La tu es sur des questions purement Linux et pas du tout PHP.
Oui j'ai fait des recherches et sa me fait tournée en rond !
D'après ce que j'ai vu il faut bien mettre su devant (de toute façon même avec su sa marche pas) et toi tu me dit qu'il ne faut pas mettre en root ?!
si je mets su voila le message d'erreur : su must be run in terminal
Comme je t'ai dit, c'est un problème Linux, pas PHP.
oui certes, mais quel est le problème plus exactement ?
Sur le net je vois que c'est des problèmes de droit, mais le sudo provoque d'autre problème !
En trifouillant meme en faisant :
nm-connection-editor --display=:0
j'obtient le même message d'erreur
Bonjour,
As-tu un serveur X de lancer quelque part ?
Car les prog graphique cherche à communiquer avec se serveur.
Ensuite, ton prog php est executer de quelle manière ? depuis un shell ou depuis un serveur web ?
Si depuis un serveur web, il faut que la machine et le user possède les droit de lancer des appli graphique sur le dit serveur X.
voir la commande xhost à lancer depuis le serveur X
En gros, y a un peu de boulot, et il manque pas mal d'information pour pouvoir t'aider :) .
Bonjour,
il faut récupérer la valeur d'un DISPLAY d'une session X déjà ouverte avec l'utilisateur à qui appartient cette session...
Oui le serveurx est lancée (lxde)
Je suis sous lubuntu
Donc,
depuis ta session X, tu lance une fenetre shell et tu fais les commandes:
Pour autoriser tout le monde à utiliser cette session XCode:xhost +
pour récupérer la valeur du displayCode:echo $DISPLAY
Puis depuis ta session php, réessaye la commande:
Et dis nous ce que cela donne...Code:nm-connection-editor --display=<valeur de la variable DISPLAY>
xhost + m'affiche :
acess control disabled, clients can connect from any host
echo $display m'affiche rien, j'ai un saut de ligne et c'est tout.
Merci pour ton aide.
n'as-tu pris aucun cours sur UNIX ? la casse y est significative !
$display!= $DISPLAY
La variable display est en majuscule (sous unix, on différencie les minuscules et les majuscules), donc:
et non pas:Code:echo $DISPLAY
Soit dit en passant, il y a de forte chance que ton server X est ":0", le but de faire le echo $DISPLAY est juste de confirmer.Code:echo $display
et après avoir fait le xhost +, est-ce que la commande lancer depuis ton php fonctionne ?
Oui sa fonctionne enfin, merci !
Je peut enfin lancée des programmes graphique.
Ok,
Mais je pense que tu ne sais pas vraiment comment cela fonctionne actuellement et cela peut poser certain problème, donc pour faire simple:
Ta session X est lancée depuis un certain user, lequel donne le droit d'utiliser à n'importe quelle machine/user de pouvoir utiliser le gestionnaire graphique X.
Je suppose que tu utilises php depuis un navigateur, donc depuis un serveur web (certainement apache), or les commande que tu lance sont donc lancer en temps que l'utilisateur sous lequel tourne ton serveur web (certainement nobody ou httpd,...), donc les appli graphique que tu ouvres depuis ta session php, sont des porcessus appartenant à cet user qui fait tourner le apache et non pas celui qui à ouvert la session X.
Après, je te laisse imaginer les problèmes de sécu que cela suppose ainsi que certain problème de droit pour tes appli graphique.
tu as raison, je dirais qu'il faut envisager de complexifier la solution, à minima une pile de users dédié jailed avec environnements chrooté de partout.. le tout dans un sous-réseau dédié avec routes strictes/fortes firewall, etc...etc...etc... bref il faut bien penser l'architecture dans son ensemble et pas seulement au niveau shell/php .....
sauf bien sur en intranet ou reseau local...
J'ai un problème, la commande marche bien, mais je veut exécuter la commande en tant que utilisateur actuel, par exemple l'utilisateur toto de mots de passe toto
Je n'ai pas réussie a lui faire lancée des commandes sans rentrer le mots de passe.
Je cherche a faire un su -totoCode:echo exec("nm-connection-editor --display=:0");