php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.12.2009, 12:03  
Neuer Benutzer
 
Registriert seit: 18.12.2009
Beiträge: 6
PHP-Kenntnisse:
Fortgeschritten
DerMaista befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Nach Serverumzug funktioniert Funktionsaufruf in einer Klasse nicht mehr

Hallo an alle,

Nach einem Serverzumzug von einem Suse-Linux_System zu einem Debian Server haben wir Probleme mit einigen Funktionsaufrufen.

Wir nutzen eine Funktion canShowNavigationEntry($id), welche die Rechte des eingeloggten Users überprüft. An dieser Stelle wird folgendes überprüft.
in admin.asset.php
PHP-Code:
if ( $loggedInUser->canShowNavigationEntry 21 ) )
{
...


in User.class.php
PHP-Code:
function canShowNavigationEntry $id )
{
return 
in_array $id$this->fetchNavigationEntryIds() );

Die Funktion fetchNavigationEntryIds gibt ein leeres Array zurück. Allerdings wird diese Funktion noch an anderer Stelle eingesetzt(z.B. bei der Hauptnavigation) und funktioniert dort einwandfrei.

in User.class.php
PHP-Code:
function fetchNavigationEntryIds $disabled NULL )
{
   
// Rückgabe initialisieren
   
$ret = array();
   
// Standardwerte setzen
   
if ( !is_bool $disabled ) ) $disabled false;
      
   
// Globale Variablen
   
$database =& $this->getDatabase();
...

Der Aufruf "$this->getDatabase()" liefert nichts zurück, bzw. er ruft die Funktion garnicht auf. Habe zum Testen direkt zu Beginn der Funktion ein echo gesetzt und es kam keine Ausagbe (bzw. nur die für die Hauptnavigation).

Auf unserem alten Server lief es einwandfrei. Habe auch schon "register_globals" in der php.ini auf on gesetzt und den apache2 neugestartet, allerdings ohne Auswirkungen.

Hat jemand noch eine Idee?

Viele Grüße,

Christian
DerMaista ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 18.12.2009, 12:15  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Wurde von PHP 4 auf 5 umgezogen? Entferne mal das & vor dem $this->getDatabase();
Flor1an ist offline  
Alt 18.12.2009, 12:18  
Neuer Benutzer
 
Registriert seit: 18.12.2009
Beiträge: 6
PHP-Kenntnisse:
Fortgeschritten
DerMaista befindet sich auf einem aufstrebenden Ast
Standard

Ja, von PHP Version 4.3.4 auf 5.2.6-1+lenny4.

Hab das "&" weggenommen, aber immernoch das gleiche. Die Funktion wird nicht aufgerufen.

Geändert von DerMaista (18.12.2009 um 12:28 Uhr).
DerMaista ist offline  
Alt 18.12.2009, 12:33  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Dann gib nochmal per echo direkt vor $database =& $this->getDatabase(); etwas aus. Wird das ausgegeben? Nein-> warum nicht wo wird das letzte mal was ausgegeben.
Flor1an ist offline  
Alt 18.12.2009, 12:41  
Neuer Benutzer
 
Registriert seit: 18.12.2009
Beiträge: 6
PHP-Kenntnisse:
Fortgeschritten
DerMaista befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
    function fetchNavigationEntryIds $disabled NULL )
    {
        
// Rückgabe initialisieren
        
$ret = array();
        
// Standardwerte setzen
        
if ( !is_bool $disabled ) ) $disabled false;
        
        echo 
"vorAufruf<br>";
        
// Globale Variablen
        
$database $this->getDatabase();
        echo 
"nachAufruf<br>";
        echo 
"<pre>";
        
print_r $database );
        echo 
"</pre>"
Als Ausgabe hatte ich folgendes.

Code:
vorAufruf
nachAufruf

Database Object
(
    [connection] => 
    [hostName] => 
    [databaseName] => 
    [insertedHistory] => 
)
Die Datenbankverbindung ist leer, da die Funktion nicht aufgerufen wird. Es wird auch keine Fehlermeldung ausgegeben(z.B. Function oder classs nicht bekannt). Das ist ja gerade das Sonderbare.
DerMaista ist offline  
Alt 18.12.2009, 12:43  
Erfahrener Benutzer
 
