0

exec()関数を使用してPHP開発サーバーを起動および停止するにはどうすればよいですか? BDD テストを自動化するには、これを行う必要があります。

これにより、スクリプトの実行が停止します。

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

そのため、PHP からサーバーを起動し、テストの実行を続行できる方法が必要です。そして、それを PHP から停止する方法も必要です。

4

2 に答える 2

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);
    }
}
于 2012-10-30T11:22:21.163 に答える
0

Apacheを停止しているためです。停止コマンドを処理しますが、その時点でサーバーが停止しているため、サーバーがコマンドを解析するためにそこにいないため、別のコマンドを処理する方法はありません。Apacheを停止して再起動するシェルスクリプトを作成し、PHPコードから呼び出します。Apacheが停止した場合でも、シェルスクリプトは実行を継続する必要があります。

サーバーはApacheだと思います。

于 2012-10-30T09:54:48.883 に答える