Commande UNIX DUMP SQL PHP
Bonjour,
J'ai créer un formulaire qui me permet d'uploader de gros fichiers SQL sur mon serveur WEB.
Une fois que le fichier est arrivé sur mon serveur, j'aimerais pouvoir créer la base à l'image du fichier SQL uploader.
Pour cela je pensais utiliser la fonction shell_exec de PHP afin exécuter la commande mysql -h ... -u ... -p ... < ... pour pouvoir créer la base de donnée.
C'est ce que j'ai essayé de faire avec le code ci-dessou, mais voila, ça ne marche pas !
Je précise que je suis sous Linux et que si je remplace $cmd = "mysql -h localhost -u user -ppass bdd < " . $stock . $file_name; par $cmd = "ls -la" ou $cmd = "cat /le/chemin/d'un/fichier/sur/le/serveur/web", bref une commande Unix ça marche je peux voir le résultat de la commande !
Est-ce que quelqu'un aurai une idée ?
Voici le code :
J'ai créer un formulaire qui me permet d'uploader de gros fichiers SQL sur mon serveur WEB.
Une fois que le fichier est arrivé sur mon serveur, j'aimerais pouvoir créer la base à l'image du fichier SQL uploader.
Pour cela je pensais utiliser la fonction shell_exec de PHP afin exécuter la commande mysql -h ... -u ... -p ... < ... pour pouvoir créer la base de donnée.
C'est ce que j'ai essayé de faire avec le code ci-dessou, mais voila, ça ne marche pas !
Je précise que je suis sous Linux et que si je remplace $cmd = "mysql -h localhost -u user -ppass bdd < " . $stock . $file_name; par $cmd = "ls -la" ou $cmd = "cat /le/chemin/d'un/fichier/sur/le/serveur/web", bref une commande Unix ça marche je peux voir le résultat de la commande !
Est-ce que quelqu'un aurai une idée ?
Voici le code :
<?php
ini_set ('max_execution_time', 0);
$stock = '/var/www/Appli/tmp/';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $stock.$_FILES['userfile']['name']))
{
$file_name = $_FILES['userfile']['name'];
echo "Le fichier \"" . $file_name . "\" a été téléchargé. Création de la base...<br><br>";
$cmd = "mysql -h localhost -u user -ppass bdd < " . $stock . $file_name;
echo $cmd;
echo "<br>";
echo "<br>";
$output = shell_exec($cmd);
echo "Contenu commande : " . $output;
echo "<br>";
echo "<br>";
echo "Résultat commande : <pre>$output</pre>";
echo "<br>";
echo "<br>";
}
?>Configuration: Linux Firefox 3.0.3
3 réponses
-
Petit up !
-
Contributeurhello
est-ce que mysql est dans le PATH ?
whereis mysql -
Merci pour ta réponse dubcek. En fait j'ai trouver la réponse entre temps : j'ai fait comme ça :
<?php ini_set ('max_execution_time', 0); $stock = '/var/www/Application test/tmp/'; if (move_uploaded_file($_FILES['userfile']['tmp_name'], $stock.$_FILES['userfile']['name'])) { $file_name = $_FILES['userfile']['name']; echo "Le fichier \"" . $file_name . "\" a été téléchargé avec succès. <br>"; $chemin = "/var/www/Application\\ test/tmp/"; $cmd = "mysql -h localhost -u root -ppass bdd < " . $chemin . $file_name; echo $cmd; echo "<br><br>"; $output = system($cmd, $result); echo "Résultat commande : <pre>$output</pre><br>"; echo "Résultat commande : <pre>$result</pre>"; } ?>