我有一个简单的php脚本,通过cli运行来启动OpenVPN:
$system_string = "openvpn --config C:\\openvpn-config\\" . $config_file;
exec($system_string,$return_var);
file_put_contents('myfile.txt',$return_var);
openvpn进程启动时没有问题(openvpn控制台在单独的窗口中弹出)但是exec()的输出没有保存到文件中。换句话说,一旦openvpn服务启动,句柄就不会返回到调用的php脚本。如果我关闭openvpn接口,php脚本会继续。我在Windows上,所以不幸的是,pcntl不是一个选项。
有关如何在启动openvpn进程后继续运行php scipt的任何建议吗?
答案 0 :(得分:0)
popen()似乎非常不一致,我最终使用以下内容在后台运行脚本:
$commandString = 'start /b php daemon.php"';
pclose(popen($commandString, 'r'));
将触发daemon.php并将控件返回给调用脚本,以便它可以继续执行。