PHP使用命令函数执行shell脚本
2020-02-01 13:57
1221 查看
PHP使用命令函数执行shell脚本
- CentOS 7.6 64位
- 宝塔Linux面板
运行环境
- Nginx 1.17.1
- PHP-7.1
步骤
01 解除禁用的命令函数
出于安全考虑,命令函数是被禁用,我安装宝塔是被禁用的
[code]#修改php.ini文件 disable_functions = #被禁用函数都在这一行 把需要解除的函数删除就行了 system exec passthru shell_exec #PHP常用命令函数
02 PHP调用Linux命令权限不足的解决方法
关于这个问题我踩的太多坑了,这也是我要写这篇文章的原因,我本人记性不好,所以记录一下
- 01 查看启动你PHP的进程的用户是谁
[code]ps -ef | grep php #通过终端命令行执行查询 echo exec('whoami'); #通过PHP命令函数查询 总来说默认没有任何权限
- 02 添加一个用户和组 终端命令↓↓↓
[code]/usr/sbin/groupadd wroot # wroot 用户可以自定义的 /usr/sbin/useradd -g wroot -s /bin/bash wroot vim /etc/passwd #查看你刚刚添加的用户 是否添加成功
wroot 是刚刚添加的
- 03 修改PHP启动用户为您刚添加的用户
php-fpm.conf 修改这个配置文件
编辑成 user = wroot; group = wroot; (wroot为您刚才添加的用户)
[code]service php-fpm restart #命令重启php-fpm ps -ef | grep php #命令查看PHP启动进程的用户、是否已经变了
- 04 添加刚才的用户wroot到sudoers里面
[code]visudo #命令修改 /etc/sudoers的内容 ## Allow root to run any commands anywhere root ALL=(ALL) ALL wroot ALL=(ALL) ALL //新添加这一行 %wroot ALL=(ALL) NOPASSWD: ALL #NOPASSWD为设置用户组下面的用户使用sudo不需要输入密码
以上操作完成,但是我发现依然不能解决PHP命令shell脚本问题
- 05 关于linux 用vi命令使用vi编辑(外话)
[code]s #vi界面出现 INSERT后,开始进行编辑操作 编辑完毕后,按ESC键,跳到命令模式 :w #保存,不退出vi :w! #强制保存,不退出vi :w file #将修改另外保存到file中,但不退出vi :wq 或 :x #保存,并退出vi :wq! #强制保存,并退出vi :q #不保存,并退出vi :q! #不保存,并强制退出vi :e! #放弃所有修改,从上次保存文件开始再编辑
03 但第二部操作还是无法解决PHP命令shell脚本问题
还是权限问题,最后添加www-data ALL=(ALL) NOPASSWD: ALL解决了
[code]www-data ALL=(ALL) NOPASSWD: ALL #编辑visudo
编辑visudo添加www-data
编写test.sh脚本,简单的一个shell脚本 创建一个文件夹
[code]#! /bin/sh mkdir /www/a #注意.sh文件需要给执行权限
[code]#PHP system('sudo /usr/bin/test.sh') #注意绝对路径 system('sudo /www/wwwroot/wert/prt.sh') #例如路径
内容部分来源网络,我只是执行操作整理
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 使用expect实现自动交互,shell命令行自动输入,脚本自动化,变量引用,expect spawn执行带引号命令,expect 变量为空,不生效,不能匹配通配符*,函数,数组
- php 执行linux命令,shell脚本函数,获取服务器运行状态值
- php 执行shell命令的函数
- gitlab webhook php exec 调用 shell 脚本。shell 脚本中调用 git pull 命令无法执行。
- C程序获取shell脚本命令输出,使用popen()函数
- shell脚本实现每秒执行一次任务 rsync命令使用
- Neo4j安装及使用shell脚本执行命令
- PHP执行系统外部命令函数:exec()、passthru()、system()、shell_exec()
- shell脚本实现每秒执行一次任务 rsync命令使用
- shell脚本使用ssh命令连接主机,自动创建目录,分发程序,执行命令
- php执行外部命令函数:exec()、passthru()、system()、shell_exec()对比
- linux c之通过popen和pclose函数创建管道执行shell 运行命令使用总结
- 使用shell脚本ssh远程执行命令,使用awk时总是报错
- Linux中使用crontab命令定时执行shell脚本或其他Linux命令
- 在linux应用程序使用system函数执行简单的shell交互命令的方法
- shell脚本执行命令 . 和sh 和 source 和 ./ 的使用以及区别
- shell脚本中使用自定义命令之五---执行脚本变成交互式
- PHP执行系统外部命令函数:exec()、passthru()、system()、shell_exec()
- php执行外部命令函数:exec()、passthru()、system()、shell_exec()对比
- 使用shell脚本执行hive、sqoop命令的方法