Forum >> Programmazione Python >> Scripting >> exec script python da php

Pagina: 1 2 Avanti

Ciao a tutti, ho bisogno di aiuto. Sto usando Ubuntu 14.04 64bit su macchina virtuale.
Sto lavorando su una pagina php che tramite il comando exec dovrebbe eseguire uno script python. Con script molto semplici il tutto funziona, ma io avrei bisogno di far eseguire uno script python che apra un terminale, entri in una directory in cui è contenuto un altro script python e lo esegua. Per adesso sono riuscita a trovare uno script per aprire automaticamente un nuovo terminale: terminal.py.
Di seguito è riportato il comando da terminale per aprire una nuova finestra ed eseguire provapunti.py.

ss@ss-VirtualBox:~/dronekit-python/examples/mission_import_export$ python terminal.py -m gnome-terminal --wait python provapunti.py

In questo modo tutto funziona, però io vorrei inserire questo comando in uno script python da richiamare nell'exec della mia pagina php. Qualcuno ha idea di come si possa fare? Grazie mille!
Ciao a tutti, ho bisogno di aiuto. Sto usando Ubuntu 14.04 64bit su macchina virtuale.
Sto lavorando su una pagina php che tramite il comando exec dovrebbe eseguire uno script python. Con script molto semplici il tutto funziona, ma io avrei bisogno di far eseguire uno script python che apra un terminale, entri in una directory in cui è contenuto un altro script python e lo esegua. Per adesso sono riuscita a trovare uno script per aprire automaticamente un nuovo terminale: terminal.py.
Di seguito è riportato il comando da terminale per aprire una nuova finestra ed eseguire provapunti.py.

ss@ss-VirtualBox:~/dronekit-python/examples/mission_import_export$ python terminal.py -m gnome-terminal --wait python provapunti.py

In questo modo tutto funziona, però io vorrei inserire questo comando in uno script python da richiamare nell'exec della mia pagina php. Qualcuno ha idea di come si possa fare? Grazie mille!
Ciao Sabrina.

Perché pensi che sia necessario aprire un terminale per eseguire provapunti.py?
THE 🍺-WARE LICENSE (Revision ㊷):
<㎝🐌🐍.🇮🇹> wrote this post. As long as you retain this notice you
can do whatever you want with this stuff. If we meet some day, and you
think this stuff is worth it, you can buy me a 🍺 in return. -- ㎝
In realtà perchè ho provato ad eseguirlo direttamente nell'exec della pagina php: lo status dell'operazione dice che è avvenuta con successo, ma di fatto non accade nulla. Siccome sono sicura che il comando che ho scritto precedentemente sia corretto pensavo di farlo scrivere direttamente in un nuovo terminale aperto in automatico. Devo necessariamente fare in modo che l'utente finale non faccia assolutamente nulla e quindi quando si verifica una certa condizione lo script deve essere eseguito in automatico...
Non so proprio come fare...
In realtà perchè ho provato ad eseguirlo direttamente nell'exec della pagina php: lo status dell'operazione dice che è avvenuta con successo, ma di fatto non accade nulla.
Cosa dovrebbe accadere? Cosa fa lo script? Produce un output sul terminale? E cosa ne devi fare?

Siccome sono sicura che il comando che ho scritto precedentemente sia corretto pensavo di farlo scrivere direttamente in un nuovo terminale aperto in automatico. Devo necessariamente fare in modo che l'utente finale non faccia assolutamente nulla e quindi quando si verifica una certa condizione lo script deve essere eseguito in automatico...

E che risultato deve vedere il tuo utente?

Non so proprio come fare...

Siamo qui apposta.

THE 🍺-WARE LICENSE (Revision ㊷):
<㎝🐌🐍.🇮🇹> wrote this post. As long as you retain this notice you
can do whatever you want with this stuff. If we meet some day, and you
think this stuff is worth it, you can buy me a 🍺 in return. -- ㎝
Allora, vorrei eseguire uno script tramite exec su php nel momento in cui viene soddisfatta una condizione imposta in una clausola if.

