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.