[PHP]Executer batch DOS

Fermé
derito Messages postés 8 Date d'inscription jeudi 2 avril 2009 Statut Membre Dernière intervention 13 décembre 2010 - 11 janv. 2010 à 17:04
Archeus01 Messages postés 1571 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 9 juin 2022 - 12 janv. 2010 à 11:12
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.
A voir également:

2 réponses

alain1967 Messages postés 9 Date d'inscription jeudi 7 janvier 2010 Statut Membre Dernière intervention 22 septembre 2010 3
12 janv. 2010 à 11:06
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?
0
Archeus01 Messages postés 1571 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 9 juin 2022 452
12 janv. 2010 à 11:12
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();
?>
0