Notice: Constant DIR_FS_CATALOG already defined
Ja już wypowiedziało się display_errors
w php.ini
, ale nie działa.
Jak sprawić, by PHP nie wyświetlało takich rzeczy w przeglądarkach?
AKTUALIZACJA
Umieściłem display_errors = Off
tam, ale nadal zgłasza takie powiadomienia
Czy to problem z PHP 5.3?
Zgłaszanie również wielu stosów połączeń ...
php
error-handling
constants
user198729
źródło
źródło
grep display_errors /path/to/php.ini
aby sprawdzić, czy gdzieś w pliku jest zastępowana linia. To właśnie się ze mną działo.ini_set('display_errors',0)
w swoim pliku php. Kiedy ini-settings nie działają, powinieneś sprawdzić, czyphpinfo()
pokazuje żądaną wartość. Jeśli nie, albo zmieniłeś zły plik ini, albo coś nadpisuje twoje wartości z php.iniOdpowiedzi:
Można ustawić
display_errors
do0
lub używaćerror_reporting()
funkcji.Jednak powiadomienia są irytujące ( częściowo rozumiem ), ale służą celowi. Nie powinieneś definiować stałej dwa razy, drugi raz nie zadziała i stała pozostanie niezmieniona!
źródło
display_errors
nie działa zgodnie z oczekiwaniami.phpinfo()
aby sprawdzić, czy to ustawienie faktycznie ma zastosowanie. Wybacz mi, ale mocno wątpię, czy znalazłeś błąd w PHP 5.3 - uwierzę tylko wtedy, gdy go zobaczę :)local value
jestmaster value
ini_set
dyrektyw lubphp_ini_flag
ustawień w.htaccess
plikach.Z dokumentacji PHP ( error_reporting ):
Inne ciekawe opcje tej funkcji:
źródło
W przypadku php wiersza poleceń ustaw
w
/etc/php5/cli/php.ini
php
wykonanie polecenia pomija powiadomienia.źródło
źródło http://php.net/manual/en/function.error-reporting.php
źródło
Użyto tego wiersza w Twoim kodzie
Myślę, że to dla ciebie piekło pełne.
źródło
Szukasz:
źródło
/usr/bin/php -d error_reporting="E_ERROR | E_WARNING | E_PARSE" -f /path/to/file.php
do mojego crontabWolę nie ustawiać
error_reporting
wewnętrznego kodu. Ale w jednym przypadku, starszego produktu, jest tak wiele powiadomień, że muszą być ukryte.Więc użyłem następującego fragmentu kodu, aby ustawić wartość skonfigurowaną po stronie serwera,
error_reporting
ale odjąćE_NOTICE
s.Teraz ustawienie raportowania błędów można dalej konfigurować w
php.ini
lub.htaccess
. Tylko powiadomienia będą zawsze wyłączone.źródło
Możesz ustawić
ini_set('display_errors',0);
w swoim skrypcie lub zdefiniować, które błędy mają być wyświetlaneerror_reporting()
.źródło
ini_set
wspomnianej tutaj metody,error_reporting(0)
metoda wspomniana w innym miejscu nie przyniosła żadnego efektu.nie powodując błędów:
Jeśli naprawdę musisz, zmień raportowanie błędów za pomocą error_reporting () na E_ALL ^ E_NOTICE.
źródło
Dla kodu PHP:
Do
php.ini
konfiguracji:źródło
Niedawno znalazłem tę sztuczkę. Uderz @ na początku linii, co może spowodować ostrzeżenie / błąd.
Jak za dotknięciem czarodziejskiej różdżki znikają.
źródło
Użyj phpinfo () i wyszukaj,
Configuration File (php.ini) Path
aby zobaczyć, która ścieżka pliku konfiguracyjnego dla php jest używana. PHP może mieć wiele plików konfiguracyjnych w zależności od używanego środowiska. Zwykle dla konsoli jest to:/etc/php5/cli/php.ini
a dla php uruchamianego przez Apache to:
/etc/php5/apache2/php.ini
A potem ustaw
error_reporting
tak, jak potrzebujesz:http://www.phpknowhow.com/configuration/php-ini-error-settings/ http://www.zootemplate.com/news-updates/how-to-disable-notice-and-warning-in-phpini- plik
źródło
Jak wspominali niektórzy, a jeśli jesteś autorem kodu, powinieneś poprawić wszystkie te błędy, powiadomienia itp., Ponieważ spowoduje to więcej problemów na dłuższą metę niż ich brak (zwłaszcza podczas aktualizacji systemu operacyjnego). W przypadku serwera błędy powinny być wyświetlane tylko w dziennikach, a nie na ekranie klienta.
Aby uniknąć błędów w przeglądarce, używasz
display_errors
flagi, którą już znalazłeś:Teraz prawdziwy problem występuje, gdy uruchamiasz kod kogoś innego. W takim przypadku modyfikacja kodu prawdopodobnie zostanie nadpisana za każdym razem, gdy aktualizujesz ten kod. Utrzymywanie tego kodu jest uciążliwe.
W moim przypadku używam PHP,
crontab
abywp-cron.php
skrypt był uruchamiany od czasu do czasu. Otrzymywałem błędy wysyłane na moje e-maile, co staje się uciążliwe, gdy otrzymujesz jeden e-mail co 10 minut! W takim przypadku jednak system Wordpress ma plik konfiguracyjny zawierający aWP_DEBUG
i wywołująerror_reporting()
funkcję, więc próba zmianyerror_reporting
zmiennej w wierszu poleceń nie zadziała. Zamiast tego musisz edytowaćwp-config.php
plik w folderze głównym i upewnić się, żeWP_DEBUG
jest ustawiony nafalse
. W przeciwnym razie przez cały czas będziesz otrzymywać wszystkie ostrzeżenia i powiadomienia.źródło
Możesz sprawdzić, czy stała jest już zdefiniowana za pomocą:
źródło
Uważam, że wykomentowanie display_errors w php.ini nie zadziała, ponieważ domyślnie jest włączone. Zamiast tego musisz ustawić go na „Wył.”.
Nie zapomnij ponownie uruchomić Apache, aby zastosować zmiany w konfiguracji.
Zauważ również, że chociaż możesz ustawić display_errors w czasie wykonywania, zmiana go tutaj nie wpłynie na błędy KRYTYCZNE.
Jak zauważyli inni, najlepiej podczas programowania powinieneś uruchomić funkcję error_reporting na najwyższym możliwym poziomie i włączoną opcję display_errors. Choć denerwujące przy pierwszym uruchomieniu, te błędy, ostrzeżenia, powiadomienia i surowe porady dotyczące kodowania sumują się i pozwalają ci stać się lepszym programistą.
źródło
Podwójnie zdefiniowane stałe
Aby naprawić określony błąd, możesz sprawdzić, czy stała jest już zdefiniowana przed jej zdefiniowaniem:
Osobiście zacząłbym od wyszukiwania w bazie kodów dla stałej
DIR_FS_CATALOG
, a następnie zastąpiłbym podwójną definicję tym.Ukrywanie powiadomień PHP w tekście, wielkość liter po kolei
PHP udostępnia
@
operator kontroli błędów, którego można używać do ignorowania określonych funkcji, które powodują powiadomienia lub ostrzeżenia.Korzystając z tego, możesz zignorować / wyłączyć powiadomienia i ostrzeżenia w swoim kodzie dla każdego przypadku, co może być przydatne w sytuacjach, w których błąd lub powiadomienie jest celowe, zaplanowane lub po prostu irytujące i niemożliwe do rozwiązania u źródła . Umieść
@
znak przed funkcją lub zmienną, która powoduje powiadomienie, a zostanie zignorowana.Oto przykład:
Więcej na ten temat można znaleźć w dokumentacji PHP Error Control Operators .
źródło