Как запустить файл .sh с php?

Я пытаюсь запустить оболочку script с помощью php

shell script (/home/scripts/fix-perm.sh) находится на одном сервере

это код, который я пытаюсь

<?php
echo shell_exec('/home/scripts/fix-perm.sh');
?>

приведенный выше код не работает

am с использованием Linux-сервера

Кто-нибудь может мне помочь?

Ответ 1

Shell exec принимает строку, которая должна быть фактической командой. Теперь вы передаете ему путь к файлу. Это не интерпретируется как "выполнить файл по этому пути". Вы могли бы сделать несколько вещей.

Что вам нужно сделать, так это вызвать файл с помощью программы. Назовите его с помощью bash или sh, как указано в комментарии:

echo shell_exec('sh /home/scripts/fix-perm.sh');

Другой вариант:

$contents = file_get_contents('/home/scripts/fix-perm.sh');
echo shell_exec($contents);

Я думаю, что первый вариант будет лучше.

Важно отметить, что все команды для выполнения внешних программ ожидают действительные команды, а не путь к файлу или что-то еще. Это относится к shell_exec, exec, passthru и другие.