Scanline 是一个简单的命令行实用程序,用于从 twain 扫描仪扫描文档。 http://blog.scottkleper.com/scanline-command-line-scanner-for-mac/
我正在尝试通过使用 shell_exec() 的 PHP 脚本来使用 Scanline;就像我直接从 MacOS 的终端使用它一样。
当我直接从命令行运行 Scanline 时,它会检测到所有附加的扫描仪并将它们打印出来./scanline -list
当我使用 shell_exec() 运行 Scanline 时,它没有检测到任何设备。
到目前为止,我已将 apache 用户更改为我的本地用户,并将本地用户添加到 sudoers 文件中。如果我在 shell_exec() 中运行“whoami”,结果与在命令行中运行它的结果相同。
我已经printenv
在命令行中使用打印了环境,并在使用 putenv() 执行 shell_exec() 之前在我的 php 脚本中设置了所有相同的变量;如果我运行 shell_exec('printenv 2>&1'),它与我在命令行中运行 printenv 时的环境完全相同。
所有权限都是正确的并允许访问,并且扫描线在通过 shell_exec() 执行时运行而没有错误(我检查了 apache 的错误日志,并error_reporting(E_ALL);
在 PHP 文件的顶部放置了一个以打印出任何问题)。程序执行方式的唯一区别是在命令行中检测到设备,并通过 shell_exec() 运行,没有找到设备。
关于在命令行和使用 shell_exec() 之间我还可能缺少什么的任何想法?
我还尝试交替使用 system()、exec() 和 shell_exec(),结果相同。