Вызов git из PHP: ошибка сломанной трубы

У меня есть следующий PHP-скрипт:

#!/usr/bin/php
<?php
echo shell_exec(
  "/usr/bin/git clone --bare ".
  "/home/dave/create_project/template_project ".
  "/home/dave/create_project/my_test_project.git"
);

Примерно в 7 из 10 раз, когда я его запускаю, git выдает следующую ошибку:

find: write error: Broken pipe

Эта ошибка никогда не возникает, если я запускаю эквивалентную команду непосредственно из оболочки.

Я уже пробовал:

  • используя другие функции выполнения PHP: exec, system, popen;
  • передача всей команды в качестве аргумента в bash, т. е. exec('bash -c '.$cmd);

Кто-нибудь знает, что может происходить?


person D. Evans    schedule 22.06.2009    source источник


Ответы (2)


Это может зависеть от вашей конкретной платформы, но известно, что findutils выдает это вроде сообщения об ошибке раньше.
В Fedora этот пакет rpm версии 4.2.33- 2.fc9 исправил проблему.

person VonC    schedule 22.06.2009
comment
Спасибо, я использую Ubuntu Hardy, поэтому связанная проблема не имеет прямого отношения. - person D. Evans; 22.06.2009

Выдает ли PHP какие-либо ошибки? Может быть, max_execution_time слишком мало? Думаю, PHP-приложение завершает работу преждевременно.

person hegemon    schedule 23.06.2009
comment
Нет, PHP не выдает никаких ошибок, и я могу поместить код после вызова shell_exec, и он будет выполнен, поэтому я не думаю, что время истекло. - person D. Evans; 24.06.2009