Ho provato con uno script semplice in cui viene scritto su un file un messaggio di testo e tutto funziona ($status=0).
------------- file.php
$command= 'python ciao.py';
exec($command, $out, $status);
echo $status;
-------------ciao.py (stessa cartella di file.php)
#!/usr/bin/env python
out_file = open("test.txt","w")
out_file.write("This Text is going to out file\nLook at it and see\n")
out_file.close()

Io però vorrei eseguire uno script python (anche esso contenuto nella stessa cartella) che contiene una missione automatica per un drone simulato. La missione funziona se eseguita da terminale, ma non se richiamata dall'exec.

Può essere dovuto al fatto che si tratta di un comando che dà vita ad un processo che si protrae per un periodo di tempo abbastanza lungo?

Grazie mille!
Probabilmente il problema è che non si riescono ad importare librerie aggiuntive (non standard di linux) che servono per far partire la missione del drone. Qualcuno ha mai fatto qualcosa di simile?
Probabilmente il problema è che non si riescono ad importare librerie aggiuntive (non standard di linux) che servono per far partire la missione del drone. Qualcuno ha mai fatto qualcosa di simile?
Ancora più probabilmente è un problema di configurazione dell'ambiente dell'utente con cui gira il tuo web server.

Riesci a provare ad eseguire lo script da shell con quello user (che probabilmente è `www-data` o `apache`)? Funziona?


THE 🍺-WARE LICENSE (Revision ㊷):
<㎝🐌🐍.🇮🇹> wrote this post. As long as you retain this notice you
can do whatever you want with this stuff. If we meet some day, and you
think this stuff is worth it, you can buy me a 🍺 in return. -- ㎝
Ho appena provato e riesco ad eseguirlo da terminale tramite l'user www-data.

L'utente apache non esiste. Può essere che il mio web server utilizzi un altro utente? Non so bene come fare per verificarlo.

Ho provato ad utilizzare try: <<codice>> except in modo da stampare l'errore di esecuzione dello script python e risulta:

/usr/lib/python2.7/lib-dynload/pyexpat.x86_64-linux-gnu.so: undefined symbol: XML SetHashSalt

Ti dice qualcosa?

Io ho provato a seguire queste istruzioni:
https://bbs.archlinux.org/viewtopic.php?id=140916

ma senza risultato purtroppo...
Ho appena provato e riesco ad eseguirlo da terminale tramite l'user www-data.

L'utente apache non esiste. Può essere che il mio web server utilizzi un altro utente? Non so bene come fare per verificarlo.

Ho provato ad utilizzare try: <<codice>> except in modo da stampare l'errore di esecuzione dello script python e risulta:

/usr/lib/python2.7/lib-dynload/pyexpat.x86_64-linux-gnu.so: undefined symbol: XML SetHashSalt

Ti dice qualcosa?
mi copi l'output di
ldd /usr/lib/python2.7/lib-dynload/pyexpat.x86_64-linux-gnu.so|grep expat
e di
sudo -u www-data ldd /usr/lib/python2.7/lib-dynload/pyexpat.x86_64-linux-gnu.so|grep expat
?

Dimenticavo. Magari anche l'output di questo file php
$command= 'ldd /usr/lib/python2.7/lib-dynload/pyexpat.x86_64-linux-gnu.so|grep expat';

exec($command, $out, $status);

echo $out;
echo $status;

Infine ;P prova a fare
sudo updatedb
locate libexpat.so.1




--- Ultima modifica di ㎝ in data 2016-08-26 21:51:02 ---
THE 🍺-WARE LICENSE (Revision ㊷):
<㎝🐌🐍.🇮🇹> wrote this post. As long as you retain this notice you
can do whatever you want with this stuff. If we meet some day, and you
think this stuff is worth it, you can buy me a 🍺 in return. -- ㎝


Pagina: 1 2 Avanti



Esegui il login per scrivere una risposta.