我有两个后续的exec命令。第一个执行没有问题第二个但是抛出错误:
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);
第一个产生:
array(0) { } int(0)
第二个:
array(0) { } int(1)
php脚本和目录的权限完全相同。我已尝试使用escapeshellargs删除exec命令,但也没有运气。
答案 0 :(得分:1)
我不确定您的错误是什么,但我建议您减少一些背景噪音,以便您可以更轻松地查看问题。我的意思是以下......
取
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);
并且
$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;
通过这种方式,您可以将发出的命令的输出剪切并粘贴到unix命令行上,并且可以更好地查看unix级别的内容。
答案 1 :(得分:0)
最终工作的内容如下:
$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);