Sie brauchen PHP oder Apache nicht unbedingt als Root laufen zu lassen. Wenn Sie die Kontrolle über Ihren Server haben, können Sie ein Apache-Modul namens suPHP verwenden und in der Konfiguration den Benutzer angeben, unter dem Apache für Ihre PHP-Skripte ausgeführt werden soll. Sie können dies für jeden Standort einzeln tun, so dass Sie suPHP nur für Skripte auf einer bestimmten Domain ausführen müssen. Mir fehlt das Fachwissen, um Sie bei der Installation zu beraten, aber ich habe unsere dedizierte Serverfirma gebeten, es für mich zu tun, damit ein Github-Post-Receive-Hook ein Skript auf meinem Entwicklungsserver aufrufen kann, das jedes Mal einen Git-Pull auf dem Entwicklungsserver auslöst, wenn jemand etwas in die Github-Repos einpflegt. Ich konnte es nicht anders hinbekommen, da Apache als Eigentümer der lokalen Repos laufen muss, damit es funktioniert.
Ich dachte gerade an eine andere mögliche Lösung basierend auf den anderen Kommentaren hier - Sie könnten in der Lage sein, ein einfaches PHP-Skript zu schreiben, um die Anfrage vom Github-Hook zu empfangen und einige beliebige Informationen in eine Datei in einem Verzeichnis mit 777 Berechtigungen oder in die Datenbank zu schreiben. Dann kann man einen Cron-Job einrichten, der jede Minute überprüft, ob sich die Datei oder die Datenbank geändert hat, und wenn ja, die Git-Pull-Anfrage direkt stellt, da Cron normalerweise bereits als Root läuft. Du könntest auch einfach nachsehen, ob sich der Zeitstempel der Datei geändert hat, um festzustellen, ob ein Git Pull durchgeführt werden soll. Sie könnten Ihr Cron-Skript zu dem Benutzer wechseln lassen, dem die Repos gehören, und dann den Git-Pull auslösen. Das ist zwar keine echte Echtzeitlösung, aber wenn das Cron-Skript sehr einfach ist, würde es Ihr System nicht wirklich ausbremsen, wenn Sie es alle ein oder zwei Minuten aufrufen. Ich hoffe, das hilft.