[php]Apache stürzt ab [erledigt]

burnred

Powerhamster
ID: 34739
L
4 Mai 2006
684
40
Es handelt sich um die Klasse Userdetails die je nach einstellung das users über die magische Funktion __get die Eigenschaften zurückgeben soll. Dazu hat jede Eigenschaft eine variable view_eigenschaft. Den Zugriff auf diese Variable soll dynamisch sein und genau diese Zeile macht Probleme.

Ich erhalte keinerlei Fehlermeldungen nur eine vom Browser das die Verbindung zurück gesetzt wurde.
ApacheLog schrieb:
[Wed May 31 14:11:04 2006] [notice] Parent: child process exited with status 3221225477 -- Restarting.
PHP:
public function __get($nm)
       {
        
        
        switch($nm)
        {
            case 'nickname':
            case 'userid':
            case 'created_at':
            case 'lastclick':
            case 'edit_at':
                                    return $this->$nm;
                                    break;
            default:                $view = $this->{'view_'.$nm}; //<--- Die Zeile macht die Probleme
                                    if
                                    (
                                        isset($_SESSION['user']) && 
                                        (
                                            $_SESSION['user']->getUserid() == $this->userid ||
                                            $view == Userdetails::VIEW_USER ||
                                            ($_SESSION['user']->isMember() && $view == Userdetails::VIEW_CLAN) 
                                        ) 
|| $view == Userdetails::VIEW_PUBLIC
                                    )
                                    return $this->$nm;
                                    break;
        }          
       }
 
Zuletzt bearbeitet:
Ich geh mal davon aus, dass du genügend getestet hast um zu sagen, dass der Fehler auch wirklich in der Zeile liegt. Als Workaround würd ich einfach eval vorschlagen, das sollte keine Probleme geben. (Mal von den üblichen eval-Geschichten abgesehen) Nen Absturz ist aber irgendwie nicht das was man erwartet.. es wäre mal interessant was passiert, wenn du das Script direkt mit dem Interpreter aufrufst (php foo.php in der Konsole). Falls es dann ne Segfault gibt, hift vllt schon ein Update auf die neuste Version, sonst wärs Zeit für nen Bugreport :)

Syntaktisch gesehen scheint mir das aber erstmal richtig, aber noch was anderes, ein paar Zeilen weiter unten schreibst du
Code:
$view = Userdetails::VIEW_USER ||
, ich glaube da fehlt ein = ;) Und nach den Bedingungen des ifs machst du weiter komische Sachen,
Code:
$view == Userdetails::VIEW_PUBLIC
vllt da eher das = weg? ;) Vielleicht hast du auch einfach nur komisch kopiert, wer weiß ;)
 
Zuletzt bearbeitet:
naja Fehlerquelle war ne andere

böderweise hat ein Zugriff auf die view Eigenschaften auch die Methode aufgerufen was darin resultiert das der versucht view_view_eigenschaft zu lesen, was in einer Endlosschleife endet (Rekursion??), daher schmiert der Apache warscheinlich ab.

Danke für den Hinweis mit dem fehlenden = :biggrin:, aber daran lags ja nicht.
 

Ähnliche Themen

Antworten
1
Aufrufe
489
Gelöschtes Mitglied 142857
G