Registriert seit: 28.03.2008
Beiträge: 1.847
HPR1974 wird schon bald berühmt werden
Standard

Das halte ich mal für ein Gerücht dass die Funktion nicht aufgerufen wird, wie sonst soll wohl das Objekt zustande kommen?
HPR1974 ist offline  
Alt 18.12.2009, 12:43  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.269
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von DerMaista Beitrag anzeigen
Der Aufruf "$this->getDatabase()" liefert nichts zurück, bzw. er ruft die Funktion garnicht auf.
Dann solltest du an dieser Stelle wohl mit Debugging ansetzen.
Chriz ist offline  
Alt 18.12.2009, 12:45  
stebi
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von DerMaista Beitrag anzeigen
Die Datenbankverbindung ist leer, da die Funktion nicht aufgerufen wird.
Die Funktion wird doch aufgerufen, du hast doch ein Datenbankobjekt, allerdings nicht richtig initialisiert, aber das Objekt ist da, ansonsten wäre $database NULL.
 
Alt 18.12.2009, 12:53  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.240
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Ohne weiteren Code wird dir hier niemand helfen können.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline  
Alt 18.12.2009, 13:06  
Neuer Benutzer
 
Registriert seit: 18.12.2009
Beiträge: 6
PHP-Kenntnisse:
Fortgeschritten
DerMaista befindet sich auf einem aufstrebenden Ast
Standard

Oh danke...hab es gefunden.

Im Kontruktor der DbElement-Klasse habe ich folgendes geändert:

PHP-Code:
$this->database =& $database
in
PHP-Code:
$this->database $database
Eine Frage noch. Muss ich alle "=&" durch "=" ersetzen? Ist dies in PHP 5 nicht mehr notwendig?

Vielen dank schonmal!!
DerMaista ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Bild 2mal Speichern mit einer Klasse maclaim1988 PHP Tipps 2009 6 18.12.2009 07:59
Klasse für Objekteigenschaft erzeugen? Asipak PHP-Fortgeschrittene 25 30.05.2009 19:45
[Erledigt] Klasse in anderer Klasse benutzen Screeze PHP Tipps 2009 2 04.01.2009 14:57
Methode einer anderen Klasse aufrufen Luka PHP-Fortgeschrittene 15 09.11.2008 14:19
Klasse aus externer Klasse aufrufen kostja PHP Tipps 2008 8 07.08.2008 14:13
Session funktioniert nicht bei session.use_cookies = Off Quagga PHP Tipps 2007 13 13.01.2007 18:27
MySQL - Klasse: Wie da mysql_close benutzen Igäl PHP Tipps 2006 5 01.10.2006 23:09
Instanz einer Klasse in einer anderen Klasse verwenden Buhmann PHP-Fortgeschrittene 7 28.10.2005 23:12
Rückgabewert auf einer Klasse anders als in der Klasse micbur PHP Tipps 2005-2 6 10.06.2005 15:06
[Erledigt] Problem mit Übergabe einer Klasse in PHP4 PHP-Fortgeschrittene 10 08.01.2005 21:00
Klasse holt sich die Klasse PHP-Fortgeschrittene 9 07.10.2004 11:53
[Erledigt] Brauche Hilfe bei meiner ersten Klasse PHP-Fortgeschrittene 9 24.09.2004 17:09
KLasse auslagern funktioniert nicht Crypi PHP Tipps 2004 17 23.09.2004 16:16
Klassenobjet in anderer Klasse benutzen inu PHP Tipps 2004 6 19.09.2004 10:58
Klasse ändern UniQ PHP Tipps 2004 5 24.08.2004 14:46

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
getdatabase(\\,\\) liefert keine datenbank, functionsaufruf 2 rückgabewerte php, php problem serverumzug, fucntion wird nach serverumzug php, 1 und 1 umzug schwierigkeiten

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:51 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum