在控制台和 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 的路径中。当你 运行 which djpeg 从你的 shell 得到什么?

编辑:根据下面的讨论,情况似乎是这样。要解决此问题,请尝试此 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);