php exec('echo 1>〜/ cctv_config / cctvstatus')不起作用

时间:2014-03-03 12:03:12

标签: php exec echo

以下是我在php文件中的部分代码:

function checkSetStatus($checkSet) {

//other if options here

    if ($checkSet == '2') {
        exec('echo 0 > ~/cctv_config/cctvstatus.log');  
        sleep(1);
        exec('echo "$(date) | setOff" >> weblog.log');
        return (int) exec('cat ~/cctv_config/cctvstatus');
    }
}

问题在于行:

exec('echo 0 > ~/cctv_config/cctvstatus.log');

当我触发命令

echo 0 > ~/cctv_config/cctvstatus.log

在linux命令行中,它运行正常。但是,如果它是由php文件中的exec函数间接触发的,则它不会对目标文件进行任何更改。

在apache错误日志文件中有信息

无法创建

文件或目录〜/ cctv_config / cctvstatus.log

(我已经将cctvstatus.log的模式更改为777)。触发此行时会记录类似的信息:

exec('cat ~/cctv_config/cctvstatus');

在这种情况下,记录了这样的文件或目录不存在(还有一个问题 - 在exec中使用cat我想知道是否应该使用passthru函数)。

1 个答案:

答案 0 :(得分:0)

PHP实例用户的主目录与您测试命令的用户不同。 您正在使用路径前的~(代字号)来访问主目录。

改为将路径改为完整路径:

function checkSetStatus($checkSet) {

//other if options here

    if ($checkSet == '2') {
        exec('echo 0 > /home/myuser/cctv_config/cctvstatus.log');  
        sleep(1);
        exec('echo "$(date) | setOff" >> weblog.log');
        return (int) exec('cat /home/myuser/cctv_config/cctvstatus');
    }
}