【问题标题】:Execute Linux command with PHP?用 PHP 执行 Linux 命令?
【发布时间】:2017-05-25 20:12:19
【问题描述】:

我真的很困惑如何使用 PHP 实际执行 Linux 命令。 假设我不想使用reboot 命令重新启动服务器,我该怎么做? 我试图:

exec('reboot');

但似乎还有更多工作要做。 提前致谢

PS 我的输出没有问题,例如echo exec('hostname -I'),但我希望能够运行程序等

【问题讨论】:

  • reboot 需要 root 权限,您当然不应该以 root 身份运行您的网络服务器。如果有的话,请使用sudo reboot,并授予网络服务器用户对特定命令的权限。
  • 忘了说,这是供个人使用的(不是 www 只是 localhost)
  • 顺便说一句,我可以在没有 sudo 的情况下在 Ubuntu 上运行 reboot(未以 root 用户身份登录)
  • 不,仍然无法正常工作。我尝试使用echo my_password | sudo -S reboot(在终端上工作)以root身份运行它,但仍然没有......
  • 输出是什么?有什么问题?

标签: php linux ubuntu


【解决方案1】:

将以下行放入/etc/sudoers.d/web:

www-data ALL=(ALL) NOPASSWD: /sbin/reboot

假设 www-data 是网络服务器用户。现在您应该能够使用 php 代码重新启动服务器。任何错误都应该出现在错误日志中。

将 /sbin/reboot 替换为您要运行的命令的完整路径。如果您要运行多个命令,请将其替换为逗号分隔的命令列表,例如 /sbin/reboot、/bin/echo

【讨论】:

  • 这适用于reboot 命令,但它不适用于我测试的其他任何东西,例如当我尝试使用echo exec("echo 'user' | sudo -S chromium-browser 2>&1"); 运行铬时,我收到Gtk-WARNING **: cannot open display: 错误
  • 你把 lxtask 放到 /etc/sudoers.d/web 文件了吗?并且您似乎正在尝试运行 GUI 应用程序。通过 php 运行 GUI 应用的目的是什么?
  • 确实我想运行 GUI 应用程序。我是一名网络开发人员,我正在尝试制作一些自定义网站,以便在我坐在沙发上用遥控器使用 PC 时……我对 C# 几乎没有经验,但仅此而已,其他一切都是网络-dev 语言,所以如果我想制作任何软件,它将主要使用 PHP。例如,我肯定会使用的一个命令是`chromium-browser --kiosk youtube.com/tv
  • 我实际上输入了www-data ALL=(ALL) NOPASSWD: ALL 用于测试目的......也许我稍后会限制这个(当我用完 PHP 时)
  • 不确定是否可以通过这种方式启动 GUI 应用程序。通常只有 CLI 应用程序使用 php 运行 exec() 或 shell_exec()
猜你喜欢
  • 2010-10-04
  • 2018-11-21
  • 1970-01-01
  • 2023-03-06
  • 2017-12-13
  • 1970-01-01
  • 2021-08-19
  • 2012-04-17
  • 1970-01-01
相关资源
最近更新 更多