重新启动apache进程使用shell脚本找不到apache

我正在尝试使用每天运行的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脚本吗?