команда php shell exec() не работает
Я пытаюсь запустить a .sh файл из php. Я попытался сделать это с помощью shell_exec(). но это не работает Я сослался на многие вопросы, связанные с этим в переполнении стека, но не смог решить
мой php-код (web.в PHP)
<?php
echo shell_exec('/var/www/project/xxe.sh');
echo "done";
?>
только печатается. но он работает с терминала (php/var/www/project / web.в PHP)
In xxe.sh я вызываю файл python
python vin.py
Я также изменил разрешение файла на 777 для обоих .Ш. Н .py файлы пожалуйста помогите!--3-->
7 ответов
Если он хорошо работает в оболочке, я думаю, что apache chrooted. Поэтому php не может найти /var/...
или пользователь пользователя httpd не имеет разрешения на ввод /var/...
Если Вы хороши в PHP. Открыть dir/var/... И readdir () и check dir существует и файл проверки существует.
этот вопрос может помочь вам. сканирование / Главная/ с opendir ()
если вы говорите, что он работает на терминале, а не на apache, то apache php.ini
файл может отключить использование shell_exec()
.
см.http://www.php.net/manual/en/ini.core.php#ini.disable-functions
ваш apache php.ini
файл может выглядеть как
disable_functions=exec,passthru,shell_exec,system,proc_open,popen
удалить shell_exec
из этого списка и перезапустить веб-сервер, хотя это риск для безопасности, и я не рекомендую его.
при попытке запустить скрипт, запускаемый 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/
проблема обычно в том, что при выполнении кода из php он запускается как пользователь webservers www-data во многих дистрибутивах linux. Обычно у этого пользователя нет настроенной среды, и из-за этого нет пути. Используя полные пути в ваших файлах, вы обычно можете преодолеть это.
xxe.sh
/usr/bin/python /path/to/script/vin.py
Я застрял в этой проблеме в течение нескольких часов.
Я думал о решении. 1. переместите свой скрипт в файл python "script.py-и поместите этот файл в корень сервера. 2. shell_exec ("python script.py");
любом случае, это работает для меня.
на моем хосте я должен был дать другой путь для моего php-файла, который будет выполняться из shell_exec (). Это не сработало!--0-->.
в то время как это сделал shell_exec('/opt/php/php-5.5.0/bin/php backgroundtask.php');
.
Вы можете здесь эта ссылка.
у меня была такая же проблема, потому что обратные косые черты PHP.
PHP избегает обратных косых черт, поэтому команда, которая достигает оболочки
'COPY E:path1\path2\file.prn /B 7.0.0.1\"PRINTER NAME"'
поэтому я дал команду
'COPY E:\path1\path2\file.prn /B \\127.0.0.1\"PRINTER NAME"'.
вам нужно дважды избежать обратных косых черт: один раз для PHP и один раз для оболочки.