PHP özel hata: Bir sayfada bir hata diğer sayfalarını taramaya kullanıcılarını etkiler

0 Cevap php

Ben kullanıcıya dost bir hata iletisi görüntüler ve beni düzeltmek için hata günlükleri benim uygulamada bir özel PHP hata işleyicisi var.

Ancak, ben bir hata bir sayfada meydana geldiğinde, hata sitenin ilgisiz parçalar üzerindeki kullanıcılardan rapor olduğunu uygulamadan beri fark ettik. O / some_site_section / view_one.php bir hata olduğunu söylüyorlar:

Call to a member function getLinks() on a non-object [/var/www/vhosts/domain.com/httpdocs/views/view_one.php:121]

Requested page: /some_site_section/view_one.php
Logged in user: 4152

Ben o sitenin ilgisiz bölümlerini gezen diğer kullanıcılardan birçok başka hata iletileri alabilirsiniz. Hata mesajı aynıdır, ama hata var kodu (view_one.php tetiklenir ve güncelliği tamamen ilgisiz olarak view_two.php olan olamazdı istenen sayfa ve kullanıcı kimliği gösterisi - biri kod adı edilemedi diğerinden, örneğin).

Call to a member function getLinks() on a non-object [/var/www/vhosts/domain.com/httpdocs/some_site_section/view_one.

Requested page: /some_other_site_section/view_two.php
Logged in user: 2285

Bu çünkü bir hata her güncel oturumu öldürür Sanki bulunuyor. Bu mümkün mü? Apache ve PHP nasıl etkileşim hakkında çok şey bilmiyorum; birkaç kullanıcıların aynı iş parçacığı veya benzer clueless-sondaj şey olması mümkün mü?

Benim kapatma fonksiyonu aşağıdaki gibidir; Sadece bana hata ayıklama bilgisi bir demet verir, özellikle özel bir şey yapmaz. Bu onlardan biri için tetikleniyor sitenin tüm kullanıcılar için shutdown () tetiklemek gibi görünüyor dışında kalan diğer tüm yollarla çalışıyor.

function shutdown() {

 if (($error = error_get_last()) && !(isset($_REQUEST['isDev']) || _USER_IS_DEV)) {
     if (isset($error['type']) && ($error['type'] == E_ERROR || $error['type'] == E_PARSE || $error['type'] == E_COMPILE_ERROR)) {
            ob_end_clean();

            if (!headers_sent()) {
                header('HTTP/1.1 500 Internal Server Error');
            }

            include "500.php";

            $error_message = $error['message']." [".$error['file'].":".$error['line']."]";

            $error_message .= "\n\nRequested page: " . $_SERVER['REQUEST_URI'];

            $error_message .= "\n\nLogged in user: " . _AUTH_USER_ID . " (" . _AUTH_USERNAME . ")";

            $headers = "";

            foreach (apache_request_headers() as $key => $value) {  
                $headers .= "$key: $value\n";
            }

            $error_message .= "\n\nHeaders: \n\n" . $headers;

            $request = "";

            foreach ($_REQUEST as $key => $value) {  
                $request .= "$key: $value\n";
            }

            $error_message .= "\n\nRequest: \n\n" . $request;

   @mail(_SITE_TECH_EMAIL, "ERROR on public site", $error_message, "From:" . _SITE_TITLE . " <" . _SITE_ADMIN_EMAIL . ">");
        }
    }
}

0 Cevap