【问题标题】:Check if a script is runing with PHP检查脚本是否使用 PHP 运行
【发布时间】:2016-08-06 22:24:24
【问题描述】:

我在服务器上安装了 TeamSpeak3,我想制作一个小脚本来显示 TS3 是启动还是关闭

配置

CentOS 7 php 5.6.24

我试过这个脚本,但对我不起作用:

exec("pgrep ts3server", $pids);
if(empty($pids)) {

    echo "ts3server is not running!";
}

当我回显 $pids 时,我什么也没得到,它是空的,当我运行命令“pgrep ts3server”时,我得到这个结果:11149。

添加信息:

是的,我有 root 访问权限,我认为 exec 没有安装,因为我没有得到任何结果:

<?php
if(function_exists('exec')) {
    echo "exec is enabled";
}

echo exec('whoami');
?>

我尝试启用,但在 php.ini 中找不到任何内容!

【问题讨论】:

  • 特权问题?
  • 这是一个权限问题。你可能想试试这个stackoverflow.com/a/29716674/3885509
  • 在你的链接中尝试了该代码但没有工作它给出了 NULL
  • 猜猜你的 SELinux 状态和加载策略是什么?通过从控制台运行 sestatus 检查 SELinux。您可能需要禁用 SELinux 或为您的环境配置它。
  • 即使禁用 SeLinux 仍然不起作用

标签: php


【解决方案1】:

我假设“ts3server”是teampeak 的进程名称?

试试下面的 sn-p。

$var = exec('pgrep ts3server', $pids);
var_dump($pids, $var);

如果这不起作用,可以删除 pgrep 部分。

$var = exec('ts3server', $pids);
var_dump($pids, $var);

如果这不起作用,可能是 exec() 命令被禁用,您可以尝试使用反引号。

$var = `pgrep ts3server`;
var_dump($var);

【讨论】:

  • 为什么要反引号?
  • backticks 是 php 中的执行运算符。 Execution Operators
  • 啊,不知道。
  • 感谢您的帮助,但其中 3 个给出了 NULL,并且在使用 pgrep ts3server 命令时我得到了 id
  • 正如一些人所说,这可能是权限问题。这是在您拥有完全访问权限(root 权限)的机器上吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-12
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 2023-03-25
  • 1970-01-01
  • 2012-11-14
相关资源
最近更新 更多