You are not logged in.

1

Thursday, April 19th 2012, 2:03pm

PHP Fatal error: Class 'WBBACP' not found in

Hallo,

nachdem ich nun seit gestern Abend google und selbst auf Fehlersuche bin, wende ich mich doch an Euch.

Gestern Abend habe ich meine alte Lenny-Version (Debian) auf Squeeze geupdated.

Seitdem bekomme ich das Forum nicht mehr zum Laufen, im Browser erscheint nur ein nichtssagender 500-Fehler.

Das Apache-Log selbst gibt etwas mehr Aufschluss:

Source code

1
2
3
|12:20:57| <roi> [Thu Apr 19 12:19:22 2012] [error] [client xx.xx.xx.xxx] PHP Fatal error: Class 'WBBACP' not found in /var/www/forum3/acp/global.php on line 21 
|12:20:57| <roi> [Thu Apr 19 12:19:23 2012] [error] [client xx.xx.xx.xxx] PHP Fatal error: Class 'WBBACP' not found in /var/www/forum3/acp/global.php on line 21 
|12:20:57| <roi> [Thu Apr 19 12:19:26 2012] [error] [client xx.xx.xx.xxx] PHP Fatal error: Class 'WBBCore' not found in /var/www/forum3/global.php on line 18




Nach meinen Versuchen, den Fehler zu lokalisieren, wollte ich nun das Forum komplett neu aufsetzen (inklusiver neuer Datenbank) und die Daten später importieren. Jedoch bricht auch die NEU-Installation ab. Die Fehlermeldung aus dem Apache-Error-Log:

Source code

1
2
|13:24:57| <roi> [Thu Apr 19 13:20:29 2012] [error] [client xx.xx.xx.xxx] PHP Fatal error: Class 'WBBCore' not found in /var/www/forum3/global.php on line 18 
|13:24:57| <roi> [Thu Apr 19 13:23:49 2012] [error] [clientxx.xx.xx.xxx] PHP Fatal error: Class 'WCFACP' not found in /var/www/forum3b/wcf/acp/global.php on line 18, referer: http://ccccccccccc.eu/forum3b/inst$




Bin für jede Hilfe dankbar.

double-p

Member

  • "double-p" is male

Posts: 57

Location: Buxtehude

  • Send private message

2

Thursday, April 19th 2012, 2:12pm

Reine Glaskugel: aber deutlicher Update in der PHP Version und damit ggfs. die relevante php.ini ersetzt worden und damit der include_path unzureichend.

(und/oder safe_mode) (wenn der Wechsel von kleiner auf groesser-gleich PHP5.3 ist, dann mach ich spaetestens bei Plugin auf weiteren Spass gefasst)

3

Thursday, April 19th 2012, 2:18pm

Ok, ggf. habe ich doch ein paar Infos vergessen.



Das Forum wurde erst Anfang April komplett neu aufgesetzt. Heisst aktuelle Version. Das ganze auf einem Root-Server, PHP.INI ist meiner Meinung nach absolut in Ordnung, hatte ich schon heute morgen gecheckt.

Die sonstige Sites und das Wiki (nach Update) laufen einwandfrei.

Daher war ja meine Vermutung, dass es ggf. noch ein Update zum wbb geben könnte... Aber es ist die aktuellste Version :/ Und laut der Install-Info (Abbruch erfolgt erst im Laufe des Installs) erfüllt der Server alle Vorraussetzungen.

double-p

Member

  • "double-p" is male

Posts: 57

Location: Buxtehude

  • Send private message

4

Thursday, April 19th 2012, 2:21pm

Kann schon sein, mal geschaut, wo WBBCore.class.php liegt und wie sich das mit dem include_path vertraegt?
Ggfs auch mal eine phpinfo() via webserver aufrufen und schaun, was die so erzaehlt zu pfaden.
Ist mehr so Ausschlussprinzip, aber ich habe auch schonmal "gedacht", dass es /etc/php.ini sein _muss_ -- sie war es nicht ;-)

5

Thursday, April 19th 2012, 2:24pm

Hatte eben nochmal über die PHP.INI geschaut :/

Die Pfade scheinen alle korrekt zu sein.

Ein die('BLABLABL') in der WBBCore.class.php brachte jedoch keine Info.

Die Debug-Ausgabe davor für Pfade und Konstanten waren jedoch korrekt.

phpinfo werde ich später noch nachreichen, muss leider gerade nochmal 1-2 Stunden weg.



Trotzdem vielen Dank für deine Bemühungen :)

