PHP kabuk katran sorun, dönüş kodu 2

2 Cevap php

PHP tar kullanarak bir klasör arşivlemek istiyorum:

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

Çıktı:

string(2) "2 "

> /dev/null; echo $? şey linux altında çalışan bir komut dosyası sonuç kodu çıktılamak içindir;

-C $source - Bir şey yapmadan önce doğru klasöre değişiklikler

Arşiv oluşturur, bu yüzden bir izin sorunu değil - i linux konsolundan bu çalıştırdığınızda, gayet güzel çalışıyor, çünkü bu gerçekten garip.

"Whoami" ya da "ls" iş para cezası gibi diğer sripts.

Bu ne herhangi bir fikir demek?

2 Cevap

Belki: shell_exec("/bin/bash tar ....")

Sadece hata ayıklama amacıyla Stdout'a stderr'nin yönlendirmek ve (muhtemelen hata iletileri dahil) tam çıkışını görüntülemek için passthru () kullanın.

$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>";