找回密码
 新建账号

win7 httpd apache php net start net stop 失效

[复制链接]
php 发表于 2016/12/21 12:00 | 显示全部楼层 |阅读模式
windows 7 apache + php 无法在php代码中执行net start / net stop命令,net start 启用服务,net stop 关闭服务,无论是以mod_php还是cgi/fastcgi配置httpd,无论使用vc9, vc10, vc11, vc14的Apache软件,无论是php 5.4, php 5.5, php 5.6, php 7+, 无论以php shell_exec(), exec(), backtick operators ``, system(), passthru()都无法在apache中运行net命令,如果单独运行php,以built-in web server Development Server php -S IP:PORT方式运行php时却可以在php脚本中执行net命令。
实测表明,在windows xp, windows server 2003, windows 10中都没有apache php net命令失效的问题,而是在windows 7和windows server 2008中apache php net命令全部无法使用。net start, net stop, net share都不能在apache php中运行。
除了换操作系统以外,也可以使用sc start和net stop命令来代替net start和net stop,不过sc命令和net命令还是有区别。net start和sc start都可以用来启动服务,net stop和sc stop都可以用来关闭服务,区别在于sc命令不会等待服务状态改变,命令发出以后就会继续执行后面的命令,如果没有其他命令就会退出。而服务状态分别处于START_PENDING和STOP_PENDING,而net命令会等待执行完毕后再继续。
在windows操作系统中重启服务是不能一步完成的,只能使用停止再启动,也就是说先net stop再net start或者先sc stop再sc start.
因为sc命令不会等待,在sc stop和sc start之间就有必要间隔一段时间,而不能直接在sc stop后面紧接着sc start.
php中可以使用sleep()来暂停脚本,windows命令行cmd中可以使用timeout命令来暂停脚本执行,需要注意的是timetout.exe是windows sever 2003及更新版本中才有的程序,如果操作系统是windows xp,可以从windows 2003的windows\system32\timeout.exe复制出来放在windows xp的windows\system32目录中使用。
脚本示例。
  1. sc stop phpserver
  2. timeout 5
  3. sc start phpserver
复制代码

手机版|轻松E站

GMT+8, 2024/4/27 00:54

快速回复 返回顶部 返回列表