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文件中。如果我跑'whoami'在shell_exec()中,它与在命令行中运行它的结果相同。
我在命令行中使用printenv
打印了环境,并在使用putenv()执行shell_exec()之前在我的php脚本中设置了所有相同的变量;如果我运行shell_exec(' printenv 2>& 1'),它与我在命令行中运行printenv的环境完全相同。
所有权限都是正确的并且允许访问,并且scanline在通过shell_exec()执行时运行而没有错误(我检查了apache的错误日志,并将error_reporting(E_ALL);
放在PHP的顶部文件打印出任何问题)。执行程序的唯一区别是在命令行中检测到设备,并通过shell_exec()运行,没有找到设备。
关于命令行和使用shell_exec()之间还有什么其他的想法?
我也尝试过使用system(),exec()和shell_exec()交替使用相同的结果。