Yazılar

Php 5.6 phpmailer mail gönderme problemi

Php 5.6 versiyonunda phpmailer tabanlı scriptleri çalışmaz hale geldi.Problem yaşayanlar için  alttaki metin faydalı olabilir.

php 5.6 versiyonunda phpmailer scriptiniz çalışmaz çünkü;

  1. php 5.6 versiyonundan itibaren ,bağlantı kurulan servisteki ssl sertifkasının geçrli olup olmadığını kontrol etmesi
  2. phpmailer bağlantı kurduğu eposta sunucusunda tls encryption olduğunu farkettiği anda otomatikman tls doğrulamayı aktif ediyor.bu esnada karşıda geçersiz veya self signed bir sertifika varsa anlaşma sağlanamıyor.

phpmailer bu durum için 5.2.10 sürümünde bunun için bir istisna hazırlamış.alttaki linkte sertifika doğrulaması ile ilgili parametleri alt betikte iptal edebiliyorsunuz.

https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting#php-56-certificate-verification-failure

bu arada phpmailer sürümü eski olanlarda bu özellik olmayabilir ama zaten şu genel güvenkik açığı sebebiyle phpmailerinizi son sürüme güncellesiniz bence iyi olur.

Ayrıca durumunuza göre aşağıdaki smtpautotls ayarını da değiştirmeniz meseleyi çözüme kavuşturabilir.
https://phpmailer.github.io/PHPMailer/classes/PHPMailer.html#property_SMTPAutoTLS

Centos 7 de php ye mcrypt eklentisi kurmak

Centos’u hazırlayanların bu php mcrypt eklentisine bir gıcığı var ama neden bir türlü anlamış değilim.

Epel deposundan php 5.4 için mcrypt eklentisi kurmak için öncelikle paket deposunu işletim sisteminizde aktif etmelisiniz.

sudo yum install epel-release ( zaten root iseniz sudoya gerek yoktur.)

yazarak kurulacak paketi kabul edin.Epel sisteminize kurulacaktır.

Ardından php-mcrypt paketini sisteminize kurun..

yum install –enablerepo=”epel” php-mcrypt

Aşağıdaki ekrandaki gibi size gpg key’i onaylayıp onaylamadığınızı soracaktır.Bir tür güven ilişkisi oluyor bir süre sonra,hiç düşünmeden yesss diyorsunuz.Ama işin doğrusu bunları kontrol edip doğrulamak lazım.Ben doğrusunu söyleyeyim de siz nasıl bilirseniz öyle yapın.

Selection_031

Akabinde apache servisini “service httpd restart” diyerek resetlersiz işlem tamamlanmış olacaktır.İnanmıyorsanız  phpinfo ile bakın.

Centossuz günler dilerim.

Apache fastcgi can’t apply process slot for error hatası

fb0b45015a

mod_fcgid Apache 2 webserverlarda yaygın olarak kullanılan bir modüldür.Php scriptlerini belli bir kullanıcının çalıştırmasına olanak tanır.

öntanımlı olarak belli bir limiti olan bu modülün limitleri sınıra dayandığında websiteler oldukça yavaş çalışmaya başlar,zaman zaman “500 Internal Server error” hatası alırsınız.

yapılması gereken;

Redhat ve türevlerinde;

/etc/httpd/conf.d/fcgid.conf

Debian,Ubuntu türevlerinde

/etc/apache2/mods-enabled/fcgid.conf

dosyasını açıp

FcgidMaxProcesses değerini arttırmaktır.

Daha sonra Apache web servisini yeniden başlatmalısınız.

debian ve ubuntu için : service apache2 restart

redhat ve centos 6.x için /etc/init.d/httpd restart veya service httpd restart

7.x versiyonları için systemctl httpd restart (geriye dönük uyumluluk için  service httpd restart komutu da 7.x versiyonlarda çalışmaktadır.)

Joomla ve WordPress Hosting

En basit haliyle uyum problemleri ya bileşen eksikliğinden ya da dosya sistemi üzerine yazma haklarından ortaya çıkar.Bu sadece hazır scriptlere mahsus bir durum da değildir esasında.Joomla’nız,  wordpress’iniz ya da elinizdeki varolan ve kullanmak istediğiniz herhangi bir yazılım ,eğer hosting alanında dosya oluşturabiliyor veya silebiliyorsa,kullandığı tüm bileşenler serverda destekleniyorsa güzel güzel çalışır.

Bu uyumluluğun var olup olmadığını anlamanın iki basit yolu vardır.

Konu php bileşenleri ise;örneğin php-xml php-mbstring gibi,

Satın aldığınız hostinginizde phpinfo.php adıyla bir dosya oluşturun.ismin önemi yok.uzantısı php olsun yeter.ve içine şunları yazın

<?php
phpinfo();
?>

Daha sonra alanadınızla birlikte bu dosyanın tam yolunu tarayıcınızın adres satırına yazarak çağırın.Karşınıza tam da şu şekilde bir ekran gelecektir.(Eğer phpinfo() fonksiyonu birşekilde kapatılmamışsa!)

Karşınıza gelen bu upuzun sayfada sırasıyla hangi php bileşenlerin yüklü olduğunu görebilir,kullanmak istediğiniz scriptin gereksinimleriyle karşılaştırabilirsiniz.

Eğer konu yazma izinleri ile ilgili ise aynı dosyada üçüncü satıra dikkat etmenizi tavsiye ederim.Örneğimizde,bu satırda CGI/FastCGI yazmaktadır.Burada sadece CGI,Apache2 Handler,ISAPI extension hatta php/FPM de yazabilirdi.