double-p

Member

  • "double-p" is male

Posts: 57

Location: Buxtehude

  • Send private message

6

Thursday, April 19th 2012, 2:33pm

Naja, wenn er die Class nicht findet, kann sie auch nicht "sterben" =)

7

Thursday, April 19th 2012, 5:05pm

Sodala, ich hab mal phpinfo() 2 mal durchgeschaut. Sieht aber alles absolut in Ordnung aus.



Ist nur ein bisserl lang... Würde ich also nur nach Bedarf hier posten.



Was mein die in der php für die Class angeht... Pfad und co für require_once usw. stimmt, Datei ist vorhanden... nur ein "die('blabalbla')" direkt am Anfang des Scriptes wird nichteinmal mehr ausgegeben.

Alexander Ebert

WoltLab Developer

  • "Alexander Ebert" is male

Posts: 4,732

Location: Berlin

  • Send private message

8

Thursday, April 19th 2012, 5:43pm

Wie sieht die Einstellung für error_reporting aus, er sollte zum Zwecke der Fehlersuche E_ALL oder E_ALL | E_STRICT lauten.
Alexander Ebert
Developer WoltLab® GmbH


9

Thursday, April 19th 2012, 5:54pm

Mit Error-Reporting kommt auch nur die Meldung aus dem Log auf dem Bildschirm der User:

Source code

1
Fatal error: Class 'WBBCore' not found in /var/www/forum3/global.php on line 18




Leider ist die komplette phpinfo zu lang..

Habe sie mal temporal unter http://forum.warofgalaxy.eu/phpinfo.php erreichbar gemacht. Vielleicht hilft sie ja jemandem hier...

Alexander Ebert

WoltLab Developer

  • "Alexander Ebert" is male

Posts: 4,732

Location: Berlin

  • Send private message

10

Thursday, April 19th 2012, 6:02pm

Das erscheint mir dann doch reichlich merkwürdig. Die Fehlermeldung kommt exakt dann, wenn die Klasse nicht gefunden wird (soweit so klar), allerdings gibt es nur zwei Möglichkeiten dafür:
  1. Die Konstante WBB_DIR kann nicht aufgelöst werden, weil die config.inc.php im Forumverzeichnis fehlt oder leer ist
  2. Die Klasse existiert, der Speicherort wird korrekt erkannt, aber die Datei selbst ist leer
Bei dem von mir vorgeschlagenen Error-Reporting-Level müsst die erste Ursache jedoch einen anderen Fehler zu Tage bringen (hast du an einen Apache-Neustart gedacht?).
Alexander Ebert
Developer WoltLab® GmbH


11

Thursday, April 19th 2012, 6:17pm

Zwischendrin durchgeführt, ums Error-Reporting ein- und auszuschalten...

Habe nun einmal manuell Debug-Einträge in die Scripte eingebaut:

Die global.php:

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php 
/** 
* @author Marcel Werk 
* @copyright 2001-2009 WoltLab GmbH 
* @license WoltLab Burning Board License <http://www.woltlab.com/products/burning_board/license.php> 
*/ 
// include config 
echo '---' . dirname(__FILE__) . '<br />'; 
$packageDirs = array(); 
require_once(dirname(__FILE__).'/config.inc.php'); 
echo '---' . RELATIVE_WCF_DIR . '<br />'; 
// include WCF 
require_once(RELATIVE_WCF_DIR.'global.php'); 
if (!count($packageDirs)) $packageDirs[] = WBB_DIR; 
$packageDirs[] = WCF_DIR; 
echo '--- WBBCORE laden<br />'; 
echo '--- PFAD: ' . WBB_DIR . '<br />'; 
// starting wbb core 
require_once(WBB_DIR.'lib/system/WBBCore.class.php'); 
new WBBCore(); 
?>


Und die zugehörige Ausgabe:

Source code

1
2
3
4
5
6
7
---/var/www/forum3 
---wcf/ 
---/var/www/forum3/wcf/ 
---ICH BIN DA 
--ICH BIN AM ENDE 
--- WBBCORE laden 
--- PFAD: /var/www/forum3/


Die Pfade sind korrekt... Wenn ich nun in der WBBCore.class.php direkt am Anfang ein ECHO 'bla' einfüge mit einem anschliessenden die('Ende'); wird nichteinmal mehr dies ausgegeben...



Zusatz, rufe ich die Datei manuell auf: http://forum.warofgalaxy.eu/lib/system/WBBCore.class.php

erscheint genau der gewünschte Debugg-Code.

