Я пытаюсь запустить .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");
В любом случае, это работает для меня.