我正在尝试使用每天运行的PHP在.sh
脚本中重新启动apache2服务器,以便在服务器上执行维护例程。 我能够杀死Apache服务器,并通过将pkill -9 apache2
放在exec
调用PHP中清除任何排队的Apache进程。 我这样做是为了确保在服务器上构build的任何apache进程都被删除,而不会影响服务器的运行。
一旦apache进程被终止,我尝试通过调用/etc/init.d/apache2 restart
在类似的exec
调用中重启apache服务器,但是我得到以下错误:
sh: /etc/init.d/apache2/: not found
如果我从命令行运行相同的命令是按预期执行的,只是不在.sh
脚本中。 这个脚本中的其他shell命令也可以毫无问题地执行。
如果有人能够对这个问题有所了解,我将非常感激。 提前致谢。
那么首先要知道的是运行php脚本的用户(通常是Debian下的www-data)没有权限停止或启动apache。
另外如果你使用PHP来停止Apache,如果Apache服务器closures,PHP怎么能启动Apache(所以PHP将不会被执行)
那么第二件事就是为什么你只是不做/etc/init.d/apache2停止而不是杀死它? 如果我们忘记了用户www-data的权限,则应该在.sh文件中:
#!/bin/sh /etc/init.d/apache2 stop # # Maintenance routine # /etc/init.d/apache2 start
至less,为什么你使用Php在服务器上执行维护? 你不能使用你会cron的shell脚本吗?