Yeryüzünde ne bu PHP hatası neden olabilir?

7 Cevap php

Ben şu hatayı aldım:

[27-Apr-2009 10:26:06] PHP Fatal error:  Cannot redeclare alphanumeric() (previously declared in /home/iddoc/public_html/lib/common.php:6) in /home/iddoc/public_html/lib/common.php on line 8

Bu Uyarı:

/home/iddoc/public_html/lib/common.php:6) in 
/home/iddoc/public_html/lib/common.php on line 8

Burada kusurlu hatları şunlardır:

function alphanumeric($str) {
    return strtolower(preg_replace("/[^A-Za-z0-9]/",'',$str));
}

Önce bu hatlarla sadece yorumlar vardır. Bu dosyada başka bir yerde bu işlevi başka hiçbir beyan veya başka yoktur.

Garip, değil mi?

7 Cevap

Her yerde common.php dahil) (require_oncenin kullanıyor musunuz? Sadece gerektiren kullanın veya eklerseniz, bu sorunu neden olur.

Bu common.php önceki dahildir? İşte bu hataya neden olabilir.

Her zaman PHP kod dosyaları dahil include_onceyi veya require_oncenin kullanmalısınız. Orada bu kuralın istisnaları vardır ama emin değilseniz, _once sürümlerini kullanın. Eğer dosya, bugüne kadar aynı program tekrar dahil edilmesi asla VEYA dahil edilmeden dosya bir ile onları koruyan olmadan (işlevlerini bildirmek değil biliyorum zaman eklemek veya gerektiren kullanmak için tamam sadece zaman ise (function_exists ()) { }) engellemek.

Örnek olarak, şablon sistemi muhtemelen _once versiyonunu istemiyorum, çok az kullanım alanlarından biridir.

Recursive için içerir kontrol ve blok emin olun birkaç kez yürütülmez.

Eğer require / include dosyasına başvurmak için kullanıyor musunuz? Bu kez bir dosya içeren bir ortak bir hatadır. PHP onlar aynı dosyadan olsanız bile, bu iki bildirimleri görürse ne yapacağını bilmiyor.

Bu kullanmayı deneyin:

include_once('lib/common.php');

Eğer bir kereden fazla common.php dosyasını dahil olabilir gibi görünüyor. Işlevi zaten yüklü beri yüklenen ikinci kez böyle hatalara neden olur.

Garip bir hata olduğunu, ancak sorun anladım bir kez muhtemelen mantıklı olacak gibi görünüyor. Ben dahil bakarak önermek, ya da include_onceyi onları geçmek istiyorsunuz. Belki de bu fonksiyon yüklenmeden önce ne debug_print_backtrace () çıkışları bakın.

Eğer common.php dosyası bir kereden fazla yer var gibi geliyor. Eğer include () kullanıyor musunuz, sizin de içeriyor) () veya require_once (gerektirir?