我有一个PHP脚本,它将获取所有网卡mac地址并在文本文件中存储第一个。 这是我用来获得系统MAC的代码:
<?php
$mycom = shell_exec("ifconfig | grep HWaddr");
$findVal = "HWaddr";
$mac_arry = array();
while (strpos($mycom, $findVal) > 0) {
$start_pos = strpos($mycom, $findVal);
$mac=substr($mycom,($start_pos+7),17);
$mac_arry[] = $mac;
$mycom = substr($mycom, ($start_pos+10));
}
$fileHandle = fopen("/tmp/mac.txt", "a+");
fwrite($fileHandle, $mac_arry[0]);
fclose($fileHandle);
?>
如果我直接在浏览器或终端上执行此文件,它可以正常工作。但是当我每分钟将它添加到cron时,它都不起作用。这是我的cronjob:
* * * * * /usr/bin/php -f /var/www/html/test.php
答案 0 :(得分:0)
cron作业的执行环境与您在终端中获得的环境非常不同。 $PATH
变量的内容较短,并且/sbin
(ifconfig
通常保留的位置)可能不包括在内。这使shell_exec()
调用失败,脚本的其余部分无关紧要。使用ifconfig
(在终端中)查找ifconfig
在系统中的位置,并使用shell_exec()
中的绝对路径调用它。对于grep也是如此(即使没有完整路径也可以找到它,因为它通常保留在/bin
中。)