有用到PHP运行.sh,出现了一些问题,在此记录下。
exec()
原型:string exec (string command [, string array [, int return_var]])
exec()函数与system()类似,也执行给定的命令,但不输出结果,而是返回结果的最后一行。
虽然它只返回命令结果的最后一行,但用第二个参数array可以得到完整的结果,方法是把结果逐行追加到array的结尾处。
所以如果array不是空的,在调用之前最好用unset()最它清掉。
只有指定了第二个参数时,才可以用第三个参数,用来取得命令执行的状态码。
代码
$shell = "cmd";
$a = "{$shell} 2>/root/wifilog.txt";//返回的信息写入一个文本中
$avc = exec("{$a}",$va,$vn);//参数分别是 cmd命令、返回信息数组、状态码
error_log($vn." \n".$va."\n".$a."\n".$avc."\n", 3, "/root/wifilog.txt");
在 /root/wifilog.txt 文本里出现 ($a返回的信息)
insmod: can’t insert ‘8821cu.ko’: No such file or directory
nohup: can’t execute ‘wpa_supplicant’: No such file or directory
/root/wifi/getScanResult.sh: line 29: syntax error: unexpected end of file (expecting “fi”)
错误信息
$avc返回
2 --------状态码
Array --------数组
/root/wifi/startWIFI.sh 2>/root/wifilog.txt ------cmd命令
/link/web/core309_local/public -----------脚本给的返回值
如果状态码返回127,项目执行脚本时出现127,大概率是脚本的路径问题。