IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Système] Exécuter fichier batch


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 30
    Points : 22
    Points
    22
    Par défaut [Système] Exécuter fichier batch
    Bonjout tout le monde,

    A travers un script PHP, je souhaite lancer un exécutable.

    J'ai essayé de passer par les fonctions exec et system sans résultat!

    J'ai décidé d'insérer mes lignes de commande dans un fichier batch et de faire un lien vers ce fichier. Mon fichier batch fonctionne quand je double-click dessus. En local (en utilisant easyPHP), aucun problème il me demande si je veux enregister ou executer le .bat. Par contre, si je l'exécute à partir du serveur distant, le navigateur m'affiche le script comme si j'ouvrais un fichier texte.

    fichier batch
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    NET USE L: <a href="file://\\Sesame\w3\bddgm\admin" target="_blank">\\Sesame\w3\bddgm\admin</a>
    L:
    shp2sdo.exe upload_files\ecomanche -g geometry
    pause
    code PHP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?print "<a href='batch.bat'>lancer fichier batch</a>"; ?>
    Une idée?

    --- EDIT ---
    Faut-il activer un paramètre dans PHP ou Apache?

  2. #2
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 146
    Points : 78
    Points
    78
    Par défaut
    salut
    tu doit le faire avec la fonction exec("nom_du_fichier_batch")

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par haffouff
    tu doit le faire avec la fonction exec("nom_du_fichier_batch")
    Même constat avec exec()!! Ca fonctionne en localhost mais pas en distant.

    Code PHP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?exec("batch.bat",$output,$err);
    print_r($output);
    echo($err);?>
    Résultat en local
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Array ( 
    [0] => 
    [1] => c:\program files\easyphp1-8\www\test>Z: 
    [2] => 
    [3] => Z:\>cd bddgm 
    [4] => 
    [5] => Z:\bddgm>cd admin 
    [6] => 
    [7] => Z:\bddgm\admin>shp2sdo.exe upload_files\ecomanche -g geometry [8] => 
    [9] => shp2sdo - Shapefile(r) To Oracle Spatial Converter 
    [10] => Version 2.15 21-May-2004 
    [11] => Copyright 1997,2004 Oracle Corporation 
    [12] => For use with Oracle Spatial. 
    [13] => 
    [14] => Processing shapefile upload_files\ecomanche into spatial table UPLOAD_FILES\ECOMANCHE 
    [15] => Data model is object-relational 
    [16] => Geometry column is GEOMETRY 
    [17] => Points stored in SDO_POINT attributes 
    [18] => Data is in a separate file(s) 
    [19] => Control file generation for Oracle9i or higher 
    [20] => Spatial data loaded with 6 digits of precision 
    [21] => Conversion complete : 1 linestrings processed 
    [22] => The following files have been created: 
    [23] => upload_files\ecomanche.sql : SQL script to create the table 
    [24] => upload_files\ecomanche.ctl : Control file for loading the table 
    [25] => upload_files\ecomanche.dat : Data file 
    [26] => 
    [27] => Z:\bddgm\admin>pause 
    [28] => Appuyez sur une touche pour continuer... ) 
    0
    Résultat sur serveur distant

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    Il existe une option "SAFE MODE". Si l'option est activée, system() et les autres fonctions exécutant des programmes systèmes refusent de se lancer si ces programmes ne sont pas placés dans le répertoire safe_mode_exec_dir.

    J'ai fait un phpinfo() et j'ai bien safe mode à OFF.

    Je bloque sérieusement, si vous avez une idéé n'hésitez pas!

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 69
    Points : 80
    Points
    80
    Par défaut
    c'est une question conne, mais ton serveur distant est bien sous windows ?

    exec ne fait-il pas partie des fonctoins desactivés ? même sans safe mode.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    Bonjour, un petit up vu que j'ai testé pas mal de chose depuis hier, je vais essayé d'être le plus clair possible.

    Je suis en train de créer une interface d'administration en ligne pour ma base de données. Je souhaite automatiser la procédure d'import de ShapeFiles (shp2sdo) dans Oracle9i/Oracle Spatial. Pour cela, j'insère mes lignes de commande dans un fichier batch et je lance le .bat depuis un fichier PHP avec les fonctions exec(), system() ou passthru() de PHP. Cette méthode à l'avantage d'être transparente à l'utilisateur. J'ai aussi testé un fichier HTML avec un simple lien qui pointe vers le fichier .bat, le navigateur demande alors si l'utilisateur souhaite enregister ou executer le .bat.

    Problème, parce qu'évidément il ya un problème :
    En local (easyPHP), tout ce que j'ai énoncé fonctionne bien, mes fichiers .sql, .ctl et.dat sont créés. Par contre, si je l'exécute à partir du serveur distant, pour le fichier HTML, le navigateur m'affiche le script comme si j'ouvrais un fichier texte et pour le fichier PHP il n'execute rien.


    Mon fichier batch
    Code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    NET USE L: \\Sesame\w3\bddgm\admin
    L:
    shp2sdo.exe upload_files\ecomanche -g geometry
    pause

    Mon fichier PHP
    Code PHP:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?exec("batch.bat",$output,$err); 
    print_r($output); 
    echo($err);?> 

    Mon fichier HTML
    Code HTML:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="batch.bat">test</a>

    Pour le résultat que j'obtient en lancant mon fichier PHP, sur localhost et sur le serveur distant, vous l'avez sur un message précédent.


    Quelques précisions :

    La commande "ls" est la seule que j'ai réussi à executer sur le serveur distant, pour "cd", "dir", etc., ça ne fonctionne pas! Code PHP:

    Un sujet semblable sur le Forum SIG avec PostgreSQL, mais là au final ça fonctionne: http://www.forumsig.org/archive/index.php/t-3076.html


    Sinon j'ai lu ça sur un sujet d'un forum :
    "apparement php n'aime pas les machines distantes, même vers un lecteur réseau mappé et valide"
    Quelqu'un aurait-il une explication?

    Je vous avoue ne plus avoir aucune idée, en espérant que vous pourrez m'aider.

    gogolak

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par parksto
    c'est une question conne, mais ton serveur distant est bien sous windows ?
    Je suis justement sur cette piste, mon serveur distant est sous Linux. Pour voir si ça venait de là, à la place de localhost j'ai donné une adresse IP à mon Apache d'EasyPHP dans les paramètres de conf, mon poste étant sous Windows. Je me suis connecté depuis un poste distant tournant sous Windows et j'ai le même problème. Je suis loin d'être un spécialiste en réseau et Linux, qu'en pense tu?

    exec ne fait-il pas partie des fonctoins desactivés ? même sans safe mode.
    Comment puis-je savoir si exec fait partie des fonctions désactivées?

Discussions similaires

  1. [Débutant] Problèmes d'exécution fichiers Batchs
    Par Pinou421 dans le forum VB.NET
    Réponses: 1
    Dernier message: 22/10/2012, 20h57
  2. Exécuter un fichier batch
    Par Shugo78 dans le forum C
    Réponses: 10
    Dernier message: 13/06/2007, 14h01
  3. Réponses: 5
    Dernier message: 26/05/2007, 19h28
  4. Réponses: 4
    Dernier message: 20/12/2006, 10h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo