当前位置: 首页 > 知识库问答 >
问题:

在php shell_exec函数中运行killall命令

司马羽
2023-03-14

我有一个工作的外壳脚本,使用Kilall杀死程序的所有实例,如下所示:

基尔abc

现在,我编写了一个php网页,使用shell_exec函数执行此脚本:

shell_exec('sh./myscript.sh');

问题是,我的PHP代码在命令行上正确地使用"phpmyscript.php",但在浏览器中不起作用!。然而,我知道命令行中的用户是root,而php中的用户是apache(我用whoami得到了这个)。linux发行版是使用SElinux的Centos 6。我将selinux的状态更改为允许。

  • PHPsafe_mode关闭
  • shell_exec()不存在于disable_functionsphp.ini

有没有一种方法可以使用php运行带有kill命令的脚本?

谢谢你的帮助。

共有1个答案

阙佐
2023-03-14

你要么必须以root(不安全)的身份运行apache,要么,更安全的是,你必须以“apache”的身份运行你试图杀死的命令,或者你配置你的sudoers文件来授予apache权限来杀死所有命令:

# vim /etc/sudoers
apache localhost=(ALL) NOPASSWD:/usr/bin/killall

然后把myscript.sh改成sudo murall abc

 类似资料:
  • 我使用wkhtmltopdf从html生成pdf,我试图通过PHP exec()函数运行下面的命令,但它不生成pdf,我没有显示任何错误,虽然。但是当我通过命令行运行相同的命令时,它就工作了。 下面是我用来执行pdf生成命令的PHP代码taht。 有关我的设置的一些信息: 操作系统-Ubuntu 12.04 PHP版本 任何帮助将不胜感激,谢谢。

  • 问题内容: 有没有办法在Java应用程序中运行此命令行? 我可以用命令运行它,但是我不能在Java中运行它。 问题答案:

  • 在GCP nodejs云函数中,我使用dotenv在简单模式下重命名运行时触发器调用的函数:我通过dotenv-yaml从env_TEST. yml配置文件中读取部署函数的名称 PROD云函数触发器称为prod_fixNameFunction UAT云函数触发器称为uat_fixNameFunction 称为test_fixNameFunction的TEST云函数触发器 因为我有3.env_PRO

  • 我有下面的课。它允许我通过java执行命令。 当我运行命令时,上一个命令的结果没有保存。例如: 给出输出: 为什么第二个“ls”命令不显示“bin”目录的内容?

  • 如何让这个CURL命令在Zapier中按计划运行? Curl-请求POST\

  • 我得到 它不包含我在NetBeans中使用的jdk的路径。我没有找到一种方法告诉Java我想使用另一个jdk,所以我尝试了不使用: 运行特定主文件的示例 在java.lang.class.PrivateGetMethodRecursive(class.java:3048) 在java.lang.class.GetMethod0(class.java:3018) 在java.lang.class.G