это для Amazon EC2 linux.
У меня есть сценарий PHP, который запускает сценарий оболочки.
Итак, внутри сценария оболочки есть команда для запуска узла.
Когда я запускаю PHP-скрипт из командной строки, выполняется узел.
Когда я запускаю PHP-скрипт из браузера, я получаю это сообщение в журнале apache:
/home/ec2-user/.nvm/versions/node/v8.11.3/bin/node: Permission denied
Это после выполнения chmod 777 на /home/ec2-user/.nvm/versions/node/v8.11.3/bin/node
Я также сделал chown ec2-user: apache /home/ec2-user/.nvm/versions/node/v8.11.3/bin/node
Также вот результат:
$ ls -alrt /home/ec2-user/.nvm/versions/node/v8.11.3/bin/node
-rwxrwxrwx 1 ec2-user apache 34800111 Jun 12 22:40 /home/ec2-user/.nvm/versions/node/v8.11.3/bin/node
У всех есть полные разрешения на это, как я могу получить ошибку «В разрешении отказано»?
Итак, это снова отлично работает, если я запускаю PHP-скрипт из командной строки.






Хорошо, это полное нет-нет, но это временно взлом.
Поскольку это работает на моем экземпляре AWS EC2, я просто ограничиваю все через группу безопасности и разрешаю только I.P. адреса, которые я разрешаю, так что это безопасно для меня.
Вы должны добавить разрешения для группы apache в файле sudoers.
Итак, сначала:
$ sudo visudo
А затем добавьте:
%apache ALL = (ALL) NOPASSWD: ALL
В конец файла. Опять же, это плохо, это взлом, но это текущий обходной путь, и я ограничиваю доступ к экземпляру EC2 через I.P. адреса в группе безопасности в любом случае.
Если вы хотите запустить это, вы можете перейти к /etc/sudoers и сделать apache в качестве пользователя sudo, и у него будут привилегии root для запуска файла в браузере.
Вам нужно будет внести следующие изменения: -
Сначала найдите линию
root ALL=(ALL) ALL
а затем добавьте строку под ним
apache ALL=(ALL) NOPASSWD: ALL