Probleme bei Verwendung von Classes auf phpBB

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
UweA
Mitglied
Beiträge: 13
Registriert: 19.06.2017 19:22
Wohnort: Volketswil, CH

Probleme bei Verwendung von Classes auf phpBB

Beitragvon UweA » 19.06.2017 19:32

Hallo zusammen

Ich habe Sourcen übernommen die teilweise über die Classes von phpBB in einer Ur-alten Version (1.x) verwendet worden sind.
Nun musste ich diese auf einem neuen Server übernehmen und bekomme lediglich weisse Seiten.
Zuerst musste ich von mysql_ auf mysqli umstellen. Diese teile funktionieren mit PHP 5.6 und 7.0 und auch MySQL Zugrffe laufen einwandfrei.

Jedoch die Sourcen, welche via mysql.php, mysqli.php, template.php oder acl.php laufen bringen Fehler
Ich habe die neueste Version vom intenationalen Server (zuerst gefunden) geladen und installiert (obwohl ich die Installation wohl bis jetzt nicht brauchte)
Wenn ich die mysqli.php referenziere bekomme ich folgenden Fehler :

Class 'phpbb\db\driver\mysql_base' not found in mysqli.php on line 22

Ich habe die Datei in den Default Verzeichnissen und Einstelllungen belassen:

namespace phpbb\db\driver;

call :
class mysqli extends \phpbb\db\driver\mysql_base
{ ....


Irgend einen Hint was ich machen könnte ??

Thanks in advance
Uwe

Benutzeravatar
canonknipser
Supporter
Supporter
Beiträge: 922
Registriert: 10.09.2011 11:14
Kontaktdaten:

Re: Probleme bei Verwendung von Classes auf phpBB

Beitragvon canonknipser » 19.06.2017 21:35

UweA hat geschrieben:... phpBB in einer Ur-alten Version (1.x)
1.x von phpBB hat niemals Objektorientiertes php verwendet, das gab es damals noch nicht. Entweder aus 3.0 oder aus 3.1...
UweA hat geschrieben:Ich habe Sourcen übernommen...
Was für Source? Eigengeschriebener Code, der Funktionen aus phpBB nutzt?
Der wird wohl nicht mehr laufen. Hast du Codebeispiele (größere Blöcke bitte via Pastebin)?


Edit: in der englischen Knowledgebase gibt es einen Artikel, der beschreibt, wie man eigene Seiten unter Nutzung von phpBB erstellt. Dieser ist zwar für phpBB 3.0, aber in weiten Teilen auch noch für phpBB 3.1 oder 3.2 gültig: Knowledge Base - Add a New Custom Page to phpBB
Grüße, canonknipser
"there are only 10 types of people: those, who understand binary and those, who don't"
just arrived ;)
Kein Support via PN, nur im Board und (manchmal) im IRC

UweA
Mitglied
Beiträge: 13
Registriert: 19.06.2017 19:22
Wohnort: Volketswil, CH

Re: Probleme bei Verwendung von Classes auf phpBB

Beitragvon UweA » 20.06.2017 09:00

canonknipser hat geschrieben:
UweA hat geschrieben:... phpBB in einer Ur-alten Version (1.x)

1.x von phpBB hat niemals Objektorientiertes php verwendet, das gab es damals noch nicht. Entweder aus 3.0 oder aus 3.1...

Es wurden anscheinend nur diese php files genutzt, denn ein Forum kann ich nicht erkennen
Wenn ich mir die z.B. mysql.php anschaue, die im "alten Code" von uns verwerndet worden ist sehe ich den Header:
<?php
/***************************************************************************
* mysql.php
* -------------------
* begin : Saturday, Feb 13, 2001
* copyright : (C) 2001 The phpBB Group
* email : support@phpbb.com
*
* $Id: mysql.php,v 1.2 2003/07/11 11:31:53 rob Exp $
*
***************************************************************************/

UweA hat geschrieben:Ich habe Sourcen übernommen...

Was für Source? Eigengeschriebener Code, der Funktionen aus phpBB nutzt? Der wird wohl nicht mehr laufen.


ja - es sind PHP Sourcen die von jemanden im Projekt vor Jahren geschrieben worden sind. Irgendwann hat dann einer die mysql.php, template.php und acl.php verwendet und via include oder require eingebunden.

Ich habe nun auf Grund des neuen PHP - und damit verbunden mysqli.php versucht diese auf dem Server abzulegen und zu nutzen.
Leider bekomm ich die oben angesprochene fehlermeldung, auch wenn die mysql_base.php vorhanden ist

