gpt4 book ai didi

php - exec 命令适用于终端而不是 PHP

转载 作者:行者123 更新时间:2023-12-02 02:27:38 26 4
gpt4 key购买 nike

我正在写一个让我访问 的类recutils 通过 PHP。

我在 ../database/中有一个名为 books.rec 的“数据库”文件和一个运行我的 Recutils.php 类的脚本。

我的类(class)只是使用正确的参数启动系统应用程序。

但是当我尝试使用 recins 时与 PHP 的 exec功能,该命令在命令行中不起作用。

这是我的脚本执行的命令:
recins -f Title -v "Moi" -f Author -v "Moche" -f Location -v "loaned" -t Books ../database/books.rec
使用 PHP : Nothing,不会插入记录(也根本没有错误消息)。
在终端中:好的,命令完成并插入了我的记录。

我还有一种方法可以使用 recsel 进行选择操作它工作得很好,它会使用完全相同的文件(并且也从 exec 运行)。

那么,有人可以解释一下为什么该命令不起作用,另一个具有相同文件的命令会起作用吗?

谢谢

PS:更多信息:http://www.gnu.org/software/recutils/

最佳答案

我会仔细检查您是否正在从命令行和您的 php 脚本中以同一用户身份运行该命令。这可能是问题所在。 exec('whoami')
你说你有一个脚本来启动你的 php 脚本,它应该是同一个用户。

您可能还想运行一个更简单的 exec 命令来查看它是否会首先起作用。

其他尝试:

  • 尝试检查 stderr 输出 exec('ls /tmp 2>&1', $out);这会将标准错误重定向到标准输出,以便您获得两者。
  • 尝试使用 php 的 shell_exec()就像从命令行(例如 bash)运行时一样,它会调用一个 shell。 shell_exec('ls /tmp 2>&1 >> /tmp/log')甚至应该将所有输出放入日志文件中。
  • 我认为这不会对您有所帮助,但是如果所有其他方法都失败了,可以尝试一下,将其设置为后台进程并查看它是否完成。 exec('nohup php process.php > process.out 2> process.err < /dev/null &') . & 将设置命令在后台运行并让脚本继续运行。

  • 祝你好运

    关于php - exec 命令适用于终端而不是 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5154960/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com