Blank Pages / Boş Sayfalar - Problemi
Blank-Pages (Boş Sayfalar) olarak da bilinen bu durum scriptin birden erken bir şekilde durdurulmasına sebebiyet veren bir hatadır. Hata sizlere birşeylerin ters gittiğini göstermek isteyen bir uyarıdır. Ancak yinede Bazen bu sorunun nerden kaynaklandığını bulmak düşündüğünüzden daha zor olabilir.
Herhangi bir destek forumuna “yardım edin, beyaz(boş) sayfa hatası alıyorum” demenizin size ciddi bir faydası bulunmayacak, kimse sorununuz açık ve seçik ifade edemiğiniz için doğru düzgün cevaplayamayacak, dolayısı ile problemi çözme girişiminiz başarısızlıka sonuçlanacaktır.
Ancak bunun yerine ilgi hatanın derinliklerine inerek kucuk bir “hata mesaları” listesi ve bunların hangi konumda tezahür ettiklerine dair bilgi toplamasını başarbilirseniz, sorunuzun çözümüne bir kademe daha yaklaşmış olursunuz. (Aynı zamanda sorunuzun ek kısmına da hangi versiyon xoops yazılımını kullandığınızı, mysql tablonuzun versiyon durumunu, apache bir sunucu da mı yoksa başka bir yerde mi sitenizi barındırdığınızı, hangi tema ve template setini yazılımla kullandığınızı da belirtmeyi ilke edinin.!!!)
A: Var olan hatayı şu adımları izleyerek gidermeye çalışın.
1. admin panelini görebiliyorsanız, hemen özellikler à”Ana” seçeneğine gelerek “Php Debugging”
(php bug düzeltici) yi çalıştırın.
2-) Admin paneline bir nedenden ötürü görüntüleyemiyorsanız, ancak mysql e ulaşma avantajınız var ise xoops_config SET conf_value=1 olarak güncelleyiniz. (“debug_mode” gördüğünüz alanda)
Not: "xoops_config" bilgisinin ise config table ile doğru olduğundan emin olunuz.
(Bu özellik XOOPS 2.2 de desteklenmemektedir., 2a bknz)
2a: XOOPS 2.2, de sitenizi root dizinine giderek “"recovery.php" i bulun, ayarları burada debug edin.
3.- eğer admin (yönetim) paneline hiçbirşekilde giremiyor, ulaşamıyor ve mysql tablolarını karıştırmak istemiyorsanız… şu dosyayı yeniden düzenleyin (edit edin)
"include/common.php” dosyasını açın, 83. satıra gelin "error_reporting(0);" komutunu "error_reporting(E_ALL);". Olarak değiştirin.
4. If this still doesn't work, your server or hoster may have turned off debugging in "/etc/php.ini" (linux) or "WIN_DIRECTORY/php.ini" (windows). Make sure there is a line in there "display_errors On".
4) Eğer halen yaptığınız işlerden sonuç alamıyorsanız, hata devam ediyor yani düzelmiyor ise;
sunucunuz yada hosting firmanız "/etc/php.ini" (linux), "WIN_DIRECTORY/php.ini" (windows )modunu off pozisyonuna getirmiş olabilir. Burada şu özelliğin aktif olmasına dikkat edin…
olması gereken satır “"display_errors On".
5-) Eğer bu dosyaya ulaşmanız mümkün değil yani yetkiniz yok ise; (örnek paylaşılmış hosting – shared), ve serveriniz “apache” websunucusunu kullanıyorsa, siz de bir ".htaccess" dosyası oluşturarak işlemi lehinize çevirebilirsiniz. (yani diğer ayarlar gormezden gelinir .htacces varsayılan olarak kabul edilir) .htacces dosyamız şu satırları içermelidir; "php_flag display_errors on".
İşin esppirisi ise tam olarak bu komut dizisinin yerleştirileceği satırı bulmaktır. Bunun için sorun yaşadığınız url adresini bulun, ilgili dosyayı karşıt dizine yerleştirin..
Örnek: "someplace.com/xoops/" yada “someplace.com/xoops/index.php “ ise dosyanızın yeri
Yerleştireceğiniz konum şuna benzemelidir "someplace.com/xoops/modules/system/admin.php"
Ve dosyayı "modules/system" e koymalısınız.
B: Genel Hata Mesajları ve Fixleri ( Güvenlik Yamaları, Düzeltici Önlemler)
1. "Failed opening required..." ya da r "Undefined function..."
Bu hata daha çok gerekli bir dosyanın yüklenemediğini hatanın bu yüzden kaynaklandığını işaret eder…
Yapmanız Gerekenler;
Öncelikle gerçekten dosyanın işaret edilen yerde ve doğru konumda mevcut olup olmadığını kontrol etmek; Eğer öyle ise ikinci adımda dosyaya verilen izinleri(permissions) kontrol etmemiz gerekir (Dosya ftp sunucusunda Read konumunda olmalıdır)
Hatayı verdiren bir olasılık da dosyanın birşekilde işlevini kaybetmesi başka bir tanımla bozulması olabilir. Ya da belki de ftp istemciniz (programınız) file/directory isimlerini değiştirmiş de olabilir.
Ftp istemcinizin doğru çalıştığından emin olmak için program ayarlarını gözden geçirin. ( Bu aşamada ftp programnınızın "preserve directory structure" özelliğine sahip kalması gerektiğini unutmaayın, “preserve directory structure = dizin ve dosya isim şeklini aynen koru”, tabii isimin aynen korunması gerekir, örnek verirsek; example.php dosyası Example.php olarak sunucuya geçmemelidir)
Tüm bu özelliklerin doğru ayarlandığından ve istemcinizin düzgün çalıştığından emin olduktan sonra elinizdeki dosyaları bir kez daha upload etmeyi(aktarmayı) deneyin.
2. "Call to a member of a non-object"
Bu hatanın sıklıkla karşımıza çıkma sebebi ise, yazılımın veritabanına ulaşırken bir prolemle karşılaşıp bağlanamaması ile ilintilidir. Eğer bu hata şu satırda karşınıza çıkıyor ise;
Satır sırası 286; kernel/configitem.php , sonra database (veritabanı) için bağıntılar içeren mainfile.php dosyasındaki ayarların doğru yapıldığından emin olun. (Mysql yapılandırması ve izinlerin geçerli olmasına ve mysql in çalışır durumda olmasına dikkat edin)
Db ye direkt olarak ulaşmayı deneyin, eğer mümkün ise xoops’u yuklerken atadpğınız şifre ve kullanıcı adı bilgileri ile giriş yapın! Unutmayın ki bu noktada değişikleri yaptıktan sonra, “flush privileges” i çalıştırmalı ve mysql database i yeniden başlatmalısınız.
Bu problem aynı zamanda başka sebepler yüzünden de vuku bulabilir. Eğer php biliyorsanız, Hatayı veren yeri php satırlarında gözden geçirin.
Örnek: If you see "$xoopsDB->query('blah');" goruyorsanız $xoopsDB nin nesne olmadığını bilin, bu sadece db nin doğru şekilde bağlanamadığını gösterir.
Tabii bunlar, olabilecek sorunlara yonellik, size fikir verdirici çözüm yollarıdır. Bazen sorunları çözebilmek için daha detaylı birşekilde araştırma yapmanız gerekebilir.
3. "Cannot redeclare class ..."
Yukarıdaki bu hatanın tezahür etme sebebi ise sıklıkla non-standart(standart olmayan) modüllerin install etdilmesinden kaynaklanır. Bazı modüller henüz geliştirilme aşamasındadırlar ve henüz xoops2 ye adapte edilmemiş ya da gerekli deneme testleri yapılmamış olabilir. Büyük ihtimalle modül kodlarının yazarı, “include_once” komutunun yerine “include” kodunu tercih etmiştir buda program bunyesinde bir karışılığa sebebiyet veriyordur. Sorunun telafisi için bu modülün çalışması de-aktif edilebilir/engellenebilir. (Ya da uyumlu güncel modüllerle değiştirilir)
· Şu şekilde de sonuç alabilirsiniz; ilgili satıra gidin # olayları şuna uyumlandırın include('yourfile'); to include_once('yourfile'); - ackbarr