Impossible d'executer script linux sous PHP

Impossible d'executer script linux sous PHP - PHP - Programmation

Marsh Posté le 22-08-2013 à 22:07:57    

Salut,
 
Je ne sais pas trop dans quelle categorie il faut que je post ca :o
 
Il faut que j'execute un script avec un commande PHP :
 

Code :
  1. {
  2. exec("bash /home/user1/Serveur/script.sh" );
  3. header('location: ../succes.php');
  4. }


 
Voici le script bash, il est en 0777 :
 

Code :
  1. #!/bin/bash
  2. screen -X -S test kill
  3. screen -S test date


 
Le script et le php sont utiliser par 2 users differents.
 
Merci d'avance :hello:
 

Reply

Marsh Posté le 22-08-2013 à 22:07:57   

Reply

Marsh Posté le 23-08-2013 à 09:52:11    

Salut,
 
Je suis pas un expert mais déjà dans exec pas besoin de mettre le mot bash, le script exécuté l'indiquera lors de son exécution comment l'interpréter, grâce à l'en-tête #!/bin/bash

Reply

Marsh Posté le 23-08-2013 à 13:27:11    

Bon, j'ai supprime le mot bash, l'execution ne fonctionne toujours pas :/


Message édité par babajaga le 23-08-2013 à 13:27:19
Reply

Marsh Posté le 23-08-2013 à 13:39:14    

est ce que tu as essayé avec des commandes bidon du style:
 
coté php :
 
exec('test.sh' );
 
coté bash
 
    #!/bin/bash
    str = "ça fonctionne!"
    echo $str
 
Après si ça marche toujours pas, copie le fichier test.sh met le au même endroit que ton script php adapte le chemin dans le exec("test.sh" ) et réessaye. Si ça se trouve c'est le chemin qui est mauvais :)
 
Là si ça marche, soit ton chemin est mauvais soit tu as mal attribuer les droits de lecture.
 
bref après là je suis à cours d'idée pour le moment ^^


Message édité par furil le 23-08-2013 à 13:40:12
Reply

Marsh Posté le 23-08-2013 à 13:54:52    

Merci de ta reponse :)
 
J'ai reussi a afficher l'erreur :
 

Code :
  1. Warning: exec() has been disabled for security reasons

Reply

Marsh Posté le 23-08-2013 à 13:58:19    

Meme chose en faisant ce que tu as dis :)

Reply

Marsh Posté le 23-08-2013 à 14:09:22    

le serveur sur lequel tu exécute ton script à désactiver la fonction exec();
 
Regarde dans ton php.ini, cherche disable_function et regarde si exec() s'y trouve.
 
Tu l'exécute en local ton script?(easyphp,wampserver...)

Reply

Marsh Posté le 23-08-2013 à 14:44:23    

Yep, exec etait desactive merci :hello:
 
Maintenant j'ai un souci avec screen :lol: Il fonctionne en lancant le script depuis SSH mais pas depuis le site oueb :/
 
Comment faire pour que php maffiche le message d'erreur ?  
Merci d'avance

Reply

Marsh Posté le 04-09-2013 à 17:21:09    

dans ton php.ini :  
error_reporting = E_ALL | E_NOTICE | E_STRICT
log_errors = On
error_log = /tmp/php.log
 
puis fais un chmod 777 /tmp/php.log (ou mieux donne le fichier au user apache , www-data sur debain ou ubunru)  
 
redémarre apache.
 
Tout les logs php iront dans ce fichier, ce qui devrait bien t'aider pour ce genre de script.
 
Attention également la fonction exec est mauvaise car ne retourne pas bcp d'info.
Exemple de fonction maison que j'utilise à la place
        /**************************************************************************************************************************************\
         | La fonction exec de php est mauvaise car compliqué pour gerer les différents message que peuvent retourner la commande.
         | Vous devez passer en paramètre à cette fonction la commande ET un tableau vide. Celui ci contiendra les messages de retour.
         | Cette fonction retourne egalement le code retour de la commande (si =0 pas d'erreur, si !=0 erreur) .
         \**************************************************************************************************************************************/
        public static function exec_inbox($cmd,&$tab_erreur='')
        {
 
                exec("$cmd 2>&1",$tab_retour,$code_retour_sortie) ;
                if ($code_retour_sortie!= 0 )
                {
                        error_log("erreur sur l'exécution de '$cmd' code_retour=$code_retour_sortie" );
                        foreach($tab_retour as $retour)
                        {
                                error_log($retour);
                        }
                }
 
                $tab_erreur=$tab_retour;
                return $code_retour_sortie;
 
        }


---------------
Du tofu en Alsace : www.tofuhong.com
Reply

Marsh Posté le 06-09-2013 à 16:48:32    

Tu espères faire quoi en appelant screen depuis un script php?[:petrus dei]


---------------
Can't buy what I want because it's free -
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed