Aquí está la información que tengo:
Estoy trabajando con un sistema basado en Linux usando MySQL y PHP5. Necesito poder generar un mysqldump
archivo desde dentro de un archivo .php, y luego hacer que ese volcado se almacene en un archivo en el servidor en una ubicación que yo especifique.
Como soy un nooblet de PHP, me gustaría que alguien me brindara ayuda, orientación o código, que haría lo que necesito. Esto tendría que ejecutarse de forma remota desde Internet.
mysqldump
porsystem()
.Respuestas:
Puede utilizar la
exec()
función para ejecutar un comando externo.Nota: entre
shell_exec()
yexec()
, elegiría el segundo, que no devuelve la salida al script PHP; no es necesario que el script PHP obtenga todo el volcado SQL como una cadena: solo lo necesita escrito en un archivo, y esto lo puede hacer el propio comando.Ese comando externo:
mysqldump
, con los parámetros adecuados,Por ejemplo :
Lo que significa que su código PHP se vería así:
Por supuesto, depende de usted usar la información de conexión correcta, reemplazándola
...
por esa.fuente
exec()
no regresará hasta que finalice el comando; entonces, solo ponga algunosecho "dump complete"
después de llamarexec()
/usr/local/mysql/bin/mysqldump
exec("C:/pathto/mysql/bin/mysqldump.exe <options as above>");
Si desea crear una copia de seguridad para descargarla a través del navegador, también puede hacerlo sin usar un archivo.
La función php passthru () redirigirá directamente la salida de mysqldump al navegador. En este ejemplo, también estará comprimido.
Ventaja: no tienes que lidiar con archivos temporales.
Con: no funcionará en Windows. Puede tener límites con grandes conjuntos de datos.
fuente
Eche un vistazo aquí: https://github.com/ifsnop/mysqldump-php ! Es una solución nativa escrita en php.
Puede instalarlo usando Composer, y es tan fácil como hacerlo:
Es compatible con usuarios avanzados, con muchas opciones copiadas del mysqldump original.
Todas las opciones se explican en la página de github, pero más o menos son autoexplicativas:
fuente
exec
y / o estánshell_exec
deshabilitados por seguridad, mysqldump-php funciona muy bien. Lo intenté ahora mismo en los servidores de Umbler y obtuve el volcado con éxito. ¡Muchas gracias por el consejo!Consulte el siguiente enlace que contiene un scriptlet que lo ayudará: http://davidwalsh.name/backup-mysql-database-php
Nota: este script puede contener errores con tipos de datos NULL
fuente
Por razones de seguridad, se recomienda especificar la contraseña en un archivo de configuración y no en el comando (un usuario puede ejecutar un
ps aux | grep mysqldump
y ver la contraseña).fuente
Aquí puede encontrar una solución integral para volcar la estructura y los datos de mysql como en PMA (y sin usar exec, passthru, etc.):
https://github.com/antarasi/MySQL-Dump-with-Foreign-keys
Es una bifurcación del proyecto dszymczuk con mis mejoras.
El uso es simple
Funciona de maravilla :-)
fuente
Siempre que se le permita usar exec () , puede ejecutar comandos de shell a través de su código PHP.
Entonces, suponiendo que sepa cómo escribir mysqldump en la línea de comando, es decir
entonces puede usar esto como parámetro para la función exec ().
fuente
La respuesta de MajorLeo me indicó la dirección correcta, pero no funcionó para mí. Encontré este sitio que sigue el mismo enfoque y funcionó.
¡Espero que ayude a alguien más!
fuente
Bueno, siempre puedes usar la llamada a la función del sistema de PHP.
http://php.net/manual/en/function.system.php
http://www.php.net/manual/en/function.exec.php
Que ejecuta cualquier programa de línea de comandos desde PHP.
fuente
<?php exec('mysqldump --all-databases > /your/path/to/test.sql'); ?>
Puede extender el comando con cualquier opción que mysqldump tome por supuesto. Úsalo
man mysqldump
para más opciones (pero supongo que lo sabías;))fuente
Aquí hay otra opción nativa basada en PHP: https://github.com/2createStudio/shuttle-export
fuente
fuente
Ninguno de los códigos anteriores funcionó para mí. Estoy usando windows. El siguiente código funcionó para mí ...
Esto guardará el archivo en la carpeta de su proyecto de acuerdo con su consulta, los datos que desee.
fuente
Para volcar la base de datos usando shell_exec (), a continuación se muestra el método:
fuente
fuente