itebob
Goto Top

Ein PHP-Projekt für mehrere Webspace-User verfügbar machen

Ich bin angemeldet als root und habe auf einem Debian-System mit Apache-Server auf einem Webspace mit einer funktionierenden WebsiteB mit
ln -s zielpfad skriptDir
einen symbolischen Link auf ein Verzeichnis 'skriptDir' auf einem Webspace mit einer funktionierenden WebsiteA erstellt. Das Verz. skriptDir enthält ein funktionierendes PHP-Projekt.

Die Idee dahinter ist, dass man eine PHP-Projekt-Instanz auf Webspaces der WebsiteA und WebsiteB mit den Daten des jeweiligen Webspaces ausführt. Die Webspace-spezifische Daten werden aus den jeweiligen Datenbanken geladen. In WinSCP sehe ich den erstellten Link skriptDir-Link-auf-WebsiteB. Wenn ich darauf klicke, suggeriert der Pfad, der in WinSCP oben angezeigt wird, dass ich auf der WebsiteB ein 'skriptDir'-Verzeichnis mit dem benötigten PHP-Projekt habe.

Statische Seiten bzw. Bilder. werden korrekt ausgeliefert, wenn ich
WebsiteB/skriptDir/ich-bin-statisch.html
teste. Es passiert aber nichts, wenn ich
WebsiteB/skriptDir/ich-bin-dynamisch.php
ausführe. Ich habe für den Skript probeweise den User www-data zum Eigentümer definiert und www-data die Rechte 0777 zugewisen - das PHP-Skript wird trotzdem nicht ausgeführt.

Ich habe testweise im Verzeichnis 'skriptDir' eine Datei test.php mit der Funkton
phpinfo();
gespeichert. Und zum Eigentümer den User vom WebspaceB mit Rechten 0757 erklärt. Die Webseite
WebsiteB/skriptDir/test.php
wird nicht ausgeführt.

Ich bin an Anregungen interessiert, wie ich Skripts aus einer Instanz des PHP-Projekts auf unterschiedlichen User-Webspaces ausführen kann. Ob die Einbindung/ Sharing für die unterschiedliche Webspaces mit dem symbolischen Link oder mit anderen Mitteln realisiert wird, ist zweitrangig.

Wenn sowas aus bestimmten Gründen nicht geht, bitte ich um Links auf entsprechende Quellen, wo ich meine Wissenslücken füllen kann face-wink.

Gruss, Gustav

Content-Key: 281235

Url: https://administrator.de/contentid/281235

Ausgedruckt am: 28.03.2024 um 20:03 Uhr

Mitglied: 117643
117643 27.08.2015 um 08:17:20 Uhr
Goto Top
Funktioniert PHP den mit Dateien die "echt" in dem WebspaceB liegen? Und was genau passiert wenn du die Webseite aufrufst? Wird dir die .php als Download angeboten?
Mitglied: itebob
itebob 27.08.2015 aktualisiert um 10:56:08 Uhr
Goto Top
Funktioniert PHP den mit Dateien die "echt" in dem WebspaceB liegen?
es ist eine zielführende Frage. Nein, die Lösung funktioniert nicht. Jetzt kann ich aber mit der "echten" Kopie klären, was noch anzupassen ist, damit die Sharing-Lösung userübergreifend funktioniert.
Und was genau passiert wenn du die Webseite aufrufst? Wird dir die .php als Download angeboten?
die Datei wird nicht zum Download angeboten. Ich vermute mal, dass dort:
  • die Datenbankanbindung nicht funktioniert.
  • die include und require-Anweisungen noch zu checken sind
Mitglied: 117643
117643 27.08.2015 um 11:40:21 Uhr
Goto Top
Der berühmte White-Screen of Dead? face-smile Ggf. einmal PHP Display Errors aktivieren und das Error Reporting hochstellen, dann sollte im Browser
der verursachende Fehler hoffentlich angezeigt werden
Mitglied: itebob
itebob 31.08.2015 um 16:43:12 Uhr
Goto Top
Also die "echte" Kopie auf dem WebspaceB habe ich zum Laufen gebracht. Wenn ich detaillierte Fehleranzeige in PHP aktiviere, bekomme ich diese Meldungen:

Warning: Unknown: open_basedir restriction in effect. File(/home/pfad-WebsiteA/index.php) is not within the allowed path(s): (/home/pfad1-WebsiteB:/tmp) in Unknown on line 0

Warning: Unknown: failed to open stream: Operation not permitted in Unknown on line 0

Fatal error: Unknown: Failed opening required '/home/home/pfad2-WebsiteB/index.php' (include_path='.:/usr/share/php:/usr/share/pear') in Unknown on line 0

Hier stackoverflow.com wird diese Option in der Apache httpd.conf empfohlen.

<DirectoryMatch "/home/sites/site81/">
php_admin_value open_basedir "/home/sites/site81/:/tmp/:/"
</DirectoryMatch>

Welche Einstellungen und wo muss ich einrichten , um dem Besucher der WebsiteB, genau genommen dem Apache-Webserver zu erlauben, die Skripte im Verzeichnis WebsiteA auszuführen?


Für open_basedir sind in der
/etc/php5/apache2/php.ini
keine Werte zugewiesen. Also diese Option ist auskommentiert.

Gruss, Gustav
Mitglied: itebob
itebob 31.08.2015, aktualisiert am 01.09.2015 um 12:22:58 Uhr
Goto Top
mit diesen Einstellungen in der httpd.conf

<Directory "/home/pfad-fuer-WebsiteB">
AllowOverride All
Order deny,allow
Allow from all
php_admin_value open_basedir /home/pfad-fuer-WebsiteA
</Directory>

bin ich jetzt einen Schritt weiter gekommen. Das PHP-Skript von der WebsiteA wird beim Laden der Internet-Adresse der WebsiteB ausgeführt - wenn auch noch mit Fehlermeldungen.

Gruss, Gustav
Mitglied: 117643
117643 01.09.2015 um 09:26:41 Uhr
Goto Top
Dein Vorgehen ist soweit richtig gewesen, würde dir aber empfehlen dass sich mal ein Webserverexperte euer Gesamtkonzept und ein Programmirer eure Sicherheitsmaßnahmen anschaut. Wenn sich mehrere User eine Umgebung teilen muss man manürlich ganz genau wissen was man tut, nicht dass ein User auf die Daten eines anderen zugreifen kann.