[PHP]Executer batch DOS
derito
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
Archeus01 Messages postés 1572 Date d'inscription Statut Membre Dernière intervention -
Archeus01 Messages postés 1572 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je souhaite pouvoir sauver et restaurer une base de données mySQL avec PHP.
Dans cette optique j'ai créé des fichiers .bat contenant les lignes de commande appelant mysqldump et mysql.
Lorsque que j'exécute les .bat cela fonctionne (création du fichier .sql à la sauvegarde et modification de la base de données à la restauration). Cependant lorsque j'essaie de faire exécuter ceux-ci via exec() il ne se passe rien: pas de fichier créé ni même de message d'erreur.
Je ne vois vraiment pas ce qui se passe mal ni ce que je fais différemment d'ici https://forums.commentcamarche.net/forum/affich-1890931-php-lancer-un-batch
pour info voici le code php que j'essaie de faire marcher:
Merci d'avance pour votre aide.
Je souhaite pouvoir sauver et restaurer une base de données mySQL avec PHP.
Dans cette optique j'ai créé des fichiers .bat contenant les lignes de commande appelant mysqldump et mysql.
Lorsque que j'exécute les .bat cela fonctionne (création du fichier .sql à la sauvegarde et modification de la base de données à la restauration). Cependant lorsque j'essaie de faire exécuter ceux-ci via exec() il ne se passe rien: pas de fichier créé ni même de message d'erreur.
Je ne vois vraiment pas ce qui se passe mal ni ce que je fais différemment d'ici https://forums.commentcamarche.net/forum/affich-1890931-php-lancer-un-batch
pour info voici le code php que j'essaie de faire marcher:
<?php if (empty($_POST['champ'])){ ?> <form id="doh" method="post" action="sauvegardes.php"> <input type="hidden" name="champ" value="1"> <input type="submit" value="sauvegarder"> </form> <?php } else{ if ($_POST['champ']==1){ exec("./save/sauvegarde.bat"); //sauvegarde la base de données dans un fichier .sql ?> <h3>Données sauvegardées</h3> <form id="doh" method="post" action="sauvegardes.php"> <input type="hidden" name="champ" value="2"> <input type="submit" value="restaurer"> </form> <?php } if ($_POST['champ']==2){ exec("./save/restauration.bat"); //restaure la base de données à partir du fichier .sql créé echo"<h3>données chargées<h3>"; } } ?>
Merci d'avance pour votre aide.
A voir également:
- [PHP]Executer batch DOS
- Fichier batch - Guide
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- 10 commande ms-dos - Guide
- Batch converter - Télécharger - Photo & Graphisme
2 réponses
Bonjour, je n'ai pas testé ton script, mais il y a deja quelque chose qui me saute aux yeux. Tu veux lancer un script .bat, donc tu es sous windows je suppose. Ne faut-il pas plutot mettre des back slashes (\) au lieu de slashes (/) dans le chemin ?
exec(".\\save\\sauvegarde.bat");
De plus, as tu donné les droits a ton serveur apache pour qu'il puisse lancer le script que tu lui demande ?
Et si jamais ca marche toujours pas, juste au cas ou, essaye de rentrer le chemin complet. Ex: C:\\save\\sauvegarde.bat
De plus, as tu vu que tu pouvais obtenir la valeur de retour et la sortie de la fonction avec exec() ? http://www.infosprog.com/php/exec/ . As tu essayé de voir ce que ca sortait?
exec(".\\save\\sauvegarde.bat");
De plus, as tu donné les droits a ton serveur apache pour qu'il puisse lancer le script que tu lui demande ?
Et si jamais ca marche toujours pas, juste au cas ou, essaye de rentrer le chemin complet. Ex: C:\\save\\sauvegarde.bat
De plus, as tu vu que tu pouvais obtenir la valeur de retour et la sortie de la fonction avec exec() ? http://www.infosprog.com/php/exec/ . As tu essayé de voir ce que ca sortait?
Bonjour,
En plus des conseils donnés par Alain, vérifie que tu es dans le bon dossier (par exemple avec la fonction php dir)
lister les fichier d'un répertoire Extrait de php.net :
<?php
$d = dir("./");
echo "Pointeur : " . $d->handle . "\n";
echo "Chemin : " . $d->path . "\n";
while (false !== ($entry = $d->read())) {
echo $entry . "\n";
}
$d->close();
?>
En plus des conseils donnés par Alain, vérifie que tu es dans le bon dossier (par exemple avec la fonction php dir)
lister les fichier d'un répertoire Extrait de php.net :
<?php
$d = dir("./");
echo "Pointeur : " . $d->handle . "\n";
echo "Chemin : " . $d->path . "\n";
while (false !== ($entry = $d->read())) {
echo $entry . "\n";
}
$d->close();
?>