我正在尝试使用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文件中的内容,还是需要更改用户的权限?谢谢你的帮助。
答案 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;
}
?>