Da es bei einem Hoster liegt komme ich nur an den von mir verwalteten Code, nicht an PHP, kann jedoch zwischen PHP 5.3, 5.5, 5.6 und 7.0 wechseln.
Ich lege noch Code Bespiele mit ab
https://www.phpbb.de/community/pastebin/?mode=view&s=19

Benutzeravatar
canonknipser
Supporter
Supporter
Beiträge: 922
Registriert: 10.09.2011 11:14
Kontaktdaten:

Re: Probleme bei Verwendung von Classes auf phpBB

Beitragvon canonknipser » 20.06.2017 16:06

OK, ich sehe spontan zwei Möglichkeiten:
Entweder du passt das Aufrufcoding entsprechend dem von mir verlinktem KB-Artikel an (dann sparst du dir auch das ganze "Gehampel" mit Connect zur Datenbank etc., weil das von den dann aufgerufenen Routinen bereits gemacht wird) und stellst sie weiterhin quasi neben deinem Forum bereit
Oder du erstellst dir aus deinen Codebausteinen eine Extension Eigene phpBB Erweiterungen erstellen ; hier kann als Basis z.B. die Skeleton extension hilfreiche Dienste leisten. (falls du nicht für deine Anforderung bereits eine passende Extension findest, z.B. Football prediction leage, wenn ich deine Tabellenfelder richtig interpretiere)


Vielleicht beschreibst du näher, was deine Scripte aktuell leisten, dann kann man möglicherweise weitere Empfehlungen aussprechen.
Grüße, canonknipser
"there are only 10 types of people: those, who understand binary and those, who don't"
just arrived ;)
Kein Support via PN, nur im Board und (manchmal) im IRC

UweA
Mitglied
Beiträge: 13
Registriert: 19.06.2017 19:22
Wohnort: Volketswil, CH

Re: Probleme bei Verwendung von Classes auf phpBB

Beitragvon UweA » 20.06.2017 16:18

Du hast es schon gut erfasst .... Es geht um ein Fussball-Tippspiel im Netz.
Dort gibt es eine losgelöste Liga in welcher Nationalteams antreten.
Die Scripte bieten genau dieses - nämlich Tabellenaufbau durch Ergebnisverarbeitung, Ergebnisdienst, Spieltagsanzeige (Semi-Live), etc
Vieles wird vom Hauptspiel übernommen (www.tipmaster.de). Hier sind die nationalen (deutschen) und internationalen Ligen beheimatet und auch
die Aufstellungen werden dort erfasst.
Die Uebernahme der Aufstellungen funktioniert, da hier keine phpBB Bausteine genutzt worden sind (nur mysql- oder jetzt mysqli-Aufrufe)
Es geht also um den Spieltagsaufbau und die Ligaanzeige.
Ich schau mir heut abend mal deinen Link an zur Football prediction league.

Ich kann zu allererst die auftretende Fehlermeldung nicht verstehen ....

Class 'phpbb\db\driver\mysql_base' not found in mysqli.php on line 22

denn sowohl die Verzeicnisse wie auch die Class ist vorhanden. Sie heisst zwar mysql_base.php aber umbenennen oder anhängen von PHP bringt gröbere fehler als diesen.

Danke schon mal fürs weiter helfen ... Hoffe wir lösen den Knoten und das Spiel kann weiter gehen

Benutzeravatar
canonknipser
Supporter
Supporter
Beiträge: 922
Registriert: 10.09.2011 11:14
Kontaktdaten:

Re: Probleme bei Verwendung von Classes auf phpBB

Beitragvon canonknipser » 20.06.2017 16:50

Dann versuch es doch erst mal so:
tausche in der fraglichen Datei das

Code: Alles auswählen

//
// include-kram
//
include ('./config.php');
include ('./inc/common.php');
include ('./inc/functions.php');
 
$starttime = getmicrotime ();
 
require ('./inc/acm.php');
$cache = new acm ();
 
require ('./inc/mysql.php');
$db = new sql_db ();
$db->sql_connect ($dbhost, $dbuser, $dbpasswd, $dbname, $dbport, false);
 
if (!isset ($no_template))
{
    require ('./inc/template.php');
    $template = new template ();
    $template->set_template ('v2');
}
 

durch das:

Code: Alles auswählen

/**
* @ignore
*/
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);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();

aus.
Für die Zuweisung in das Template kommt zwischendrin die Zuweisung der Variablen (da, wo du sie möglicherweise jetzt schon füllst)
so ähnlich wie hier (aus der faq.php von 3.1.10):

