Хорошо, у меня есть кошмар с разрешениями.
У меня есть /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?
Большое спасибо
У пользователя apache нет разрешения на запись на "/var/www/html/".
Кроме того, вместо того, чтобы писать там, создайте другую папку и установите для нее права на запись, что-то вроде "/var/www/html/var/", установите для этой папки права на запись и используйте ее для любого динамического содержимого.