[PHP]Executer batch DOS [Fermé]

Signaler
Messages postés
8
Date d'inscription
jeudi 2 avril 2009
Statut
Membre
Dernière intervention
13 décembre 2010
-
Messages postés
1566
Date d'inscription
mercredi 3 octobre 2007
Statut
Membre
Dernière intervention
23 mars 2020
-
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:
<?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.

2 réponses

Messages postés
9
Date d'inscription
jeudi 7 janvier 2010
Statut
Membre
Dernière intervention
22 septembre 2010
3
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?
Messages postés
1566
Date d'inscription
mercredi 3 octobre 2007
Statut
Membre
Dernière intervention
23 mars 2020
390
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();
?>