Linux命令接口 [shell]

通过PHP执行Linux命令

使用本应用可以让PHP安全的调用linux命令,无需开启exec函数.

请先部署脚本文件后再安装(windows不支持).

原理:通过inotify监控目录内的文件变化,从而执行预先编辑好的命令脚本.

参数

sitepath为网站根目录,格式为/www/wwwroot/classcms.com/,需以/结尾

shellpath为命令脚本存放目录,网站用户组不应有此目录写入与修改权限,否则会有安全风险.

centos部署

安装inotify-tools:yum install inotify-tools -y
复制shell_centos.sh到 /etc/init.d/ 并修改权限:chmod 755 shell_centos.sh
修改shell_centos.sh内sitepath与shellpath参数
添加为服务:chkconfig --add shell_centos.sh
开启服务:chkconfig shell_centos.sh on
启动脚本:/etc/init.d/shell_centos.sh &

debian/ubuntu部署

安装 inotify-tools apt-get install -y inotify-tools
复制shell_debian.sh(ubuntu为:shell_ubuntu.sh,下同)此文件到 /etc/init.d/ 并增加执行权限 chmod 755 shell_debian.sh
修改shell_debian.sh内sitepath与shellpath参数
update-rc.d shell_debian.sh defaults 50
/etc/init.d/shell_debian.sh & 启动脚本

编写脚本并执行

shell_centos(debian/ubuntu).sh在调用命令脚本时,会传入网站根目录参数与命令参数,如:xxx.sh /www/wwwroot/classcms.com/ test test2

可以在命令脚本内通过$1获取到网站根目录,通过$2 $3等获取命令参数.

脚本内应判断参数合法性,避免造成不必要的安全风险.

命令脚本举例

#!/bin/sh
# 删除网站应用目录下的某个应用目录
rm -rf $1"class/"$2

可以在命令脚本内通过curl或php命令行方式将执行结果返回给网站

将编写好的脚本文件存放于shellpath目录中.

测试脚本文件是否存在

C('shell:check','xxx');

调用脚本

C('shell:exec','xxx');
C('shell:exec','xxx','test','test2');//带参数调用,参数不能包含空格等特殊字符
应用信息
标识shell
版本号1.1
文件大小14.6KB
发布时间2022-01-19
更新时间2022-12-21
PHP兼容--
作者 ClassCMS
安装
请在网站后台-应用商店内安装此应用.
也可在演示站点-应用商店内中安装并测试.
更新记录
1.1bug修复