Erweiterungen
 Neuer Beitrag  |  Ganz nach oben  |  Alle Beiträge  |  Suchen  |  Einloggen   Vorheriger Beitrag  |  Nächster Beitrag 
 Re: HILFE !!!!
Autor: fontajos 
Datum:   24.11.03 18:56

Hallo Katja,

ok.. dann wollen wir mal...

Nomenklatur: {shopdir} = Grundverzeichnis des PhPepperShops (nach Entpacken des ZIPs = phpeppershop_src)

Es gibt im PhPepperShop grundsätzlich vier Verzeichnisstufen:

1.) {shopdir}/
2.) {shopdir}/shop/
3.) {shopdir}/shop/Frameset/
4.) {shopdir}/shop/Admin/

Die allermeisten für den Shopkunden ausführbaren Scripts findet man im Verzeichnis Nr. 2. (z.B. das bekannte USER_ARTIKEL_HANDLING_AUFRUF.php). Die Ausnahmen sind index.php in Nr. 1 und top.php in Nr. 3. Im Admin Verzeichnis (Nr. 4) sind dann alle Administrationsscripts untergebracht (Admin sollte .htaccess geschützt sein).

Damit wir Scripts von dort wo wir uns befinden (1-4) auch von überall sonst (1-4) includen können, wird der Include Pfad jeweils vor den eigentlichen Includes entsprechend dem Standort des Scripts mit folgendem ini_set Befehl angepasst:

  if (PHP_OS == "WINNT" || PHP_OS == "WIN32" || strlen($HTTP_ENV_VARS["windir"]) > 0) {$pd = ";";} else {$pd = ":";}
  ini_set("include_path", "./$pd../$pd../../$pd./Frameset$pd./shop$pd/usr/local/lib/php");

Dies war ein Beispiel für ein Script aus Nr. 2.

Nr. 1: ini_set("include_path", "../:./shop/Admin:./:../");

Nr. 3: ini_set("include_path", "./$pd../$pd../../$pd../Frameset$pd/usr/local/lib/php");

Nr. 4:   ini_set("include_path", "./$pd../$pd../../$pd../Frameset$pd./shop/Admin$pd./Admin$pd../Admin$pd/usr/local/lib/php");

$pd steht dabei für Path-Delimiter (Pfad Trennzeichen: Bei Windows ist das ein Semikolon beim Rest der Welt ein Doppelpunkt.)

Der 'Trick' / Sinn der ini_set - Übung ist es, den Pfad jeweils so anzupassen, dass aus dem aktuellen Verzeichnis (./) alle weiteren Verzeichniss (Nr. 1-4) via relativer Adressierung (../ oder ../../ oder shop/Admin u.s.w. ...) gefunden werden können -> und somit alle dort plazierten Dateien included werden können.


Wenn man nun kein ini_set hat sollte man am einfachsten den Provider wechseln ;-)... da dies aber nicht zur Debatte steht, muss man für JEDES SCRIPT welches andere Dateien included die jeweils richtigen Pfade vor die zu includenden Dateien setzen. Ich mach das jetzt mal für die Datei {shopdir}/shop/Admin/SHOP_ADMINISTRATION.php (also ein Nr. 4 Script):

Original:
  // include Pfad anpassen. Dabei werden die unterschiedlichen Delimiter-Zeichen fuer
  // Windows und UNIX/Linux beruecksichtigt. Danke fuer die Idee an Eduard Mas Walgram.
  // Windows --> Delimiter = Strichpunkt | UNIX/Linux --> Delimiter = Doppelpunkt
  if (PHP_OS == "WINNT" || PHP_OS == "WIN32" || strlen($HTTP_ENV_VARS["windir"]) > 0) {$pd = ";";} else {$pd = ":";}
  ini_set("include_path", "./$pd../$pd../../$pd../Frameset$pd./shop/Admin$pd./Admin$pd../Admin$pd/usr/local/lib/php");

  // Einbinden der benoetigten Module (PHP-Scripts)
  // Bei Unklarheiten, siehe include-Hierarchie in der Dokumentation
  if (!isset($ADMIN_Database)) {include("ADMIN_initialize.php");}
  if (!isset($ADMIN_SQL_BEFEHLE)) {include("ADMIN_SQL_BEFEHLE.php");}
  if (!isset($SHOP_ADMINISTRATION_ARTIKEL)){include("SHOP_ADMINISTRATION_ARTIKEL.php");}
  if (!isset($USER_ARTIKEL_HANDLING)){include("USER_ARTIKEL_HANDLING.php");}


...angepasst:
  // include Pfad anpassen. Dabei werden die unterschiedlichen Delimiter-Zeichen fuer
  // Windows und UNIX/Linux beruecksichtigt. Danke fuer die Idee an Eduard Mas Walgram.
  // Windows --> Delimiter = Strichpunkt | UNIX/Linux --> Delimiter = Doppelpunkt
  if (PHP_OS == "WINNT" || PHP_OS == "WIN32" || strlen($HTTP_ENV_VARS["windir"]) > 0) {$pd = ";";} else {$pd = ":";}
