Referans-bu hata PHP'DE ne anlama geliyor?

bu nedir?

bu PHP programlama ve nasıl düzeltmek için hiçbir ipucu varken karşılaşabileceğiniz uyarılar, hatalar ve bildirimler hakkında bir dizi cevaptır. Bu aynı zamanda bir topluluk Wiki, bu yüzden herkes bu listeye ekleme ve sürdürmeye katılmaya davet edilir.

neden bu?

gibi sorular "zaten gönderilen başlıkları " veya "olmayan bir nesne üyesi çağıran " pop yığın taşması üzerinde sık sık Yukarı. Bu soruların temel nedeni her zaman aynıdır. Dolayısıyla, bu soruların cevapları genellikle onları tekrar eder ve daha sonra OP'NİN belirli durumunda hangi çizginin değişeceğini gösterir. Bu cevaplar siteye herhangi bir değer katmaz, çünkü yalnızca OP'NİN belirli kodu için geçerlidir. Aynı hataya sahip diğer kullanıcılar, çözümü çok lokalize oldukları için kolayca okuyamaz. Bu üzücü, çünkü kök nedenini anladıktan sonra hatayı düzeltmek önemsiz. Bu nedenle, bu liste çözümü uygulamak için genel bir şekilde açıklamaya çalışır.

burada ne yapmalıyım?

sorunuz bunun bir kopyası olarak işaretlenmişse, lütfen aşağıdaki hata Mesajınızı bulun ve düzeltmeyi kodunuza uygulayın. Cevaplar genellikle genel cevabın tek başına açık olmaması durumunda araştırmak için başka bağlantılar içerir.

katkıda bulunmak istiyorsanız," favori " hata ekleyin mesaj, uyarı veya uyarı, cevap başına bir, ne anlama geldiğini kısa bir açıklama (sadece kendi manuel sayfasına terimleri vurgulayarak olsa bile), olası bir çözüm veya hata ayıklama yaklaşımı ve değer mevcut Q&A bir liste. Ayrıca, mevcut cevapları geliştirmekten çekinmeyin.

Liste

Ayrıca Bkz.

938
tarihinde sordu hakre 2012-10-07 19:11:00
kaynak

30 ответов

Uyarı: başlık bilgilerini değiştiremiyor -

zaten gönderilen başlıklar

, komut dosyanız istemciye bir HTTP üstbilgisi göndermeye çalıştığında olur, ancak daha önce çıktı vardı, bu da üstbilgilerin istemciye zaten gönderilmesine neden oldu.

bu bir E_WARNING ve komut dosyası durmayacak.

tipik bir örnek şöyle bir şablon dosyası olurdu:

<html>
    <?php session_start(); ?>
    <head><title>My Page</title>
</html>
...

session_start() işlevi, oturum çerezi ile üstbilgileri istemciye göndermeye çalışacaktır. Ancak PHP, <html> öğesini çıktı akışına yazdığında başlıkları zaten gönderdi. session_start() yi üste taşımanız gerekir.

bunu satırlarından geçerek çözebilirsiniz. önce uyarıyı tetikleyen kod ve nereden çıktığını kontrol edin. Bu koddan önce herhangi bir başlık gönderme kodunu taşıyın.

An genellikle gözden kaçan çıktı, PHP'nin ?> kapanmasından sonra yeni satırlardır . Dosyadaki son şey olduğunda ?> atlamak için standart bir uygulama olarak kabul edilir. Aynı şekilde, bu uyarının bir başka yaygın nedeni, <?php açılışının önce boş bir alan, çizgi veya görünmez bir karaktere sahip olması ve web sunucusunun üstbilgileri ve boşluk/yeni satırı göndermesine neden olmasıdır. böylece PHP ayrıştırmaya başladığında herhangi bir başlık gönderemez.

dosyanızın daha fazlası varsa içinde bir <?php ... ?> kod bloğundan daha fazla, aralarında herhangi bir boşluk olmamalıdır. (Not: otomatik olarak oluşturulmuş kodunuz varsa birden çok bloğunuz olabilir)

de kodunuzda herhangi bir bayt sipariş işareti olmadığından emin olun, örneğin komut dosyasının kodlaması bom ile UTF-8 olduğunda.

İlgili Sorular:

237
cevap Gordon 2017-05-23 14:55:00
kaynak

ölümcül hata: üye işlevine çağrı ... nesne olmayan

üzerinde

, xyz->method() xyz bir nesne olmadığı ve bu nedenle method olarak adlandırılamadığı kodla olur.

bu, komut dosyasını durduracak ölümcül bir hatadır (ileri uyumluluk bildirimi: PHP 7 ile başlayan bir catchable hatası haline gelecektir).

çoğu zaman bu, kodun hata için eksik çeklere sahip olduğunun bir işaretidir şartlar. Bir nesnenin aslında yöntemlerini çağırmadan önce bir nesne olduğunu doğrulayın.

a tipik örneği

olacaktır
// ... some code using PDO
$statement = $pdo->prepare('invalid query', ...);
$statement->execute(...);

yukarıdaki örnekte, sorgu hazırlanamaz ve prepare() false için $statement atayacaktır . execute() yöntemini çağırmaya çalışmak, false değeri bir boolean olduğu için "nesne dışı" olduğu için ölümcül hataya neden olacaktır.

Figure out why işleviniz bir nesne yerine bir boolean döndürdü. Örneğin, oluşan son hata için $pdo nesnesini kontrol edin. Bu hata ayıklama hakkında ayrıntılar, söz konusu belirli işlev / nesne / sınıf için hataların nasıl işlendiğine bağlı olacaktır.

bile ->prepare başarısız olursa, $pdo veritabanı işleme nesnesi geçerli kapsam içine geçirilmedi . Nerede tanımlandığını bulun. Sonra bir parametre olarak iletin, özellik olarak saklayın, ya da genel kapsamda yoluyla paylaşabilirsiniz.

başka bir sorun koşullu olarak bir nesne oluşturma ve daha sonra koşullu blok dışında bir yöntem çağırmaya çalışıyor olabilir. Örneğin

if ($someCondition) {
    $myObj = new MyObj();
}
// ...
$myObj->someMethod();

koşullu bloğun dışındaki yöntemi çalıştırmaya çalışarak, nesneniz tanımlanmayabilir.

İlgili Sorular:

162
cevap hakre 2018-04-16 07:16:00
kaynak

hiçbir şey görülmedi. Sayfa boş ve beyaz.

