2010-02-15 5 views
1

J'ai deux commandes exec suivantes. Le premier exécute sans problème le second est toutefois lancer une erreur:php exec() valeurs d'erreur

exec('/usr/bin/pdftk A='. trim($original) .' cat A1 output '. trim($onepage), $output, $error); 
var_dump($output); var_dump($error); 

exec('/usr/bin/pdftk '. trim($onepage) .' background watermark.pdf output '. trim($modified), $output, $error); 
var_dump($output); var_dump($error); 

Le premier produit:

array(0) { } int(0) 

La seconde:

array(0) { } int(1) 

Les autorisations sur le script php et les répertoires sont exactement le même. J'ai essayé d'écraser la commande exec en utilisant escapeshellargs sans aucune chance non plus.

Répondre

1

Je ne suis pas sûr de savoir quelle est votre erreur, mais je vous recommande de réduire le bruit de fond afin que vous puissiez voir le problème plus facilement. Ce que je veux dire par là est la suivante ...

Prenez

exec('/usr/bin/pdftk A='. trim($original) .' cat A1 output '. trim($onepage), $output, $error); 
var_dump($output); var_dump($error); 

exec('/usr/bin/pdftk '. trim($onepage) .' background watermark.pdf output '. trim($modified), $output, $error); 
var_dump($output); var_dump($error); 

Et faire

$command1 = '/usr/bin/pdftk A='. trim($original) .' cat A1 output '. trim($onepage); 
$command2 = '/usr/bin/pdftk '. trim($onepage) .' background watermark.pdf output '. trim($modified); 

exec($command1, $output, $error); 
var_dump($output); var_dump($error); 
echo $command1; 

exec($command2, $output, $error); 
var_dump($output); var_dump($error); 
echo $command2; 

De cette façon, vous pouvez couper et coller la sortie de la commande émise sur la ligne de commande unix , et peut-être avoir une meilleure vue de ce qui se passe au niveau unix.

+0

L'erreur est que la seconde commande ne sont pas traitées du tout et le var_dump() de l'erreur retourne 1 ce qui signifie qu'il y avait une erreur. –

+0

il semble que je ne peux exécuter qu'un exec() par script. –

+0

Avez-vous essayé 'system' à la place: http://id2.php.net/manual/fr/function.system.php? –

0

ce qui a fini de travail était la suivante:

$descriptorspec = array(
     0 => array("pipe", "r"), 
     1 => array("pipe", "w")); 
    proc_open('/usr/bin/pdftk '. trim($onepage) .' background watermark.pdf output '. trim($modified), $descriptorspec, $pipes);