PHP parse_ini_file() Hatası Çözümü

Web sitelerimizi barındırdığımız hosting firmaları, güvenlik vb. nedenlerle birtakım fonksiyonları devre dışı bırakabiliyorlar. Nadir olsada parse_ini_file() isimli fonksiyon da bu kısıtlamadan nasibini alabiliyor. Böyle bir durumda kullandığınız php betiği, satırlarca hata kaydı üretip, işlevini yerine getiremiyor. Sorunun çözümü için hosting sağlayıcı firmanız ile iletişime geçip, yardım talep edebilirsiniz. Fakat bu talep güvenlik nedeniyle reddedilebilir. Bu sayfayı okuyorsanız, bu sorunu yaşıyor ve bir çözüm arıyorsunuzdur, endişelenmeyin her zaman alternatif bir çözüm vardır.

 

parse_ini_file() fonksiyonu yerine, bu fonksiyonla neredeyse aynı işlemi yerine getiren bir alternatif olan parse_ini_string() fonksiyonu birkaç ufak değişiklikle kullanılabilir. Aşağıdaki kod blogu ile bunu göstermeye çalışacağım;

 

					

        if (is_array($ini_files)) {
            foreach ($ini_files as $file) {
                $ini = parse_ini_file($file);
                foreach ($ini as $var => $val) {
                    $this->$var = $val;
                }
            }
        }

 

Eğer hosting sağlayıcımız, parse_ini_file() için bir kısıtlayıcı oluşturmuşsa yukarıdaki kod işini yapamayacak ve hata kayıtlarına aşağıdaki gibi uyarılar düşecektir;

PHP Warning: parse_ini_file() has been disabled for security reasons in ………

Bu hatadan kurtulmak için, kısıtlı fonksiyonu yukarıda bahsettiğim parse_ini_string() fonksiyonu ile değiştireceğim, yeni kodumuz aşağıdaki gibi olacak;

					

        if (is_array($ini_files)) {
            foreach ($ini_files as $file) {
                $ini = parse_ini_string(file_get_contents($file));
                foreach ($ini as $var => $val) {
                    $this->$var = $val;
                }
            }
        }

Gördüğünüz gibi, $ini = parse_ini_file($file); satırını, $ini = parse_ini_string(file_get_contents($file)); şeklinde değiştirerek sorunumuzu çözdük. Kısıtlanmış fonksiyon yerine parse_ini_string() fonksiyonunu ufak bir değişiklikle uyarladık ve betiğimizi çalışır hale getirdik.

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir