鬼脚本 |不可恢复的错误,退出代码 1

Posted

技术标签:

【中文标题】鬼脚本 |不可恢复的错误,退出代码 1【英文标题】:Ghostscript | Unrecoverable Error, exit code 1 【发布时间】:2018-09-11 17:53:13 【问题描述】:

我有一个用来合并 PDF 的 shell 脚本,在今天之前,它似乎运行良好。

现在,当我跑步时,我收到以下消息: GPL Ghostscript 9.06:不可恢复的错误,退出代码 1

它会生成一个空白 PDF,而不是合并的 PDF。这是我的代码:

<?php

$pdf1 = "file_1.pdf";
$pdf2 = "file_2.pdf";


$fileArray= array($pdf1,$pdf2);


$datadir = "/usr/pdf_merge/merged";
$outputName = $datadir."merged_new.pdf";

$cmd = "gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=$outputName ";
//Add each pdf file to the end of the command
foreach($fileArray as $file) 
    $cmd .= $file." ";

$result = shell_exec($cmd);

有什么想法可能是错的吗?

我正在使用 Debian 运行 Apache。

谢谢

【问题讨论】:

你合并了哪些文件?文件中的任何文件是否包含空格? $datadir 结尾不是缺少斜线吗?尝试使用 realpath 函数作为输出路径。 @DiogoAlves 你说得对,它确实需要一个斜线,但这并没有解决整体问题 首先(很抱歉一直重复这一点)您没有“合并”PDF 文件。您正在创建一个新的 PDF 文件,该文件应该与输入内容相同。 PDF 文件的内部内容将与其输入不同。你还没有提供文件,所以我们不能自己尝试,你还没有提供 Ghostscript 的反向通道输出,并且你正在使用 -q 这减少了后面的信息量渠道会放弃,使其不那么有用。最后,您使用的是 6 岁的 Ghostscript 版本,您需要升级。 如果您提供文件,我会看一下,反向通道记录也会有所帮助。 【参考方案1】:

把这个$cmd改成

$outputName = "merged_new.pdf";
$cmd = "cd ".$datadir." && gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=$outputName ";"

【讨论】:

以上是关于鬼脚本 |不可恢复的错误,退出代码 1的主要内容,如果未能解决你的问题,请参考以下文章

问题记录-IE8下脚本错误

代码分享:-3次错误输入退出脚本

MSVC2013:如何避免使用错误的预构建脚本中止构建过程(错误 MSB3073: :VCEnd" 退出,代码 -1)

批量打印脚本的退出代码

VMware Workstation 10.0 不可恢复错误: (vthread-13)

错误报告