Как запустить скрипт Python из переполнения стека

Я хочу запустить скрипт Python из PHP.
это мой код Python. Он сохраняется в / home / pi и имя файла hello.py

#! /usr/bin/python

import bluetooth

bd_addr="xx:xx:xx:xx:xx:xx"port=1
sock=bluetooth.BluetoothSocket(bluetooth.RFCOMM)
sock.connect((bd_addr.port))
data=""while 1:
try:
data +=sock.recv(1024)
data_end=data.find('\n')
if data_end!=-1:
rec=data[:data_end]
print datas
data=data[data_end+1:]
except KeyboardInterrupt:
break

А вот и мой PHP-код. Он сохраняется в / var / www / html и имя файла php.php

<?php
$output=shell_exec('ls -l /home/pi/hello.py');
echo "<pre>$output</pre>";
?>

И я вставляю localhost / php.php в Chrome, он отображает

-rw-r-r- 1 pi pi 378 Mar 8 12:07 /home/pi/hello.py

в чем проблема??

1

Решение

Как указал Джон Стирлинг, вы используете «ls» только для вывода списка содержимого папки или для проверки наличия файла в этой папке. Чтобы запустить код Python, вам нужно изменить файл PHP на что-то вроде этого:

<?PHP
$output=shell_exec('./hello.py');
echo "<pre>$output</pre>";
?>
1

Другие решения

ls Команда используется для вывода списка файлов в каталоге или для получения информации о файле. Вы ls-ing в вашем файле Python и результат правильный. Он предоставляет вам информацию о файле.

Просто поместите имя файла внутри shell_exec то есть /home/pi/hello.py, Если вы не хотите зависеть от Шебанга и команды python доступен в вашей оболочке, то вы можете использовать python /home/pi/hello.py вместо голого /home/pi/hello.py,

Опять же, вы использовали переменную datas с print где вы намеревались использовать data — почини это.


PHP-код:

<?php
$output=shell_exec('python /home/pi/hello.py');
echo "<pre>$output</pre>";
?>

или же:

<?php
$output=shell_exec('/home/pi/hello.py');
echo "<pre>$output</pre>";
?>

код Python:

#! /usr/bin/python

import bluetooth

bd_addr="xx:xx:xx:xx:xx:xx"port=1
sock=bluetooth.BluetoothSocket(bluetooth.RFCOMM)
sock.connect((bd_addr.port))
data=""while 1:
try:
data +=sock.recv(1024)
data_end=data.find('\n')
if data_end!=-1:
rec=data[:data_end]
print data
data=data[data_end+1:]
except KeyboardInterrupt:
break
0

По вопросам рекламы [email protected]