环境是 lnmp
首先要修改 php.ini 中的 disable_functions 在里面把你需要使用的函数( system,exec ...)之类的注释掉。
下面以调用 fping 为例
安装 fping
cd /usr/local/src
wget http://fping.org/dist/fping-3.10.tar.gz
tar -xvf fping-3.10.tar.gz
cd fping-3.10
./configure
make && make install
增加权限
fping 一般安装在 /usr/local/sbin/ 目录下
增加权限
chown root:root /usr/local/sbin/fping
chmod u+s /usr/local/sbin/fping
php调用
foreach( $list as $key => &$val ){
//$val[ 'ip' ]
$status_arr = ''; //这里一定要清空,不然$status_arr 会一直往后插入新的数据
//理论上可以但是实际上可能会报错 Array ( [0] => sh: line 1: fping: command not found )
exec( 'fping -r0 -t500 ' . $val[ 'ip' ] . ' 2>&1', $status_arr ); //一定要把错误输出到标准输出,否则没有返回值
//这个时候需要用完整的fping路径
exec( '/usr/local/sbin/fping -r0 -t500 ' . $val[ 'ip' ] . ' 2>&1', $status_arr );
if( isset( $status_arr[ 0 ] ) && preg_match( '/is alive/', $status_arr[ 0 ] ) ){
$val[ 'status' ] = 1;
}else{
$val['status' ] = 0;
}
}