PHP mail() fonksiyonunun çalışmaması

PHP, Wordpress 1 Yorum Yapılmış »

php logoŞimdi efendim WordPress kullanan arkadaşlar bilirler, özellikle wordpress’i windows tabanlı işletim sistemleri üzerinde kullanan arkadaşlar -ne biliyim Windows 2003 olur, Windows 2000 olur, olur da olur – dikkat etmişlerdir, çoğu zaman php nin mail() fonksiyonu çalışmaz. Ha şansınız vardır, php’ yi kurar kurmaz, WordPress’i yükler yüklemez çalışır, götünüzden bal akıyo derim, başka da bişey demem. Normalde çalışmaz çünkü, ya da yalnızca bana kıllık yapıyo, bilemiyorum.

Neyse efendim, ben bu olaydan çokça muzdarip olduğum için, eğer siz de yaşıyorsanız benzer durumları, yaşamamanız için -sonuçta sizin rahatınız için çalışıyoruz dimi :) - kısaca bu problemi nasıl çözebileceğinizden bahsedicem. Öncelikle php’nin mail() fonksiyonunun gerçekten çalışıp çalışmadığını kontrol etmemiz lazım. Bunun için de boş bir php sayfası açıyoruz ve içerisine aşağıdaki kodları yazıyoruz efendim. Nedir yani,

<?php
$email = ‘postmaster@mymail.com‘;
$fromemail = ‘
postmaster@mymail.com‘;
$subject = $_POST['subject'];
$msg = ‘Bu bir denemedir’;
$headers = “From: “.$fromemail;
if( !mail($email, $subject, $msg, $headers) ){
echo “Eposta gönderiminde hata oluştu.”;
}else{
echo “Eposta başarıyla gönderildi.”;
}
?>

Sonrasında efendim dosyamızı kaydediyoruz ve sunucu üzerindeki bir siteye koyuyoruz. Tarayıcımızı kullanarak bu dosyayı browse ediyoruz. Karşımıza “Eposta gönderiminde hata oluştu” gibi bir yazı çıkıyorsa rahatlıkla şunu diyebiliyoruz, evet sizin sunucu üzerindeki php mail() fonksiyonun götüne su kaçmış, dolayısıyla çalışmıyor. Ha yok “Eposta başarıyla gönderildi” gibi bir yazı çıkarsa karşınıza, bu yazının geri kalan kısmını okumanıza gerek yok. Evinize gidin, yatın, dinlenin felan fişmekan…

Şimdi bilen arkadaşlar bilirler, php kurulu sistemlerde meşhur bir dosya vardır; php.ini dosyayı. Öteden beri kıl olurum zaten bu dosyaya, tipik bir linux, unix sistem kafası. Neyse mail() fonksiyonunuz çalışmıyorsa gidip php.ini dosyasını açıyoruz (genellikle windows kurulumunun olduğu klasör altında olur, ya da özel olarak php’yi belirli bir klasöre kurduysanız o klasör altındadır) ve aşağıdaki satırların olduğu bölümü buluyoruz.
[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25

burada dikkat etmeniz gereken satır smtp_port satırı, bu satırın mevcut sunucunuz üzerindeki SMTP servisinin kullandığı port ile aynı olması gerekir. Misal benim php.ini dosyamda bu değer 1000′di. Ne alakaysa artık! Ben bu değeri default smtp port değeri olan 25 ile değiştirdim ve iis’i yeniden başlatıp yukarıdaki testi (mail() fonksiyonunun çalışıp çalışmıyor olduğu) yinelediğimde, çok afedersiniz eşek gibi gönderdi mailleri php, çatır çatır hemde :)

Umarım faydalı olur bu bilgiler sizin için de.

Warning: Cannot modify header information

PHP, Wordpress Yorum Yapılmamış »

PHP kullanan arkadaşlar bilirler PHP’nin “Warning: Cannot modify header information” şeklinde bir uyarı mesajı vardır ki programcıya saç baş yoldurur adeta…

www.kahkaha.com ‘da çalıştığım dönemlerde yoğun olarak PHP kullanıyordum ve orada çalışırken de bu hata yüzünden çok tırnak yedim, çok saç döktüm :) Şimdi bizim derneğin sitesi (www.karsipinarkoyu.com) vesilesi ile yeniden PHP’ye bulaşmam gerekti, bulaştım da ve yine bu saç baş yolduran problem karşıma çıktı. Başka arkadaşlar da saç baş yolmasınlar diye bu yazıyı yazıyorum zaten. Benim bu problemi çözerken izlediğim adımlar umarım diğer arkadaşların da işlerine yarar…

  • .htaccess dosyasına php_flag output_buffering on seçeneğinin eklenmesi
    Ben denedim hiçbir işe yaramadı. Dışarıda bi dolu internet sitesi var bunu yapın probleminiz çözülecek diye. İnanmayın arkadaşlar, denedim ve onayladım. Bi b*ka yaramıyor bu seçenek…
  • PHP kodlarında kullanılan dosya formatı ile encoding’in farklı olması
    Bu seçeneği de denedim, çalışmadı. Misal dosya kodlaması UTF-8 ama sizin fiziksel dosyanız disk üzerinde ANSI olarak kayıtlı duruyor. Elemanlar diyorlar ki kodlama ile dosya kayıt formatı aynı olmalı. Kodlama UTF-8 ise, kayıt formatı da UTF-8 olmalı. Çok detaylı incelemedim bu sseçeneği açıkçası. Belki sizde çalışabilir ama bende herhangi bir etkisi olmadı.

  • PHP dosyalarının farklı editörler ile yeniden düzenlenmesi
    Şimdi efendim bu seçenek aslın “farklı editörler” değil de “skindirik editörler” olmalı aslında. Bazı editörler hakkaten skindirik oluyorlar çünkü (bkz. Microsoft Visual Studio Editor). Bu sorunun (Warning: Cannot modify header information) temel kaynağı bu aslında arkadaşlar. Yani bir php kodu başlangıç etiketinden (<?php) önce ya da kapanış etiketinden (?>) sonra boşlukların, yeni satırların veya söz dizimini bozan başka karakterlerin kullanılıyor olması. Bazen bu karakterleri (gereksiz) biz bilerek yerleştiriyorz PHP kodlarına bazen ve sıkça da yukarıda sözünü ettiğim skindirik editörler kendileri ekliyorlar bu karakterleri koda. Siz tabi durumdan bihabersiniz. Bu hatayı alınca da çok afedersiniz g*t gibi kalıyosunuz, kalıyoruz, ben de kaldım çünkü, ortada…

Sonuç olarak arkadaşlar yukarıdaki uyarı mesajını alan arkadaşlara yegane tavsiyem. Orjinal kodlarını yeniden değiştirdikleri kodların üzerine yazmaları. Bunun için de günlük yedeklerinizi vs. çok iyi yapıyor olmanız gerekiyor. Aman dikkat diyorum…


Tasarım:FoxTheme & Photoshop Brushes | Türkçe Çeviri:denizakin.com
Yazılar RSS Yorumlar RSS Log in