0

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ファイルの何かを見逃しましたか、それともユーザーの権限を変更する必要がありますか?ご協力いただきありがとうございます。

4

1 に答える 1

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;
}  
?>
于 2011-03-29T16:00:59.180 に答える