2015-05-26 42 views
1

我創建了一個簡單的網站,通過爲每個新網站項目創建一個子域,幫助我管理我的許多項目。是否可以從PHP啓動/停止a​​pache服務?

我一直回到我創建的舊網站,因此我決定將它們全部保留爲localhost上的子域。

我的PHP代碼工作正常,將信息添加到相關文件。

但我需要重新啓動Apache才能使更改生效。 我知道PHP從Apache服務運行。是否有可能通過PHP代碼停止並啓動甚至重新啓動Apache服務?

+4

是的我想你可以用'exec()'或'shell_exec()',注意你需要root權限。 – Daan

+1

通過使用外部命令(在Slackware Linux中:'/etc/rc.d/rc.httpd restart'),可以重新啓動。注意 - 如果你通過服務器執行,它可能會阻止你的PHP腳本。 – jcoppens

+0

Apache也有一個'reload'命令,它告訴它在沒有停止/啓動的情況下重新加載配置。這可能適用於大多數這些東西。 '服務apache2重新加載'。另外,如果這涉及託管子域,請查看[mod_vhost_alias](http://httpd.apache.org/docs/2.2/mod/mod_vhost_alias.html)模塊。它允許您通過模式將主機名映射到目錄。我曾經有一個通配符dns條目(全部分配給相同的IP),然後將'whatever.test.com'映射到'/ var/www/whatever',這樣任何子域映射到它自己的文件夾。添加一個子文件就像創建一個文件夾一樣簡單。 –

回答

2

是的,exec()

exec("apachectl restart"); 

您可能要允許程序只要關閉服務器之前關閉自己,所以我建議:

exec("apachectl graceful"); 

確保PHP不運行在safemode(< = PHP 5.3),因爲這些功能將不可用。

請注意,這是我如何重新啓動我的服務器上的Apache,您可能需要調整命令。

還想一下權限。並非所有用戶(也可能不是運行php腳本的用戶)都有權停止服務器。

相關問題