olarak da bilinen ölüm beyaz Sayfa veya ölüm beyaz ekran . Bu, hata raporlaması kapatıldığında ve ölümcül bir hata (genellikle sözdizimi hatası) meydana geldiğinde olur.

hata günlüğü etkin varsa, hata günlüğünüzde somut hata iletisi bulacaksınız. Bu genellikle "php_errors" adlı bir dosyada olacaktır.log", ya bir merkezi konum (örneğin /var/log/apache2 birçok Linux ortamında) veya komut dosyasının dizininde (bazen paylaşılan bir barındırma ortamında kullanılır).

bazen hataların görüntülenmesini geçici olarak etkinleştirmek daha basit olabilir. Beyaz sayfa daha sonra hata iletisini görüntüler. Bu hatalar Web sitesini ziyaret herkes için görünür çünkü dikkat edin.

bu kolayca komut üstünde ekleyerek yapılabilir aşağıdaki PHP kodu:

ini_set('display_errors', 1); error_reporting(~0);

kod, hataların görüntülenmesini açar ve raporlamayı en üst seviyeye ayarlar.

beri ini_set() çalışma zamanında yürütülür ayrıştırma/sözdizimi hataları üzerinde hiçbir etkisi yoktur. Bu hatalar günlüğünde görünecektir. Bunları çıktıda da görüntülemek istiyorsanız (örneğin bir tarayıcıda) display_startup_errors yönergesini true olarak ayarlamanız gerekir . Bunu yap. php.ini ya da .htaccess ya da tarafından önce çalışma zamanı yapılandırmasını etkileyen başka bir yöntem .

1519340920' log_errors ve error_log yönergelerini kendi günlük dosyası konumunuzu seçmek için ayarlamak için aynı yöntemleri kullanabilirsiniz.

log bakarak veya ekran kullanarak, çok daha iyi bir hata mesajı ve çizgi alacak komut dosyanızın durduğu kodun.

ilgili sorular:

ilgili hatalar:

104
cevap nalply 2017-05-23 15:26:38
kaynak

Uyarı: Tanımsız Dizin

Dizide bulunmayan bir anahtarla bir diziye erişmeye çalıştığınızda

olur.

bir Undefined Index bildirimi için tipik bir örnek ( , )

$data = array('foo' => '42', 'bar');
echo $data['spinach'];
echo $data[1];

hem spinach hem de 1 dizide mevcut değildir, E_NOTICE tetiklenecektir.

çözüm bu dizine erişmeden önce dizin veya ofset var olduğundan emin olun. Bu dizinler beklediğiniz zaman var emin olmak için programınızda bir hata düzeltmek gerekir anlamına gelebilir. Veya indekslerin array_key_exists veya kullanılarak mevcut olup olmadığını test etmeniz gerektiği anlamına gelebilir isset :

$data = array('foo' => '42', 'bar');
if (array_key_exists('spinach', $data)) {
    echo $data['spinach'];
}
else {
    echo 'No key spinach in array';
}

gibi kodunuz varsa:

<?php echo $_POST['message']; ?>
<form method="post" action="">
    <input type="text" name="message">
    ...

sonra $_POST['message'] ne zaman ayarlanmayacaktır Bu sayfa ilk yüklenir ve yukarıdaki hatayı alırsınız. Yalnızca form gönderildiğinde ve bu kod ikinci kez çalıştırıldığında dizi dizini var olur. Genellikle bunu şu şekilde kontrol edebilirsiniz:

if ($_POST)  ..  // if the $_POST array is not empty
// or
if ($_SERVER['REQUEST_METHOD'] == 'POST') ..  // page was requested with POST

İlgili Sorular:

91
cevap Gordon 2017-05-23 15:34:44
kaynak

Uyarı: mysql_fetch_array (),

verilen boolean, parametre 1'in kaynak olmasını bekler

her şeyden önce:

lütfen, mysql_* işlevlerini yeni kod işlevlerinde kullanmayın . Onlar artık korunur ve resmen kullanımdan kaldırılmıştır. Bkz. kırmızı kutu ? hakkında bilgi edinin hazırlanan ifadeler yerine ve PDO veya MySQLi - bu makale hangi karar vermenize yardımcı olacaktır. PDO seçerseniz, işte iyi bir öğretici .


bu, mysql_query sonucundan veri almaya çalıştığınızda olur, ancak sorgu başarısız oldu.

bu bir uyarı ve olmayacak komut dosyasını durdurun, ancak programınızı yanlış yapacaktır.

tarafından mysql_query tarafından döndürülen sonucu kontrol etmeniz gerekir
$res = mysql_query($sql);
if (!$res) {
   die(mysql_error());
}
// after checking, do the fetch

İlgili Sorular:

İlgili Hatalar:

diğer mysql* işlevleri de aynı nedenle aynı hatayı üretecek parametre olarak bir mysql sonuç kaynağı bekliyoruz.

78
cevap xdazz 2017-05-23 15:34:44
kaynak

ölümcül hata: nesne bağlamında

olmadığında $ bunu kullanma

$this atanamaz PHP özel bir değişkendir. Mevcut olmadığı bir bağlamda erişilirse, bu ölümcül hata verilir.

bu hata oluşabilir:

Statik olmayan bir yöntem statik olarak çağrılırsa
  1. . Örnek:

    class Foo {
       protected $var;
       public function __construct($var) {
           $this->var = $var;
       }
    
       public static function bar () {
           // ^^^^^^
           echo $this->var;
           //   ^^^^^
       }
    }
    
    Foo::bar();
    

    nasıl düzeltilir: kodunuzu tekrar gözden geçirin, $this yalnızca nesne bağlamında kullanılabilir ve asla statik bir yöntemde kullanılmamalıdır. Ayrıca, statik bir yöntem erişmemelidir non-static özelliği. Statik özelliği erişmek için self::$static_property kullanın.

  2. bir sınıf yönteminden gelen kod normal bir işleve veya sadece genel kapsam ve ile $this arasında kopyalanmışsa özel değişken.

    nasıl düzeltilir: kodu gözden geçirin ve $this farklı bir ikame değişkeniyle değiştirin.

İlgili Sorular:

  1. statik olmayan yöntemi statik olarak çağırın: PHP ölümcül hata: nesne bağlamında olmadığında $bunu kullanma
  2. kod üzerinden Kopyala: . hata: nesne bağlamında
  3. olmadığında $ bunu kullanma
  4. all "using $this when not in object context "Stackoverflow
  5. ile ilgili sorular