Apache2 Handler yazıyorsa başınız yazma izinleriyle dertte demektir.Dosyaları webden yüklemeniz için yazma izinlerini ve dosya sahipliklerini değiştirtmek zorunda kalacaksınız.Daha sonra da bu dosyaları silmek istediğinizde hosting firmanıza telefon veya çağrı açmak zorunda kalacaksınız.ISAPI’ de de aynı durum sözkonusu.

Bu tip sorunlarla karşılaşmamak için barındırma hizmeti satın almadan önce firmayla görüşüp hangi hosting kontrol paneli kullandıklarını sormanızda fayda var.Plesk ise php/fastcgi,cpanel ise phpsuexec,directadmin ise suphp kullanıp kullanmadıklarını sorun.Alacağınız yanıt evet ise joomla veya wordpress bu bakımdan sorunsuz çalışabilir manasına gelecektir.

Web Sunucu Güvenliği İpuçları

Linux web sunucularda temp dizini güvenliği

Web sunucunuzdaki geçici işlemler için dosya oluşturulan dizin /tmp dizinidir.Bir web sunucusunda genelde /tmp dizini üzerine tüm kullanıcılar yazma okuma izinlerine sahip oluyor.Böylece herkesin yazabildiği ve okuyabildiği bir alan güvenlik riskini arttırıyor.

Bu riski bir nebze düşürmek için /tmp dizinini ayrı bir partition olarak bağlamalı ve için kod çalıştırılamaz şekilde ayarlamalısınız.

Eğer işin bu kısmını düşünmeden sunucu kurmuşsanız ve diskinizde boş alan yoksa aşağıdaki linux/unix işletim sistemlerine özgü raw disk image mount alternatifini kullanabilirsiniz.

Önce tmp bölümün ne kadar alana gereksinim duyduğuna karar verin ve bunun için diskinizdeki boş alanı kontrol edin

Ssh üzerinden root kullanıcısı ile bağlıyken şu komutu verin;

 

[root@localhost ]# df -h

 

/dev/sda1 214G 130G 74G 64% /

 

 

Burada / dizininde 74 Gb boş alan olduğunu görüyoruz.Bize tahminen 15 gb tmp dizini yeterli olabilir.

Şimdi disk imajı oluşturma ve sisteme bağlama aşamasındayız.Önemli servislerinizi (mysql,apache vb.) durdurup /tmp dizin içeriğinizi bir yere yedekleyin .Daha sonra aşağıdaki komutları sırasıyla yazın.

dd if=/dev/zero of=/usr/tmpMnt bs=1024 count=15000000

 

/sbin/mke2fs /usr/tmpMnt

 

/usr/tmpMnt is not a block special device.
Proceed anyway? (y,n) y

 

 

 

Bu komutları sırasıyla uyguladığınızda artık /usr altında 15 gb ‘lık tmpMnt dosyanızın olduğunu görebilirsiniz.Imajı sisteme tmp olarak bağlayalım;

mount -o loop,noexec,nosuid,rw /usr/tmpMnt /tmp

 

Bu komuttan sonra hiçbir hata çıkmadıysa disk imajı tmp olarak bağlanmış demektir.Daha önce başka bir yere almış olduğunuz dosyaları şimdi /tmp ‘e tekrar aktarıp servislerinizi çalıştırabilirsiniz.

Ayarların her açılışta yüklenmesi için,

nano ile /etc/fstab dosyasını açıp alttaki satırı dosyanın en altına yazın.

/usr/tmpMnt /tmp ext2 loop,noexec,nosuid,rw 0 0

 

Not 1: Bu işlemler sonucunda /tmp dizinin izinleri değişmiş olabilir.

chmod 1777 /tmp çalıştırın.

Not 2: /usr/tmpMnt yolu zorunlu değildir.İstediğiniz klasörde istediğiniz isimle imaj dosyasını oluşturabilirsiniz.Yeterki fstabdaki isimler doğru olsun.

Not 3: Herşey bittikten sonra mount komutu ile /tmp dizinin doğru bağlandığına emin olun.

 

 

 

 

 

 

 

 

Centos 5.x Php 5.3 kurulumu

Şu anda php ‘nin güncel sürümü olan 5.3.3 paketinin centos 5.x webservera kurulumu için önce extra paket depolarının yum ayarlarını yapıyoruz.

Sunucuya ssh üzerinden root olarak login olduktan sonra aşağıdaki epel paketi sisteminize indirin

[root@server ~]# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm

Ardından php 5.3 paketinin bulunduğu depoyu kullanabilmeniz için şu adresten indireceğiniz rpm paketini şu şekilde sisteminize kurun.

  • [root@server ~]# wget http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
  • [root@server ~]# rpm -ihv remi-release-5.rpm

Artık php 5.3 kurmaya hazırsınız.Aslında paket bağımlılıkları ve sistemin güncel olması açısından buna php ve mysql güncellemesi de diyebiliriz.Son olarak;

[root@server ~]# yum –enablerepo=remi update php-\* mysql-\*

Böylece php ,mysql kütüphaneleri ve mysql veritabanını upgrade etmiş oldunuz.Son olarak service httpd restart komutu ile apache’yi resetledikten sonra web alanınıza bir yere bir phpinfo() kodu yazıp güncellemeyi kontrol edebilirsiniz.