Я установил приложение (bagit) через homebrew и пытаюсь выполнить команду оболочки с моего локального сервера Apache (установленного на OSX).
Мой PHP выглядит так:
$cmd = 'bag create '.$targetFolder.' '.$sourceFolder.' --baginfotxt '.$bagInfoFile ." 2>&1";
$output = shell_exec($cmd);
Тем не менее я получаю следующее сообщение об ошибке:
/bin/bash: /usr/local/bin/bag: Permission denied
Как я могу дать Apache доступ к команде bash, расположенной в `/ usr / local / bin?
Ваша установка apache должна быть запущена с тем же пользователем / группой, что и файлы, которые она пытается выполнить.
Вы можете изменить права доступа к файлу приложения, которое вы пытаетесь выполнить, на то же, что и у текущего пользователя / группы apache / php (или 777 и т. Д.)
или вы можете изменить apache / php для запуска в качестве более привилегированного пользователя / группы.
Вы можете изменить метод вашего приложения на SSH в вашей исполняемой среде и запустить приложение через SSH.
Когда PHP пытается выполнить что-то, он будет работать как пользователь веб-сервера по умолчанию (apache
, www-data
или же httpd
). Убедитесь, что команда для запуска имеет право владения / разрешения. Самый простой способ достичь этого — добавить пользователя вашего веб-сервера в новую группу, скажем, test
, а также chgrp test /usr/local/bin/bag