当在控制台和exec()中执行相同的命令时,会得到不同的结果


Get different result when do same command in console and exec()

当我在控制台/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:未找到

错误pnm.c L328:意外的EOF

在这方面有什么不同?

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

编辑:在语法更正之后,我猜djpeg在PHP的路径中丢失了,但在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);