在Linux上使用php检查服务状态?

时间:2018-06-25 14:24:02

标签: php linux service

我正在尝试在Debian 9上使用php7读取服务的状态。 该命令很简单:

sudo -u root -S service openvpn@debideb status < /var/www/html/.htpass

在终端中测试时,我确实得到了预期的结果:

openvpn@debideb.service - OpenVPN connection to debideb
   Loaded: loaded (/lib/systemd/system/openvpn@.service; disabled; vendor preset: enabled)
   Active: active (running) since Mon 2018-06-25 06:17:15 PDT; 1h 2min ago
     Docs: man:openvpn(8)
           https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage
           https://community.openvpn.net/openvpn/wiki/HOWTO
  Process: 5049 ExecStart=/usr/sbin/openvpn --daemon ovpn-debideb --status /run/openvpn/debideb.status 10 --cd /etc/openvpn -
 Main PID: 5051 (openvpn)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/system-openvpn.slice/openvpn@debideb.service
           └─5051 /usr/sbin/openvpn --daemon ovpn-debideb --status /run/openvpn/debideb.status 10 --cd /etc/openvpn --config 

但是,当我通过www-data进行操作时,会得到以下结果: passthru()返回int(1)shell_exec()返回NULLexec()system()返回string("");

我在哪里弄糟?

1 个答案:

答案 0 :(得分:1)

您可以运行CRON来检查服务状态并将结果输出为某种输出格式,然后从Web服务器用户读取输出文件。这样,您可以将运行CRON的用户与Web服务器用户隔离开来,并使其更加安全。

在您的PHP中根本没有一个exec调用是一个非常糟糕的主意,更不用说当Web服务器具有root权限时(您需要在此处使用它)。