Yanıtlar:
Uyarıya neden olan şeyi gerçekten düzeltmelisiniz, ancak hataların görünürlüğünü kontrol edebilirsiniz error_reporting()
. Uyarı mesajlarını atlamak için aşağıdakine benzer bir şey kullanabilirsiniz:
error_reporting(E_ERROR | E_PARSE);
E_ALL ^ E_WARNING
, uyarıların yanı sıra tüm hata raporlarını etkinleştirmek, daha iyi bir argüman seçimi gibi görünüyor error_reporting
.
Tüm hata mesajlarını bastırmak için işlev çağrınızın önüne @ koyabilirsiniz .
@yourFunctionHere();
dns_get_record
uyarı verir. Kodunuz uyarıyı telafi edebilir ancak yine de atar. Hata raporlamayı kapatmak üretim sunucusunda çalışır, ancak devel sunucusunda çalışmaz. XML içeriği oluşturuyorsanız, sunucu uyarıdan kaynaklanan hatalı biçimlendirilmiş XML gönderdiğinden uyarı tarayıcının görüntülenmemesine neden olur. Bazen bunu devel'de istersiniz, ancak zaten telafi ettiğiniz geçici bir DNS arama hatasının neden olduğu bir şey için değil.
Uyarıların yanı sıra hataları göstermek istemiyorsanız
// Turn off all error reporting
error_reporting(0);
Çekirdek Php içinde uyarı mesajı kümesini gizlemek için error_reporting (0) en üstündeki ortak dosya veya bireysel dosyayı içerir.
Wordpress gizle uyarıları ve bildirimleri wp-config.php dosyasına aşağıdaki kodu ekleyin
ini_set('log_errors','On');
ini_set('display_errors','Off');
ini_set('error_reporting', E_ALL );
define('WP_DEBUG', false);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
Soruyu tam olarak cevaplamıyor, ancak bunun bazı durumlarda daha iyi bir uzlaşma olduğunu düşünüyorum:
Üçüncü taraf kitaplığındaki printf () ifadesinin sonucu olarak bir uyarı iletisi aldım. Nedenin tam olarak ne olduğunu biliyordum - üçüncü taraf kodlarını sabitlerken geçici bir çözüm. Uyarıların bastırılmaması gerektiğine katılıyorum, ancak uyarı mesajı ekranda beliren çalışmamı bir müşteriye gösteremedim. Çözümüm:
printf('<div style="display:none">');
...Third-party stuff here...
printf('</div>');
Uyarı hala sayfa kaynağında bana hatırlatma olarak geldi, ancak müşteri tarafından görülemedi.
ob_start()
ve ob_end_clean()
onun yerine. Bu şekilde, öğeler tarayıcıya bile gönderilmez (burada yaptığı).
Daha iyi bir çözüm .htaccess yapılandırması olduğunu düşünüyorum Bu şekilde uygulama kodunu değiştirmek zorunda değilsiniz. İşte Apache2 için yönergeler
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
php_value docref_root 0
php_value docref_ext 0
Error_reporting kullanarak uyarıyı engelleyebilirsiniz, ancak en iyi yol komut dosyanızı ilk etapta düzeltmektir.
Nasıl yapılacağını bilmiyorsanız, sorunuzu düzenleyin ve bize söz konusu satırı ve görüntülenen uyarıyı gösterin.
Hata Kontrol Operatörü ile zaten bir cevap var ama açıklama eksikliği var. @
İşleci her ifadede kullanabilirsiniz ve hataları gizler (Önemli Hatalar hariç).
@$test['test']; //PHP Notice: Undefined variable: test
@(14/0); // PHP Warning: Division by zero
//This is not working. You can't hide Fatal Errors this way.
@customFuntion(); // PHP Fatal error: Uncaught Error: Call to undefined function customFuntion()
Hata ayıklama için hızlı ve mükemmel bir yöntemdir. Ancak hiçbir zaman üretimde kullanmamalı veya kalıcı olarak yerel sürümünüze dahil etmemelisiniz. Size çok fazla gereksiz tahriş verecektir.
Bunun yerine şunları göz önünde bulundurmalısınız:
1. Kabul edilen yanıtta belirtildiği gibi ayarları bildirme hatası.
error_reporting(E_ERROR | E_PARSE);
veya PHP INI ayarlarından
ini_set('display_errors','Off');
2. İstisnaları yakalama
try {
$var->method();
} catch (Error $e) {
// Handle error
echo $e->getMessage();
}