Ваш файл создается bash, работающим как root, а не процессом, который вы запускаете с помощью sudo для приема внутрь.
Это потому, что >> foo
является частью командной строки, а не процесса, запущенного sudo.
Здесь:
#foo.sh
echo foo: `id -u`
Затем:
tmp root# sudo -u peter bash foo.sh > foo
tmp root# ls -l foo
-rw------- 1 root staff 9 Mar 2 18:52 foo
tmp root# cat foo
foo: 501
Вы можете видеть, что файл создан как root, но foo . sh Сценарий запускается от имени пользователя uid 501.
Это можно исправить, запустив, например:
tmp root# sudo -u peter bash -c "bash foo.sh > foo"
tmp root# ls -l foo
-rw------- 1 peter staff 9 Mar 2 18:54 foo
tmp root# cat foo
foo: 501
В вашем случае, конечно, замените "..."
на php команда.