【问题标题】:PHP shell_exec() returning different result than SSH TerminalPHP shell_exec() 返回与 SSH 终端不同的结果
【发布时间】:2021-01-23 04:58:06
【问题描述】:

我有一台运行 CentOS 7 并安装了 Python 2.7.5 的 Linux 机器。我正在尝试运行 Arduino-CLI,它是一个需要 Python 的可执行文件。我写了一个命令来编译草图。如右侧所示,它可以有效地编译。

当我使用 sudo_exec() 在 PHP 中运行相同的命令时,它给了我:

Error during build: exec: "python": executable file not found in $PATH

对于上下文,我在终端和 PHP 上都以网络用户身份登录。我能做些什么来解决它?

【问题讨论】:

  • 运行网络服务器时的网络用户不会以交互方式运行并且没有用户环境变量。使用完整路径 /path/to/python 或者查看 /etc/environment 或其他可能更合适的文件。
  • @AbraCadaver arduino-cli 运行 python。我的代码没有直接引用 python。我可以做些什么来在 shell_exec() 中正确运行它吗?

标签: php python-2.7 centos7 arduino-ide


【解决方案1】:

我最终解决了这个问题。在shell_exec() 中,PHP 没有定义 PATH 环境变量。它也不会知道当前的工作目录。所以在shell_exec() 之前添加这几行就可以了:

chdir("/home/gyropalm/subdomains/app/studio");  //set current working directory
putenv("PATH=/usr/bin/");   //required to define python path or Arduino-CLI complains

【讨论】:

    猜你喜欢
    • 2021-03-05
    • 2014-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多