Как може да са се стартира python файл от php?

+14 гласа
192 прегледа
попитан 2016 май 26 от Ianko-Ivanov (220 точки)
Как мога да стартирам pyton файл от php файл.

Използвам orange pi 2  и в конзолен режим стартирам pyton  файла и се изпълнява нормално но не мога да го стартирам през браузера от php файл като съм написал следния код :

<?php
mi_set("safe_mode",0);
exec ("sudo ./pa20on.py");

1 отговор

+3 гласа
отговорени 2016 май 31 от kristiyandev (740 точки)

Когато през браузъра изпълняваш php код се използва apache user-a.
Ти желаеш да изпълниш команда със sudo, което предизвиква конфликт. (Ако не използваш едни върти с nopassword, ама не ги препоръчвам).

Иначе, така както си тръгнал да изпълняваш python файл, най-горе в него трябва да имаш

#!/usr/bin/env python
или респективно пътя към него.

Пробвай този скрипт:

$command = escapeshellcmd('/full/path/to/test.py');
$output = shell_exec($command);
print $output;

Не забравяй да провериш правата на файловете. Ако пайтъна е в друга група, то той трябва да има public права (за да може друг user да ги изпълнява).
Също така в Python-а можеш да напиш код, който да създава файл, така че да си сигурен, че се изпълнява, защото не съм на 100% сигурен, че това връщаше принта на Python-a.
Аз съм го ползвал за писане на файлове. Също така е хубаво да започнеш от най-чисти файлове.

Освен това би ли разказвал какво прави mi_set() ? / Това е само от любопитство /

Поздрави

коментиран 2016 май 31 от Ianko-Ivanov (220 точки)
редактиран 2016 май 31 от Ianko-Ivanov
mi_set("safe_mode",0);
 целта на това е да имам права да стартирам файлове от php  защото без него ще ми казва че нямам права да стартирам файла


#!/usr/bin/env python


import os
import sys

if not os.getegid() == 0:
    sys.exit('Script must be run as root')


from time import sleep
from pyA20.gpio import gpio
from pyA20.gpio import port


led = port.PA20

gpio.init()
gpio.setcfg(led, gpio.OUTPUT)

print ("PA10 is ON")

gpio.output(led, 1)

print ("Goodbye.")


това е файла който трябва да се изпълни

<html>
<head>
       
        <title>Pi-lights</title>
       
</head>
<body>
        <form type ="GET" action ="nap.php">
           <button type = "submit" > stop < / button>
        </form>   
</html>

това е файла който чрез бутон стартира  php  файла

<?php
$command = escapeshellcmd('./pa20on.py');
$output = shell_exec($command);
print $output;

в php  написах това но пак не светва светодиода
 
е това е може би така трябваше да започна с пълно описание

и не ми показва грешка

и благодаря за съвета
...