Почему этот php-скрипт не выполняет bash-скрипт?
Почему я не могу выполнить этот скрипт bash с использованием php? я пытался exec()
так же как shell_exec()
,
index.php
<?php
$old = getcwd();
echo $old;
chdir($old);
$message=exec("a.sh");
print_r($message);
?>
a.sh
#!bin/bash
echo "i am a" > /opt/lampp/htdocs/a.txt
echo "Done"
я пытался chdir
как предложено здесь, а также я проверил мой disable_functions
в php.ini
нет ничего Я также проверил другие вопросы, но, похоже, ни один из них не решил мою проблему.
1 ответ
Решение
Во-первых, убедитесь, что шебанг точно такой:
#!/bin/bash
Во-вторых, убедитесь, что скрипт исполняется с помощью следующей команды в терминале:
chmod +x /path/to/a.sh
И в-третьих, вы должны использовать полный путь для скрипта bash, или в вашем случае вы можете использовать:
$message=exec("$old/a.sh");
И, как примечание, следующие две команды из вашего php-скрипта не имеют смысла:
$old = getcwd();
chdir($old);
Они эквивалентны chdir(getcwd())
, которые меняют текущий каталог на... текущий каталог, так что на самом деле ничего не происходит.