我正在编写一个让我通过PHP访问 recutils 的课程。
我在../database/中有一个名为books.rec的'数据库'文件,以及一个运行我的Recutils.php类的脚本。
我的班级只需使用正确的参数启动系统应用程序。
但是当我尝试将recins
与PHP的exec
函数一起使用时,该命令无效,是否可以在命令行中使用。
这是我的脚本执行的命令:
recins -f Title -v "Moi" -f Author -v "Moche" -f Location -v "loaned" -t Books ../database/books.rec
使用PHP:没有,没有插入记录(根本没有错误消息) 在终端:好的,命令工作正常,我的记录已插入。
我还有一个使用recsel
进行选择操作的方法,它运行得很好,它会使用完全相同的文件(并且也从exec
运行)
那么,有人可以解释一下,为什么命令不起作用另一个同一个文件有效吗?
由于
答案 0 :(得分:2)
我会从命令行和你的php脚本中仔细检查你是否以同一个用户身份运行命令。这可能是问题所在。 exec('whoami')
你说你有一个启动你的php脚本的脚本,它应该是与那个用户相同的。
您可能还想运行一个更简单的exec命令来查看它是否会先工作。
其他尝试:
exec('ls /tmp 2>&1', $out);
这会将标准错误重定向到标准输出,以便您同时获得这两项。shell_exec()
,它将调用shell,就像从命令行运行一样(例如bash)。 shell_exec('ls /tmp 2>&1 >> /tmp/log')
甚至应该将所有输出放入日志文件中。exec('nohup php process.php > process.out 2> process.err < /dev/null &')
。 &amp;将命令设置为在后台运行并让脚本继续。祝你好运
答案 1 :(得分:0)
PHP可以访问recins
命令吗?也是books.rec
正确的路径?
尝试绝对路径。