Команда php shell_exec () не работает

Я пытаюсь запустить .sh-файл из php. Я попытался сделать это с помощью shell_exec (). но он не работает. Я ссылался на многие вопросы, связанные с этим в переполнении стека, но не мог решить

мой php-код (web.php)

<?php echo shell_exec('/var/www/project/xxe.sh'); echo "done"; ?> 

печатается только сделано. но он работает с терминалом (php /var/www/project/web.php)

В xxe.sh я вызываю файл python

  python vin.py 

Я также изменил разрешение файла на 777 для файлов .sh n .py, пожалуйста, помогите

Если он работает хорошо в оболочке, я думаю, что apache chrooted. Поэтому php не может найти / var / …

Или пользователь пользователя httpd не имеет права на вход / var / …

Если вы хорошо разбираетесь в PHP. Open dir / var / … И readdir () и проверка dir существует и файл проверки существует.

Этот вопрос может помочь вам. scan / home / with opendir ()

При попытке запустить скрипт, инициированный github post-receive webhook.

Здесь находится каталог моего проекта (клонированный git repo):

 /var/www/html/my-repo 

Я создаю скрипт внутри вышеуказанного каталога, называемого webhook.php:

 <?php #webhook.php $cmd = shell_exec("git pull 2>&1"); #for debugging echo $cmd; ?> 

Выполните следующую команду внутри / var / www / html

 sudo chown www-data:www-data -R my-repo/ 

Проверьте его, перейдя по адресу http://www.myserver.com/my-repo/webhook.php

Добавьте путь к вашему скрипту в github webhooks.

Обычно проблема заключается в том, что когда вы выполняете код из php, он запускается как веб-сервер пользователя www-data во многих дистрибутивах linux. Нормальный у этого пользователя нет настроения, и из-за этого нет PATH. Используя полные пути в ваших файлах, вы обычно можете преодолеть это.

xxe.sh

 /usr/bin/python /path/to/script/vin.py 

Если вы говорите, что это работает на терминале, а не на apache, тогда файл php.ini apache может отключить использование shell_exec() .

См. http://www.php.net/manual/en/ini.core.php#ini.disable-functions

Файл php.ini вашего apache может выглядеть примерно так:

 disable_functions=exec,passthru,shell_exec,system,proc_open,popen 

Удалите shell_exec из этого списка и перезапустите веб-сервер, хотя это shell_exec безопасности, и я не рекомендую его.

Я застрял в этой проблеме несколько часов.

Я подумал о решении. 1. переместите свой скрипт в файл python «script.py» и поместите этот файл в корневой каталог вашего сервера. 2. shell_exec ("python script.py");

В любом случае, это работает для меня.