PHP代码不在cron作业中执行

时间:2018-03-15 12:04:07

标签: php cron cron-task

我有一个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

1 个答案:

答案 0 :(得分:0)

axiac

cron作业的执行环境与您在终端中获得的环境非常不同。 $PATH变量的内容较短,并且/sbinifconfig通常保留的位置)可能不包括在内。这使shell_exec()调用失败,脚本的其余部分无关紧要。使用ifconfig(在终端中)查找ifconfig在系统中的位置,并使用shell_exec()中的绝对路径调用它。对于grep也是如此(即使没有完整路径也可以找到它,因为它通常保留在/bin中。)