PHP exec()函数返回状态代码2

时间:2014-01-16 10:30:08

标签: php

使用PHP exec()时出现问题。我无法弄清楚这个问题,我尝试使用以下代码:

exec("pdfcrop --margins '-6 -2 -3 -2' '/home/username/pdf/Figure 1 Timeline of Virtual Sim Use/page.01.pdf' '/home/username/pdf/out/output.pdf'", $output, $error);

每当我在exec()中使用此命令时,它返回状态代码2,但如果我将此命令用于我的终端,那么它运行良好。所以请提出解决这个问题的建议。

谢谢..

3 个答案:

答案 0 :(得分:4)

php exec函数在apache用户(www-data)用户下运行该进程最有可能该用户无权访问: 的/ home /用户名/ PDF /图

您可以通过尝试将此路径更改为/ tmp / pdf file.pdf名称来轻松测试。

答案 1 :(得分:0)

pdfcrop是一个Perl程序。打开它进行阅读,您会发现它在当前目录中创建了tmp个文件 我做了以下更改后,它在PHP调用中工作:

  • $ tmp =“/ tmp / tmp -...”

  • pdftex - 添加参数-output-directory = / tmp

答案 2 :(得分:0)

对于Linux Debian 9.5,我从Php exec()函数返回了代码2,因为/etc/passwd文件中用户www-data的控制台错误: 我不得不换行:

www-data:x:33:33:www-data:/usr/sbin/nologin

收件人:

www-data:x:33:33:www-data:/var/www:/bin/bash

现在错误消失了,命令按预期执行了!