Ciao a tutti.
Sono nuovo del forum.
Ho un problema con uno script php per il backup del database utilizzando mysqldump.
il codice è il seguente:
codice:
<?php
include "connessione.php";
include "topmenu.php";
// Cartella del sito da backuppare
$sito_dir = '/var/www/serenity/';
// Percorso completo dell'archivio compresso del sito
$sito_filename = '/home/yaku/Dropbox/backup_database/backup_database.tar';
// Database
$db_nome = 'serenity';
$db_user = 'root';
$db_pass = 'r00tmysql';
$db_host = 'localhost';
// Percorso completo del backup SQL
$db_filename = '/var/www/serenity/backup_database.sql';
// comprimo i file del sito
$copia_sito = shell_exec('sudo tar -cvf '.$sito_filename.' '.$sito_dir);
// creo il backup del DB
$command = "mysqldump --host=$db_host --user=$db_user --password=$db_pass $db_nome > $db_filename";
$command=escapeshellcmd($command);
$copia_db = shell_exec($command);
echo "<br>".$copia_db;
// verifico che la creazione in locale dei backup abbia funzionato
if ($copia_sito && $copia_db) {
echo "Il backup è stato eseguito";
}
else {
echo "<br>Il backup non è stato eseguito";
}
?>
La cosa strana è che il comando mysqldump se eseguito da shell funziona perfettamente, su php no.
Inoltre il codice:
codice:
$copia_sito = shell_exec('sudo tar -cvf '.$sito_filename.' '.$sito_dir);
Funziona, mentre quello con mysqldump no!
l'output dello script è il seguente:
codice:
-- MySQL dump 10.13 Distrib 5.5.41, for debian-linux-gnu (x86_64) -- -- Host: localhost Database: serenity -- ------------------------------------------------------ -- Server version 5.5.41-0ubuntu0.14.04.1 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
E sinceramente non ci capisco molto.
Dove sbaglio?