Запустить команду Bash из PHP

У меня есть сценарий bash, который я запускаю, как это, через командную строку:

./script.sh var1 var2 

Я пытаюсь выполнить указанную выше команду после вызова определенного файла php.

Сейчас у меня есть:

 $output = shell_exec("./script.sh var1 var2"); echo "<pre>$output</pre>"; 

Но он не работает. Я попробовал это с помощью exec и system , но сценарий так и не был выполнен.

Однако когда я пытаюсь запустить shell_exec("ls"); он работает, а $output – это список всех файлов.

Я не уверен, связано ли это с ограничением VPS, который я использую, или если проблема находится где-то в другом месте?

Вероятно, вам нужно перейти к правильному каталогу перед вызовом сценария. Таким образом, вы можете обеспечить, какой каталог ваш сценарий находится «в», прежде чем вызывать команду оболочки.

 $old_path = getcwd(); chdir('/my/path/'); $output = shell_exec('./script.sh var1 var2'); chdir($old_path); 

Ваш shell_exec выполняется пользователем www-data из его каталога. Можешь попробовать

 putenv("PATH=/home/user/bin/:" .$_ENV["PATH"].""); 

Где ваш скрипт находится в / home / user / bin. Позже вы можете

 $output = "<pre>".shell_exec("scriptname v1 v2")."</pre>"; echo $output; 

Отобразить вывод команды. (В качестве альтернативы, не экспортируя путь, попробуйте указать весь путь к вашему сценарию, а не просто ./script.sh

Проверьте, не установили ли open_basedir в php.ini или .htaccess домена то, что вы используете. Это запишет вас в каталог вашего домена, и php получит только доступ для выполнения внутри этого каталога.