À l'aide d'un .fichier php pour générer un dump MySQL
Voici les informations que j'ai:
Je suis en train de travailler avec un système basé sur Linux à l'aide de MySQL et PHP5. J'ai besoin d'être en mesure de générer un mysqldump
de dans un .fichier php, et alors que dump être stockées dans un fichier sur le serveur dans un endroit que je voudrais préciser.
Que je suis un PHP nooblet, j'aimerais que quelqu'un me donner de l'aide, des conseils, ou un code, qui ferait de ce que j'ai besoin. Cela devrait être exécuté à distance à partir d'Internet.
- php.net/shell_exec
- Vérifier ceci. Je voudrais utiliser
mysqldump
parsystem()
. - double possible de moyen Facile d'exporter une table SQL sans accès au serveur ou phpMyADMIN
- Cela les aide à créer mysqldump avec l'aide d'un fichier php. kvcodes.com/2017/10/php-create-mysql-backup
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le
exec()
la fonction à exécuter une commande externe.Note: entre
shell_exec()
etexec()
, je choisirais la seconde, qui n'a pas de retour de la sortie du script PHP -- pas besoin pour le script PHP, pour obtenir le dump SQL comme une chaîne de caractères : vous avez seulement besoin d'-il écrit dans un fichier, et cela peut être fait par la commande elle-même.Externe commande :
mysqldump
, avec les bons paramètres,Par exemple :
Ce qui signifie que votre PHP code devrait ressembler à ceci :
Bien sûr, à vous d'utiliser la bonne connexion de l'information, en remplacement de la
...
avec ceux-ci.exec()
ne sera pas de retour jusqu'à ce que la commande est terminée ; donc, il suffit de mettre quelquesecho "dump complete"
après l'appel deexec()
exec()
fonction de référence: "Pour obtenir la sortie de la commande en cours d'exécution, assurez-vous de fixer et d'utiliser le paramètre de sortie."./usr/local/mysql/bin/mysqldump
exec("C:\\xampp\\mysql\\bin\\mysqldump dr2014 -u root > $patName");
exec("C:/pathto/mysql/bin/mysqldump.exe <options as above>");
cron jobs
, n'des tâches cron moyenne que l'hôte permetexec()
fonction ? merci , et désolé d'être noob.exec
etshell_exec
sont désactivés en raison de problèmes de sécurité. Exemple: Umbler's des serveurs.exec
etshell_exec
désactivé, vérifiez que diego réponse.Si vous voulez créer une sauvegarde à télécharger via le navigateur, vous pouvez aussi le faire sans l'aide d'un fichier.
La fonction php passthru() sera directement rediriger la sortie de la commande mysqldump pour le navigateur. Dans cet exemple, il sera également zippée.
Pro: Vous n'avez pas à traiter avec les fichiers temporaires.
Con: ne fonctionne pas sur Windows. Peuvent avoir des limites avec d'énormes ensembles de données.
Prendre un coup d'oeil ici: https://github.com/ifsnop/mysqldump-php ! C'est une solution native écrit en php.
Vous pouvez l'installer à l'aide de compositeur, et il est aussi facile que de faire:
Il prend en charge les utilisateurs avancés, avec beaucoup d'options copié à partir de l'original mysqldump.
Toutes les options sont expliquées à la page github, mais plus ou moins auto-explicatif:
exec
et/oushell_exec
désactivé par sécurité, mysqldump-php fonctionne très bien! Juste essayé dès maintenant sur Umbler's serveurs et a obtenu le dump avec succès. Merci beaucoup pour l'astuce!Veuillez appellent le lien suivant qui contient un scriptlet qui va vous aider à:
http://davidwalsh.name/backup-mysql-database-php
Remarque: Ce script peut contenir des bugs avec la valeur NULL types de données
Pour des raisons de sécurité, il est recommandé de spécifier le mot de passe dans un fichier de configuration et non dans la commande (un utilisateur peut exécuter une
ps aux | grep mysqldump
et voir le mot de passe).Aussi longtemps que vous êtes autorisé à utiliser exec(), vous pouvez exécuter des commandes shell à travers votre code PHP.
Donc, en supposant que vous savez comment écrire la commande mysqldump dans la ligne de commande, c'est à dire
alors vous pouvez l'utiliser en tant que paramètre à la fonction exec ().
Ici vous pouvez trouver une solution pour faire un dump mysql structure et des données comme dans le PMA (et sans l'aide d'exec, passthru, etc.):
https://github.com/antarasi/MySQL-Dump-with-Foreign-keys
C'est la fourchette de dszymczuk projet avec mes améliorations.
L'utilisation est simple
fonctionne comme un charme 🙂
MajorLeo la réponse de me pointer dans la bonne direction, mais il n'a pas travaillé pour moi. J'ai trouvé ce site qui suit la même approche et a fait un travail.
J'espère que cela aide quelqu'un d'autre!
Aucun des codes ci-dessus a fonctionné pour moi. Je suis avec windows.
Ci-dessous le Code a fonctionné pour moi...
Cela permettra d'enregistrer le fichier dans le dossier de votre projet en fonction de votre requête toutes les données que vous voulez. Si vous voulez vider toute la base de données ou d'une table, alors vous pouvez utiliser
ce lien http://www.php-mysql-tutorial.com/wikis/mysql-tutorials/using-php-to-backup-mysql-databases.aspx
Bien, vous pouvez toujours utiliser PHP le système de l'appel de fonction.
http://php.net/manual/en/function.system.php
http://www.php.net/manual/en/function.exec.php
Qui exécute un programme de ligne de commande de PHP.
<?php
exec('mysqldump --all-databases > /your/path/to/test.sql');
?>
Vous pouvez étendre la commande avec toutes les options de la commande mysqldump prend bien sûr. Utilisation
man mysqldump
pour plus d'options (mais je suppose que vous le saviez déjà ;))Voici un autre natif de PHP en fonction de l'option: https://github.com/2createStudio/shuttle-export
Pour faire un dump de la base de données à l'aide de shell_exec(), ci-dessous est la méthode :
HTML: