2016-08-19 2 views
0

Так Im пытается выполнить питон скрипт из PHP с помощью этого кодаВыполнение питон скрипт через PHP

exec('C:\Python27\python.exe C:\WEBSITE_DATA\script.py'); 

или с двойным забой ...

exec('C:\\Python27\\python.exe C:\\WEBSITE_DATA\\script.py'); 

скрипт работает и генерирует файл формы при обычном запуске, поэтому проблема не связана с файлом .py.

Я изменил разрешение, чтобы позволить каждый полный контроль из папки python27 и папок данных сайта просто проверить, если бы проблема с разрешениями

журнал PHP отсутствует какая-либо ошибка, поэтому я не могу гоняться не любым ошибки или проблемы с кодом

Я запускаю IIS на сервере Windows 2012 r2 это моя проблема? Является ли то, что я пытаюсь сделать, даже возможно?

также, если это возможно, я могу обменять переменные с php на python, а затем обратно?

ответ

1

Это очень плохой. Это очень хакерское и небезопасное решение. Имейте это в виду.

С учетом этого вы должны искать функцию php system, выполняющую команду в консоли, а не exec.

Существует несколько способов передачи переменных из PHP-скрипта в Python. Вы можете записать данные в базу данных MySQL, а затем прочитать их из сценария Python. Вы можете упаковать все переменные в JSON, используя функции php zip и json_encode, сохранить JSON в файл на диске и затем прочитать его из того же места в скрипте Python.

Самый простой способ, хотя это сделать это в system вызова:

system("C:\Python27\python.exe /path/to/script.py $a $b $c") 

Таким образом, переменные будут аргументы скрипта Python. Там вы ча просто читать их sys.argv массив так:

import sys 
a = sys.argv[1] # Note that the first argument is [1], not [0] 
b = sys.argv[2] 
... 

Для передачи значения обратно в PHP скрипт я предлагаю то же самое - сохранение их в формате JSON на диске, а затем чтения и разбора этот JSON в PHP скрипт после выполнение скрипта Python завершено.

Теперь, хотя я сказал вам, как это сделать, вы абсолютно не должны. Гораздо лучший способ - написать скрипт CGI на Python, который обработает запрос и выполнит работу, которую вы первоначально написали на Python. Вы можете прочитать здесь больше - https://www.linux.com/blog/configuring-apache2-run-python-scripts

+0

Что было бы безопасным решением? –

+0

@k_schultz Проверьте окончание ответа, просто добавьте его. Попробуйте написать сценарий в Python и сделать его скриптом CGI. Читайте об этом здесь - https://www.linux.com/blog/configuring-apache2-run-python-scripts –

Смежные вопросы