Bazı durumlarda sunucunun varsayılan PHP versiyonu dışında, yine sunucunun desteklediği başka bir versiyonu kullanmak isteyebiliriz. Bu versiyon, sunucu varsayılanından düşük veya yüksek de olabilir. Ben buna, birden fazla site barındırdığım bazı sunucularda ihtiyaç duydum. Kullanılan site yazılımına bağlı olarak bir sitede güncel versiyonu kullanabilirken, başka bir sitenin yazılımı yeni versionu desteklemediği için eski bir PHP sürümü ayarlamam gerektiği anlar oldu. Bu aşamada öğrendiğim yöntemi ve bu sırada sorun yaşayarak dikkat edilmesinin önemli olduğunu gördüğüm bir iki noktayı açıklamaya çalışacağım.
Öncelikle, bu fırsatı değerlendirerek, PHP kodu ile sitenizin PHP bilgilerini nasıl alabileceğinizi hatırlatmak isterim. PHP ayarlarının ve kullanılan PHP sürümü hakkındaki bilgilerin tümünü minicik bir kod yardımıyla PHP sayfalarında görüntülemek mümkün. İşte bu minik kod:
<?php phpinfo(); ?>
phpinfo()
fonksiyonu, kullanılan PHP sürümü ve ayarları hakkında ne var ne yoksa hepsini yazdıracaktır. WordPress’de görüntüleme yapmak için, içine bu kodu ekleyeceğiniz yeni bir yazı şablonu yaratıp, bu şablonu kullanan boş bir yazı ekleyebilirsiniz. (Not: WooCommerce, sistem bilgisi sayfasında PHP sürümünüzü görüntüler.)
Burada “phpinfo()” fonksiyonunu kullanarak varolan PHP bilgilerini, kod kullanarak görüntülemeye ve böylece bu fonksiyonu hatırlatmaya çalıştım. Ancak sitenizde, bu kodu kullanan ve bu yüzden bütün PHP bilgilerinizi gösteren bir sayfa yayınlamanızı önermem.
Satın aldığınız hosting ayarlarına bağlı olarak, sunucu yönetim panelinizden (örn: CPanel), aynı hesabınız için varsayılan bir PHP sürümü belirleyebiliyorsunuz. Eğer hesabınızın gelişmiş özellikleri açıksa, bu hesaba kurulu tüm siteleriniz için ayrı ayrı PHP sürümü de atayabiliyorsunuz. Bazı durumlarda (ki kendim yaşadım), buradaki ayarlama işe yaramıyor. Bu durumda yardımımıza .htaccess dosyası yetişiyor işte.
Varsayılan PHP Sürümünü Belirleme
Bunun için public_html içinde yer alan .htaccess dosyasına (yoksa yeni oluşturarak) aşağıdaki kodu ekliyoruz:
# PHP5 versiyonunu varsayılan olarak kullan AddHandler application/x-httpd-php5 .php
Yukarıda da belirtiğim gibi, aynı hesap içindeki birden fazla sitenin her biri için farklı versiyonlar kullanabilirsiniz. Örneğin:
public_html 5.4 public_html/digersite: 5.2 public_html/baskasite: 5.3 public_html/baskasite/altdizindebaskasite: 5.4
gibi.
Bunu da yine her bir sitenin kendi ana dizinindeki .htaccess dosyasına müdahale ederek yapıyoruz:
PHP 5.2 için:
# PHP 5.2 sürümünü kullan AddHandler application/x-httpd-php52 .php
veya
# PHP 5.2 sürümünü kullan AddHandler application/x-httpd-php52 .php .php5 .php4 .php3
PHP 5.3 için:
# PHP 5.3 sürümünü kullan AddHandler application/x-httpd-php53 .php
veya
# PHP 5.3 sürümünü kullan AddHandler application/x-httpd-php53 .php .php5 .php4 .php3
PHP 5.4 için:
# PHP 5.4 sürümünü kullan AddHandler application/x-httpd-php54 .php
veya
# PHP 5.4 sürümünü kullan AddHandler application/x-httpd-php54 .php .php5 .php4 .php3
PHP 5.5 için:
# PHP 5.5 sürümünü kullan AddHandler application/x-httpd-php55 .php
veya
# PHP 5.5 sürümünü kullan AddHandler application/x-httpd-php55 .php .php5 .php4 .php3
PHP 5.6 için:
# PHP 5.6 sürümünü kullan AddHandler application/x-httpd-php56 .php
veya
# PHP 5.6 sürümünü kullan AddHandler application/x-httpd-php56 .php .php5 .php4 .php3
PHP 4 için:
# PHP 4 sürümünü kullan AddHandler application/x-httpd-php4 .php
veya
# PHP 4 sürümünü kullan AddHandler application/x-httpd-php4 .php .php4 .php3
İpuçları
php.ini dosyasının özel versiyonunu kullanma:
Bazı durumlarda php.ini dosyasının da özel versiyonlarını kullanmak isteyebilirsiniz. Bu durumda .htacces içerisine bu durumu belirten şu kodu yerleştirmelisiniz.
<IfModule mod_suphp.c> suPHP_ConfigPath /home/KULLANICI/public_html </IfModule>
Buna benzer şekilde her dizin için özel php.ini versiyon emirleri verebilirsiniz.
suPHP_ConfigPath /usr/local/lib suPHP_ConfigPath /opt/php52/lib suPHP_ConfigPath /opt/php54/lib
suPHP_ConfigPath
komutu kullanılacak php.ini dosyasının konumunu belirlemenizi sağlayacaktır. Bazı durumlarda /home/KULLANICI dizininde .htaccess dosyasının olmaması veya .htaccess içerisinde suPHP_ConfigPath komutu ile tanımlama yapılmamış olması bazı sorunlar yaratabiliyor. Bunun için bu dosyaları da kontrol edip, .htaccess içerisine, eğer yoksa aşağıdaki kodu veya benzerini ekleyebilirsiniz. Bu örnekte, /home/KULLANICI dizininde bir php.ini dosyası bulunduğu varsayılmaktadır
AddHandler application/x-httpd-php55 .php suPHP_ConfigPath /homet/kullanıcı # veya suPHP_ConfigPath /opt/php55/lib # veya suPHP_ConfigPath /usr/local/lib
Sorun yaşayabileceğiniz bir başka konu ise, .htaccess dosyası içerisine, sitenizin yazılımı veya kullandığınız eklentiler yoluyla, istediğinizin dışında bir versiyon ataması yapılmış olmasıdır. Özellikle, kalabalık komutlara sahip, çok satırlı .htaccess dosyalarında versiyon komutunu atlamak, onu görmemek mümkün. Bu durumda sizin ekleyeceğiniz komut işe yaramayabilir. Bu yüzden .htaccess dosyası içerisine versiyon komutu yerleştirmeden önce, başka bir versiyon komutunun olup olmadığının incelenmesi yerinde olacaktır. Örneğin wordpresste, bazı eklentilerin yazdığı komutlar nedeniyle php versiyonuna ait komut arada kalmaktadır. Basit bir denetleme ile bunu aşmak mümkünken, ben farkedene kadar neredeyse sunucu yapısı hakkında da yeterli bilgiye sahip olacak kadar yer ve komut karıştırmak zorunda kaldım. .htaccess dosyasına eklediğim komutların normalde(!) çalışması lazımken, hiç bir işe yaramaması beni çıldırtmıştı neredeyse. Oysa sorun çok basit bir şekilde, aslında gözümün önündeymiş. Aynı şeyleri yaşamanızı istemem doğrusu.