работает php shell_exec БЕЗ возврата результатов в браузер?

0

Хорошо, у меня есть кошмар с разрешениями.

У меня есть /var/www/src/myshell.sh, который является исполняемым.

#!/bin/bash
echo "It working" > /var/www/html/myshell.txt

Это отлично работает с CLI, файл txt создается с текстом "It working".

Но когда я пытаюсь запустить его из /var/www/html/test.php

<?php
$message=shell_exec("/var/www/src/myshell.sh 2>&1");
print_r($message);
?>

Он возвращает следующее в браузере:

/var/www/src/myshell.sh: line 3: /var/www/html/myshell.txt: Permission denied 

И myshell.txt не создан в /var/www/html

Я провел всю прошлую ночь, пытаясь изо всех сил найти здесь на SO и в других местах, чтобы установить правильные разрешения безрезультатно, поэтому я отказался от попыток понять это и хотел бы знать, можно ли запустить этот сценарий оболочки БЕЗ его попытки вернуть что-либо в браузер, поскольку это, по-видимому, вызывает ошибку разрешения.

Таким образом, в основном test.php запускает скрипт.sh, а затем забывает об этом. Процессы, которые я намерен использовать здесь, в любом случае не нужно отправлять обратно в браузер.

Может ли это быть достигнуто НЕ используя shell_exec и вместо этого, используя другую команду php?

Большое спасибо

Теги:
shell-exec

1 ответ

1
Лучший ответ

У пользователя apache нет разрешения на запись на "/var/www/html/".

Кроме того, вместо того, чтобы писать там, создайте другую папку и установите для нее права на запись, что-то вроде "/var/www/html/var/", установите для этой папки права на запись и используйте ее для любого динамического содержимого.

  • 0
    Вы, сэр, абсолютная легенда ... Если бы я знал этот простой факт прошлой ночью, это спасло бы меня от 4-х часов, когда я выдернул бы волосы! Спасибо вам большое!
  • 0
    Хорошо, теперь это работает, но все еще показывает результаты вывода sh в веб-браузере. Могу ли я подавить результаты? Мне не нужно их видеть вообще.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню