braccio di ferro tra php_exec e my sqldump[RISOLTO]

Installazione, configurazione e uso di Ubuntu come server: web, ftp, mail, news, proxy, dns e altro.
Scrivi risposta
Hosting80
Prode Principiante
Messaggi: 86
Iscrizione: martedì 30 agosto 2016, 15:41
Sesso: Maschile

braccio di ferro tra php_exec e my sqldump[RISOLTO]

Messaggio da Hosting80 »

ciao a tutti.

ho realizzato uno semplicissimo script in php molto essenziale che ogni 24 ore esegue un backup della cartella /var/www/sito.com/www e la comprime

e il dump del database del del sito in questione all'interno della cartella /etc/wwwbackup ed esegue una sicronizzazione su google drive.

ora nei server 4-5-7-12 che posseggo con ubuntu server 14 e php versione 5.6 tutto funziona correttamente da oltre 2 anni

Il problema compare nei server 1-2-3-6-8-9-10-12 con ubuntu 18 e php 7.1 con mysql 5.7

la funzione e semplice quanto mi sta dando non pochi problemi ed e questa

$db_user="root";$db_pass="pass";$db_dbname="dbname";

shell_exec("mysqldump --quick --single-transaction --user=$db_user --password=$db_pass $db_dbname > ./backup/www.sql");

Il file viene scritto ma e da 0 kbyte quindi al suo interno non vi e nulla e non capisco il motivo

il server 11 invece e basato su debian 9 e tutto funziona correttamente mentre quelli con ubuntu non capisco dove sto sbagliando.

Ora se eseguo il comando da shell nella stessa cartella con gli stessi permessi tutto funziona correttamente e la cosa peggiore e che non ho alcun log che mi dia errore, tutto sembra funzionare correttamente di fatto il dump non lo esegue.
Ultima modifica di Hosting80 il martedì 20 novembre 2018, 16:04, modificato 1 volta in totale.
SergenteBasettoni
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 551
Iscrizione: giovedì 21 gennaio 2010, 12:30
Desktop: Cinnamon 2.2.13
Distribuzione: Linux Mint 17 Qiana x86_64
Località: Ovunque e da nessuna parte

Re: braccio di ferro tra php_exec e my sqldump

Messaggio da SergenteBasettoni »

Se esegui lo script manualmente da shell funziona? ( lo script php intendo )
Con il naso intasato io ti invado il seminterrato
Hosting80
Prode Principiante
Messaggi: 86
Iscrizione: martedì 30 agosto 2016, 15:41
Sesso: Maschile

Re: braccio di ferro tra php_exec e my sqldump

Messaggio da Hosting80 »

appena provato....backup eseguito correttamente.

ma se lancio il file php da borwser no.

Sta di fatto che il problema non e risolto perchè e interessante capire cosa non va....
Hosting80
Prode Principiante
Messaggi: 86
Iscrizione: martedì 30 agosto 2016, 15:41
Sesso: Maschile

Re: braccio di ferro tra php_exec e my sqldump

Messaggio da Hosting80 »

allora tutto funziona correttamente se imposto un task su cron......

ho fatto un'altra prova...ho compilato un file bash e lanciato da php con shell_exec(/.mysqldump.sh) sempre da browser accade la stessa cosa
Crea il file ma non scrive i dati al suo interno.

Questo e un problema che vorrei risolvere.

dovrò emularmi dei server con il buon vecchio vmware e capire se il problema nasce dalla versione del php o della vesrsione del s.o e capire se ho mancato qualcosa nella configurazione.
SergenteBasettoni
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 551
Iscrizione: giovedì 21 gennaio 2010, 12:30
Desktop: Cinnamon 2.2.13
Distribuzione: Linux Mint 17 Qiana x86_64
Località: Ovunque e da nessuna parte

Re: braccio di ferro tra php_exec e my sqldump

Messaggio da SergenteBasettoni »

