2010-01-31 14 views
1

Vous voulez archiver un dossier en utilisant tar de PHP:PHP problème de goudron de shell, le code de retour 2

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

Sortie:

string(2) "2 " 

la chose > /dev/null; echo $? est pour outputing le code de résultat d'un script sous linux;

les -C $source - modifications dans le dossier juste avant de faire quoi que ce soit

C'est vraiment étrange parce que quand je lance ce depuis la console linux, il fonctionne très bien - crée l'archive, il est donc pas un problème d'autorisation.

D'autres sripts comme "whoami" ou "ls" fonctionnent bien.

Qu'est-ce que cela signifie?

+0

Que disent vos journaux? Il devrait y avoir une mention d'une erreur - vous pourriez aussi essayer d'écrire la sortie dans un fichier au lieu de/dev/null pour voir ce qui se passe ... alors allez-y. – prodigitalson

Répondre

1

Peut-être: shell_exec("/bin/bash tar ....")

0

Juste à des fins de débogage stderr à stdout redirigent et utiliser passthru() pour afficher la sortie complète (y compris éventuellement des messages d'erreur).

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