Code: Alles auswählen

// Lets build a page ...
$template->assign_vars(array(
   'L_FAQ_TITLE'            => $l_title,
   'L_BACK_TO_TOP'            => $user->lang['BACK_TO_TOP'],

   'SWITCH_COLUMN_MANUALLY'   => (!$found_switch) ? true : false,
   'S_IN_FAQ'               => true,
));

am Schluss dann der Seitentitel, die Zuweisung des Templatesfiles und der Footer:

Code: Alles auswählen

page_header($l_title);

$template->set_filenames(array(
   'body' => 'faq_body.html')
);

page_footer();
Grüße, canonknipser
"there are only 10 types of people: those, who understand binary and those, who don't"
just arrived ;)
Kein Support via PN, nur im Board und (manchmal) im IRC

UweA
Mitglied
Beiträge: 13
Registriert: 19.06.2017 19:22
Wohnort: Volketswil, CH

Re: Probleme bei Verwendung von Classes auf phpBB

Beitragvon UweA » 20.06.2017 19:58

Ich habs dann mal so versucht wie von dir beschrieben. Leider gibts doch wieder einen FATAL und somit läd der Code nicht weiter.
Die Warnings sind ja meist zu ignorieren

Warning: include(./common.php): failed to open stream: No such file or directory in /httpdocs/inc/start_up.php on line 31
Warning: include(./common.php): failed to open stream: No such file or directory in httpdocs/inc/start_up.php on line 31
Warning: include(): Failed opening './common.php' for inclusion (include_path='.:/opt/alt/php56/usr/share/pear:/opt/alt/php56/usr/share/php') in /httpdocs/inc/start_up.php on line 31
Notice: Undefined variable: user in /httpdocs/inc/start_up.php on line 34
Fatal error: Call to a member function session_begin() on a non-object in /httpdocs/inc/start_up.php on line 34

Eine Frage habe ich noch zum Path-Build. ... Beim "Failed opening" kommt opt/alt/php56/
phpinfo() sagt aber /opt/alt/php55

in der im script angesprochenen comomn.php werden NUR Variablen gesetzt die im Spiel verwendet werden, nicht aber PATHs

das hauptscript habe ich im patebin mal komplett geladen
https://www.phpbb.de/community/pastebin/?mode=view&s=20
ebenso das page_header
https://www.phpbb.de/community/pastebin/?mode=view&s=21
und page_tail
https://www.phpbb.de/community/pastebin/?mode=view&s=22


Ein Auszug aus der commons.php:

Code: Alles auswählen

<?php

define ('PAGE_SCORES', 1);
define ('PAGE_DETAILS', 2);
define ('PAGE_STATS_TEAMS', 3);
define ('PAGE_STATS_PLAYERS', 4);
define ('PAGE_MINUTENSPIELPLAN', 5);
define ('PAGE_KALENDER', 6);
define ('PAGE_TIPS', 7);
define ('PAGE_REGELN', 8);
define ('PAGE_SATZUNG', 9);
define ('PAGE_VERLAUF', 10);
define ('PAGE_VERLAUF_IMG', 11);


define ('ANSETZUNGEN_TABLE', 'tm_nm_ansetzungen');
define ('LOGS_TABLE', 'tm_nm_logs');
define ('SAISONS_TABLE', 'tm_nm_saisons');
define ('SPPLWE_TABLE', 'tm_nm_spplwe');
define ('STATS_TABLE', 'tm_nm_stats');
define ('TABELLEN_TABLE', 'tm_nm_tabellen');
define ('TEAMS_TABLE', 'tm_nm_teams');
define ('TIPS_TABLE', 'tm_nm_tips');
...
>


Ich weiss ich bin manchmal nervig wenn ich nicht weiter komme .....

Verschoben von Support-Forum nach Coding & Technik am 20.06.2017 21:22 durch Dr.Death

Benutzeravatar
canonknipser
Supporter
Supporter
Beiträge: 922
Registriert: 10.09.2011 11:14
Kontaktdaten:

Re: Probleme bei Verwendung von Classes auf phpBB

Beitragvon canonknipser » 21.06.2017 06:01

OK, damit ich das jetzt richtig verstehe:
Dein Script, was du über einen Link oder direkt aufrufst, heisst scores.php und liegt im Haupt-Ordner von phpBB (also da, wo auch die config.php von phpBB liegt).

Wenn ja, dann hast meine Anweisungen nicht richtig verstanden:
Anstelle dieses Teils:

