Pregunta

Estoy tratando de hacer un volcado de MySQL a través de php.

Este es el código

$backupFile = $table. "-". date("Y-m-d-H:i:s") . '.gz';
    //Command nog aanpassen....
    $command = "mysqldump --opt -h $dbhost -u $dbuser -p $dbpass $dbname  | gzip > $backupFile";
    //$status = system($command);
    echo $backupFile ."<br>";
    $status = passthru($command, $a);
    echo "output:" .  $a;

El valor de $ a = 2. Pero no puedo encontrar lo que significa. Asimismo, no puede encontrar el archivo de copia de seguridad en cualquier lugar.

¿Idea?

¿Fue útil?

Solución

No estoy seguro de si este es el problema, pero parece que el parámetro de contraseña que pasa es incorrecta.

Si utiliza -p es necesario tener la contraseña justo al lado de ella, sin espacios en blanco, así:

$command = "mysqldump --opt -h $dbhost -u $dbuser -p$dbpass $dbname  | gzip > $backupFile";

O utilice el largo --password = $ dbpass.

Por ejemplo:

$command = "mysqldump --opt -h $dbhost -u $dbuser --password=$dbpass $dbname  | gzip > $backupFile";

Desde la página del mysqldump:

  

- contraseña [= contraseña], -p [contraseña]

     

La contraseña a usar cuando se conecta al servidor. Si utiliza el formulario de opción corta (-p), no se puede tener un espacio entre la opción y la contraseña. Si se omite el valor de contraseña a continuación de --password o -p en la línea de comandos, se le pide uno.

Otros consejos

también podría ser el destino de la copia de seguridad. Asegúrese de que el usuario se está ejecutando como mysqldump (en su caso probable www-data, o algún otro usuario Apache) tiene permiso de escritura al directorio en el que está tratando de escribir la copia de seguridad. Muchas veces voy a tratar un comando desde la línea de comandos .. y ver que funcione bien .. pero yo soy la raíz, o mi usuario .. no es www-data.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top