macos — разрешение на выполнение команды оболочки PHP запрещено

Я установил приложение (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?

1

Решение

Ваша установка apache должна быть запущена с тем же пользователем / группой, что и файлы, которые она пытается выполнить.

Вы можете изменить права доступа к файлу приложения, которое вы пытаетесь выполнить, на то же, что и у текущего пользователя / группы apache / php (или 777 и т. Д.)

или вы можете изменить apache / php для запуска в качестве более привилегированного пользователя / группы.

  • альтернативно

Вы можете изменить метод вашего приложения на SSH в вашей исполняемой среде и запустить приложение через SSH.

0

Другие решения

Когда PHP пытается выполнить что-то, он будет работать как пользователь веб-сервера по умолчанию (apache, www-data или же httpd). Убедитесь, что команда для запуска имеет право владения / разрешения. Самый простой способ достичь этого — добавить пользователя вашего веб-сервера в новую группу, скажем, test, а также chgrp test /usr/local/bin/bag

0

По вопросам рекламы [email protected]