Вот что я использую как для crontabs, так и для вызова файла .py через PHP shell_exce () или exec (). Я не эксперт, но я достаточно долго шарила, чтобы все заработало.
$exec_str = "cd /home/dockethound/public_html/layout/pydocx && /home/flohosting/PythonTest/PythonTest/bin/python create-docx.py \"".$GET['email']."\" \"".$GET['doc_id']."\" >2&1";
exec($exec_str);
Я использую GoDaddy VPS с некоторыми установленными модулями Python (python-docx).
Мое понимание этой команды заключается в том, что она перейдет в каталог, в котором находится скрипт (хотя я тогда вызываю его по абсолютному пути на сервере, который кажется ненужным), а затем вызываю мой virtualenv
для python3 +0,6. Я установил его в PythonTest, и он работает, поэтому я никогда не менял его.
О, && было очень важно. Я имел это в crontab, но не в моей команде shell_exec (), и это не работало. Я снова проверил свой crontab, увидел его там и добавил, и BOOM, мой shell_exec () / exec () начал работать.
Надеюсь, это поможет
PS - переменные в конце передают аргументы (или параметры) в скрипт. Я использую следующее для доступа к ним:
import sys
#declare the variable
var_1 = sys.argv[1]
var_2 = sys.argv[2]
argv [0] всегда является первой частью скрипта, то есть от cd
до имени скрипта.