Что исполняет exec, так это получение самой правой команды и добавление ее к месту назначения. Если в вашем php-скрипте есть строка shebang, вам не нужно включать двоичную директиву интерпретатора php.
если вы хотите получить вывод скрипта, попробуйте:
exec('/home/quote2bi/tmp/helloworld.php > /tmp/execoutput.txt 2>&1 &')
однако, если вы не хотите, чтобы ошибки были в файле, вы должны перенаправить STDERR до вывода в файл. Вот так:
exec('/home/quote2bi/tmp/helloworld.php 2> /dev/null > /tmp/execoutput.txt')
вышеприведенное должно выводить «Hello World» только в execoutput.
Edit:
Интересно, вы получаете это поведение. Вы заявили, что команда "ls" сработала. Попробуйте создать для этого псевдоним и перенаправьте его в файл, подобный следующему:
alias pexec='php /home/quote2bi/tmp/helloworld.php'
, затем
exec('pexec > /tmp/execoutput.txt 2>&1 &')
похоже, проблема в том, как exec обрабатывает ввод, а не в самой оболочке.
-John