Bonjour,
J'ai un petit problème, mon fichier .bat fonctionne parfaitement quand je le lance directement.
Mais dés que je le lance depuis mon script PHP, il n'indique que les arguments son incorrect.

Le problème se situe au niveau de de la variable %~n0 situer dans le .bat quand je le remplace par son nom il fonctionne parfaitement depuis PHP.
Comment je pourrais palier à se petit problème.
Mon fichier s'appelle "192.168.0.5.bat" et ma variable est

set IP=%~n0

Quand je le remplace par

set IP=192.168.0.5

Il fonctionne sur les 2 systèmes.
Mais j’aimerais que la fonction %~n0 fonctionne sur les 2, car j'ai énormément de fichier à faire et cela me permettrais de gagner un temps monstrueux.

Voici une partie de mon script PHP.

      echo "<tr><td width=230>$value</td>"; 
      echo '<body bgcolor="#FFFFFF" text="#000000"></body>';       
      //check target IP or domain
      $ping = exec("ping -n $count $value");
      if ( substr($ping, -2) == 'ms')
        {
            #echo "<td width=60><strong><font color='#006600'>UP</font></strong></td>";
            echo "<td width=60><img src='up.png'></td>";
            echo "<td width=30>". $services [$counter] . "</td>";
            echo "<td width=130>". gethostbyname($value) . "</td>";
            echo '<td align="center"><a href="../Serveur/Reboot/'.$value.'.bat"><img src="reboot.jpg" title="Reboot"/></a>';
            }

Merci beaucoup

5 réponses


Bonjour,
J'ai du mal à comprendre... Tu parle d'un fichier .bat, mais dans ton code tu met un exec qui exécute directement une ligne de commande... Il faudrait éclaircir les choses...
Sinon qu'est ce que ça donne si tu fait un echo de la chaîne que tu passe en paramètre de exec ?

En faite mon script permet de faire un ping des serveurs ensuite il me donne son adresse IP en face j'ai mis un bouton pour rebooter le serveur a distance grace a un .bat
Ce .bat fonctionne niquel quand je le lance manuellement, mais dés que je le lance depuis un PC distant mon script PHP l'appelle et il ne fonctionne plus.

Salut,

<a href="../Serveur/Reboot/'.$value.'.bat"> ça ne peut pas fonctionner, tu ne peux pas exécuter un fichier script sur un serveur depuis ton navigateur comme ça, sinon ça sera une fail de sécurité.
Il faut que tu utilises la fonction exec pour lancer ton .bat

Mon script fonctionne QUE en local donc pas de problème pour la sécurité.

Ah ouais effectivement j'ai pas vu le bat exécuté via un lien... C'est pas du tout fait pour.
Il faut que tu appel une URL qui va charger un script Php dans lequel tu aura ta fonction exec qui va exécuter ton batch.