sei sicuro che ci sia x tra le caratteristiche del file python?
sei sicuro che ci sia x tra le caratteristiche del file python?
cos'è x?
Dovresti essere su Linux, visto il codice che usi
Usa ls -l da terminale e guarda se tra i permessi del file Python hai una x
Quello ti dice se è eseguibile o meno
Per fermat: quindi secondo te lanciare un chiamata via web ad uno script non controllato che fa azioni sul server è meglio che lanciare quello script da un file PHP?
si il file è eseguibile
si il file è eseguibile.
Se non è troppo complicato configurare apache per eseguire gli script python preferirei questa via perchè più diretta. Ho provato a cercare delle guide su internet ma ho trovato cose molto diverse quindi non saprei.
Altrimenti va bene anche usare php però sembra che lo script php, solo se viene chiamato con ajax, non avvii lo script python.
Lo script php che attualmente ho provato è
<?php
echo exec('./oValues.py');
?>
e invece oValues.py è:
#!/usr/bin/env python
import time
import Adafruit_ADS1x15
adc = Adafruit_ADS1x15.ADS1115() #Create an ADS1115 ADC 16-bit instance
GAIN = 1
values = [0]*4
for i in range(4):
values[i] = adc.read_adc(i, gain=GAIN, data_rate=128)
print str(values)
uso ajax quando serve, ma tendo a separare i contesti di esecuzione dei programmi
tornando al problema di tom135: se ho capito bene, quando richiami il tuo file PHP da browser vedi a schermo la risposta che ha preso dall'output dello script in python, se lo fai da ajax non ottieni niente. Hai provato a loggare su un file di testo il risultato delle due chiamate (una banalissima scrittura su file del valore che ti restituisce exec())?
Allora ho fatto queste modifiche allo script php
<?php
$out=exec('./oFile.py');
$fp = fopen("log.txt", "w");
if(!$fp) die ("Errore nella operaione con il file");
fwrite($fp, "output");
fwrite($fp, $out);
fclose($fp);
?>
Se lo avvio da terminale con php getData.php mi crea il file log con scritto output[12,43,12]. [12,43,12] questo è l'output corretto (sono i valori di un sensore) dello script python quindi lo avvia.
Se avvio lo script python tramite browser mi crea il file ma c'è scritto solo output, quindi non avvia lo script python perchè exec non ritorna niente.
La stessa cosa con ajax.