Ouvrire un terminal linux avec php
Fermé
yuri648
Messages postés
677
Date d'inscription
mardi 30 décembre 2008
Statut
Membre
Dernière intervention
20 mai 2015
-
2 mai 2011 à 17:30
creadiff Messages postés 445 Date d'inscription samedi 3 avril 2010 Statut Membre Dernière intervention 3 novembre 2011 - 14 juin 2011 à 20:34
creadiff Messages postés 445 Date d'inscription samedi 3 avril 2010 Statut Membre Dernière intervention 3 novembre 2011 - 14 juin 2011 à 20:34
A voir également:
- Ouvrire un terminal linux avec php
- Commande terminal mac - Guide
- Easy php - Télécharger - Divers Web & Internet
- Linux mint 32 bits - Télécharger - Systèmes d'exploitation
- Diskinternals linux reader - Télécharger - Stockage
- Linux live usb creator - Télécharger - Outils Internet
10 réponses
creadiff
Messages postés
445
Date d'inscription
samedi 3 avril 2010
Statut
Membre
Dernière intervention
3 novembre 2011
57
2 mai 2011 à 20:21
2 mai 2011 à 20:21
Essaie du côté de proc_open.
Mais... pourquoi ?
Mais... pourquoi ?
yuri648
Messages postés
677
Date d'inscription
mardi 30 décembre 2008
Statut
Membre
Dernière intervention
20 mai 2015
7
3 mai 2011 à 16:36
3 mai 2011 à 16:36
le probleme que je veux executer un fichier avec la commande
nohup ./serveur & ,quand je le lance sur la console ya pas de probleme, mais quand je veux lancer le fichier avec un script php le navigateur se bloque , alor je me suis dis j'ouvre la console avec php et je saisit la commande avec php aussi
voici la commande qui lance le fichier avec php mais le navigateur se bloque
system('cd /var/www/application/; sudo nohup ./serveur &');
merci
nohup ./serveur & ,quand je le lance sur la console ya pas de probleme, mais quand je veux lancer le fichier avec un script php le navigateur se bloque , alor je me suis dis j'ouvre la console avec php et je saisit la commande avec php aussi
voici la commande qui lance le fichier avec php mais le navigateur se bloque
system('cd /var/www/application/; sudo nohup ./serveur &');
merci
mpmp93
Messages postés
6648
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
1 339
5 mai 2011 à 11:06
5 mai 2011 à 11:06
Bonjour,
la commande:
system('cd /var/www/application/; sudo nohup ./serveur &');
est exécutée par PHP coté serveur. Ce code tente d'ouvrir un terminal sur le serveur. mais comme le serveur (Apache) est une sorte de 'user' en "boîte noire", le terminal s'ouvre sur "rien"...
A+
la commande:
system('cd /var/www/application/; sudo nohup ./serveur &');
est exécutée par PHP coté serveur. Ce code tente d'ouvrir un terminal sur le serveur. mais comme le serveur (Apache) est une sorte de 'user' en "boîte noire", le terminal s'ouvre sur "rien"...
A+
creadiff
Messages postés
445
Date d'inscription
samedi 3 avril 2010
Statut
Membre
Dernière intervention
3 novembre 2011
57
3 mai 2011 à 23:14
3 mai 2011 à 23:14
sudo demande un mot de passe. Du coup, quand le navigateur effectue la requête, PHP effectue la ligne de commande, qui demande un mot de passe.
Que fait PHP pendant ce temps ? Rien, l'exécution des lignes de commandes avec exec() ou system() se fait de façon synchrone, ce qui signifie que le script attend la fin de l'exécution pour reprendre.
Essaie proc_open, qui permet l'asynchrone.
Que fait PHP pendant ce temps ? Rien, l'exécution des lignes de commandes avec exec() ou system() se fait de façon synchrone, ce qui signifie que le script attend la fin de l'exécution pour reprendre.
Essaie proc_open, qui permet l'asynchrone.
yuri648
Messages postés
677
Date d'inscription
mardi 30 décembre 2008
Statut
Membre
Dernière intervention
20 mai 2015
7
4 mai 2011 à 21:48
4 mai 2011 à 21:48
ok merci je vais l'essayer
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
yuri648
Messages postés
677
Date d'inscription
mardi 30 décembre 2008
Statut
Membre
Dernière intervention
20 mai 2015
7
6 mai 2011 à 17:09
6 mai 2011 à 17:09
sa na pas marché voici le code
<?php
$descriptorspec = array(
0 => array("pipe","r"),
1 => array("pipe","w"),
2 => array("file","./error.log","a")
) ;
// define current working directory where files would be stored
$cwd = './' ;
// open process /bin/sh
$process = proc_open('/bin/sh', $descriptorspec, $pipes, $cwd) ;
if (is_resource($process)) {
// anatomy of $pipes: 0 => stdin, 1 => stdout, 2 => error log
fwrite($pipes[0], 'cd /var/www/application;sudo nohub ./serveur& ') ;
fclose($pipes[0]) ;
// print pipe output
echo stream_get_contents($pipes[1]) ;
// close pipe
fclose($pipes[1]) ;
// all pipes must be closed before calling proc_close.
// proc_close() to avoid deadlock
proc_close($process) ;
}
/*
$t=shell_exec('cd /usr/lib/pvm3/lib; sudo ./ad.sh ');
echo "*".$t;*/
?>
merci
<?php
$descriptorspec = array(
0 => array("pipe","r"),
1 => array("pipe","w"),
2 => array("file","./error.log","a")
) ;
// define current working directory where files would be stored
$cwd = './' ;
// open process /bin/sh
$process = proc_open('/bin/sh', $descriptorspec, $pipes, $cwd) ;
if (is_resource($process)) {
// anatomy of $pipes: 0 => stdin, 1 => stdout, 2 => error log
fwrite($pipes[0], 'cd /var/www/application;sudo nohub ./serveur& ') ;
fclose($pipes[0]) ;
// print pipe output
echo stream_get_contents($pipes[1]) ;
// close pipe
fclose($pipes[1]) ;
// all pipes must be closed before calling proc_close.
// proc_close() to avoid deadlock
proc_close($process) ;
}
/*
$t=shell_exec('cd /usr/lib/pvm3/lib; sudo ./ad.sh ');
echo "*".$t;*/
?>
merci
creadiff
Messages postés
445
Date d'inscription
samedi 3 avril 2010
Statut
Membre
Dernière intervention
3 novembre 2011
57
6 mai 2011 à 19:49
6 mai 2011 à 19:49
Qu'y a-t-il dans error.log ?
yuri648
Messages postés
677
Date d'inscription
mardi 30 décembre 2008
Statut
Membre
Dernière intervention
20 mai 2015
7
6 mai 2011 à 19:54
6 mai 2011 à 19:54
elle saubgarde les resultat de la commande
fwrite($pipes[0], 'cd /var/www/application;sudo nohub ./serveur& ') ;
voici un exemple du fichier error.log
Socket connection successful 3
Socket connection successful 3
Socket connection successful 3
Thread * accepts socket 4 connection from IP 192.168.1.1
Socket connection successful 3
Thread * accepts socket 4 connection from IP 192.168.1.1
Thread * accepts socket 4 connection from IP 192.168.1.1
Socket connection successful 3
Thread * accepts socket 4 connection from IP 192.168.1.1
Thread * accepts socket 4 connection from IP 192.168.1.1
si jexecute sudo nohub ./serveur& dans la console j'aurai le meme resultat
fwrite($pipes[0], 'cd /var/www/application;sudo nohub ./serveur& ') ;
voici un exemple du fichier error.log
Socket connection successful 3
Socket connection successful 3
Socket connection successful 3
Thread * accepts socket 4 connection from IP 192.168.1.1
Socket connection successful 3
Thread * accepts socket 4 connection from IP 192.168.1.1
Thread * accepts socket 4 connection from IP 192.168.1.1
Socket connection successful 3
Thread * accepts socket 4 connection from IP 192.168.1.1
Thread * accepts socket 4 connection from IP 192.168.1.1
si jexecute sudo nohub ./serveur& dans la console j'aurai le meme resultat
creadiff
Messages postés
445
Date d'inscription
samedi 3 avril 2010
Statut
Membre
Dernière intervention
3 novembre 2011
57
6 mai 2011 à 20:04
6 mai 2011 à 20:04
Donc... l'exécution a fonctionné en fait !
yuri648
Messages postés
677
Date d'inscription
mardi 30 décembre 2008
Statut
Membre
Dernière intervention
20 mai 2015
7
6 mai 2011 à 20:07
6 mai 2011 à 20:07
le probleme c'est que defois il fonctione defois il fonctionne pas
et s'il fonctionne le navigateur se bloque
merci
et s'il fonctionne le navigateur se bloque
merci
yuri648
Messages postés
677
Date d'inscription
mardi 30 décembre 2008
Statut
Membre
Dernière intervention
20 mai 2015
7
6 mai 2011 à 20:13
6 mai 2011 à 20:13
je ne comprend pas pour quoi le navigateur se bloque quand il marche
yuri648
Messages postés
677
Date d'inscription
mardi 30 décembre 2008
Statut
Membre
Dernière intervention
20 mai 2015
7
27 mai 2011 à 11:02
27 mai 2011 à 11:02
je suis encore coincé aidez moi svp
creadiff
Messages postés
445
Date d'inscription
samedi 3 avril 2010
Statut
Membre
Dernière intervention
3 novembre 2011
57
14 juin 2011 à 20:34
14 juin 2011 à 20:34
Essaie d'exécuter le script via une requête AJAX. Le serveur ne répondra pas non plus (temps d'exécution trop long), mais au moins la page ne ralentira pas le navigateur.