• 21-02-2020, 22:15:43
    #1
    Merhaba arkadaşlar,

    Laravel kullanarak bir script yazdım, fakat kullanıcıların aşağıdaki tasarımlarda olan hata sayfalarıyla karşılaşmamasını istiyorum. Herhangi bir hata olduğunda 404 sayfasına yönlendirme nasıl yapabilirim? Örneğin post gönderim yapılması gereken bir urlye direkt olarak girildiğinde aşağıdaki hata sayfası geliyor. Fakat ben kullanıcının bunla karşılaşmamasını istiyorum. Nasıl tüm hataları kapatabiliriz acaba?

  • 21-02-2020, 22:17:24
    #2
    .env dosyasından APP_DEBUG=true kısmını false olarak güncellemen yeterli.
  • 21-02-2020, 22:57:04
    #3
    iMiral adlı üyeden alıntı: mesajı görüntüle
    .env dosyasından APP_DEBUG=true kısmını false olarak güncellemen yeterli.
    yardımınız için teşekkür ederim. Peki projeyi localden proda taşırken .env dosyasında ne gibi değişiklikler yapmam lazım biliyor musunuz? Ve yapmam gereken başka şeyler var mıdır acaba?
  • 22-02-2020, 09:22:42
    #4
    Proje canlıya çıkarken .env dosyasını atmıyorsunuz hocam. config klasöründe ilgili dosyalara ayarları yazıyorsunuz. .env (enviroment) localde çalışırken kullanılıyor.

    Artisan komutuyla errors dosyalarınızı resource/views e oluşturup orada customize edebilirsiniz. php artisan vendorublish --tag=laravel-errors

    Ayrıca config/app.php içinde projeyle ilgili (dil, saat vs) ayarları yapabilirsiniz.
  • 09-03-2020, 11:35:32
    #5
    black_scorpion adlı üyeden alıntı: mesajı görüntüle
    yardımınız için teşekkür ederim. Peki projeyi localden proda taşırken .env dosyasında ne gibi değişiklikler yapmam lazım biliyor musunuz? Ve yapmam gereken başka şeyler var mıdır acaba?
    .env dosyası uygulamanın bulunduğu sunucuya göre ayarlanıyor. örnek olarak local sunucunuzda mysql bilgileri dışa açık olmadığı için basit/varsayılan kullanıcı adı şifreler ile tanımlıdır, yayın sunucusunda uygulamanın ihtiyacı olan yetkilerle oluşturulmuş kullanıcı ve güçlü/komplike bir parola tanımlıdır, sunucu.env dosyasında onu tanımlarsınız, uygulamanız eposta atıyorsa mesela local'de test smtp kullanıcı bilgileri vardır, sunucu .env dosyasında bunu uygulama kullanıcılarına no-reply@ şeklinde eposta ile gönderecekseniz o bilgileri girebilirsiniz vs.

    coder63 adlı üyeden alıntı: mesajı görüntüle
    Proje canlıya çıkarken .env dosyasını atmıyorsunuz hocam. config klasöründe ilgili dosyalara ayarları yazıyorsunuz. .env (enviroment) localde çalışırken kullanılıyor.

    Artisan komutuyla errors dosyalarınızı resource/views e oluşturup orada customize edebilirsiniz. php artisan vendorublish --tag=laravel-errors

    Ayrıca config/app.php içinde projeyle ilgili (dil, saat vs) ayarları yapabilirsiniz.
    config dosyasından hard code şeklinde tanımlamak kod revize için işlevsiz bir kullanım olur, production'a taşınmaması gerektiği tavsiyesini kim verdiyse ya yanlış bilgilendirmiş ya da siz yanlış anlamışsınız. .env dosyası farklı cihazlardaki ayarları tek bir dosyada tanımlamak için kullanılır, production sunucuda .env dosyasına dışarıdan erişemez zaten kimse, apache'nin yayın dizininin dışında olan bir dosya.
  • 09-03-2020, 12:16:28
    #6
    iMiral adlı üyeden alıntı: mesajı görüntüle
    .env dosyası uygulamanın bulunduğu sunucuya göre ayarlanıyor. örnek olarak local sunucunuzda mysql bilgileri dışa açık olmadığı için basit/varsayılan kullanıcı adı şifreler ile tanımlıdır, yayın sunucusunda uygulamanın ihtiyacı olan yetkilerle oluşturulmuş kullanıcı ve güçlü/komplike bir parola tanımlıdır, sunucu.env dosyasında onu tanımlarsınız, uygulamanız eposta atıyorsa mesela local'de test smtp kullanıcı bilgileri vardır, sunucu .env dosyasında bunu uygulama kullanıcılarına no-reply@ şeklinde eposta ile gönderecekseniz o bilgileri girebilirsiniz vs.



    config dosyasından hard code şeklinde tanımlamak kod revize için işlevsiz bir kullanım olur, production'a taşınmaması gerektiği tavsiyesini kim verdiyse ya yanlış bilgilendirmiş ya da siz yanlış anlamışsınız. .env dosyası farklı cihazlardaki ayarları tek bir dosyada tanımlamak için kullanılır, production sunucuda .env dosyasına dışarıdan erişemez zaten kimse, apache'nin yayın dizininin dışında olan bir dosya.
    Doğru kullanım ve yapılandırmalarda erişilemiyor doğrudur hocam. Bende projelerimde .env üzerinde tutuyorum fakat okuduğum bazı yabancı makalelerde bazı dork lar ile bu env erişilebildiği yazıyordu. Ayrıca laravel in kendi dökümantasyonunda bunun bir zaafiyete neden olabileceği belirtiliyor (bkz: https://laravel.com/docs/5.4/configuration ) Tabii bu laravel kaynaklı bir zaafiyet değil , hatalı kullanım veya sunucu ayarlarının hatalı yapılması sonucunda olur diye düşünüyorum.

    Birden fazla kişinin çalıştığı bir projede zaten .env olmasa sürekli config klasörünü local e göre düzenlemek vs işkence olur.
  • 09-03-2020, 12:32:28
    #7
    coder63 adlı üyeden alıntı: mesajı görüntüle
    Doğru kullanım ve yapılandırmalarda erişilemiyor doğrudur hocam. Bende projelerimde .env üzerinde tutuyorum fakat okuduğum bazı yabancı makalelerde bazı dork lar ile bu env erişilebildiği yazıyordu. Ayrıca laravel in kendi dökümantasyonunda bunun bir zaafiyete neden olabileceği belirtiliyor (bkz: https://laravel.com/docs/5.4/configuration ) Tabii bu laravel kaynaklı bir zaafiyet değil , hatalı kullanım veya sunucu ayarlarının hatalı yapılması sonucunda olur diye düşünüyorum.

    Birden fazla kişinin çalıştığı bir projede zaten .env olmasa sürekli config klasörünü local e göre düzenlemek vs işkence olur.
    Ben her hangi bir yerde env dosyası ile ilgili uyarı görmedim, verdiğiniz link'te de bir zafiyetten bahsetmiyor. tavsiye edilmeyen tek şey kaynak kod repo'suna gönderilmemesi gerektiği (Sizin de belirttiğiniz gibi çoklu kişilerin çalıştığı projelerde karışlılığa sebep olabileceği, kişisel private key'lerin ifşa olabileceği gibi risklerden bahsedilmiş.) ki .gitignore dosyasında ilk dosya .env dosyasıdır sync dışında tutulan. .env dosyası public altında yayınlanmadığı için güvenlidir, onun haricinde sunucu güvenliği sağlanmamışsa zaten config.php dosyasına da erişilebilir aynı mantık ile. şimdiye kadar .env dosyası ile hack'lenen olmadı.

    https://laracasts.com/discuss/channe...=0#reply=38761

    buradan ufak bir açıklama var bakabilirsiniz. .env mantığını node.js den vue'ye kadar bir çok projede kullanılıyor. Sanırım google çeviri kullanıyorsunuz, o yüzden çeviri hatasından dolayı böyle düşmüş olabilirsiniz. Ancak .env dosyasına yazmak ile config.php dosyasına yazmak arasında her hangi bir fark yok. .env dosyasına erişim sağlayan config.php'ye de sağlamış olur.

    O yüzden güvenle kullanabilirsiniz, hiç config veya başka dosyalarda hardcode işleri ile uğraşmayın, bu gibi tekniklerin nimetlerinden faydalanmadıktan sonra 10 yıl önceki spagetti php mantığına dönmüş oluruz
  • 09-03-2020, 14:23:33
    #8
    Bahsettiğim kısım:
    Your .env file should not be committed to your application's source control, since each developer / server using your application could require a different environment configuration. Furthermore, this would be a security risk in the event an intruder gain access to your source control repository, since any sensitive credentials would get exposed.
    Gerektiği yerde google translate kullanıyorum, ingilizcem maalesef çok iyi değil.

    Örnek birkaç site .env dosyası ;
    https:// www.novo chem.net/.env
    http:// ww.pousada anjos.com.br/.env
    Mesajınıza verdiğim ilk yanıtta da yazdığım gibi hatalı sunucu yapılandırmaları bu soruna sebep olabiliyor. Bununla beraber bu siteleri incelerseniz config içindeki php dosyalara vs erişilemiyor.
  • 09-03-2020, 17:08:40
    #9
    coder63 adlı üyeden alıntı: mesajı görüntüle
    Proje canlıya çıkarken .env dosyasını atmıyorsunuz hocam. config klasöründe ilgili dosyalara ayarları yazıyorsunuz. .env (enviroment) localde çalışırken kullanılıyor.

    Artisan komutuyla errors dosyalarınızı resource/views e oluşturup orada customize edebilirsiniz. php artisan vendorublish --tag=laravel-errors

    Ayrıca config/app.php içinde projeyle ilgili (dil, saat vs) ayarları yapabilirsiniz.
    .env'yi atmiyorsunuz diye bir sey olamaz hocam static config ayarlari env'de tutulur. DB, redis bilgileri gibi.
    Farkli kullanim tercih ediyorsunuzdur ona bir sey diyemem ama proje canli cikarken atilmaz diye bir tanim kullanilmasi cok yanlis.

    .env doyasi zaten okunabilir bir konumda olmamali. Bunun icin serverda root dizini olarak laravel projesinin altinda public dizin kullanilir.

    Alt yorumlarda bahsettigin hatalar public host kullanmaya calisanlarin yaptigi yanlis konfigurasyondan dolayi oluyor.

    Normal sartlar altinda root dizini public oldugun ucun .env alt dizinde kaliyor ve public bir dosya olmuyor.