Я хочу использовать функцию exec () php на сервере ubuntu. Проблема в том, что я всегда получаю сообщение об ошибке, что команда не найдена. Например, используя
exec("echo 123");
печать
sh: / echo: не найдено
Для меня это похоже на то, что php использует оболочку sh, когда я хочу использовать bash. Я попытался изменить оболочку для www-данных в / etc / passwd, что тоже не помогло.
Кто-нибудь знает, где еще может возникнуть проблема или как я могу изменить оболочку для пользователя ubuntu php.
Спасибо, Тимо
[РЕДАКТИРОВАТЬ]
Может быть, это помогает:
Я вызываю скрипт bash из ssh как timo, этот скрипт вызывает php-скрипт, который использует exec. Я знаю, это звучит странно, но это часть более крупной среды разработки …
Дело в том, что я никогда не сомневаюсь, какой пользователь выполняет скрипт внутри exec.
[РЕДАКТИРОВАТЬ]
К настоящему моменту я понял, что должна быть другая проблема с правами. Даже если я попытаюсь вызвать скрипт bash test.sh (по его полному пути!) Изнутри exec, php test.php просто скажет.
sh: /test.sh: не найдено
Вместо этого попробуйте shell_exec (). exec не должен вызывать любую оболочку для выполнения вашей программы. В качестве альтернативы вы можете вызвать bash с exec как
exec("/bin/bash -c \"echo $foo > bar.txt'\"")
Я думаю, проблема в том, что нет установки $ PATH. Попробуйте использовать полные пути к вашим двоичным файлам, т.е. / bin / echo
Если вы хотите сделать это:
/usr/bin/mysql --user=asdf --password=asdf mydb < ./dump.sql
Тогда я предполагаю, что это сработает (независимо от оболочки):
/usr/bin/mysql --user=asdf --password=asdf mydb < /full/path/to/dir/dump.sql