PHP tar tar проблема, код возврата 2 - PullRequest
1 голос
/ 01 февраля 2010

Хотите заархивировать папку, используя tar из PHP:

$result = shell_exec("tar cf $sourceFile $sourceFolder -C $source  > /dev/null; echo $?");
var_dump($result);

Выход:

string(2) "2 "

> /dev/null; echo $? предназначен для вывода кода результата скрипта под linux;

the -C $source - меняется в нужную папку, прежде чем делать что-либо

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

Другие скрипты типа "whoami" или "ls" работают нормально.

Есть идеи, что это значит?

Ответы [ 2 ]

1 голос
/ 01 февраля 2010

Может быть: shell_exec("/bin/bash tar ....")

0 голосов
/ 01 февраля 2010

Просто для целей отладки перенаправьте stderr в stdout и используйте passthru () для отображения полного вывода (возможно, включая сообщения об ошибках).

<code>$cmd = sprintf("tar cf %s %s -C %s 2>&1",
  escapeshellarg($sourceFile),
  escapeshellarg($sourceFolder),
  escapeshellarg($source)
);

echo '<pre>', htmlspecialchars($cmd), ": \n";
flush();
passthru($cmd, $code);
var_dump($code);
echo "
";
...