如何使用exec()函数启动和停止PHP dev服务器?我需要这样做才能自动化我的BDD测试。
这会停止执行我的脚本:
echo exec('php -S localhost:8000');
所以我需要一种从PHP启动服务器的方法,并能够继续执行我的测试。然后我还需要一种方法来阻止PHP。
答案 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。