php sicher sturkturiert. Includes auch ausserhalb von public_html möglich?

Kitro

Grünschnabel
Hallo Leute

Aktuell sitze ich an meinem ersten etwas größeren PHP Projekt. Dieses liegt dann auf einem public Web-Hoster.
Das Projekt besteht aus einer kleinen Webseite (index.php, fertig.php, impresum.html) und einen SOAP Webservice (myws.php). Intern baut sich die Webseite und der Webservice aus includes (helper.inc.php) zusammen. Zusätzlich gibt es noch ein Ordner mit Konfigurationsdateien (konfig1.json)
Aktuell liegen alle Dateien unterhalb des \public_html Ordners.

Wenn ich das richtig verstanden habe, sind damit alle diese Dateien im Prinzip über eine URL erreichbar, was ich nicht will.
Mein Ziel ist, dass ich mit meinedomain.de die Webseite öffnen kann und mit ws.meinedomain.de/myws.php?wsdl oder ws.meinedomain.de/myws.php aus den Webservice zugreifen kann. Sollte jemand irgendwelche ...php?page=1 oder ...n.de/helper/helper.inc.php Aufrufe durchführen, sollen diese nicht möglich sein.

Bisher sie die Struktur wie folgt aus:
Code:
-/public_html
--/konfigs   (Dateien sollen nur vom Entwickler über FTP Zugriff bearbeitbar sein)
---konfig1.json
---konfig2.json
--/webseite1  (Projekt Haupteinstieg per Domain meinedomain.de)
---index.php
---fertig.php
---/webservice  (Aufruf per subdomain ws.meinedomain.de/myws.php)
----myws.php
---/data   (Interne Dateien die included werden per require_once für index.php und fertig.php)
----dbcon.inc.php
----dblog.txt
----wslog.txt
---/logic  (Interne Dateien die included werden per require_once für index.php und fertig.php)
----logic1.inc.php
----logic2.inc.php
----/helper (Interne Dateien die included werden per require_once für index.php und fertig.php)
-----helper1.inc.php
-----helper2.inc.php
---/ui  (werden von index.php per Link aufgerufen)
----impressum.html
----design.css
----dynamisches.js
Am liebsten wäre es mir, wenn die Dateien aus den Ordnern konfigs, data,logic ausserhalb von public_html liegen würden. Nur geht das? wie muss ich die URI angeben? Kann ich mit .htaccess da noch etwas machen? Muss ich zur Sicherheit noch etwas beachten?

Vielen Dank für bis hierher lesen :)

Beste Grüße
Cornflake
 
Zuletzt bearbeitet von einem Moderator:
Hi

Also nur PHP und FTP sollen auf bestimmte Ordner zugreifen dürfen, aber nicht Benutzer direkt.

Vermutlich ein Apache-Server (?), dann geht das relativ einfach:
In die betroffenen Ordner je eine Datei namens .htaccess (mit Punkt, und Groß/kleinschreibung wichtig), Inhalt:
Code:
Order Deny,Allow
Deny from all

Ein mögliches Problem: Je nach FTP-Programm kann der Dateiname mit Punkt am Anfang eventuell etwas seltsam sein (zB. Datei wird hochgeladen, ist aber im FTP-Programm nicht sichtbar. Also nicht wundern.)
 
Thx :)
Ja ist Apache.
Ok werde ich mal ausprobieren.

1. Aber wäre es überhaupt machbar/sinnvoll ausserhalb von public_html alle Includedateien wie z.B. logic1.inc.php abzulegen und dann von der fertig.php per require_once darauf zuzugreifen?

2. Bzw. wie schreibe ich am besten in die .htaccess, damit ich obwohl der Ordner/die Datei auf dem FTP unter: /public_html/webseite1/webservice/myws.php ich direkt mit ws.meinedomain.de/myws.php darauf zugreifen kann?
Und wie müssen die URIs lauten, damit ich dann in der Datei myws.php intern ohne Fehlermeldungen auf andere *.inc.php Dateien zugreifen kann?

Beste Grüße
Cornflake
 
1. Ja, das ist die übliche Vorgehensweise.

2. Na ja, mit einem Texteditor deiner Wahl?

Und wie müssen die URIs lauten, damit ich dann in der Datei myws.php intern ohne Fehlermeldungen auf andere *.inc.php Dateien zugreifen kann?

Was für URIs? Du musst über das Dateisystem des Servers gehen. Entweder eine absolute Pfadangabe oder (besser) eine Pfadangabe, die mit __DIR__ beginnt und dann den relativen Pfad zur einzubindenden Datei geht.
 
Zu 1: Kennst du dazu passende Tutorials? Hab leider noch kein gutes Tutorial gefunden, dass aufklärt, wo welche Dateien eines PHP Projektes abgelegt werden.
Meist stehen da nur technische Aufrufe die include oder einzelene Befehle erklären, aber nicht die Softwarearchitektur bzw den strukturellen Aufbau.

Zu 2: Ja Texteditor ist schon klar, aber wie müsste der Inhalt lauten. Habe folgendes probiert, aber dann bei weiteren Seitenaufrufen Probleme bekommen (siehe unten). Und wie müsste das für den ws lauten?
Code:
### .htaccess inhalt im root ###
# Aufruf von www.meinedomain.de/ 
# auf /public_html/webseite1/index.php umleiten

RewriteCond %{REQUEST_URI} ^/
RedirectMatch "^/?$" /webseite1/index.php
RewriteRule "^/?(.+)" "http://www.meinedomain.de/webseite1/index.php" [NC,L]
 
Falls doch noch jemand passende Tutorials kennt und weiß wie die .htaccess aufgebaut werden müsste, wäre das super.
 
Hi

es gibt keine wirklichen Regeln für den Projektaufbau, und was sinnvoll ist hängt stark von der Art des Projekts und den eingesetzten Libs usw. ab. Jedenfalls, ein paar Beispiele hier: http://stackoverflow.com/questions/...hp-based-directory-structure-for-a-large-site

Bzw. wie schreibe ich am besten in die .htaccess, damit ich obwohl der Ordner/die Datei auf dem FTP unter: /public_html/webseite1/webservice/myws.php ich direkt mit ws.meinedomain.de/myws.php darauf zugreifen kann?
Wenns nur um diese eine Datei geht, statt zB. alle Dateien im Verzeichnis:
Code:
RewriteRule ^/?myws.php$ webservice/myws.php [L]
 

Neue Beiträge

Zurück