root_path - KONFLIKT ?

Du hast Probleme beim Einbau oder bei der Benutzung eines Mods? In diesem Forum bist du richtig.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
uwe.ha
Mitglied
Beiträge: 834
Registriert: 18.05.2001 02:00

root_path - KONFLIKT ?

Beitrag von uwe.ha »

Hallo zusammen,

ich habe (schon länger) auf meinen Content-Seiten (außerhalb/parallel/oberhalb des phpBB-Ordners) den similar-Mod, um zum Content passende Diskussionen anzuzeigen.
Dieser wird auf einer Contentseiten z.B. eingebunden durch:

Code: Alles auswählen

<?
define('PHPBB_ROOT_PATH', './../phpBB/');
$keyword = 'skilänge+lang+ski';
include (PHPBB_ROOT_PATH . 'similar.inc.php');
?>
In der similar.inc.php (diese liegt IM phpBB-Ordner) steht dann:

Code: Alles auswählen

define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
Klappt auch alles wunderbar ...

Heute habe ich dann auf (teilweise anderen) Content-Seiten "Einfache Anzeige der letzten Themen in Div-Box" nach folgender Vorlage eingebaut: viewtopic.php?p=977650#p977650

Dort steht:

Code: Alles auswählen

$config_path = '/phpBB/';   // path to config.php
$root_path = 'http://www.meine-seite.de/phpBB/';      // link path
Klappt auch soweit alles Bestens ...

Nur wenn auf EINER Seite BEIDE Mods/Snippets vorhanden sind, dann wird "similar" (im Quelltext zuerst) korrekt angezeigt, aber bei "letzte Themen" kommt dann die Fehlermeldung:

Code: Alles auswählen

