从 php 脚本启动 bash 脚本

发布于 2024-10-27 22:30:28 字数 751 浏览 4 评论 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 文件中的某些内容,或者我是否需要更改用户的权限?感谢您的帮助。

I'm trying to run a bash script using shell_exec but It doesnt seem to work. (Nothing seems to happen) I'm using nginx and the latest php5-cgi. Heres what the php file looks like:

<?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);  


?>

and this is what the bash script looks like:

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

Theres no errors in the phpscript and the file gets created just fine but $startserver doesnt seem to get executed and $pid is empty. Did I miss something in the php file or do I need to change permissions for an user? Thanks for your help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

久而酒知 2024-11-03 22:30:28

将 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;
}  
?>

replace shell_exec, with below function and try again

<?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;
}  
?>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文