код ошибки exec 2 - PullRequest
       17

код ошибки exec 2

1 голос
/ 13 сентября 2011

Я использую Unison для синхронизации файлов между двумя серверами. Я пытаюсь заставить PHP вызывать его после загрузки файла.

Я использую exec, но возвращается код ошибки 2.

exec("/usr/bin/unison /var/www/html/files ssh://a2//var/www/html/files -batch -prefer newer -times -path uploads", $out, $r);

$out - пустой массив, а $r - 2. Что означает код ошибки 2?

P.S. Я запустил php -a в командной строке, скопировал и вставил эту строку, и это сработало. Кроме того, exec('whoami') работает (и является тем же пользователем, в который я вошел, как и в командной строке).

1 Ответ

1 голос
/ 13 сентября 2011

Я исправил это! Используя popen (спасибо @ sberry2A) я увидел ошибку.

Неустранимая ошибка: ошибка при создании каталога unison /.unison: доступ запрещен [mkdir (/. Unison)]

Я запустил chdir('/home/user'); перед запуском команды, а затем увидел ошибку о том, что HOME не задан.

Итак, я добавил HOME=/home/user перед командой. Теперь это работает, и мне не нужна команда chdir!

exec("HOME=/home/user /usr/bin/unison /var/www/html/files ssh://a2//var/www/html/files -batch -prefer newer -times -path uploads", $out, $r);
...