Php GhostScript-合并来自不同目录的PDF

Php GhostScript-合并来自不同目录的PDF,php,ghostscript,Php,Ghostscript,我必须合并多个pdf文件,并且正在使用详细的解决方案来构建一个Ghostscript命令: // $output_file_name = 'test_file_complete.pdf' // $original_file = 'test_file.pdf' // $append_files = array('../toappend/1.pdf', '../toappend/2.pdf', '../toappend/3.pdf', '../toappend/4.pdf') public func

我必须合并多个pdf文件,并且正在使用详细的解决方案来构建一个Ghostscript命令:

// $output_file_name = 'test_file_complete.pdf'
// $original_file = 'test_file.pdf'
// $append_files = array('../toappend/1.pdf', '../toappend/2.pdf', '../toappend/3.pdf', '../toappend/4.pdf')
public function merge_documents($output_file_name, $original_file, $append_files) 
{
    $cmd = "gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=$output_file_name ";

    $cmd .= $original_file . " ";

    foreach($append_files as $file) {
        $cmd .= $file . " ";
    }

    $result = shell_exec($cmd);
 }
我生成的$cmd字符串是:

gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=test_file_complete.pdf test_file.pdf ../toappend/1.pdf ../toappend/2.pdf ../toappend/3.pdf ../toappend/4.pdf
请注意,要合并的第一个文件在当前目录中,其他文件在另一个目录中处于较高的级别

在命令行中,当我导航到原始文件的目录并运行它时,它工作得非常好。但是,在我的函数中,它失败,并显示以下消息:

字符串错误:/undefinedfilename在中 TEMP_quote_2014_09_05_13_16_04.pdf操作数堆栈:

执行堆栈:%interp_exit.runexec2-nostringval- -nostringval--nostringval-2%停止推送-nostringval--nostringval--nostringval-false 1%停止推送字典堆栈:-dict:1162/1684roG- -dict:0/20G--dict:77/200L-当前分配模式为本地最后一个操作系统错误:2


如果我只使用toappend目录中的文件来运行代码,它会很好地合并这些文件。

如果我使用绝对路径,这就不再是一个问题。这样做对我来说没有问题,但是对于有类似问题的人来说可能会有用