2015-09-04 11 views
6

comando

$file = '/var/www/test.docx'; 
move_uploaded_file($uploaded_file, $file); 
echo 'is file: '.is_file($file)."\n"; 

exec('/usr/bin/doc2pdf -o '.$file.'.new '.$file.' 2>&1', $out); 
print_r($out); 

uscita

is file: 1 
Array 
(
    [0] => Error: Unable to connect or start own listener. Aborting. 
) 

Questa è una parte di uno script di upload e sta funzionando come www-data sotto Apache ..Doc2Pdf - in grado di connettersi o iniziare proprio ascoltatore

Il linea di comando funziona bene da stucco come root

Lo scri pt ha lavorato sotto www-data, ma ora non funziona? : -/

aggiornamento I

apt-get install sudo 
sudo visudo # added "www-data ALL = NOPASSWD: /usr/bin/doc2pdf" 

codice:

exec('sudo /usr/bin/doc2pdf -o '.$file.'.new '.$file.' 2>&1', $out); 
print_r($out); 

errore:

sudo: unable to resolve host dyntest-amd-3700-2gb 

aggiornamento II

echo "127.0.1.1 $(hostname)" >> /etc/hosts 
reboot 
+0

aggiungere l'opzione '-V' al vostro' comando doc2pdf' e controllare l'output di '$ esterno ne . Inoltre, 'sudo' tipicamente si aspetta un tty. Controlla il tuo file '/ etc/sudoers' per l'opzione' Defaults requiretty'. Vedi questo post StackExchange: http://unix.stackexchange.com/a/122624. –

risposta

5

È possibile modificare il proprietario di/usr/bin/doc2pdf con il comando chown oppure modificare i privilegi dell'utente www-data che consente di eseguire co mmands come root senza inserire la password. Per fare ciò, dovrai modificare il file /etc/sudoers. Meglio non modificarlo, però. C'è un util in linux usato per questo: visudo.

$ sudo visudo

aggiungere questo alla fine del file di

www-data ALL = NOPASSWD:/usr/bin/Doc2Pdf

Salvare il file e si è fatto. Non dimenticare di modificare questa riga di codice PHP e (aggiungere sudo all'inizio):

exec('sudo /usr/bin/doc2pdf -o '.$file.'.new '.$file.' 2>&1', $out); 
+0

Quando digito 'sudo' nella riga di comando ottengo un errore .. – clarkk

+0

@clarkk, puoi dire quale errore ottieni? –

+0

'-bash: sudo: comando non trovato' – clarkk

0

Connettersi a ssh come root

sudo visudo

aggiungere

www-data ALL = (ALL) NOPASSWD:/usr/bin/Doc2Pdf

e salvare: WQ

+0

quando si esegue 'visudo' viene restituito un errore .. ho aggiornato la mia domanda – clarkk

+0

Sembra che tu stia suggerendo un file di modifica, giusto? Quindi spiegalo. Forse l'OP non ha gli stessi programmi che stai usando nel tuo esempio. –

Problemi correlati