//  ini_set("include_path", "./$pd../$pd../../$pd../Frameset$pd./shop/Admin$pd./Admin$pd../Admin$pd/usr/local/lib/php");

  // Einbinden der benoetigten Module (PHP-Scripts)
  // Bei Unklarheiten, siehe include-Hierarchie in der Dokumentation
  if (!isset($ADMIN_Database)) {include("./ADMIN_initialize.php");}
  if (!isset($ADMIN_SQL_BEFEHLE)) {include("./ADMIN_SQL_BEFEHLE.php");}
  if (!isset($SHOP_ADMINISTRATION_ARTIKEL)){include("./SHOP_ADMINISTRATION_ARTIKEL.php");}
  if (!isset($USER_ARTIKEL_HANDLING)){include("../USER_ARTIKEL_HANDLING.php");}


-------------

Ok, nochmals zusammengefasst. ALLE DATEIEN welche den Befehl include oder include_once oder require oder require_once benutzen, müssen auf die zu includende Datei angepasste Pfade erhalten -> dann gehts auch ohne ini_set.

Einen weiteren Pferdefuss gibt es noch: Wenn man z.B. von {shopdir}/shop/Frameset/top.php (Nr. 3) aus die Datei {shopdir}/shop/USER_ARTIKEL_HANDLING.php (Nr. 2) included, so wird das nicht funktionieren, weil PHP danach als current working directory (./) den Pfad zu Nr. 3 gespeichert hat und nicht - wie erwartet das Nr. 2. Folglich funktionieren (nur dann) alle Anpassungen in den Nr. 2 Scripts nicht mehr, weil der Pfad nicht mehr stimmt. Eine Lösung hierfür wäre vielleicht die Dateien vom Frameset ins Nr. 2 zu zügeln und das Frameset in der index.php ({shopdir}/shop/Admin/indextemplate.txt) entsprechend anzupassen...

Kurzum... es wird wohl immer beim basteln bleiben, bis man zu einem vernünftigen Provider geht -> dazu zählen Tripod und Co. freilich nicht.

Gruss

José

=======================
Entwickler PhPepperShop
=======================

Nachricht bearbeitet (11-24-03 19:24)

 Auf diesen Beitrag antworten  |  Forenübersicht  |  Antworten ausblenden   Neuerer Beitrag  |  Älterer Beitrag 

 Beiträge Autor  Datum
 Hallo!  Neu
sascha12 05.05.03 11:06 
 Re: Hallo!  Neu
sascha12 05.05.03 11:06 
 Re: Hallo!  Neu
sascha12 05.05.03 11:24 
 Jose`....  Neu
sascha12 05.05.03 11:36 
 Re: Jose`....  Neu
fontajos 05.05.03 13:46 
 Re: Hallo!  Neu
sascha12 05.05.03 14:17 
 Re: Hallo!  Neu
Peppermartin 06.05.03 22:06 
 Re: Hallo!  Neu
sascha12 06.05.03 22:45 
 Re: Hallo!  Neu
Peppermartin 06.05.03 22:50 
 Re: Hallo!  Neu
Peppermartin 06.05.03 22:57 
 Re: Hallo!  Neu
fontajos 07.05.03 09:22 
 Re: Hallo!  Neu
fontajos 08.05.03 02:17 
 Re: Hallo!  Neu
sascha12 08.05.03 22:55 
 Re: Hallo!  Neu
sascha12 13.05.03 09:34 
 Re: Hallo!  Neu
sascha12 19.05.03 22:49 
 Re: Hallo!  Neu
fontajos 02.07.03 10:13 
 Re: Hallo!  Neu
heinzelmann05 03.08.03 22:18 
 HILFE !!!!  Neu
heinzelmann05 07.08.03 20:50 
 Re: HILFE !!!!  Neu
fontajos 07.08.03 21:24 
 Re: HILFE !!!!  Neu
heinzelmann05 07.08.03 21:58 
 Re: HILFE !!!!  Neu
Magiccat 24.11.03 17:51 
 Re: HILFE !!!!  Neu
fontajos 24.11.03 18:13 
 Re: HILFE !!!!  Neu
Magiccat 24.11.03 18:19 
 Re: HILFE !!!!  Neu
fontajos 24.11.03 18:56 
 Re: HILFE !!!!  Neu
Magiccat 24.11.03 19:19 


 Forenübersicht  |  Zur Registrierung 
 Benutzer-Login
 Benutzername:
 Passwort:
 Login-Daten im Browser merken:
   
 Passwort vergessen?
Bitte E-Mail-Adresse oder Benutzername unten eingeben. Ein neues Passwort wird Ihnen per E-Mail zugeschickt.
 Zur Registrierung
Zur Registrierung