Sembrerebbero i permessi.
Avviando da shell, immagino che tu sia root, hai tutti i permessi ed esegui il shell_exec senza problemi.
Prova ad andare nel php.ini e controlla se safe_mode_exec_dir sia vuoto
Io dove posso installo sempre php 5.6 perchè la più stabile e la 7.1 cambia troppe cose



edit

Controlla anche per sicurezza se la variabile shell_exec sia commentata o non presente in disable_functions sempre nel php.ini
Con il naso intasato io ti invado il seminterrato
Hosting80
Prode Principiante
Messaggi: 86
Iscrizione: martedì 30 agosto 2016, 15:41
Sesso: Maschile

Re: braccio di ferro tra php_exec e my sqldump

Messaggio da Hosting80 »

Intanto ti ringrazio per i tuoi suggerimenti, si queste sono le prime configurazioni che eseguo a nuova installazione sul php.ini anche perchè non voglio che l'utente esegua dal web questi comandi se non su esplicita richiesta sul quel determinato host allora in quel caso le viene abilitata una specifica cartella con uno specifico php.ini per lo scopo.
Ma per questo comunque ho i pacchetti dedicati, perchè se a uno sviluppatore le servisse di sviluppare sotto host un applicativo in php allora le si fornisce appunto un host specifico solo per quel determinato utente e spazio.
Però ai ragione da un lato anche secondo me e un problema di permessi, perchè ho il file viene scritto con i permessi 0644 però allo stesso tempo non ho errori, non ho log che mi danno errore quindi e complicato capire cosa non va e anche un po di inesperienza questo si, ed e dovuta alla scarsa conoscenza del php7.xx

Tutti i test fatti naturalmente descritti sopra certo sono da shell con diritti di root....

Ma non solo dalla versione 5.7 anche senza aver installato il mysqlsecure per cms e mysql admin e necessario autorizzare un utente con diritti elevati che e la prima cosa che ho fatto naturalmente.

Quindi da script php utulizzo un user autorizzato.

Per quanto riguarda le versioni be......io sono un pro novità e aggiornamenti e vorrei soddisfare il cliente e lasciare libera scelta nelle configurazioni disponibili.

Per adesso comunque per gli host ho risolto in altro modo, con qualche riga di codice ho impostato la compilazione di file bash in modo che l'utente possa impostare il backup del suo spazio attraverso cron.
Per l'esecuzione immediata ho impostato un ritardo di 2 secondi dalla creazione del file.
Quindi dopo aver creato il file bash con all'interno i compandi per il backup della cartella, lo zippa ,dump dello specifico database viene anche creato un file task su cron che dopo 2 secondi lo esegue.

Naturalmente ho creato in php 2 funzioni distinte in modo che prima crei il file .sh, se l'sh e creato con successo crea il task di lancio e dopo 2 sec. parte.
Sicuramente macchinoso ma per il momento ho risolto così.

Questo non toglie comunque che ci lavoro su e se ho novità faccio sapere subito, non sono il solo ad avere questo problema e dipende da mysql non da php secondo me.
SergenteBasettoni
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 551
Iscrizione: giovedì 21 gennaio 2010, 12:30
Desktop: Cinnamon 2.2.13
Distribuzione: Linux Mint 17 Qiana x86_64
Località: Ovunque e da nessuna parte

Re: braccio di ferro tra php_exec e my sqldump

Messaggio da SergenteBasettoni »

Anche mysql dalla versione 5.6 alla 5.7 a me ha dato qualche problema...
Hai provato a fare eseguire altri shell_exec via web sulla macchina? Se funzionano senza problemi vuol dire che non è php ma qualche permesso legato a mysql/cartella
Con il naso intasato io ti invado il seminterrato
Hosting80
Prode Principiante
Messaggi: 86
Iscrizione: martedì 30 agosto 2016, 15:41
Sesso: Maschile

Re: braccio di ferro tra php_exec e my sqldump

Messaggio da Hosting80 »

no :)

perchè ho risolto prioprio adesso :)

La soluzione e la stessa che ho usato per mysqladmin, e cavolo da li il dump lo fa e le funzioni sono le stesse!

