Composer’da spesifik PHP versiyonu ayarlaması

Php 7.0, 7.1, 7.2 çok güzel özelliklerle geldi. Hoşgeldiler. Fakat kimi zaman sunucu ile local çalışma ortamımız arasında versiyon farklılıkları olabilir. Örneğin local çalışma ortamımızda Php 7.0 yüklü ve sunucuda Php 7.1 / 7.2 yüklü ise; büyük oranda (deprecated özellik kullanılmadıysa) bir problem yaşamadan çalışacaktır.

Ama eğer local çalışma ortamınızda Php 7.2 yüklü ve sunucunuzda 7.1/7.0 yüklü ise problemle karşılaşmanız olası. Örneğin, 7.2 sürümünde yeni eklenmiş özelliklerden birini localde geliştirme yaparken kullanıyorsanız, sunucuya gönderdiğinizde 7.2 den daha düşük bir versiyon olduğu için bu yeni özellik hata verecektir. Bundan kaçınmak çok zor değil. Hem IDE’ler bu konuda destek veriyor hem de aşağı yukarı yeni eklenen tüm özellikler bilindiğinden kullanmaktan kaçınılabiliyor. Tabi bunun en iyi yolu, test yazıp hangi versiyonlarda kullanacaksanız onlar için test çalıştırmak. Böylece uygulamanızın kullanmak istediğiniz php versiyonlarında hata verip vermeyeceğini görebilirsiniz.

Bir diğer problem ise, composer ile gelen bağımlılıklarda yaşanabilir. Composer’da aslında çok güzel bir özellik var. Örneğin, bir paketi dahil ettiğinizde; o paketin 7.0 için farklı, 7.2 için farklı sürümü yüklenebiliyor. Genelde sizin yüklediğiniz paketlerde bunlar yaşanmıyor ama o paketlerin alt bağımlılıkları için bu tarz tanımlamalar yapılmış olabiliyor. Bu da şuna yol açıyor:

X paketinin bağımlılıkları, sizin sisteminize PHP 7.2 ye göre yükleniyor.
Fakat sunucuda PHP 7.0 yüklü olduğu için bu bağımlılıklar sunucunuza yüklenemiyor.

Bundan kaçınmak için çok güzel bir ayar var. composer.json dosyamıza eklememiz gereken satır şu şekilde:

"config": {
"platform": {
"php": "7.0"
}
}

Gördüğünüz gibi, uygulamamızın PHP7.0 a göre çalışacağını belirtiyoruz ve composer ona göre davranıyor. Sizin sisteminizde Php7.2 yüklü olsa ile, tüm bağımlılıklar 7.0 mış gibi yüklenecek. Config için diğer ayarlardan da ileride bahsedeceğiz.

Bir Cevap Yazın

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

%d blogcu bunu beğendi: