在console和exec()中执行相同命令时获得不同的结果

时间:2016-03-22 20:12:46

标签: php console exec ocr

当我在控制台/home/..myserver_path../.local/bin/gocr -i '/home/..myserver_path../runtime//tmp/135_45_ca4b78115a191517c9e356d34deb000c.jpg' 2>&1中进行操作时,它可以正常工作。

但是当我用PHP脚本

exec("/home/..myserver_path../.local/bin/gocr -i '/home/..myserver_path../runtime//tmp/135_45_ca4b78115a191517c9e356d34deb000c.jpg' 2>&1", $out);

我收到错误:

sh:1:djpeg:未找到

ERROR pnm.c L328:意外的EOF

这方面有什么不同?

1 个答案:

答案 0 :(得分:1)

您的PHP代码在语法上无效。您需要转义命令中使用的单引号。

编辑:在语法更正之后,我会猜测你的PHP路径中缺少djpeg,但是在shell的路径上。从shell运行which djpeg后会得到什么?

编辑:根据下面的讨论,看起来就是这种情况。要解决此问题,请尝试以下PHP代码:

exec("export PATH=\$PATH:/home/..myserver_path../.local/bin/; /home/..myserver_path../.local/bin/gocr -i '/home/..myserver_path../runtime//tmp/135_45_ca4b78115a191517c9e356d34deb000c.jpg' 2>&1", $out);