Code: Alles auswählen

include ('./inc/start_up.php');
$data['page'] = PAGE_SCORES;
$css_to_include = './markup/scores.css';
//include ('./inc/page_header.php');
//$template->set_filenames (array (
//    'body' => 'scores.html')
//);
// Lets build a page ...
$template->assign_vars(array(
   'L_FAQ_TITLE'            => $l_title,
   'L_BACK_TO_TOP'            => $user->lang['BACK_TO_TOP'],
 
   'SWITCH_COLUMN_MANUALLY'   => (!$found_switch) ? true : false,
   'S_IN_FAQ'               => true,
));
 
page_header($l_title);
 
$template->set_filenames(array(
   'body' => 'faq_body.html')
);

muss dieser Teil dort hin:

Code: Alles auswählen

/**
* @ignore
*/
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);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();

Damit wird die common.php aus phpBB aufgerufen, die die Initialisierung der kompletten Umgebung vornimmt; incl. Anmeldung an der Datenbank, die in der config.phpeingetragen ist.
Zusätzlich musst du, damit deine Spiel-Spezifischen Konstanten definiert werden, deine eigene commons.php includen. Diese liegt wohl, wenn ich dich richtig verstehe, im Pfad inc.
Also muss HINTER das include($phpbb_root_path . 'common.' . $phpEx); noch eine Zeile
include($phpbb_root_path . 'inc/commons.' . $phpEx);
Dann wird wohl auch noch der Teil mit "Page Header..." benötigt pastebin/?mode=view&s=21
ich nehme an, der liegt auch im inc-Verzeichnis?
Also noch ein
include($phpbb_root_path . 'inc/page_header.' . $phpEx); dahinter. Aber spätestens hier bekommst du von phpBB was auf die Finger, da die "Superglobals" $_POST, $_GET usw. deaktiviert sind. Variablen aus Übergaben erhältst du über das $request-Objekt, egal ob es GET, POST, COOKIE oder SERVER-Daten sind: https://area51.phpbb.com/docs/31x/codin ... ml#general
also aus data['ha'] = (isset ($_POST['ha'])) ? $_POST['ha'] : $_GET['ha']; wird $data['ha] = $request->variable('ha', 0)

usw ...
Ganz zum Schluss wird dann das template (natürlich nicht das faq_body.html, sondern dein eigenes) zugewiesen und ausgegeben:

Code: Alles auswählen

page_header('Mein Titel');

$template->set_filenames(array(
   'body' => 'faq_body.html')
);

page_footer();


Da ist also eine Menge an Code umzuschreiben und hat eigentlich nichts in diesem Unterforum zu suchen. Gut, dass dein Code einigermaßen ordentlich dokumentiert ist ;)


Wenn du dir das nicht selber zutraust, kannst du auch gerne eine Ausschreibung bei uns in der Jobbörse machen
Grüße, canonknipser
"there are only 10 types of people: those, who understand binary and those, who don't"
just arrived ;)
Kein Support via PN, nur im Board und (manchmal) im IRC

Verschoben von Coding & Technik nach Extension Bastelstube am 21.06.2017 06:01 durch canonknipser

Verschoben von Extension Bastelstube nach Coding & Technik am 21.06.2017 06:44 durch canonknipser

UweA
Mitglied
Beiträge: 13
Registriert: 19.06.2017 19:22
Wohnort: Volketswil, CH

Re: Probleme bei Verwendung von Classes auf phpBB

Beitragvon UweA » 21.06.2017 16:24

Danke soweit canonknipser

Bin ein paar Schritte weiter .. keiner angezeigten Fehler und keine fehler im PHP Log ...
ABER

auch nur eine weisse Seite

da werde ichweiter dran arbeiten. Hoffe auch das lösen zu können
Gereetz
U

UweA
Mitglied
Beiträge: 13
Registriert: 19.06.2017 19:22
Wohnort: Volketswil, CH

Re: Probleme bei Verwendung von Classes auf phpBB

Beitragvon UweA » 22.06.2017 14:50

Hallo nochmal,

Ich habe es jetzt relativ weit geschafft ... Zumindest bekomme ich eine Foren-Seite aufgeschaltet .... was aber nicht grad mein Ziel war :D :(
Ich wollte unsere HTML Seiten sehen

Ich werde jetzt wohl alles auf PURE-PHP zurück rüsten, damit die Seiten korrekt laufen. Ein Forum kann ich ja hinterher dazu bauen

:-?


Zurück zu „Coding & Technik“