1. creazione di un utente mysql apposito per il backup :

CREATE USER 'backupdb'@'localhost' IDENTIFIED BY 'backuppass';
2. applicare i privilegi per quel database o tutti
GRANT ALL PRIVILEGES ON *.* TO 'backupdb'@'localhost' WITH GRANT OPTION;
3. applicare i privilegi
FLUSH PRIVILEGES;

funzine php utulizzata

shell_exec ("mysqldump -u backupdb -p'backpass' --lock-tables --databases dbuser > www.sql");

lancio dal browser es. http://www.sito.com/backup.php
il tempo suo e tutto funziona correttamente.

Mysql nel sito uffciale dice che per ragioni di sicurezza alcune operazioni come l'accesso o e il dump possono essere eseguite come utente root solo da terminale
Mentre per l'utilizzo anche se in connessione locale di accesso a tutti i database o una chiamata esterna come in questo caso da browser il file "backup.php" e necessario creare un utente apposito.

Ora e chiaro che abiliterò un utente backup per ogni specifico database e solo la funzione --lock tables e qualche altra necessaria per il dump e quell'utente non deve fare altro.

Comuque prima di adeguare il tutto ora faccio alcune prove per adesso lascio lo script che ho fatto prima.....

che pollo che sono, più la soluzione è semplice più mi compico la vita :)
Hosting80
Prode Principiante
Messaggi: 86
Iscrizione: martedì 30 agosto 2016, 15:41
Sesso: Maschile

Re: braccio di ferro tra php_exec e my sqldump

Messaggio da Hosting80 »

Ora naturalmente la shell_exec la disattivo perchè come spiegato questo e un pacchetto apparte, mysql admin sta in un altro server e il motore db mi pare lo messo in cina ora non ricordo :D

comque grazie per la collaborazione spero torni utile a qualcun'altro, i tuoi suggerimenti sul php.ini sono validi, e confermo che su php 7.0-7.1-7.2 non sono attive ne presenti quelle funzioni ma implementabili a seconda delle esigenze
SergenteBasettoni
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 551
Iscrizione: giovedì 21 gennaio 2010, 12:30
Desktop: Cinnamon 2.2.13
Distribuzione: Linux Mint 17 Qiana x86_64
Località: Ovunque e da nessuna parte

Re: braccio di ferro tra php_exec e my sqldump

Messaggio da SergenteBasettoni »

:) ottimo
Anche io mi ritrovo con un server che monta quella versione di mysql, nel caso seguirò la tua procedura.. effettivamente quello che monta la versione 5.6 non mi ha dato mai noie :D
Con il naso intasato io ti invado il seminterrato
Hosting80
Prode Principiante
Messaggi: 86
Iscrizione: martedì 30 agosto 2016, 15:41
Sesso: Maschile

Re: braccio di ferro tra php_exec e my sqldump

Messaggio da Hosting80 »

SergenteBasettoni [url=https://forum.ubuntu-it.org/viewtopic.php?p=5091566#p5091566][img]https://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto::) ottimo
Anche io mi ritrovo con un server che monta quella versione di mysql, nel caso seguirò la tua procedura.. effettivamente quello che monta la versione 5.6 non mi ha dato mai noie :D
si perchè prima o poi dovrai abbandonare quella versione.

IL mio e un discorso anche professionale perchè l'utente deve poter scegliere tra le varie tipologie di configurazioni a seconda delle sue esigenze e in base a quello viene dirottato sul server adeguato.

Purtroppo qui in italia questo discorso lo fanno in molti e non si può pensare nel 2018 che allo sviluppatore piace XP e io devo usare XP pagando migliaia di euro il suo prodotto solo perchè non si vuole aggiornare.

Ci sono naturalmente casi e casi ma giusto per citare un esempio accaduto pochi mesi fa con un gestionale, tra l'altro uno sviluppatore con grandi potenzialità.
Scrivi risposta

Ritorna a “Ubuntu su server”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 8 ospiti