Как изменить оболочку для php exec ()

Я хочу использовать функцию 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