如何使用exec()启动和停止PHP dev服务器

时间:2012-10-30 09:44:12

标签: php ubuntu

如何使用exec()函数启动和停止PHP dev服务器?我需要这样做才能自动化我的BDD测试。

这会停止执行我的脚本:

echo exec('php -S localhost:8000');

所以我需要一种从PHP启动服务器的方法,并能够继续执行我的测试。然后我还需要一种方法来阻止PHP。

2 个答案:

答案 0 :(得分:1)

这有效:

private function _startDevelopmentServer($pidfile)
{
    $cmd = 'cd ../../public && php -S 127.0.0.1:8027 index.php';
    $outputfile = '/dev/null';
    shell_exec(sprintf("%s > %s 2>&1 & echo $! >> %s", $cmd, $outputfile, $pidfile));
    sleep(1);
}

private function _killDevelopmentServer($pidfile)
{
    if (file_exists($pidfile)) {
        $pids = file($pidfile);
        foreach ($pids as $pid) {
            shell_exec('kill -9 ' . $pid);
        }
        unlink($pidfile);
    }
}

答案 1 :(得分:0)

这是因为你正在停止Apache。它处理stop命令,但是在那个时间点服务器已经停止,因此它无法处理另一个命令,因为服务器不在那里解析它。编写一个shell脚本来停止并重新启动Apache,然后从PHP代码中调用它。即使Apache停止,shell脚本也应该继续执行。

我假设您的服务器是Apache。