Links mit fehlendem Slash
Links mit fehlendem Slash
Hallo,
ich habe eine funktionierende Version von ConPresso auf einen Zweitserver kopiert um einige Aenderungen zu testen, ohne auf dem echten System zu arbeiten. Nun werden jedoch alle Links, welche durch ConPresso ausgegeben werden, falsch generiert, d.h.
- ConPresso liegt beispielsweise im D:\testing\, wobei D:\ der DocRoot ist.
- Alle Links werden als http://localhosttesting/ angezeigt, i.e. der Slash zwischen dem Server und dem ersten Verzeichnis fehlt.
Hatte jemand auch aehnliche Probleme/Vorschlaege?
Besten Dank,
msto.
ich habe eine funktionierende Version von ConPresso auf einen Zweitserver kopiert um einige Aenderungen zu testen, ohne auf dem echten System zu arbeiten. Nun werden jedoch alle Links, welche durch ConPresso ausgegeben werden, falsch generiert, d.h.
- ConPresso liegt beispielsweise im D:\testing\, wobei D:\ der DocRoot ist.
- Alle Links werden als http://localhosttesting/ angezeigt, i.e. der Slash zwischen dem Server und dem ersten Verzeichnis fehlt.
Hatte jemand auch aehnliche Probleme/Vorschlaege?
Besten Dank,
msto.
Hallo,
der "Basis-URL:" ist richtig eingestellt, i.e. http://localhost/testing/.
Ich habe jedoch den Grund gefunden, in dem ich das Include common.inc.php ein wenig analysiert habe. Dort wird ja in den Zeilen 208ff. die Variable $auto_base_url aufgebaut. Nun bis vor die Zeile(n)
scheint alles in Ordnung. Innerhalb dieser Zeile sind meiner Meinung nach einige Elemente ein wenig komisch: weshalb wird "...2common.inc.php" entfernt und nicht "...common.inc.php" -- weshalb die 2? Wegen dem trailing Slash? Zusaetzlich stiehlt strlen(...$DOCROOT...) ein Slash zu viel, i.e. das leading Slash zwischen Host (und Port) und Directory.
Ich habe das bei mir mal mit dem folgenden Workaround gefixt:
Habe ich was uebersehen oder woher kommt das Problem?
Besten Dank,
Marc.
der "Basis-URL:" ist richtig eingestellt, i.e. http://localhost/testing/.
Ich habe jedoch den Grund gefunden, in dem ich das Include common.inc.php ein wenig analysiert habe. Dort wird ja in den Zeilen 208ff. die Variable $auto_base_url aufgebaut. Nun bis vor die Zeile(n)
Code: Alles auswählen
$auto_base_url .= substr(str_replace('\\', '/', __FILE__),
strlen(str_replace('\\', '/', realpath($DOCROOT))),
-strlen('_include/2common.inc.php'));
Ich habe das bei mir mal mit dem folgenden Workaround gefixt:
Code: Alles auswählen
$auto_base_url .= '/' . substr(str_replace('\\', '/', __FILE__),
strlen(str_replace('\\', '/', realpath($DOCROOT))),
-strlen('_include/2common.inc.php'));
Besten Dank,
Marc.
- balu
- ConPresso-Entwickler
- Beiträge: 1748
- Registriert: 01.01.1970 01:00
- Hat sich bedankt: 81 Mal
- Danksagung erhalten: 133 Mal
Hi,
der Abschnitt ist nicht ganz so einfach zu durchschauen, da muss ich glaube ich mal ein paar Kommentare einfuegen .
Die 2 ist Programmiererfaulheit, damit der endende / entfernt wird. Ich haette dort auch -strlen('_include/common.inc.php')-1 schreiben koennen, um denselben Effekt zu erhalten.
Wieso bei Dir strlen(...$DOCROOT...) den fuehrenden Slash zuviel abzieht, komme ich im Moment nicht. Das klappt bei allen bisherigen Installationen jedenfalls recht gut.
Wenn Du im System oder bei der Installation die Basis-URL angegeben haettest, duerfte das Problem jedenfalls garnicht auftreten, da in diesem Fall der von Dir angegebene String benutzt werden wuerde.
Die automatische Basis-URL (die in den Systemeinstellungen angezeigt wird, damit ihr sie kontrollieren koennt) muesste bei Dir dann ebenfalls inkorrekt da stehen?
Du koenntest mal vor dem "2common"-Abschnitt das folgende ergaenzen und mir die Ausgabe schicken - dann faellt das Debuggen etwas leichter.
Balu
der Abschnitt ist nicht ganz so einfach zu durchschauen, da muss ich glaube ich mal ein paar Kommentare einfuegen .
Die 2 ist Programmiererfaulheit, damit der endende / entfernt wird. Ich haette dort auch -strlen('_include/common.inc.php')-1 schreiben koennen, um denselben Effekt zu erhalten.
Wieso bei Dir strlen(...$DOCROOT...) den fuehrenden Slash zuviel abzieht, komme ich im Moment nicht. Das klappt bei allen bisherigen Installationen jedenfalls recht gut.
Wenn Du im System oder bei der Installation die Basis-URL angegeben haettest, duerfte das Problem jedenfalls garnicht auftreten, da in diesem Fall der von Dir angegebene String benutzt werden wuerde.
Die automatische Basis-URL (die in den Systemeinstellungen angezeigt wird, damit ihr sie kontrollieren koennt) muesste bei Dir dann ebenfalls inkorrekt da stehen?
Du koenntest mal vor dem "2common"-Abschnitt das folgende ergaenzen und mir die Ausgabe schicken - dann faellt das Debuggen etwas leichter.
Code: Alles auswählen
echo '__FILE__: '.htmlspecialchars(__FILE__).'<br />';
echo 'SERVER["DOCUMENT_ROOT"]: '.htmlspecialchars($_SERVER['DOCUMENT_ROOT']).'<br />';
echo 'SERVER["PATH_TRANSLATED"]: '.htmlspecialchars($_SERVER['PATH_TRANSLATED']).'<br />';
echo 'SERVER["SCRIPT_NAME"]: '.htmlspecialchars($_SERVER['SCRIPT_NAME']).'<br />';
echo 'DOCROOT: '.htmlspecialchars($DOCROOT).'<br />';
Hi,
danke fuer die Erklaerungen.
Also, die Outputs sind wie folgt:
Viel mehr muss ich gar nicht sagen, hehe, DOCROOT etc., Du hast ja an alle wichtigen Daten gedacht.
Ach, vielleicht noch das: PHP Version 5.0.5, Build Date: Sep 5 2005 15:50:13, Virtual Directory Support: enabled.
Danke und Gruss,
Marc.
danke fuer die Erklaerungen.
Also, die Outputs sind wie folgt:
Code: Alles auswählen
__FILE__: E:\testing\_include\common.inc.php
SERVER["DOCUMENT_ROOT"]: E:/
SERVER["PATH_TRANSLATED"]:
SERVER["SCRIPT_NAME"]: /testing/_rubric/index.php
DOCROOT: E:/
Ach, vielleicht noch das: PHP Version 5.0.5, Build Date: Sep 5 2005 15:50:13, Virtual Directory Support: enabled.
Danke und Gruss,
Marc.
Noch als kurzer Nachtrag (mag vielleicht auch noch von Interesse sein):
ergibt an der selben Stelle
was ja im Endeffekt das leading Shlash durch die Laenge 3 abschneidet.
Code: Alles auswählen
echo 'realpath(DOCROOT): '.realpath($DOCROOT).'<br />';
Code: Alles auswählen
realpath(DOCROOT): E:\