PHP shell_exec()与终端命令行MacOS

时间:2017-08-01 15:51:31

标签: php bash macos terminal scanline

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()交替使用相同的结果。

0 个答案:

没有答案