从php脚本启动bash脚本

时间:2011-03-29 15:50:43

标签: php bash nginx shell-exec

我正在尝试使用shell_exec运行bash脚本,但它似乎无法正常工作。 (似乎没有发生)我正在使用nginx和最新的php5-cgi。下面是php文件的样子:

<?php

$startserver = "./startserver.sh";
$startserver = shell_exec($startserver);
$getprocess = "pidof hlds_amd";
$pid = shell_exec($getprocess);

$fh = fopen('closeserver.sh', 'w');
$command = "kill -9 $pid";
fwrite($fh, $command);
fclose($fh);


$string = "at -f closeserver.sh now + 1 hour";
$closer = shell_exec($string);  


?>

这就是bash脚本的样子:

#!/bin/bash
cd /home/kraffs/srcds
./hlds_run -game cstrike -autoupdate +maxplayers 12 +map de_dust2 > hlds.log 2>&1 &

没有错误的phpscript和文件创建得很好,但$ startserver似乎没有被执行,$ pid是空的。我错过了php文件中的内容,还是需要更改用户的权限?谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

用以下函数替换shell_exec,然后重试

<?php
function runcmd($EXEC_CMD)

    $handle = popen ($EXEC_CMD, 'r');
    $output = "";
    if ($handle) {
        while(! feof ($handle)) {
            $read = fgets ($handle);
            $output .= $read;
        } 
        pclose($handle);
    }
    return $output;
}  
?>