Php shell_exec может запускать команду, но не файл sh

из 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 для выполнения команд

Итак, что ваш файл журнала ошибок php говорит, что происходит?

arkascha 27.10.2018 16:49

Возможный дубликат Запустить команду Bash из PHP

cecil merrel aka bringrainfire 27.10.2018 17:00
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
767
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ваш сценарий 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, вот в чем проблема

Gloytos htyqo 27.10.2018 17:07

Я думаю, проблема в том, что вы не указали путь к test1.txt: echo "test"> /var/www/TEST1.txt

Николай Лубышев 27.10.2018 17:14

определенный путь, но такая же проблема. если вы запускаете с терминала ./1.sh, он создает text1.txt, но из php, если я пытаюсь запустить 1.sh, text1.txt не создается

Gloytos htyqo 27.10.2018 17:58

Окей. Может быть, у пользователя www-data (сервер apache2) нет разрешения на запись в каталог /var/www (или где вы сохраняете test1.txt)?

Николай Лубышев 27.10.2018 18:03
Ответ принят как подходящий

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

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

Другие вопросы по теме