【问题标题】:PHP exec ImageMagick always returns 0PHP exec ImageMagick 总是返回 0
【发布时间】:2012-05-11 12:08:33
【问题描述】:

我正在尝试让 ImageMagick 为我计算 PDF 文件中的页数。函数如下:

<?php
function countPdfPages($filepath)
{
    $magick = "identify -format %n ".$filepath;
    exec($magick, $debug, $result);
    return $result;
}
?>

但是,该函数始终返回 0。我已经验证 ImageMagick 运行正常,所以这应该不是问题。我没有正确使用exec() 吗?我应该以另一种方式检索输出吗?我也尝试过使用$debug,但奇怪的是,这并没有给我任何输出。

我敢打赌我在这里做了一些愚蠢的事情,但我只是没有看到。谁能给我推动正确的方向?谢谢!

【问题讨论】:

    标签: php imagemagick exec imagick


    【解决方案1】:

    the man page 中所述,exec 通过第三个参数提供已执行命令的返回状态0 的值表示它正常退出。听起来您应该使用popen 之类的东西。

    这是从fread man page 的示例#3 中提取的示例(编辑为使用popen):

    <?php
    // For PHP 5 and up
    $handle = popen("identify -format %n myfile.jpg", "r");
    $contents = stream_get_contents($handle);
    pclose($handle);
    // $contents is the output of the 'identify' process
    ?>
    

    【讨论】:

    • 噗,呵呵。再次忽略了一些小问题,谢谢!但是,老实说,我对如何使用 ImageMagick 返回的值一无所知。认为你可以在这里帮助我更进一步?非常感谢!
    • 您需要在该手册页上显示示例 #3 之类的内容。我会把它添加到我的答案中。
    • 奇怪...当我调用它并拥有它return $contents; 时,没有返回任何内容。没有价值,没有错误,什么都没有。 (是的,我正在运行 PHP5。)
    • 尝试两件事:使用“r”模式(而不是“rb”)和pclose而不是fclose
    • 更多尝试:将2&gt;&amp;1添加到命令行末尾(以防identify输出到stderr);替换一个向 stdout 输出 10k+ 字节的进程(以确定它是否是缓冲问题);打开error_reporting(E_ALL),如popen手册页的示例#2。
    猜你喜欢
    • 1970-01-01
    • 2011-09-26
    • 1970-01-01
    • 2014-10-07
    • 2010-09-15
    • 1970-01-01
    • 2020-10-30
    • 2015-11-12
    • 1970-01-01
    相关资源
    最近更新 更多