mega-cmd e shel_exec php

Installazione, configurazione e uso di Ubuntu come server: web, ftp, mail, news, proxy, dns e altro.
sman34
Prode Principiante
Messaggi: 6
Iscrizione: venerdì 16 settembre 2022, 13:00
Distribuzione: ubuntu server
Sesso: Maschile

mega-cmd e shel_exec php

Messaggio da sman34 »

ciao a tutti.

sono nuovo ma non di linux, o meglio anche di linux me ne occupo solo da 10 anni ma non professionalmente, qualche lavoretto nulla di che.

Per tanti anni ho sempre usato windows e poi soono passato anche ad altre piattafome e con linux uso molto con la versione server.

Non ho mai digerito a fondo gli script bash quindi vi chiedo un aiuto.

Attulamente sto lavorando ad un progetto domenicale casalingo e ho installato una macchina virtuale con ubuntu server 20.04

Lo script prevede l'upload di un qualsiasi files, questo viene zippato da 7zip, protetto da password e poi vorrei che fosse caricato su cloud mega.

La parte ajax/javascirpt e php e tutto apposto, ho scritto dei codici ben collaudati nel tempo e non presentano problemi anche perchè lo stesso lo usato in php 8.0 con qualche aggiustamento ma nulla di che.

La versione installata sul server e php 7.4.30

Quindi ho installato mega-cmd come da istruzioni git-hub con tutte le dipendenze richieste, tutto perfettamente funzioante e non è stato difficile capire il funzionamento.

ora il problema e questo.

Se eseguo, una volta logato o la sessione rimane aperta fino a quando io non la chiudo anche se dovessi fare un riavvio :

Codice: Seleziona tutto

mega-ls
ottengo, operando come utente root la lista dei files presnete sul mio cloud mega.

Tutti gli altri comandi come "mega-put" per caricare i file, o "mega-mkdir [mia cartella]" che mi occorrono funzinano perfettamente.

IL problema nasce quando tento di fare questa operazione dal browser con script php

ovvero un semplice codice

Codice: Seleziona tutto

<?php

$out = shell_exec("mega-ls");

echo "<pre>$out</pre>";

?>

ottengo solo pagina bianca dopo diversi secondi di attesa e lo scirpt sembra che non venga.

nel log di mega cmd non ho errori, in php non ho errori e sono tutti abilitati dal php.ini

ora se invece al posto di "mega-ls" eseguo lo stesso script ma cambiando comando con un semplice "php --version" viene eseguito e stampato.

se invece eseguo da terminale il file php :

Codice: Seleziona tutto


php test.php

con il comando "mega-ls" ottengo l'output o il comando che voglio eseguire.

Premetto che www-data e chmod 755 su file e cartelle sono settati ma non c'e nulla da fare non lo esegue.

La documentazione ufficiale di mega non da nessuna limitazione a riguardo, anzi posso creare script sh che allo stesso modo non esegue se lanciati da browser.

e evidente che sto dimenticando, non conosco o sbagliando qualcosa.

ma cosa?
Avatar utente
neolight69
Prode Principiante
Messaggi: 86
Iscrizione: lunedì 19 giugno 2006, 11:06
Desktop: gnome-shell
Distribuzione: Ubuntu 22.04 i686
Contatti:

Re: mega-cmd e shel_exec php

Messaggio da neolight69 »

Codice: Seleziona tutto

<?php

$out = shell_exec("mega-ls");

echo "<pre>$out</pre>";

?>

con quale utente viene eseguito? lo stesso che utilizzi per fare i test dalla bash?
sman34
Prode Principiante
Messaggi: 6
Iscrizione: venerdì 16 settembre 2022, 13:00
Distribuzione: ubuntu server
Sesso: Maschile

Re: mega-cmd e shel_exec php

Messaggio da sman34 »

da terminale lo eseguo come root, e sono logato come root.

ma non è questo il problema, se mi logo come utente ed eseguo "php test.php" lo esegue e mi restiruisce l'output.

IL problema nasce quando eseguo sul browser:

http://localhost/test.php

non lo esegue.
sman34
Prode Principiante
Messaggi: 6
Iscrizione: venerdì 16 settembre 2022, 13:00
Distribuzione: ubuntu server
Sesso: Maschile

Re: mega-cmd e shel_exec php

Messaggio da sman34 »

un piccolo aggiornameto

stesso scrpt scritto nello stesso modo ma con 7zip ovvero

Codice: Seleziona tutto


