Хотите архивировать папку с помощью tar из PHP:
$result = shell_exec("tar cf $sourceFile $sourceFolder -C $source > /dev/null; echo $?"); var_dump($result);
Вывод:
string(2) "2 "
the > /dev/null; echo $?
> /dev/null; echo $?
вещь предназначена для вывода кода результата скрипта под linux;
-C $source
– изменяется в правую папку, прежде чем что-либо делать
Это действительно странно, потому что, когда я запускаю это из консоли linux, он работает отлично – создает архив, поэтому это не проблема разрешения.
Другие сценарии, такие как «whoami» или «ls», отлично работают.
Любые идеи, что это значит?
Возможно: shell_exec("/bin/bash tar ....")
Только для целей отладки перенаправлять stderr на stdout и использовать passthru () для отображения полного вывода (возможно, включая сообщения об ошибках).
$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 "</pre>";