【问题标题】:PHP system returns 4PHP系统返回4
【发布时间】:2010-03-14 18:54:22
【问题描述】:

我想使用 PHP 将 pdf 文件转换为图像,但我无法使用该命令。 PHP 返回一个 4。我不知道那是什么。

我正在使用下一个代码:

$tmp = system("convert -version", $value); 
var_dump($value);

有人出主意吗?

【问题讨论】:

    标签: php system


    【解决方案1】:

    试试

      exec("convert -version 2>&1", $out, $ret);
      print_r($out);
    

    它应该告诉你出了什么问题

    【讨论】:

    • 谢谢,现在我得到:Array ([0] => Ongeldige stationspecificatie.) in English:'invalid drive specification'。在谷歌上,没有安装 imageshack,但这是因为 cmd 中的 convert -version 有效!
    【解决方案2】:

    看起来 -version 标志告诉转换软件(看起来像 imagemagick)以该软件的主要版本号进行响应。看起来它工作正常。您可能需要将正确的标志传递给它才能正常运行。我建议阅读文档以了解转换 PDF 需要哪些标志。

    【讨论】:

    • 我不这么认为。因为如果我使用 convert w11y2010.pdf test.png 作为命令,它也会给出 int(4)...
    • @tomk94 int(4) 与 4 不同 - 这很可能是系统返回码。
    • var_dump($temp) 说什么?那应该更有启发性。
    • 对所有的误解深表歉意。 var_dump($value) 返回 int(4) 和 var_dump($tmp) 返回 string(0) ''
    【解决方案3】:

    尝试使用 PHP 中的一些其他系统函数以获得更详细的输出。

    exec("convert -version", $output, $value);
    print_r($output);
    

    上面的 exec 函数会将 $output 参数中命令的所有输出作为数组提供给您。

    返回状态(将保存在上述 exec 调用或原始代码中的 system 调用中的 $value 参数中)为您提供返回值执行的shell命令。

    一般来说,这将为零表示成功,非零整数返回值表示不同类型的错误。因此,您拥有的命令似乎有问题(可能无法识别 -version:通常您需要在长手命令行选项之前使用双连字符)。

    顺便说一句,您可能还会发现 passthru 功能更适合您的需要。如果您的转换程序生成与转换后的 PDF 对应的二进制图像数据,您可以使用 passthru 将该图像数据直接发送到浏览器(当然是在设置适当的标题之后)

    【讨论】:

      【解决方案4】:

      err... 你不是在转储错误的结果吗? (我会 var dump $tmp,而不是 $value。)

      我认为代码应该是:

      $tmp = system("convert -version", $value); 
      var_dump($tmp);
      

      【讨论】:

        猜你喜欢
        • 2017-10-02
        • 2015-03-08
        • 1970-01-01
        • 1970-01-01
        • 2012-01-08
        • 2012-02-23
        • 2014-12-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多