Docker’da PHP dosya gönderme (file upload) limitini artırmak!

Saat sabahın 06.20’sinde henüz uyumamış biri olarak elimden geldiğince kısa yazıp işime döneceğim. Çözümü bulup derlemem benim yarım saatimi aldı, sizin hiç almasın inşallah.

Dosya gönderme limiti 2 yerden ayarlanmalı: Birisi web server (benim için nginx) diğeri de PHP ayarlarında. Benim Docker konfigürasyonumu bir arkadaşım yaptığı için konuya çok fazla hakim değilim. Sadece anladığım ve müdahale edebildiğim kısımları belirteyim. 

Proje klasörümde docker-compose.yml isimli bir yapılandırma dosyası mevcut. Burada kullanacağım containerlar (inşallah doğru kelimedir) mevcut. Benim projemde mysql, composer, node, nginx, redis ve son olarak app isimli servisler tanımlı. Nginx’in tanımında configürasyon dosyası ayrıca belirtilmiş ve proje ana klasörümde de o dosya mevcut. 

Dolayısıyla nginx ayarlarını doğrudan bu dosyayı güncelleyerek yapabiliyorum. Ben de dosyayı açıp server bölümüne şu satırı ekledim.

Sıra geldi PHP kısmına.. PHP kısmı docker-compose dosyamda şu şekilde ayarlanmıştı:

Aslında çözüm hemen sırıtıyor. Yukarıda nginx örneğinde olduğu gibi bu kısımda da volumes bölümüne php.ini dosyası ekleyebiliriz. Fakat bütün php.ini’yi eklemekten daha kibar bir yol varmış. Bunu bilmiyordum. Sadece güncellemek istediğimiz ayarları yazdığımız bir ini dosyası oluşturup bunu php’nin görebileceği ilgili alana koymak mümkünmüş. 18 yıllık PHP’ci olarak bunu bilmiyordum. Kullandığınız image’a bağlı olarak bu dosyanın yeri değişik olabilir. En sağlam yöntem olarak basit bir şekilde phpinfo() çıktısı alarak bu yolu öğrenebilirsiniz. 

Benim kullandığımı image için konuşursak /etc/php/7.2/fpm/conf.d klasörüne herhangi bir .ini file koyduğumda php yüklenirken bu dosya da dikkate alınacakmış meğer. Hemen öyle yaptım ve uploads.ini dosyası oluşturup projemin ana klasörüne yerleştirdim. İçerisine şunları ekledim.

Artık bu dosyaya elzem pek çok konfigürasyonu ekleyebilirim. app isimli container’imin bu dosyayı görebilmesi için docker-compose.yml dosyasında app bölümünü nginx bölümüne benzer şekilde güncelledim. Son hali şöyle oldu:

Koyu olarak belirttiğim satırdan anlaşıldığı üzere proje ana klasörümdeki uploads.ini dosyasını container kendi içerisinde /etc/php/7.2/fpm/conf.d/uploads.ini olarak görecek.

Geriye containerları yeniden ayağa kaldırmak kalıyor. Bunu ben şu şekilde yapıyorum. Daha kısa bir yolu varsa lütfen bana yazın.

Önce mevcut containerleri stop ediyorum ya da öyle sanıyorum.

Sonra klasik docker-compose’umu çalıştırıyorum.

Hadi geçmiş olsun.

Bir cevap yazın

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