PDF2SWF:php exec() 仅适用于终端

PDF2SWF: php exec() only works in terminal

这是我的代码:

$pdf = '/Users/macbookpro/Desktop/q.pdf';
$swf = '/Users/macbookpro/Desktop/q.swf';

$command2 = 'pdf2swf -o '.$swf.' -T -z -t -f '.$pdf.' -s flashversion=9';
exec($command2,$out,$status);
var_dump($output);

输出为NULL,没有生成SWF。但是,如果我输出命令并将其复制到终端,它就可以工作。我该如何解决?

exec 作为用户 运行 运行脚本。 Apache 用户可能没有 PATH 变量告诉它在哪里寻找程序,所以而不是

 $command2 = 'pdf2swf -o '.$swf.' -T -z -t -f '.$pdf.' -s flashversion=9';

尝试添加 pdf2swf 的位置,例如:

 $command2 = '/bin/pdf2swf -o '.$swf.' -T -z -t -f '.$pdf.' -s flashversion=9';

并确保 apache 用户有权访问可执行文件,并有权执行它。

 chmod a+x /bin/pdf2swf

当然,对于此答案中的所有示例代码,将 /bin/ 替换为 pdf2swf 真正存在的地方。