70
cevap xdazz 2017-05-23 14:47:30
kaynak

ölümcül hata: tanımlanmamış işlev çağrısı XXX

Henüz tanımlanmamış bir işlevi çağırmaya çalıştığınızda

olur. Ortak nedenleri eksik uzantıları içerir ve içerir, koşullu işlev bildirimi, işlev bildiriminde işlev veya basit yazım hataları.

Örnek 1 - Koşullu İşlev Bildirimi

$someCondition = false;
if ($someCondition === true) {
    function fn() {
        return 1;
    }
}
echo fn(); // triggers error

bu durumda, fn() asla ilan edilmeyecektir $someCondition doğru değil.

örnek 2 - fonksiyon bildirimi

function createFn() 
{
    function fn() {
        return 1;
    }
}
echo fn(); // triggers error

bu durumda, fn yalnızca createFn() çağrıldığında ilan edilecektir. createFn() için sonraki çağrıların mevcut bir işlevin Redeclaration hakkında bir hata tetikleyeceğini unutmayın.

bunu bir PHP yerleşik işlevi için de görebilirsiniz. işlevi aramayı deneyin. resmi el kitabı ve hangi "uzantı" (PHP modülü) ait olduğunu ve PHP'nin hangi sürümlerini desteklediğini kontrol edin.

eksik bir uzantı durumunda, bu uzantıyı yükleyin ve php'de etkinleştirin.ini. İŞLEVİNİZİN göründüğü uzantı için PHP Kılavuzundaki Kurulum talimatlarına bakın. Paket yöneticinizi (örneğin, Debian veya Ubuntu'da apt , Red Hat veya Centos'ta yum ) kullanarak uzantıyı etkinleştirebilir veya kurabilirsiniz. paylaşılan bir barındırma ortamında bir kontrol paneli.

işlev, kullandığınız PHP'nin daha yeni bir sürümünde tanıtılmışsa, el kitabında veya yorum bölümünde alternatif uygulamalara bağlantılar bulabilirsiniz. PHP'DEN kaldırılmışsa, artık gerekli olmayabileceğinden, neden hakkında bilgi arayın.

eksik bilgi durumunda, işlevi çağırmadan önce işlevi bildiren dosyayı dahil ettiğinizden emin olun.

yazım hatası durumunda yazım hatası düzeltin.

İlgili Sorular:

67
cevap Gordon 2017-05-23 15:34:44
kaynak

ayrıştırma hatası: sözdizimi hatası, beklenmeyen t_xxx

, T_XXX belirteci beklenmedik bir yerde, dengesiz (gereksiz) parantezler, php'de etkinleştirmeden kısa etiket kullanımı olduğunda olur.ini ve daha birçok.

İlgili Sorular:

daha fazla yardım için bkz.:

66
cevap LeleDumbo 2017-05-23 15:34:44
kaynak

ölümcül hata: yazma bağlamında işlev dönüş değerini kullanamazsınız

bu genellikle empty ile doğrudan bir işlev kullanırken olur .

örnek:

if (empty(is_null(null))) {
  echo 'empty';
}

bunun nedeni empty bir dil yapısıdır ve bir işlev değildir, bir ifadeyle PHP sürümlerinde 5.5'den önce bağımsız değişkeni olarak çağrılamaz. PHP 5.5 öncesinde, empty() argümanı gerekir değişken olun , ancak PHP 5.5+ ' da keyfi bir ifade (bir işlevin dönüş değeri gibi) izin verilir.

empty , ismine rağmen, bir değişkenin "boş"olup olmadığını kontrol etmez. Bunun yerine, bir değişkenin var olup olmadığını veya == false kontrol eder . İfadeler (örnekte is_null(null) gibi) her zaman var sayılır, bu nedenle burada empty yalnızca false değerine eşit olup olmadığını kontrol eder. empty() yerine geçebilirsiniz burada ! , örneğin if (!is_null(null)) ile veya açıkça false , örneğin if (is_null(null) == false) ile karşılaştırın .

İlgili Sorular:

62
cevap xdazz 2017-05-23 15:26:38
kaynak

MySQL: SQL sözdiziminde bir hatanız var; yakın kullanmak için doğru sözdizimi için MySQL server sürümüne karşılık gelen kılavuzu kontrol edin ... hatta ...

bu hata genellikle bir MySQL sorgusuna geçirilen verilerden düzgün bir şekilde kaçmayı unuttuğunuzdan kaynaklanır.

ne değil bir örnek yapmak ("kötü fikir"):

$query = "UPDATE `posts` SET my_text='{$_POST['text']}' WHERE id={$_GET['id']}";
mysqli_query($db, $query);

bu kod bir form içeren bir sayfaya dahil edilebilir gönder, gibi bir URL ile http://example.com/edit.php?id=10 (yazı n ° 10 düzenlemek için)

gönderilen metin tek tırnak içeriyorsa ne olacak? $query ile sona erecek:

$query = "UPDATE `posts` SET my_text='I'm a PHP newbie' WHERE id=10';

ve bu sorgu Mysql'e gönderildiğinde, söz diziminin yanlış olduğundan şikayet eder, çünkü ortada ekstra bir tek alıntı vardır.

bu tür hataları önlemek için, gerekir her zaman bir sorguda kullanmadan önce verileri kaçmak.

bir SQL sorgusunda kullanılmadan önce veri kaçmak da çok önemlidir, çünkü yapmazsanız, komut dosyanız SQL sorgularına açık olacaktır. Bir SQL enjeksiyonu, bir kaydın, bir tablonun veya tüm veritabanının değiştirilmesine, kaybına veya değiştirilmesine neden olabilir. Bu çok ciddi bir güvenlik sorunu!

Dokümantasyon:

57
cevap Jocelyn 2017-05-23 15:18:24
kaynak

Fatal error: Allowed memory size of xxx bytes bitkin (tried to allocate XXX bytes)

komut dosyanızı çalıştırmak için yeterli bellek yok. PHP bellek sınırına ulaştı ve yürütmeyi durdurur. Bu hata ölümcül, komut dosyası durur. bellek sınırı değeri php.ini dosyasında veya komut dosyasında ini_set('memory_limit', '128 M'); kullanılarak yapılandırılabilir ( php.ini olarak tanımlanan değerin üzerine yazılır). Amacı bellek sınırı, tek bir PHP betiğinin mevcut tüm belleği toplamasını ve tüm web sunucusunu indirmesini önlemektir.

