[PHP]Executer batch DOS
derito
Messages postés
9
Statut
Membre
-
Archeus01 Messages postés 1681 Statut Membre -
Archeus01 Messages postés 1681 Statut Membre -
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
- Batch converter - Télécharger - Photo & Graphisme
- 10 commande ms-dos - Guide
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();
?>