Z przyczyn niezależnych od mnie nie mogę ustawić display_errors = 0 i log_errors = 1 w php.ini na moim serwerze produkcyjnym. Wiem, że mogę ustawić error_reporting(0);
, aby całkowicie tłumić wszystkie komunikaty o błędach, ale ma to wpływ zarówno na błędy dziennika, jak i wyświetlane błędy. Miałem nadzieję, że będzie odpowiednik ustawienia display_errors = 0 i log_errors = 1 w czasie wykonywania. czy to możliwe? Dzięki.Ustawienie display_errors = 0 i log_errors = 1 bez php.ini
Odpowiedz
Oba są PHP_INI_ALL
, więc można po prostu użyć ini_set
w czasie wykonywania.
ini_set('display_errors', 0);
ini_set('log_errors', 1);
Znaczenie tego należy ustawić tylko raz dla tej sesji, a nie na każdej stronie? – keybored
@keybored nie, oznacza, że jest ustawiony, gdy te dwa wiersze kodu są wykonywane, a następnie pozostaje aktywny, gdy skrypt jest aktywny, np. dla tego pojedynczego żądania. nie ma nic wspólnego z sesjami. – Gordon
Dobrze, dziękuję bardzo. :) – keybored
spróbuj tego:
ini_set('display_errors', 0);
ini_set('log_errors', 1);
Widzę podwójnie: S – erm3nda
Jeśli używasz PHP jako modułu i nie może korzystać php.ini główny dyrektywa, ani overrided php.ini od żądanego folderu, a ty nie włącza go w php, możesz spróbować użyć .htaccess habilities.
Na szczycie folderu zawierającego aplikację, umieścić plik .htaccess z: php_flag display_errors 0
powinny mieć zastosowanie jedynie do wyświetlacza wyjściowego php nie dziennikach.
W każdym razie dostarczone rozwiązanie dotyczące ini_set() będzie miało zastosowanie tylko do stron, które go zawierają. Uwaga: Jeśli masz włączone, wartość display_error będzie działać podczas analizowania. Ale jeśli uzyskasz do niego bezpośredni dostęp, nie będzie działać.
Prawdopodobnie zechcesz to zrobić w pliku .htaccess, więc dyrektywy obowiązują zanim skrypt zacznie parsować. To także pozwoli uniknąć śmiertelnych błędów. –
Można to zrobić tylko poprzez moduł Apache jako moduł. – erm3nda