PHP代码中Linux命令的使用
-
背景
在后端php逻辑设计中,存在如下功能,恢复出厂设置,具体功能定义如下:
当web端点击恢复出厂设置按钮时,设备上相关参数恢复为出厂状态下的参数,同时清除相关历史日志文件。 -
功能原理
web端实现对设备的配置管理,配置设备参数时会将各状态参数记录在配置文件中,同时php端向底层网关程序发送具体操作命令。 -
具体实现
php端程序首先自定义向网关程序发送命令的方法,同时调用php系统方法getcwd()方法、shell_exec()方法,此外结合采用字符串拼接方式实现linux命令的具体实现。具体代码如下:
//自定义字符串拼接所需发送数据方法
function restore($devid,$slaveid,$ack){
$length = 9;
$str = "\xaa";
$str .= chr($length);
$str .= chr($devid);
$str .= chr($slaveid);
$str .= chr($ack);
return $str;
}
//自定义udp发送方法
function getUdp($sendMsg='',$ip='',$port='7777'){
$addr = "udp://".$ip.":".$port;
$socket = stream_socket_client($addr,$errno,$errstr);
if(!$socket){
die("ERROR:{$errno}-{$errstr}\n");
}
fwrite($socket,$sendMsg."\n");
$result = fread($socket,100);
fclose($socket);
return $result;
}
//获取配置文件当前路径及实现配置文件恢复命令
$c_path = getcwd();
$cmd = 'cp '.$c_path.'/web_conf.txt '.$c_path.'/conf/web_conf.txt';
shell_exec($cmd);
$cmd = 'rm -rf '.$c_path.'/*.txt';
shell_exec($cmd);
@unlink("log/log.txt");
$msg = restore(0,0,1);
getUdp($msg,$ip_value);
- 小结
诸如此类涉及到配置文件,日志文件,参数文件等操作,都可采用php结合linux命令的方法实现。