Zmień raport o błędach php, aby ukryć ostrzeżenia tylko dla określonej witryny [Debian | Ubuntu]


Wyobraź sobie parę
       sites-enabled
dostępne od
/etc/apache2/sites-available
... (Tylko dystrybucje oparte na Debianie działają w ten sposób.)
Czy można wyciszyć dźwięk?
       warning
wiadomości ze skryptów php z

konkretnej witrynie

bez dotykania rzeczywistego
       htdocs
?
Zwykle istnieje kilka rozwiązań, które pozwalają osiągnąć cokolwiek:
  • Dodać do
             error_reporting()       
    dyrektywa np
             error_reporting(E_ERROR);       
    wykonywalne skrypty.
  • Ustaw php_flags na
             .htaccess       
    takie pliki:
             php_flag display_errors off       
  • Posługiwać się
               ini_set         
    wewnątrz skryptów:
    ini_set('display_errors', 'Off');ini_set('display_startup_errors', 'Off');error_reporting(0);
  • Przygotować
               @         
    funkcje, które generują ostrzeżenia lub błędy.
  • + Zmień
             php.ini       
    faktycznie powiedzieć
             error_reporting = E_ALL ^ E_WARNING       
             display_errors  = 1       

Jednak wszystko to oznacza dotknięcie htdocs lub wprowadzenie zmian na całym świecie. Wyobrażać sobie
       htdocs
są montowane tylko do odczytu. Jak wyłączyć alerty (lub powiadomienia) tylko dla określonych witryn?
Zakładam, że Debian/Ubuntu ma
       a2ensite
niektóre konfiguracje z jakiegoś powodu i mam nadzieję, że uda mi się je zmienić. Jest
       log_level
w przykładowej witrynie konfiguracyjnej jest dostępna, ale obsługuje liczbę wpisów do zalogowania. Nie wiadomości wysyłane przez skrypty php.
Ręczne dodawanie sekcji do
       php.ini
lub
       apache2.conf
lub
       httpd.conf
zadziała też. Jeśli to możliwe.
Zobacz też:

Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jeśli masz dostęp do konfiguracji apache vhost, możesz oczywiście użyć dyrektyw php_flag wewnątrz wirtualnego hosta w katalogu dostępnym dla witryn. Więc mają zastosowanie tylko do tego vhosta.
Dodaj coś takiego w swoim wirtualnym hoście:
<IfModule mod_php5.c>
php_admin_flag display_errors off
</IfModule>


EDYTOWAĆ:

Jeśli chcesz, aby wyświetlane były tylko rzeczywiste błędy, możesz użyć dyrektywy php
         error_reporting
z wartością całkowitą opisującą typy poziomów błędów, które chcesz wyświetlić:
<IfModule mod_php5.c>
php_admin_flag display_errors on
php_admin_value error_reporting 22517
</IfModule>

Jest to równoważne z ustawieniem
error_reporting = E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT & ~E_DEPRECATED;

w php.ini. Więcej możliwych wartości, na przykład tutaj:
https://web.archive.org/web/20 ... tings
https://web.archive.org/web/20 ... tings
Kalkulator wartości komunikatów o błędach:
http://www.bx.com.au/tools/ult ... izard
http://www.bx.com.au/tools/ult ... izard
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Dodałem :
<IfModule mod_php5.c>
php_admin_flag display_errors on
php_admin_value error_reporting 30711
</IfModule>

w/etc/apache2/sites-enabled/work i wszystko działa dobrze.
Tak, wiem, że muszę naprawić te powiadomienia, ale pracuję nad starym skryptem i będę musiał do niego wrócić, ponieważ teraz rozwiązało to mój problem i tego szukał operator. Mam nadzieję, że to komuś pomoże.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Nie można tego zrobić bez .htaccess lub globalnego zastosowania konfiguracji. Apache nie „widzi” plików poza swoim folderem głównym (htdocs), a pliki .htaccess działają tylko w folderze serwisu. php_flag nie działa również poza .htaccess.
Dlatego nie można się bez niego obejść

trochę

modyfikacja lub plik .htaccess.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się