из PHP я могу запускать команды с shell_exec, но не могу запускать файлы bash
Я запускаю эту команду
sudo ls /var/www/
и я получаю результаты
/var/www/1.sh
/var/www/2.sh
/var/www/3.sh
но когда я запускаю эту команду, ничего не происходит
$output = shell_exec('sudo sh /var/www/1.sh > /dev/null 2>&1');
echo "<pre>$output</pre>";
В 1.sh я добавил этот код
#!/bin/bash
/usr/bin/echo "test" > TEST1.txt
он работает, когда я набираю терминал ./1.sh, поэтому только с php не работает
Сервер: centos из PHP Я думаю, что у меня есть разрешение root для выполнения команд
Возможный дубликат Запустить команду Bash из PHP






Ваш сценарий bash имеет вывод в файл TEST1.txt, а не в консоль!
Попробуй это:
#!/bin/bash
/usr/bin/echo "test"
Или вот так
$output = shell_exec('sudo sh /var/www/1.sh 2>&1');
echo "<pre>" .file_get_contents('/var/www/TEST1.txt'). "</pre>";
Эта строка неправильная !!!!
$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
не пишет в test1.txt, вот в чем проблема
Я думаю, проблема в том, что вы не указали путь к test1.txt: echo "test"> /var/www/TEST1.txt
определенный путь, но такая же проблема. если вы запускаете с терминала ./1.sh, он создает text1.txt, но из php, если я пытаюсь запустить 1.sh, text1.txt не создается
Окей. Может быть, у пользователя www-data (сервер apache2) нет разрешения на запись в каталог /var/www (или где вы сохраняете test1.txt)?
это решит вашу проблему
$output = shell_exec('sudo /usr/bin/sh /var/www/1.sh > /dev/null 2>&1');
Итак, что ваш файл журнала ошибок php говорит, что происходит?