<?php

$out = shell_exec("7z x file.7z");

echo "<pre>$out</pre>";

?>

langio da browser

Codice: Seleziona tutto

localhost/test.php

output ottenuto :

Codice: Seleziona tutto


Scanning the drive for archives:
1 file, 53868500 bytes (52 MiB)

Extracting archive: MTS-master.7z
--
Path = MTS-master.7z
Type = 7z
Physical Size = 53868500
Headers Size = 1536
Method = LZMA2:24 BCJ
Solid = +
Blocks = 2

Everything is Ok

Folders: 37
Files: 78
Size:       157490634
Compressed: 53868500



e file perfettamente scompattato con le istruzioni inserite.

non capisco cosa cambia su mega-cmd
Avatar utente
neolight69
Prode Principiante
Messaggi: 86
Iscrizione: lunedì 19 giugno 2006, 11:06
Desktop: gnome-shell
Distribuzione: Ubuntu 22.04 i686
Contatti:

Re: mega-cmd e shel_exec php

Messaggio da neolight69 »

credo che la differenza stia nel fatto che le credenziali di accesso al servizio di mega sono salvate nella home di root (/root) che non è accessibile quando lanci dal web.
Secondo me devi rifare la procedura di accesso al servizio mega con l'utente con il quale gira il webserver
sman34
Prode Principiante
Messaggi: 6
Iscrizione: venerdì 16 settembre 2022, 13:00
Distribuzione: ubuntu server
Sesso: Maschile

Re: mega-cmd e shel_exec php

Messaggio da sman34 »

diciamo che ho fatto qualche passo avanti

prima cosa mega-cmd non è installa to sulla cartella usr/bin e non vi è traccia nemmeno su usr/local/bin

la documentazione parla di shell-interattiva. quindi a questo punto per ottenere un output dalla shell ho aggiornato con

Codice: Seleziona tutto


 shell_exec('mega-ls 2>&1');

da qui mi ha letteralende mandato a quel paese con un bel " perimission dinieded" invece di pagina bianca e già e un qualcosa.

allora ho dato i permessi a root per www-data con visudo alla esecuzione dei comandi, ovviamente provvisorio.

e pensavo di aver risolto infatti se do il comando


shell_exec('sudo -u root -S mega-ls 2>&1');

mi risponde dal browser con

[API:err: 16:41:32] Not logged in.


perchè giustamente non mi può dare una lista files se non sono logato.

allora ho fatto un login da shell che poi ovviamente posso automatizzare in casi di riavvio.

si e incazzato e mi ha risposto con

[Initiating MEGAcmd server in background. Log: /root/.megaCmd/megacmdserver.log]
Unable to connect to service: error=2
Please ensure mega-cmd-server is running
Failed to create socket for registering for state changes

percorso e cartella esistono ma non le interessa per lui non ci sono, si incazza e si ferma
sman34
Prode Principiante
Messaggi: 6
Iscrizione: venerdì 16 settembre 2022, 13:00
Distribuzione: ubuntu server
Sesso: Maschile

Re: mega-cmd e shel_exec php

Messaggio da sman34 »

con megatools non succede tutto questo perchè e installato su usr/bin e funziona tutto correttamente.

Ma vorrei una alternativa e poter usare l'utility ufficiale e trovarmi con lo stesso problema in atri casi quindi devo risolvere
sman34
Prode Principiante
Messaggi: 6
Iscrizione: venerdì 16 settembre 2022, 13:00
Distribuzione: ubuntu server
Sesso: Maschile

Re: mega-cmd e shel_exec php

Messaggio da sman34 »

Problema risolto!.

intanto ringrazio @neolight69 per il suggerimento, per forza mi sono dovuto studiare un po di scripting è questo mi ha aiutato per quato riguarda l'output della shell, una cosa sono gli erroi php e un'altra sono quelli della shell che php non cattura se non vengono aggiunti comandi adeguati.

ma qui non era solo un problema di permessi.

Per gli altri manco sto a replicare, non ci credo che nessuno ha avuto questo problema, non e il solo applicativo che lavora con shell interattiva!

Di fatto non do la soluzione, che ve la do a fare che voi sapete tutto, tranne a neolight69 che è stato molto gentile e per essere nuovo de forum vi siete fatti conoscere subito tutti!

Sto nonnismo non lo sopporto.
Allegati
Immagine.png
Scrivi risposta

Ritorna a “Ubuntu su server”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 7 ospiti