yapmanız gereken ilk şey, komut dosyanızın ihtiyaç duyduğu bellek miktarını en aza indirmektir. Örneğin, büyük bir dosyayı bir değişkene okuyorsanız veya bir veritabanından birçok kayıt getiriyorsanız ve hepsini bir dizide saklıyorsanız, bu çok fazla bellek kullanabilir. Kodunuzu, dosya satırını satıra göre okumak veya veritabanı kayıtlarını bir seferde almak için değiştirin hepsini bellekte saklamadan zaman. Bu, sahnelerin arkasında neler olup bittiğine ve verilerin bellekte başka bir yerde saklandığına dair kavramsal bir farkındalık gerektirir.

bu hata, komut dosyanızın bellek yoğun bir çalışma yapmadığı zaman oluşursa, bir bellek sızıntısı olup olmadığını görmek için kodunuzu kontrol etmeniz gerekir. memory_get_usage fonksiyonu arkadaşınızdır.

İlgili Sorular:

49
cevap xdazz 2017-05-23 15:34:44
kaynak

ayrıştırma hatası: sözdizimi hatası, beklenmeyen t_encapsed_and_whitespace

bir dizi değeri ile bir alıntı anahtar tüm karmaşık değişken yapı {} içine alınmadığı zaman, çift alıntı dize içinde enterpolasyon için başvurmaya çalışırken bu hata en sık karşılaşılan.

hata davası:

bu Unexpected T_ENCAPSED_AND_WHITESPACE :

echo "This is a double-quoted string with a quoted array key in $array['key']";
//---------------------------------------------------------------------^^^^^

Olası düzeltmeler:

bir çift alıntı dize, PHP dizi anahtar dizeleri kullanılacak izin verir unquoted , ve bir sorunu olmaz E_NOTICE . Böylece yukarıda şöyle yazılabilir:

echo "This is a double-quoted string with an un-quoted array key in $array[key]";
//------------------------------------------------------------------------^^^^^

tüm karmaşık dizi değişken ve anahtar(ler) {} içine alınabilir, bu durumda bir E_NOTICE önlemek için Alıntı . PHP belgeleri karmaşık değişkenler için bu sözdizimini önerir.

echo "This is a double-quoted string with a quoted array key in {$array['key']}";
//--------------------------------------------------------------^^^^^^^^^^^^^^^
// Or a complex array property of an object:
echo "This is a a double-quoted string with a complex {$object->property->array['key']}";

tabii ki, ' herhangi bir yukarıdaki alternatif, interpolate yerine dizi değişkenini birleştirmektir:

echo "This is a double-quoted string with an array variable " . $array['key'] . " concatenated inside.";
//----------------------------------------------------------^^^^^^^^^^^^^^^^^^^^^

referans için değişken ayrıştırma PHP dizeleri El Kitabı sayfa

45
cevap Michael Berkowski 2012-12-18 19:10:22
kaynak

ayrıştırma hatası: sözdizimi hatası, beklenmeyen t_paamayim_nekudotayim

kapsam çözünürlük operatörü de İbranice פעמיית נקודתיית gelen "Paamayim Nekudotayim" denir. bu da "çift kolon" veya "çift nokta iki kez"anlamına gelir.

kodunuza yanlışlıkla :: koyarsanız bu hata genellikle olur.

İlgili Sorular:

Dokümantasyon:

39
cevap Rich Bradshaw 2017-05-23 14:55:00
kaynak

Fatal error: Cannot redeclare class [class name]

ölümcül hata: redeclare olamaz [işlev adı]

bu, aynı işlev/sınıf adını iki kez kullandığınız ve bunlardan birini yeniden adlandırmanız gerektiği anlamına gelir veya require veya include kullanmanız gerektiği anlamına gelir require_once veya include_once .

bir sınıf veya bir işlev olduğunda PHP'DE bildirilir, değişmez ve daha sonra yeni bir değerle bildirilemez.

aşağıdaki kodu göz önünde bulundurun:

sınıfı.php

<?php

class MyClass
{
    public function doSomething()
    {
        // do stuff here
    }
}

Endeksi.php

<?php

function do_stuff()
{
   require 'class.php';
   $obj = new MyClass;
   $obj->doSomething();
}

do_stuff();
do_stuff();

do_stuff() için ikinci çağrı yukarıdaki hatayı üretecektir. require için require_once değiştirerek, biz içeren dosya emin olabilirsiniz MyClass tanımı sadece bir kez yüklenecek ve hatadan kaçınılacaktır.

37
cevap DaveRandom 2014-05-15 15:55:33
kaynak

Uyarı: [işlev] : akışı açılamadı: [sebep]

genellikle include , require veya fopen ile bir dosya aradığınızda olur ve PHP dosyayı bulamadı veya dosyayı yüklemek için yeterli izniniz yoktu.

bu çeşitli nedenlerle ortaya çıkabilir:

  • dosya yolu yanlış
  • dosya yolu göreli
  • yol yanlış
  • izinleri çok kısıtlayıcı
  • SELinux yürürlükte
  • ve daha birçok ...

ortak bir hata mutlak bir yol kullanmamaktır. Bu, tam bir yol veya sihirli sabitler gibi __DIR__ veya dirname(__FILE__) kullanarak kolayca çözülebilir:

include __DIR__ . '/inc/globals.inc.php';

veya:

require dirname(__FILE__) . '/inc/globals.inc.php';

doğru yolun kullanıldığından emin olmak, bu sorunları gidermede bir adımdır, bu da mevcut olmayan dosyalarla, dosya sisteminin erişimin önlenmesi veya PHP'nin kendisi tarafından basedir kısıtlamalarını açma hakları ile ilgili olabilir.

bu sorunu hızlı bir şekilde çözmenin en iyi yolu, aşağıdaki sorun giderme kontrol listesini izlemektir.

İlgili Sorular:

İlgili Hatalar:

37
cevap Mahdi 2017-05-23 15:02:50
kaynak

Uyarı: tanımsız değişken

Daha önce tanımlanmamış bir değişkeni kullanmaya çalıştığınızda

olur.

tipik bir örnek

olurdu
foreach ($items as $item) {
    // do something with item
    $counter++;
}

daha önce $counter tanımlamadıysanız, yukarıdaki kod bildirimi tetikleyecektir.

doğru yol,

gibi boş bir dize olsa bile, kullanmadan önce değişkeni ayarlamak olacaktır
$counter = 0;
foreach ($items as $item) {
    // do something with item
    $counter++;
}

