Запуск команды Linux из сценария PHP? - PullRequest
0 голосов
/ 14 января 2012

Я знаю, что это простой вопрос, но я не могу на всю жизнь заставить его работать.Если я захожу на сервер через SSH (linux) и набираю: /home/username/public_html/x/foo.cgi f=subscribe l=list e=abcd@gmail.com, сценарий работает отлично.Однако, если я попытаюсь запустить скрипт через PHP, например: shell_exec("/home/username/public_html/x/foo.cgi f=subscribe l=list e=abcd@gmail.com");, то ничего не произойдет.

Может кто-нибудь указать мне правильное направление?

Спасибо заранее!

Tre

Ответы [ 2 ]

1 голос
/ 14 января 2012

«Ничего не происходит» не очень описательное сообщение об ошибке. Тем не менее, на ум приходят три возможности:

  1. Различия между серверной средой и средой оболочки.
  2. Возможно, на вашем сервере или хостинге отключен shell_exec или другие функции.
  3. Вам может потребоваться запустить PHP от имени того же пользователя, с которым вы работали в SSH (или иным образом получить правильные разрешения).
  4. Некоторые другие части стека находятся в беспорядке из-за неправильной конфигурации или неправильного использования.

Выберите. Проверьте свои журналы. Убедитесь, что вы не оставляете никаких дыр для проникновения злоумышленников.

0 голосов
/ 14 января 2012

Если вы управляете сервером, скорее всего, это проблема с разрешениями.Ваш веб-сервер работает под именем www-data или похожим пользователем.Для его запуска необходимы разрешения на выполнение файла сценария.Попробуйте изменить владельца сценария с помощью команды chmod или укажите файл, для которого вы пытаетесь запустить более либеральные права доступа, с помощью команды chown .

Еще один момент, который следует учитыватьявляется то, что shell_exec может быть отключен, если PHP работает в безопасном режиме .

...