php执行shell命令是的权限问题

问题: php在执行shell时使用的默认用户为nobody用户,因此引起命令无法执行返回结果为空的问题。

解决:转换为root或者相应的用户来执行命令

eg: shell_exec('sudo -u root -S your_command');

需要的配置:

a. 配置nobody用户的sudo权限,修改/etc/sudoers

chmod u+x /etc/sudoers

在root    ALL=(ALL)   ALL 下添加  nobody  ALL=(ALL)   ALL

chmod u-x /etc/sudoers

b. 修改sudoer默认需要tty的配置

在/etc/sudoers中注释掉 Defaults    requiretty

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在PHP执行shell脚本可以使用exec()函数或者shell_exec()函数。这两个函数都可以执行系统命令或者外部程序,并返回执行结果。其中,exec()函数可以返回执行结果的最后一行,而shell_exec()函数则返回所有执行结果。例如,可以使用以下代码在PHP执行一个shell脚本: ``` $result = exec('/path/to/script.sh'); echo $result; ``` 或者: ``` $result = shell_exec('/path/to/script.sh'); echo $result; ``` 其中,/path/to/script.sh是要执行shell脚本的路径。执行结果会被存储在$result变量中,并输出到屏幕上。需要注意的是,执行shell脚本需要确保PHP进程有足够的权限。 ### 回答2: PHP作为一种流行的编程语言,具有执行外部命令以及操作shell脚本的能力,可以通过调用system()、exec()、shell_exec()等函数来进行相关的操作。在这些函数中,最常用的是exec()函数。 执行shell脚本的方法如下: 1.定义shell脚本 首先需要编写要执行shell脚本,并确保可执行权限。 例如,定义一个test.sh的脚本: #!/bin/bash echo "hello world" 2.使用exec()函数执行shell脚本 接下来,在PHP代码中使用exec()函数调用test.sh脚本。 例如,执行以下代码: <?php exec("./test.sh", $output); print_r($output); ?> 执行完成后,控制台会输出"hello world",$output数组也将包含此信息。 3.参数传递 在执行shell脚本时,还可以传递参数,例如: test.sh #!/bin/bash echo "hello, "$1"!" php代码 <?php $name = "Alice"; exec("./test.sh $name ", $output); print_r($output); ?> 在执行完上述代码后,输出的内容为"hello, Alice!" 总体来说,使用PHP执行shell脚本的方式非常简单,只需要了解一些基本的语法和函数即可实现。但是,需要注意的是在执行外部命令时,要确保安全性,避免出现安全漏洞。 ### 回答3: PHP是一种非常强大的编程语言,可用于执行各种任务,包括执行shell脚本。Shell脚本是一种特殊类型的脚本语言,用于在Unix和Linux操作系统中控制和自动化一些任务,比如备份数据库、定时更新数据等。 在PHP执行shell脚本很容易,只需使用exec或shell_exec函数即可。这两个函数都可以执行外部程序,包括Shell脚本。它们的不同之处在于: - exec函数执行外部程序并将输出作为数组返回。这意味着您必须使用循环来读取每行输出。 - shell_exec函数执行外部程序并将输出作为字符串返回。这意味着您可以将输出分配给变量,然后使用字符串函数处理它。 下面是一个简单的示例,演示如何使用exec函数来执行Shell脚本: ``` $result = array(); $command = 'sh /path/to/script.sh'; exec($command, $result); foreach ($result as $line) { echo $line . "\n"; } ``` 此脚本将执行位于/path/to/目录中的script.sh文件,并将输出分配给$result数组。然后使用循环遍历结果数组,并将每行输出打印到屏幕上。 您也可以使用shell_exec函数来执行Shell脚本。以下是一个演示如何使用shell_exec函数的例子: ``` $command = 'sh /path/to/script.sh'; $output = shell_exec($command); echo $output; ``` 此脚本将执行位于/path/to/目录中的script.sh文件,并将输出分配给$output变量。然后将该变量打印到屏幕上。 需要注意的是,如果要将变量传递给Shell脚本,则需要在命令中包含这些变量。例如,如果要将一个名称为“John”的变量传递给Shell脚本,则命令可能如下所示: ``` $command = 'sh /path/to/script.sh John'; ``` 在这种情况下,Shell脚本可以像下面这样在脚本中访问该变量: ``` name=$1 echo "Hello $name" ``` 总而言之,PHP执行Shell脚本非常简单,只需使用exec或shell_exec函数即可。这使得PHP成为一种非常灵活和功能强大的编程语言,可用于各种任务,包括处理Linux脚本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值