Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Problema mysqldump php

  1. #1
    Utente di HTML.it L'avatar di yaku78
    Registrato dal
    Feb 2015
    residenza
    Lanciano (CH)
    Messaggi
    6

    Problema mysqldump php

    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 &egrave stato eseguito";
        
      }
      else {
        echo "<br>Il backup non &egrave 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?

  2. #2
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    stampa a schermo $command sia prima di applicare escapeshellcmd sia dopo e verifica che la stringa sia corretta
    magari fai un copia e incolla delle stringhe in un terminale

  3. #3
    Utente di HTML.it L'avatar di yaku78
    Registrato dal
    Feb 2015
    residenza
    Lanciano (CH)
    Messaggi
    6
    Quote Originariamente inviata da clasku Visualizza il messaggio
    stampa a schermo $command sia prima di applicare escapeshellcmd sia dopo e verifica che la stringa sia corretta
    magari fai un copia e incolla delle stringhe in un terminale
    Ciao Clasku.
    La stampa di $command è:
    codice:
    mysqldump --host=localhost --user=root --password=r00tmysql serenity > /var/www/serenity/backup_database.sql
    La stampa dopo escapeshellcmd è:
    codice:
    mysqldump --host=localhost --user=root --password=r00tmysql serenity \> /var/www/serenity/backup_database.sql
    In effetti non avevo notato che aggiunge una slash prima del simbolo >
    ho aggiunto
    codice:
    $command=str_replace('\\', '', $command);
    Che mi elimina il backslash, ma così facendo anche se $command è corretto, $copia_db risulta vuoto, sia se provo con exec, shell_exec o system.
    Non capisco perché!

    Grazie.

  4. #4
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    E se non usi escapeshellcmd funziona?

  5. #5
    Utente di HTML.it L'avatar di yaku78
    Registrato dal
    Feb 2015
    residenza
    Lanciano (CH)
    Messaggi
    6
    Purtroppo no. Anche se la stringa è giusta. Pensavo fosse un problema di permessi dato che il comando è eseguito dall'utente "www-data", che non riesce a scrivere nella directory di destinazione. Ho provato a cambiare i permessi, a cambiare directory, ma niente.

  6. #6
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    hai provato a incollare l'output di $command nel terminale?
    dal terminale mysqldump con gli stessi parametri funziona?

  7. #7
    Utente di HTML.it L'avatar di yaku78
    Registrato dal
    Feb 2015
    residenza
    Lanciano (CH)
    Messaggi
    6
    Si, e funziona perfettamente.
    Il problema credo sia l'utente con cui php esegue il comando, ovvero www-data.
    Ho anche aggiunto al file sudoers la stringa:

    www-data ALL=(ALL) NOPASSWD: ALL

    Ma non ho risolto niente

  8. #8
    che macchina è? se sta usando selinux non basta quella direttiva. vedi se in console facendo "getenforce" ti ritorna qualcosa (possibilmente "disabled" )
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  9. #9
    Utente di HTML.it L'avatar di yaku78
    Registrato dal
    Feb 2015
    residenza
    Lanciano (CH)
    Messaggi
    6
    Mi dice che non è installato...

  10. #10
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    scusa, che distro linux stai usando?
    quando lo fai da terminale, che utente usi?

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.