ibonette.com | PHP 5.3 ‘deki Deprecated Hatası (Deprecated: Assigning the return value…)

ibonette.com

Samimi olmayi vaat edebilirim ama tarafsiz olmayi asla…
Subscribe

PHP 5.3 ‘deki Deprecated Hatası (Deprecated: Assigning the return value…)

Temmuz 16, 2009 Yazan: ibrahim Kategori: PROGRAMLAMA, TEKNOLOJİ

PHP ‘nin 5.3 versiyonunu üzerinde, CakePHP, Wordpress, Joomla!  vs gibi php 4 uyumlu uygulamalarınızı tarayıcıdan çağırmaya kalktığınızda aşağıdaki hatayı alıyorsunuz;

Deprecated: Assigning the return value of new by reference is deprecated in .....

Bu hata, genel olarak, php 4 uyumlu olarak geliştirilen uygulamalarda alınıyor.  Onaylanmayan fonksiyonların kullanıldığı betikler bu hatayı veriyor. Yani artık 5.3 ile birlikte tavsiye edilmeyen ve php 6.0 kaldırılacak olan fonksiyonlar. Örneğin; ereg, eregi, ereg_replace, split, spliti, sql_regcase… Bu fonksiyonlar halihazırda kullanılabilir durumda ancak yukarıdaki hatayı üretiyor. Yani, Php 5.3   ile birlikte değişen (php.ini) hata raporlama ayarları nedeniyle bu hata alınıyor.

Standart php kurulumlarının üzerinde modifikasyon yapılması hiç işime gelmediği için bana en uygun çözüm şu an için, php 5.2.x ‘e dönmek oldu. Aksi halde php 5.3 versiyonuda php.ini içindeki hata raporlama ayarları ile uğraşarak düzeltme yoluna gitmeye kalksam, kullanıcıların da bu düzenlemeyi yapması gerekecek ki çoğu kullanıcı için bu mümkün değil.

Ayrıca yayındaki php 4  uygulamalarınızda bu hatayla karşılaşma olasılığınız düşük, çünkü php 5.3 versiyonu nispeten yeni bir sürüm olduğu için zaten sunucularda yüklü olmayacaktır.

Bunun dışında diğer bir çözüm ise, (gördüğüm kadarı ile) uygulamarınızı php 4 uyumluluğunu bir kenarıya bırakıp tamamen php 5 uyumlu uygulama geliştirmek. Fakata burada eğer benim gibi cakephp vs gibi php 4 uyumlu frameworkleri kullanıyorsanız, istediğiniz kadar php 5 uyumlu yazılım geliştirin, frameworkün kendisininde bu şekilde düzeltilmesi gerekecektir.

Eğer localdeki geliştirmelerinizde wamp kullanıyorsanız şuradan php 5.2.x başlığı altındaki dosyalardan istediğinizi indirip mevcut wamp kulumunuzun üzerine kurun. Daha sonra wamp menüden php/versiyon bölümünden yeni yüklemiş olduğunuz php 5.2.x versiyonunu seçerek apache’yi yeniden başlatmanız gerekiyor.

Ancak bana kalırsa artık onaylanmayan fonksiyonları kullanmaktan hızla kaçınmaya başlamak lazım. Çünkü php 6 ile bu fonksiyonları kullandığınız betikleriniz çalışmayacaktır. Şuradan, artık önerilmeyen (deprecated) özellikleri-fonksiyonları ve bunların yerine kullanabileceğiniz fonksiyonları  inceleyerek gerekli önlemleri alabilirsiniz.

Şimdilik durum bu. Konuyla ilgili uzun uzadıya ilgilenecek vaktim yok malesef.  Konuyla ilgili nihai çözüm php tarafondan gelemesi gerekiyor. Belki de php tarafından bilinçli olarak yapılmış olabilir bilemiyorum. Önümüzdeki günlerde daha mantıklı çözümler buluruz. Bu olana kadar ihtiyacı olan için, yukarıdaki yazı yararlı olur umarım.

Saygılar



5 yorumlar > “PHP 5.3 ‘deki Deprecated Hatası (Deprecated: Assigning the return value…)”


  1. ağzına sağlık çok güzel anlatmışın. anlatmakla kalmamış çokta güzel çözdürdün. teşekkürler

    1
  2. Elinize sağlık teşekkürler.

    2
  3. ****** Mukaddes says:

    php.ini içinden E_ALL içeren aktif satırı buluyoruz

    E_ALL & ~E_NOTICE & ~E_DEPRECATED

    şeklinde değiştiriyoruz. sorun kalmıyor.

    3
  4. valla işimi gördü çok saolun

    4
  5. wampserver kullanıyordum, bu hatayı aldım. Anlattığınız şekilde sorun çözüldü teşekkür ederim.

    5


Yorum yazın