blog.bartlweb - a technologist's external brain

Apache mittels PHP reloaden

Die folgende Lösung ist definitiv eine Bastellösung und daher nur für interne und gut abgesicherte PHP-Anwendung gedacht. Die folgende Anleitung ermöglicht es den Apache Webserver mit Hilfe eines PHP-Skriptes neu zu laden. Erforderlich ist dies wenn die Apache-Konfiguration mittels PHP geändert werden kann (z.B. hinzufügen eines neuen virtuellen Hosts). Zu beachten ist das nach ausführen des Skripts 2-5 Sekunden vergehen können bevor der Server wirklich "reloaded" wurde.

Da unsere PHP-Umgebung mit den eingeschränkten Rechten des Webserver-Benutzers läuft und der Apache-Server nur mit Hilfe von Root-Rechten "reloaded" werden kann bedient man sich der Hilfe von visudo um dem Benutzer das Ausführen des Befehls mit sudo ohne Eingabe des Passworts zu ermöglichen.

visudo konfigurieren

Ermitteln Sie zunächst den Benutzer unter dem der Webserver ausgeführt wird (OpenSuse wwwrun, Ubuntu wwwdata) und den Pfad Ihrers Apache-Restart-Tools (OpenSuse rcapache2, Ubuntu apache2ctl) mittels which <Befehl>.

Geben Sie den Befehl visudo ein um einen Editor mit der visudo-Konfiguration zu starten. Nun ergänzen wir die Konfiguriation nach der folgenden Syntax:

<username> ALL= NOPASSWD: <command>

Wichtig ist dabei den kompletten Pfad zur ausführen Datei inkl. benötigter Parameter anzugeben.

Beispiel für OpenSuse

wwwrun ALL= NOPASSWD: /usr/sbin/rcapache2 reload

PHP

Nun können Sie innerhalb von PHP den in visudo konfigurierten Befehl mittels sudo über die Funktion exec() aufrufen. PHP wird den Befehl nun als root ausführen.

exec("sudo /usr/sbin/rcapache2 reload");

Dieser Artikel hat Dir deinen Tag gerettet?

... und mühevolles Probieren, Recherchieren und damit Stunden an Zeit gespart? Oder einfach nur Dein Problem gelöst?

Dann würde ich mich freuen, wenn Du meine Zeit für die Erstellung dieses Blogartikels mit einer kleinen Anerkennung honorierst:

Zahlung mit PayPal oder Kreditkarte.

Hinweis zur Verwendung

Die Übermittlung einer Zahlung ist eine persönliche Anerkennung Ihrerseits an den Entwickler (Christian Bartl, Privatperson). Eine Zahlung ist nicht zweckgebunden und es ist keine Gegenleistung zu erwarten. Bitte beachten Sie, dass für eine übermittelte Zahlung keine Quittung ausgestellt werden kann.

Über den Autor

Christian Bartl

Christian Bartl Requirements Engineer
& Solution Architect für Online und Mobile

Als Technologie-Enthusiast und begeisterter Programmierer entwickle ich in meiner Freizeit Websites, Software und IT-Lösungen, die mir selbst und anderen den Alltag vereinfachen.

mehr auf christian.bartl.me

Kommentare

Noch kein Kommentar vorhanden.
Sei der Erste! - Ich freue mich über deine Anmerkung, Kritik oder Frage.

Kommentar schreiben

Der hier angegebene Name wird gemeinsam mit deinem Kommentar auf der Website veröffentlicht.

Deine E-Mail-Adresse wird zur einmaligen Benachrichtigung bei Veröffentlichung des Kommentars genutzt.

Benachrichtigung per E-Mail über Antworten auf meinen Kommentar erhalten.

Bitte tippe die Zahlenkombination "9898" ein, nur dann kann ich deinen Kommentar entgegennehmen.

Bitte fülle dieses Feld nicht aus, nur dann kann ich deinen Kommentar entgegennehmen.