Alexander Ebert

WoltLab Developer

  • "Alexander Ebert" is male

Posts: 4,732

Location: Berlin

  • Send private message

12

Thursday, April 19th 2012, 6:27pm

Mal eine Debug-Ausgabe zwischen der letzten und vorletzten Zeile eingefügt? Es wäre interessant ob der Parser überhaupt bis zu "new WBBCore()" kommt oder schon vorher verreckt (die Zeilennummern sind nicht zwangsläufig immer korrekt bei PHP!).
Alexander Ebert
Developer WoltLab® GmbH


13

Thursday, April 19th 2012, 6:38pm

Ok, die Idee war nicht schlecht!

Source code

1
2
3
4
5
6
7
8
echo '--- WBBCORE laden<br />'; 
echo '--- PFAD: ' . WBB_DIR . '<br />'; 
// starting wbb core 
require_once("/var/www/forum3/lib/system/WBBCore.class.php"); 
// require_once(WBB_DIR.'lib/system/WBBCore.class.php'); 
echo '-> INCLUDE BEENDET<br />'; 
new WBBCore(); 
echo '---> CLASS WBBCore geladen<br />';


Er scheint die Class.php doch zu includen.. Laut Debug-Text, echo erscheint.

Jedoch die letzte echo-Ausgabe nach dem "new WBBCore();" erscheint nicht mehr.

Was man dort allerdings fixen könnte, ist mir ein Rätsel.

Alexander Ebert

WoltLab Developer

  • "Alexander Ebert" is male

Posts: 4,732

Location: Berlin

  • Send private message

14

Thursday, April 19th 2012, 7:13pm

Kommt denn die Ausgabe in der Klasse selbst, bedenke bei einem exit() bzw. die() wird die gesamte Ausführung abgebrochen, selbstverständlich kommt dann die Debug-Ausgabe ganz am Ende der global.php nicht mehr ;)
Alexander Ebert
Developer WoltLab® GmbH


15

Thursday, April 19th 2012, 7:19pm

Die war selbstverständlich entfernt :)

Es erscheint eben nur die Meldung nach dem require_once aus der global.php: "-> INCLUDE BEENDET<br />"

Die Meldung nach: new WBBCore(); ("CLASS WBBCore geladen") erscheint nicht mehr.

16

Thursday, April 19th 2012, 7:30pm

Sorry für Doppel-Post.



Aber nachdem ein weiterer Admin bei mir mitgearbeitet hat, haben wir den Fehler lokalisiert.

Anscheinend ist "require_once" buggy.... Eine Änderung in "require" löste das Problem...



Dies sehe ich aber wohl eher nur als Workaround an, schliesslich denke ich, wird "require_once" bestimmt nicht ohne Grund verwendet worden sein...

Source code

1
2
3
4
// starting wbb core 
//require_once("/var/www/forum3/lib/system/WBBCore.class.php"); 
require WBB_DIR.'lib/system/WBBCore.class.php'; 
new WBBCore();


Auszug aus der global.php.



Um es auch noch klarzustellen, es gab keine Fehlermeldung, dass require_once einen Fehler hätte oder ähnliches.

Alexander Ebert

WoltLab Developer

  • "Alexander Ebert" is male

Posts: 4,732

Location: Berlin

  • Send private message

17

Thursday, April 19th 2012, 7:40pm

Das kann ein Problem im Zusammenhang mit APC sein, dieser Eintrag hier dürfte damit zu tun haben: https://bugs.php.net/bug.php?id=59749

Versuch mal testweise APC zu deaktivieren bzw. mit der Einstellung apc.stat herumzuspielen.
Alexander Ebert
Developer WoltLab® GmbH


18

Thursday, April 19th 2012, 8:54pm

Nach genauerem Google habe ich nun noch einige Änderungen am ACP vorgenommen...

Und wegen der netten Hilfe hier, möchte ich auch noch meine Lösung kundtun (Änderungen, die wieder den Original-Source vom wbb ermöglichten).

apc.in:

Source code

1
2
3
4
5
apc.include_once_override = 0
apc.stat = 0
apc.stat_ctime = 1
apc.localcache = 1
apc.localcache.size = 512




Vielen herzlichen Dank.

double-p

Member

  • "double-p" is male

Posts: 57

Location: Buxtehude

  • Send private message

19

Friday, April 20th 2012, 8:31am

Da sage ich auch "Danke" - wollte am Wochenende auf ACP umstellen, da weiss ich ja dann gleich Bescheid :)