ilgili Sorular:

36
cevap aleation 2017-05-23 15:02:50
kaynak

Uyarı: tanımsız sabit XXX kullanımı - 'XXX'

varsayılır

veya, PHP 7.2 veya üstü:

Uyarı: tanımlanmamış sabit XXX kullanımı - 'XXX'varsayılır (bu PHP'nin gelecekteki bir sürümünde bir hata atar)

bu uyarı, kodda bir belirteç kullanıldığında ve bir sabit gibi göründüğünde oluşur, ancak bu ada göre bir sabit tanımlanmamıştır.

bu bildirimin en yaygın nedenlerinden biri başarısızlıktır ilişkisel bir dizi anahtarı olarak kullanılan bir dize alıntılayın.

örneğin:

// Wrong
echo $array[key];

// Right
echo $array['key'];

başka bir yaygın nedeni bir değişken adı önünde eksik $ (dolar) işareti:

// Wrong
echo varName;

// Right
echo $varName;

ya da belki başka bir sabit veya anahtar kelime yanlış yazılmış:

// Wrong
$foo = fasle;

// Right
$foo = false;

Bu tarafından tanımlanan bir sabit erişmeye çalıştığınızda gerekli bir PHP uzantısı veya kütüphane eksik bir işareti de olabilir kitaplık.

İlgili Sorular:

35
cevap DaveRandom 2018-01-30 12:39:41
kaynak

Uyarı: open_basedir kısıtlama etkisi

bu uyarı, dosya ve dizin erişimi ile ilgili çeşitli işlevlerle görünebilir. Bir yapılandırma sorunu hakkında uyarıyor.

göründüğünde, bazı dosyalara erişim yasak olduğu anlamına gelir.

uyarının kendisi hiçbir şeyi kırmaz, ancak dosya erişimi engellendiğinde çoğu zaman bir komut dosyası düzgün çalışmaz.

düzeltme PHP yapılandırma değiştirmek için normalde , ilgili ayar denir open_basedir .

bazen yanlış dosya veya dizin adları kullanılır, düzeltme daha sonra doğru olanları kullanmaktır.

İlgili Sorular:

28
cevap hakre 2017-05-23 14:55:00
kaynak

Uyarı: başlatılmamış dize ofset: *

adından da anlaşılacağı gibi, bu tür bir hata meydana gelir, büyük olasılıkla yinelemeye çalıştığınızda veya var olmayan bir anahtarla diziden bir değer bulmaya çalışıyorsanız.

sizi düşünün, $string

dan her harfi göstermeye çalışıyoruz
$string = 'ABCD'; 
for ($i=0, $len = strlen($string); $i <= $len; $i++){
    echo "$string[$i] \n"; 
}

yukarıdaki örnek üretecek ( online demo ):

A
B
C
D
Notice: Uninitialized string offset: 4 in XXX on line X

ve komut dosyası D yankı bitirir bitirmez hatayı alırsınız, çünkü for() döngüsünün içinde, PHP'YE, var olan 'ABCD' den ilk dizgi karakterini göstermesini söylediniz, ancak döngü 0 den saymaya başlar ve D ye ulaştığında D yankıları, bir ofset hatası atacaktır.

Benzer Hatalar:

28
cevap samayo 2017-05-23 15:02:50
kaynak

ayrıştırma hatası: sözdizimi hatası, beklenmeyen t_variable

Olası senaryo

kodumun nerede yanlış gittiğini bulamıyorum. İşte tam hatam:

ayrıştırma hatası: sözdizimi hatası, beklenmeyen t_variable on line x

ne deniyorum

$sql = 'SELECT * FROM dealer WHERE id="'$id.'"';

cevap

ayrıştırma hatası: programınızın sözdizimi ile ilgili bir sorun, örneğin bir ifadenin sonundan bir noktalı virgül bırakmak veya yukarıdaki durum gibi . operatörünü eksik. Ayrıştırma hatasıyla karşılaştığında tercüman programınızı çalıştırmayı durdurur.

basit kelimelerle bu bir sözdizimi hatasıdır, yani kodunuzda doğru bir şekilde ayrıştırılmasını ve dolayısıyla çalışmasını engelleyen bir şey vardır.

ne yapmanız gerekir , hatanın basit hatalar için olduğu çizgilerde dikkatlice kontrol edilir.

bu hata mesajı, dosyanın x satırında, PHP yorumlayıcısının açık bir parantez görmeyi beklediğini, bunun yerine T_VARIABLE adlı bir şeyle karşılaştığını gösterir . Bu T_VARIABLE şey bir token denir . PHP tercümanın programların farklı temel bölümlerini ifade etme yoludur. Tercüman bir programda okuduğunda, ne çevirir belirteçlerin listesini yazmışsın. Programınıza bir değişken koyduğunuzda, tercüman listesinde T_VARIABLE simgesi bulunur.

iyi okuma: ayrıştırıcı belirteçleri listesi

yani php.ini en az E_PARSE etkinleştirmek emin olun . Ayrıştırma hataları üretim komut dosyalarında mevcut olmamalıdır.

her zaman aşağıdaki ifadeyi eklemem önerilir: kodlama:

error_reporting(E_ALL);

PHP hata raporlama

ayrıca yazarken hataları ayrıştırmanıza izin verecek bir IDE kullanmak için iyi bir fikir. Kullanabilirsiniz:

  1. NetBeans (güzel barış, ücretsiz yazılım) (bence en iyi)
  2. PhpStorm (Gordon amca love this: p, ücretli plan, tescilli ve ücretsiz yazılım)
  3. Eclipse (güzellik ve canavar, ücretsiz yazılım)

İlgili Sorular:

27
cevap NullPoiиteя 2017-05-23 14:47:30
kaynak

ayrıştırma hatası: sözdizimi hatası, beklenmeyen ' ['

bu hata iki varyantta gelir:

- 1

$arr = [1, 2, 3];

bu dizi başlatıcı sözdizimi sadece PHP 5.4'te tanıtıldı; bundan önce sürümlerde bir ayrıştırıcı hatası oluşturacaktır. Mümkünse, kurulumunuzu yükseltin veya eski sözdizimini kullanın:

$arr = array(1, 2, 3);

Ayrıca Bkz. bu örnek kılavuzdan.

- 2

$suffix = explode(',', 'foo,bar')[1];

Array dereferencing işlev sonuçları da PHP 5.4'te tanıtıldı. Yükseltmek mümkün değilse, bir (geçici) değişken kullanmanız gerekir:

$parts = explode(',', 'foo,bar');
$suffix = $parts[1];

Ayrıca Bkz. bu örnek kılavuzdan.

25
cevap Ja͢ck 2014-10-26 13:49:31
kaynak

Uyarı: nesne dışı hata

özelliğini almaya çalışırken

, nesne yokken bir nesnenin özelliğine erişmeye çalıştığınızda olur.

nesne dışı bir uyarı için tipik bir örnek

olacaktır
$users = json_decode('[{"name": "hakre"}]');
echo $users->name; # Notice: Trying to get property of non-object

bu durumda, $users bir dizidir (yani bir nesne değil) ve herhangi bir özelliği yoktur.

bu, bir dizinin mevcut olmayan bir dizinine veya anahtarına erişmeye benzer (bkz . Uyarı: Tanımsız Dizin ).

bu örnek çok basitleştirilmiştir. Çoğu zaman böyle bir uyarı işaretlenmemiş bir dönüş değeri, örneğin bir kitaplık '151940920 döndürür' bir nesne yoksa veya sadece beklenmedik bir nesne değeri (örneğin bir Xpath sonucu, json yapıları ile beklenmedik biçim, XML ile beklenmedik biçim vb.).) ancak kod böyle bir durumu kontrol etmez.