[phpBB Debug] PHP Warning: in file /www/htdocs/xxxxxxxx/letzte-themen.inc.php on line 79: mysql_connect(): Access denied for user 'xxxxxxxx'@'localhost' (using password: NO)
Unable to select server.
und der Rest der Seite (footer) wird dann auch nicht mehr geladen :(

Wahrscheinlich, weil der phpbb_root_path vom (erstgeladenen) "Similar" nicht zum root_path zum "letzte Themen" passt ... würde ich als Laie vermuten.
Kann das sein, bzw. wie könnte eine Lösung aussehen?

Hier die funktionierenden "Letzten Themen" (rechts in Spalte):
http://goo.gl/Fa0T8A

Hier mit funktionierenden "similar" (am Seitenende), aber Problem bei "letzten Themen" (Seiten-footer wird danach auch nicht mehr geladen)
http://goo.gl/kvW5Zs

DANKE!
Uwe
Uwe
Benutzeravatar
HabNurNeFrage
Ehemaliges Teammitglied
Beiträge: 1627
Registriert: 17.01.2010 20:22
Wohnort: An der Ostsee
Kontaktdaten:

Re: root_path - KONFLIKT ?

Beitrag von HabNurNeFrage »

Hi,

wenn beide Root-Path Definitionen funktionieren, sollte normalerweise eine reichen.

Teste doch mal, ob beide Einbauten korrekt funktionieren, wenn Du die Zeilen
$config_path = '/phpBB/'; // path to config.php
$root_path = 'http://www.meine-seite.de/phpBB/'; // link path
auf einer solchen Seite mal auskommentierst.

Sowie die common.php eingebunden ist, kann auch auf die config zugegriffen werden.

LG

PS: Sollte das klappen, nimm doch überall:
define('PHPBB_ROOT_PATH', './../phpBB/');
include (PHPBB_ROOT_PATH . 'similar.inc.php');
| HomeStory.org - the friendly Community | Forum für alle Lebenslagen | <"}))}~ | Nicht nachmachen: Meine phpBB Spielereien |
var shoppen = geld.replace (/geld/g, 'bloedsinn'); if (geld < 1) { return home; };
uwe.ha
Mitglied
Beiträge: 834
Registriert: 18.05.2001 02:00

Re: root_path - KONFLIKT ?

Beitrag von uwe.ha »

Hallo,

in die Richtung (beim 2. Script das root_path raus nehmen) hatte ich auch schon getestet ... funktioniert aber nicht :(
Zumal es einmal phbb_root_path heißt und beim 2. Script nur root_path.

Und wenn, würde es auch nichts bringen, da nicht auf allen Seiten beide Scripts vorhanden sind; also auch das 2. Script alleine aufrufbar sein muss.

Trotzdem Danke für den Lösungsansatz!
Uwe
Uwe
Benutzeravatar
HabNurNeFrage
Ehemaliges Teammitglied
Beiträge: 1627
Registriert: 17.01.2010 20:22
Wohnort: An der Ostsee
Kontaktdaten:

Re: root_path - KONFLIKT ?

Beitrag von HabNurNeFrage »

Hi,

dann versuche auf allen Seiten:

Code: Alles auswählen

define('PHPBB_ROOT_PATH', './../phpBB/');
include (PHPBB_ROOT_PATH . 'similar.inc.php');
$root_path = $phpbb_root_path;
Als Ersatz für:

Code: Alles auswählen

$config_path = '/phpBB/';   // path to config.php
$root_path = 'http://www.meine-seite.de/phpBB/';      // link path  
LG
| HomeStory.org - the friendly Community | Forum für alle Lebenslagen | <"}))}~ | Nicht nachmachen: Meine phpBB Spielereien |
var shoppen = geld.replace (/geld/g, 'bloedsinn'); if (geld < 1) { return home; };
uwe.ha
Mitglied
Beiträge: 834
Registriert: 18.05.2001 02:00

Re: root_path - KONFLIKT ?

Beitrag von uwe.ha »

Moment ... du verwechselst da was ...

Mit

Code: Alles auswählen

define('PHPBB_ROOT_PATH', './../phpBB/');
include (PHPBB_ROOT_PATH . 'similar.inc.php');
$root_path = $phpbb_root_path;
binde ich NUR die "similar" in die jeweilige Seite ein.
IN der similar.inc.php ist dann der eigentliche Aufruf zu DB ... hier wird über phpbb_root_path zur common gelinkt.

Und dieser (Aufruf der DB) ist ein anderer, als der aus dem "letzte Themen"-Script. Hier wird über root_path zur config gelinkt.

Siehe bitte nochmal ganz oben mein 1. Beitrag.

DANKE!
Uwe
uwe.ha
Mitglied
Beiträge: 834
Registriert: 18.05.2001 02:00

Re: root_path - KONFLIKT ?

Beitrag von uwe.ha »

So, ich habe jetzt auch mal beim 2. (letzte Themen) Script den connect zur DB gemacht (wie auch im 1. Script):

Code: Alles auswählen

define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './phpBB/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
Klappt auch ... wenn das Script alleine auf einer Seite ist.
Wenn aber das 1. (similar-Mod) zuvor auf der Seite vorhanden ist, kommt wieder folgende Fehlermeldung:
Fatal error: Cannot redeclare deregister_globals() (previously declared in /www/htdocs/w007422d/phpBB/includes/startup.php:47) in /www/htdocs/w007422d/phpBB/includes/startup.php on line 114
Da scheint ein Hinweis darauf zu sein, dass die DB es nicht mag, dass sie zum 2. Mal aufgerufen/conected wird.

Hilft euch das weiter?
Gibt es hierfür vielleicht einen Lösungsansatz?
Vielleicht in der Form:
if DB-connect vorhanden, die connect überspringen.
if keine DB-connect = connect ausführen
... oder so ...

VIELEN DANK!

EDIT: Juhuuu ... hab die Lösung gefunden :D

Mahony schrieb woanders unter http://phpbb3.pytalhost.com/viewtopic.p ... aa543#p832
Du hast anscheinend die common.php mehrmals includiert.

Abhilfe schafft eine Änderung von

Code: Alles auswählen
include($phpbb_root_path . 'common.' . $phpEx);

nach

Code: Alles auswählen
include_once($phpbb_root_path . 'common.' . $phpEx);

in der entsprechenden Datei.
Mit once wird die Verbindung zur DB nur EIN Mal ausgeführt, und damit der Konflikt vermieden :D
Uwe
Benutzeravatar
HabNurNeFrage
Ehemaliges Teammitglied
Beiträge: 1627
Registriert: 17.01.2010 20:22
Wohnort: An der Ostsee
Kontaktdaten:

Re: root_path - KONFLIKT ?

Beitrag von HabNurNeFrage »

/* edit: Hat es bereits selbst herausgefunden */

Hi,

dann nimm anstelle von include() einmal include_once(), um die common einzubinden.

LG
Zuletzt geändert von HabNurNeFrage am 10.04.2014 14:52, insgesamt 1-mal geändert.
| HomeStory.org - the friendly Community | Forum für alle Lebenslagen | <"}))}~ | Nicht nachmachen: Meine phpBB Spielereien |
var shoppen = geld.replace (/geld/g, 'bloedsinn'); if (geld < 1) { return home; };
uwe.ha
Mitglied
Beiträge: 834
Registriert: 18.05.2001 02:00

Re: root_path - KONFLIKT ?

Beitrag von uwe.ha »

Hi,

genau, das war's ... siehe auch oben mein EDIT ;-)
Trotzdem DANKE an Dich!!!
Uwe
uwe.ha
Mitglied
Beiträge: 834
Registriert: 18.05.2001 02:00

Re: root_path - KONFLIKT ?

Beitrag von uwe.ha »

Aaarrrggghhh ... :evil: ... es war zu schön, um wahr zu sein ...

Das mit dem doppelten includen ist ja durch include_once gelöst ... ABER ...

Jetzt habe ich das Problem mit der relativen Verlinkung im root-path.

In der similar.inc.php steht:

Code: Alles auswählen

$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
Wie ich herausgefunden habe, ist hier der Pfad ( ./ ) irrelevant, weil die similar.inc.php (z.B. in der domain.de/a/aa/home.php) immer jeweils "relativ" includes wird:

Code: Alles auswählen

<?
define('PHPBB_ROOT_PATH', './../../phpBB/');
$keyword = 'skitest';
include (PHPBB_ROOT_PATH . 'similar.inc.php');
?>
Da hier bereits der Pfad ZUR similar ( ./../../phpBB/) definiert ist, ist der Pfad IN der similar (./) irrelevant; den kann ich ändern in was auch immer, ohne dass es Auswirkungen hat.

Da das 2. (aktuelle-themen) Script aber NICHT jeweils händisch/relativ included wird, sondern jeweils durch

Code: Alles auswählen

<?
include ($_SERVER['DOCUMENT_ROOT']."/aktuelle-themen.inc.php")
?>
habe ich ein Problem mit der Verlinkung zur common.php, da ich IN der aktuelle-themen.inc.php irgendwie keinen absoluten Pfad eingeben kann, und so das 2. Script (wenn es denn OHNE das 1. Script vorhanden ist udn somit die Verbindung zur DB selbst aufbauen muss) entweder nur im Hauptverzeichnis oder Unterverzeichnis funktioniert.

Gibt es da eine Lösung für?
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './phpBB/';
funktioniert nur im Hauptverzeichnis
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './../phpBB/';
funktioniert nur im Unterverzeichnis
Und der absolute Pfad
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : '/phpBB/';
funktioniert irgendwie gar nicht :cry: ... warum nicht, bzw. wie würde es funktionieren?

VIELEN DANK!
Uwe
uwe.ha
Mitglied
Beiträge: 834
Registriert: 18.05.2001 02:00

Re: root_path - KONFLIKT ?

Beitrag von uwe.ha »

Ich nehme mal an, dass es KEINE absolute Verlinkung für phpbb_root_path gibt.

Dann bleibt mir wohl keine andere Wahl, als dort, wo ich die "aktuellen-themen" includen will, jeweils separat den (relativen) php_root_path zu definieren nach dem Muster:

Code: Alles auswählen

<?
define('PHPBB_ROOT_PATH', './../phpBB/');
include (PHPBB_ROOT_PATH . 'aktuelle-themen.inc.php');
?>
... zumindest funktioniert es so ;-)
Uwe
Antworten

Zurück zu „[3.0.x] Mod Support“