PHP, CodeIgniter ile uygulama geliştirirken, Linux dağıtımında karşılaştığım, Windows’ta karşılaşmadığım bir hata. Ya da uyarı demek daha doğru olur. Bilgisayarda iki farklı disk, birisinde Windows diğerinde Linux, olunca çalıştığın projeye devam etmek adına diğer diske geçmemek için, kodları GitHub’a atıp, pull-push yaparak kaldığın yerden devam etmek güzelmiş. Arada böyle sorunlar çıkıyor tabii.
Linux diskinde iken test ettiğimde, The upload destination folder does not appear to be writable. şeklinde bir uyarı aldım. Windows’ta sorunsuz çalıştı. Sorun, Linux tarafında proje içerisinde açtığım uploads klasörünün yazma izninin olmamasından kaynaklanıyordu.
Linux dağıtımında sorunu, terminalden sudo chmod 777 -R /dosya_yolu yazarak, çözdüm. Tabii pek güvenli olduğunu söyleyemem. Bu izni vermek yerine, aşağıdaki gibi istediğiniz klasörün sahibi olarak www-data kullanıcısı yapmak güvenlik açısından daha faydalı olacaktır.
chown -R www-data:www-data /dosya_yolu
Neden 777 yerine, bu şekilde yapılması gerektiği Stackoverflow‘da güzel bir şekilde açıklanmış: “Upload klasörünüze 777 izni vermeye gerek yok. İyi bir fikir değil. Sondaki 7’nin anlamı, çoğu durumda olmaması gereken, herkese açık yazılabilir olduğu anlamına gelir.”