У меня есть несколько python сценариев, которые начинаются с этой строки shebang:
#!/usr/bin/env python3
При попытке запустить сценарии из командной строки все работает должным образом. При использовании Apache я получаю сообщение «Внутренняя ошибка сервера». Проверяя журналы ошибок, Apache сообщает: env: python3: No such file or directory.
Сначала я подумал, что это может быть связано с командой env. Однако использование сценария perl с этой строкой shebang:
#!/usr/bin/env perl
отлично работает!
Я считаю, что это может быть связано с тем, как PATH настроен в Apache. Когда я выводю среду Apache с использованием рабочего сценария perl, ПУТЬ отображается как /usr/bin:/bin:/usr/sbin:/sbin
. На моей машине env
и perl
указаны в /usr/bin
, но python3
находится в /usr/local/bin
, что не входит в путь Apache, как показано выше.
Я решил, что мне нужно добавить /usr/local/bin
к Apache PATH, и я пытался использовать как SetEnv
, так и PassEnv PATH
, как описано в документации Apache здесь:
https://httpd.apache.org/docs/2.4/mod/mod_env.html
Однако, похоже, это не оказывает никакого влияния, поскольку проблема сохраняется.
Что я делаю не так?
PS - Когда я измените строку shebang на #!/usr/local/bin/python3
, сценарий будет работать должным образом. Однако я хотел бы сохранить метод env
для целей переносимости.