php shell_exec может запустить команду, но не файл sh - PullRequest
0 голосов
/ 27 октября 2018

из PHP Я могу запускать команды с shell_exec, но не могу запускать файлы bash

Я запускаю эту команду

 sudo ls /var/www/

и получаю результаты

 /var/www/1.sh 
 /var/www/2.sh 
 /var/www/3.sh

но когда я запускаю эту команду, ничего не происходит

<code> $output = shell_exec('sudo sh /var/www/1.sh > /dev/null 2>&1');
 echo "<pre>$output
";

В 1.sh я добавил этот код

   #!/bin/bash
/usr/bin/echo "test" > TEST1.txt

, он работает, когда я печатаю в терминале./1.sh так что только из php не работает

Сервер: centos из PHP Я думаю, что у меня есть права суперпользователя для выполнения команд

Ответы [ 2 ]

0 голосов
/ 27 октября 2018

это решит вашу проблему

$output = shell_exec('sudo /usr/bin/sh  /var/www/1.sh > /dev/null 2>&1');
0 голосов
/ 27 октября 2018

Ваш bash-скрипт выводится в файл TEST1.txt, а не в консоль!

Попробуйте это:

#!/bin/bash
/usr/bin/echo "test"

Или вот так

<code>$output = shell_exec('sudo sh /var/www/1.sh 2>&1');
echo "<pre>" .file_get_contents('/var/www/TEST1.txt'). "
";

Эта строка неверна !!!!

$ output = shell_exec ('sudo sh /var/www/1.sh 2> & 1');

&1 нет причины, потому что нет определения

$ output = shell_exec ('sudo sh /var/www/1.sh> / dev / null 2> & 1');

В этом случае &1 === /dev/null

...