bu olmayan nesneler genellikle daha fazla işlenen, genellikle bir nesne olmayan bir nesne yöntemi çağırırken bir sonraki ölümcül hata olur (bkz.: Fatal error: call to a member function ... senaryoyu durdurma-1519170920 nesne' ) olmayan.

hata koşullarını kontrol ederek ve/veya bir değişkenin bir beklenti ile eşleştiğini kolayca önlenebilir. Burada bir DOMXPath örneği ile böyle bir uyarı:

$result  = $xpath->query("//*[@id='detail-sections']/div[1]");
$divText = $result->item(0)->nodeValue; # Notice: Trying to get property of non-object

sorun erişiyor nodeValue ilk öğenin özelliği (alanı) $result koleksiyonunda var olup olmadığını kontrol edilmemiştir. Bunun yerine, kodun üzerinde çalıştığı nesnelere değişkenler atayarak kodu daha açık hale getirmek için öder:

$result  = $xpath->query("//*[@id='detail-sections']/div[1]");
$div     = $result->item(0);
$divText = "-/-";
if ($div) {
    $divText = $div->nodeValue;
}
echo $divText;

ilgili hatalar:

23
cevap hakre 2017-05-23 15:34:44
kaynak

Uyarı: [işlev] , parametre 1'in kaynak olmasını, boolean

( daha genel bir varyasyon Uyarı: mysql_fetch_array (), parametre 1'in kaynak olmasını, verilen boolean olmasını bekler)

kaynakları bir türü PHP (dizeleri, tamsayılar veya nesneler gibi). Bir kaynak kendi özünde anlamlı değeri opak bir nesne var. Bir kaynak belirli bir dizi PHP işlevine veya uzantısına özgü ve tanımlanmış. Örneğin, Mysql uzantısı iki kaynak türlerini tanımlar:

MySQL modülünde kullanılan iki kaynak türü vardır. Birincisi, bir veritabanı bağlantısı için bağlantı tanımlayıcısıdır, ikincisi, bir sorgunun sonucunu tutan bir kaynaktır.

cURL uzantısı başka bir iki kaynak türünü tanımlar :

... bir kıvırmak kolu ve bir kıvırmak çok kolu.

ne zaman var_dump ed, değerler şöyle görünür:

$resource = curl_init();
var_dump($resource);

resource(1) of type (curl)

tüm çoğu kaynak, belirli bir türün ( (1) ) sayısal bir tanımlayıcısıdır ( (curl) ).

bu kaynakları taşırsınız ve bunları böyle bir kaynağın bir şey ifade ettiği farklı işlevlere iletirsiniz. Genellikle bu işlevler, arka planda belirli verileri tahsis eder ve bir kaynak, bu verileri DAHİLİ olarak izlemek için kullandıkları bir referanstır.


" ... parametre 1'in kaynak olmasını bekler, verilen boolean " hatası genellikle bir kaynak oluşturması gereken denetlenmeyen bir işlemin sonucudur, ancak bunun yerine false döndürülür. Örneğin, fopen işlevi vardır bu açıklama:

Dönüş Değerleri

bir dosya işaretçisi kaynak başarı veya FALSE hata döndürür.

bu kodda, $fp ya da resource(x) of type (stream) ya da false :

$fp = fopen(...);

fopen işleminin başarılı olup olmadığını veya başarısız olup olmadığını ve dolayısıyla $fp nın geçerli olup olmadığını kontrol etmezseniz kaynak veya false ve $fp bir kaynak beklediği başka bir işleve geçmek, yukarıdaki hatayı alabilirsiniz:

$fp   = fopen(...);
$data = fread($fp, 1024);

Warning: fread() expects parameter 1 to be resource, boolean given

her zaman bir kaynak tahsis etmeye çalışan işlevlerin dönüş değerini kontrol etmeniz ve başarısız olmanız gerekir :

$fp = fopen(...);

if (!$fp) {
    trigger_error('Failed to allocate resource');
    exit;
}

$data = fread($fp, 1024);

İlgili Hatalar:

22
cevap deceze 2017-05-23 15:26:38
kaynak

Uyarı: yasadışı dize ofset ' XXX '

bu, Kare parantez sözdizimiyle bir dizi öğesine erişmeye çalıştığınızda olur, ancak bunu bir dizede değil, bir dizede yapıyorsunuz, bu nedenle işlemi anlam ifade etmiyor .

örnek:

$var = "test";
echo $var["a_key"];

değişkenin bir dizi olması gerektiğini düşünüyorsanız, nereden geldiğini görün ve sorunu orada düzeltin.

18
cevap Karoly Horvath 2014-12-28 19:46:13
kaynak

kodu çalışmıyor/PHP kodumun parçaları

çıktısına benziyor

PHP kodunuzdan herhangi bir sonuç görmüyorsanız ve / veya web sayfasındaki gerçek PHP kaynak kodu çıktısının bölümlerini görürseniz, PHP'NİZİN aslında yürütülmediğinden oldukça emin olabilirsiniz. Tarayıcınızda View Source kullanıyorsanız, muhtemelen tüm PHP kaynak kodu dosyasını olduğu gibi görüyorsunuz. PHP kodu <?php ?> etiketlerinde gömülü olduğundan, tarayıcı yorumlamaya çalışacaktır HTML etiketleri ve sonuç olarak olanlar biraz karışık görünebilir.

aslında PHP komut dosyalarını çalıştırmak için, ihtiyacınız:

  • komut dosyanızı yürüten bir web sunucusu
  • dosya uzantısını ayarlamak için .php, aksi takdirde web sunucusu bunu yorumlamaz *
  • erişmek için .Web sunucusu üzerinden php dosyası

* eğer yeniden yapılandırmazsanız, her şey yapılandırılabilir.

bu sonuncusu özellikle önemlidir. Dosyayı çift tıklamanız büyük olasılıkla tarayıcınızda

gibi bir adres kullanarak açılacaktır
file://C:/path/to/my/file.php

bu, çalıştırdığınız herhangi bir web sunucusunu tamamen atlıyor ve dosya yorumlanmıyor. Web sunucunuzdaki dosyanın URL'sini ziyaret etmeniz gerekiyor, muhtemelen

gibi bir şey
http://localhost/my/file.php

ayrıca olup olmadığını kontrol etmek isteyebilirsiniz <?php yerine <? kısa açık etiketler kullanıyorsunuz ve PHP yapılandırmanız kısa açık etiketleri kapattı.

Ayrıca Bkz. PHP kodu yürütülmüyor, bunun yerine kod

sayfasında gösteriliyor
17
cevap deceze 2017-05-23 14:47:30
kaynak

Uyarı: mysql_connect (): kullanıcı 'name'@'host' için erişim engellendi

bu uyarı, geçersiz veya eksik kimlik bilgileri (kullanıcı adı/şifre) içeren bir MySQL/MariaDB sunucusuna bağlandığınızda ortaya çıkar. Bu genellikle 1519350920 'değil kod sorunu, ancak sunucu yapılandırma sorunu var.

  • kılavuz sayfasına bakın mysql_connect("localhost", "user", "pw") örnekler için.

  • aslında bir $username ve $password kullandığınızı kontrol edin .

    • hiçbir şifre kullanarak erişmek nadir - ne zaman Uyarı oldu: (using password: NO) dedi .
    • sadece yerel test sunucusu genellikle kullanıcı adı root , hiçbir şifre ve test veritabanı adı ile bağlanmanızı sağlar.

    • eğer test edebilirsiniz komut satırı istemcisini kullanarak gerçekten doğru :

      mysql --user="username" --password="password" testdb

    • kullanıcı adı ve şifre büyük / küçük harf duyarlı ve boşluk değil göz ardı edilir. Parolanız $ gibi meta karakterleri içeriyorsa, onlardan kaçın veya şifreyi single quotes olarak koyun .

    • unix kullanıcı hesabı (bazen sadece önekleri veya ekstra sayısal sonekleri) ile ilgili olarak en paylaşılan barındırma sağlayıcıları predeclare mysql hesapları. Bir desen veya dokümantasyon ve cPanel veya parola ayarlamak için herhangi bir arabirim için dokümanlara bakın.

    • Komut satırını kullanarak kullanıcı hesaplarını ekleyerek MySQL el kitabına bakın. yönetici kullanıcı olarak bağlandığında gibi bir sorgu verebilir:

      CREATE USER 'username'@'localhost' IDENTIFIED BY 'newpassword';

    • veya Adminer veya WorkBench veya hesap bilgilerini oluşturmak, kontrol etmek veya düzeltmek için başka bir grafik aracı kullanın.

    • kimlik bilgilerinizi düzeltemezseniz, internet'ten "lütfen yardım" istemeniz hiçbir etkiye sahip olmayacaktır. Sadece siz ve barındırma sağlayıcınız izinlere ve teşhis için yeterli erişime sahiptir ve işleri Düzelt.

  • , sağlayıcınız tarafından verilen ana bilgisayar adını kullanarak veritabanı sunucusuna ulaşabileceğini doğrulayın:

    ping dbserver.hoster.example.net

    • bunu doğrudan web sunucunuzda bir SSH konsolundan kontrol edin. Yerel geliştirme istemcinizden paylaşılan barındırma sunucunuza test etmek nadiren anlamlıdır.

    • genellikle sunucu adının "localhost" olmasını istersiniz , bu da normalde mevcut olduğunda yerel bir adlandırılmış soket kullanır. Geri dönüş olarak 1519110920 deneyin '' bazen.

    • MySQL/MariaDB sunucunuz farklı bir bağlantı noktasında Dinliyorsa, "servername:3306" kullanın .

    • bu başarısız olursa, belki de bir güvenlik duvarı sorunu var. (Konu dışı, bir programlama sorusu değil. Hayır uzaktan tahmin-mümkün yardımcı olur.)

  • kullanırken sabitler örn. DB_USER veya DB_PASSWORD gibi, aslında veya olduklarını kontrol edin .

    • bir "Warning: Access defined for 'DB_USER'@'host'" ve "Notice: use of undefined constant 'DB_PASS'" alırsanız, o zaman bu sizin sorununuz.

    • örneğinizin doğrulandığını doğrulayın xy/db-config.php aslında dahil edildi ve whatelse.

  • doğru seti kontrol et GRANT izinler .

    • username + password çifti için yeterli değil.

    • her MySQL / MariaDB hesabı ekli bir izin kümesine sahip olabilir.

    • hangi veritabanlarına bağlanmanıza izin verildiğini, hangi istemci/sunucunun bağlantıdan kaynaklanabileceğini ve hangi sorgulara izin verildiğini kısıtlayabilirler.

    • "erişim engellendi" uyarısı, mysql_query çağrıları için de görünebilir, SELECT için belirli bir tablodan veya INSERT / UPDATE ve daha fazlası genellikle DELETE her şey.

    • sen uyum hesap izinleri kullanarak komut satırı istemcisi başına bağlandığında yönetici hesabı gibi bir sorgu ile:

      GRANT ALL ON yourdb.* TO 'username'@'localhost';

  • uyarı Warning: mysql_query(): Access denied for user ''@'localhost' ile ilk ortaya çıkarsa, php'ye sahip olabilirsiniz.ını-önceden yapılandırılmış hesap / şifre çifti .

    • mysql.default_user= ve mysql.default_password= anlamlı değerlere sahip olduğunu kontrol edin.

    • Oftentimes bu bir sağlayıcı yapılandırmasıdır. Yani uyumsuzluk için onların Destek başvurun.

  • paylaşılan barındırma sağlayıcınızın belgelerini bulun:

  • mevcut bağlantı havuzunda olabileceğini unutmayın . Çok fazla eşzamanlı bağlantı için Erişim reddedildi uyarıları alırsınız. (Kurulumu araştırmak Zorundasınız. Bu, bir programlama sorusu değil, konu dışı bir sunucu yapılandırma sorunu.)

  • your libmysql client version veritabanı sunucusu ile uyumlu olmayabilir. Normalde MySQL ve MariaDB sunucularına sürücüye derlenmiş PHPs ile ulaşılabilir. Özel bir kurulumunuz veya eski bir PHP sürümünüz ve çok daha yeni bir veritabanı sunucunuz veya önemli ölçüde eski bir sürümünüz varsa, sürüm uyuşmazlığı bağlantıları engelleyebilir. (Hayır, kendini araştırmalısın. Kimse kurulumunuzu tahmin edemez).

daha fazla referans:

Btw, muhtemelen mysql_* işlevleri artık kullanmak istemiyorum . Yeni gelenler genellikle mysqli ye göç ederler , ancak bu da sıkıcı olur. Bunun yerine PDO okumak ve ifadeleri hazırladı .

$db = new PDO("mysql:host=localhost;dbname=testdb", "username", "password");

16
cevap mario 2017-05-23 15:26:38
kaynak

Uyarı: dize dönüştürme dizisi

bir diziyi bir dize olarak tedavi etmeye çalışırsanız bu basitçe olur:

$arr = array('foo', 'bar');

echo $arr;  // Notice: Array to string conversion
$str = 'Something, ' . $arr;  // Notice: Array to string conversion

bir dizi echo ' d veya bir dize ile birleştirilemez, çünkü sonuç iyi tanımlanmamıştır. PHP dizinin yerine "dizi" dizesini kullanacak ve muhtemelen amaçlanan şeyin olmadığını ve kodunuzu burada kontrol etmeniz gerektiğini belirtmek için bildirimi tetikleyecektir. Muhtemelen istiyorsun. bunun yerine böyle bir şey:

echo $arr[0];  // displays foo
$str = 'Something ' . join(', ', $arr); //displays Something, foo, bar

veya döngü dizisi:

foreach($arr as $key => $value) {
    echo "array $key = $value";
    // displays first: array 0 = foo
    // displays next:  array 1 = bar
}

bu bildirim beklemediğiniz bir yerde görünüyorsa, bir dizenin aslında bir dizi olduğunu düşündüğünüz bir değişken anlamına gelir. Bu, kodunuzda, beklediğiniz dize yerine bu değişkeni bir dizi yapan bir hatanız olduğu anlamına gelir.

14
cevap deceze 2018-04-05 18:29:47
kaynak

Uyarı: sıfır bölme

uyarı mesajı 'Division by zero', yeni PHP geliştiricileri arasında en çok sorulan sorulardan biridir. Bu hata bir özel duruma neden olmaz, bu nedenle, bazı geliştiriciler bazen hata bastırma işleci @ ifadeden önce ekleyerek uyarıyı bastırır. Örneğin:

$value = @(2 / 0);

ancak, herhangi bir uyarıda olduğu gibi, en iyi yaklaşım uyarının nedenini takip etmek olacaktır ve çözün. Uyarının nedeni, 0'a bölmeye çalıştığınız herhangi bir örnekten, 0'a eşit bir değişkene veya atanmamış bir değişkene (çünkü NULL == 0) gelecektir, çünkü sonuç 'tanımsız'olacaktır.

bu uyarıyı düzeltmek için, değerin 0 olmadığını kontrol etmek için ifadenizi yeniden yazmalısınız, eğer öyleyse başka bir şey yapın. Değer sıfır ise, bölmeyin veya değeri 1 olarak değiştirin ve bölün, böylece bölme sonuçlanır sadece ek değişkenle bölünen eşdeğerdir.

if ( $var1 == 0 ) { // check if var1 equals zero
    $var1 = 1; // var1 equaled zero so change var1 to equal one instead
    $var3 = ($var2 / $var1); // divide var1/var2 ie. 1/1
} else {
    $var3 = ($var2 / $var1); // if var1 does not equal zero, divide
}

İlgili Sorular:

11
cevap davidcondrey 2017-05-23 15:10:44
kaynak

katı standartlar: statik olmayan yöntem [::] statik olarak adlandırılmamalıdır

, statik olduğu gibi bir sınıfta statik olmayan bir yöntem çağırmaya çalıştığınızda oluşur ve E_STRICT ayarlarınızda E_STRICT bayrağı da bulunur.

örnek:

class HTML {
   public function br() {
      echo '<br>';
   }
}

HTML::br() veya $html::br()

aslında değil bu hatayı önleyebilirsiniz E_STRICT için error_reporting() , örneğin

ekleme
error_reporting(E_ALL & ~E_STRICT);

PHP 5.4.0 ve üzeri için olduğu gibi, E_STRICT E_ALL [ ref ] dahildir. Ama bu tavsiye edilemez. Çözüm, amaçlanan statik işlevinizi static :

olarak tanımlamaktır
public static function br() {
  echo '<br>';
}

veya işlevi geleneksel olarak çağırın:

$html = new HTML();
$html->br();

ilgili sorular:

8
cevap davidkonrad 2017-05-23 15:10:44
kaynak

ölümcül hata: [TraitA] ve [TraitB] [ClassC]

bileşiminde aynı özelliği ([$x]) tanımlayın

bir sınıf use birden çok özellik , bu özelliklerin iki veya daha fazla aynı adı taşıyan bir özellik tanımladı ve özelliği ile farklı başlangıç değerlerine sahip olduğunda oluşur.

örnek:

<?php
trait TraitA
{
    public $x = 'a';
}
trait TraitB
{
    public $x = 'b';
}
class ClassC
{
    use TraitA, TraitB;
}

.: rakip yöntemler arasındaki çatışmaları çözmek mümkün olsa da, şu anda iki rakip özellik arasında bir çatışmayı çözecek hiçbir sözdizimi yoktur. Şu anda tek çözüm refactor ; yani, ölümcül bir hata üreten özellik adları arasında bir çatışmayı önlemek.


İlgili Sorular:

2
cevap jaswrks 2017-11-07 17:27:54
kaynak

Diğer sorular php mysql debugging warnings