@Sa7ha_S

Почему может не работать функция exec?

У меня есть скрипт на php который должен запускать приложение допустим java.class, функция в таком случие будет выглядеть както так exec("java -cp . java"), и так оно работает, только проблема в том что работает оно только в том случае если я запускаю этот скрипт с консоли, а когда я запускаю его как страничку сайта в браузере то функция не работает, в чом может быть проблема?
В добавок могу сказать что когда я запускаю скрипт с консоли, то он запускается от имени пользователя системы а когда он запускается в браузере то пользователь www-data.
В файл php.ini добавил safe_mode = Off safe_mode_exec_dir ="var/www/exec/" и удалил эту функцию с disable_functions.
  • Вопрос задан
  • 1082 просмотра
Пригласить эксперта
Ответы на вопрос 2
MaxDukov
@MaxDukov
впишусь в проект как SRE/DevOps.
попробуйте в консоли выполнить эту команду от имени www-data
su - www-data , потом java -cp . java
либо не хватает прав, либо косяк с путями.
Ответ написан
mahoho
@mahoho
Full stack certified PHP developer.
Потому что exec запускает команды в шелле sh без экспорта переменных окружения, в том числе $PATH, то есть он банально не знает, где лежит бинарник java. Укажите полные путь к бинрнику в команде, который вы передаете в exec().Например, у меня это будет выглядеть так:
$ which java
/usr/bin/java

в PHP:
exec("/usr/bin/java -cp .java")
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы