Giriş yapmadınız.

#1 21.05.2019 17:32:32

neri
Üye
Kayıtlı: 24.07.2018
Mesajlar: 157

App name ve url değiştirmek

Selamlar, bunun gibi parametreleri .env dosyasından mı config/app.php içinden mi değiştirmemiz gerekir ? config/app.php içinde 'url' kısmında http:://localhost kısmını domain ile değiştirdim ama işe yaramadı ?

Son düzenleyen neri (21.05.2019 17:32:56)

Çevrimdışı

#2 21.05.2019 23:03:42

sineld
Yönetici
Yer: Bursa
Kayıtlı: 26.12.2012
Mesajlar: 1,484
Website

Yanıt: App name ve url değiştirmek

Localde .env kullanın ama uygulamanızı web'e alırken ilgili config dosyasının içine o ayarı yazın ve server'a .env dosyasını göndermeyin.

Çevrimdışı

#3 21.05.2019 23:08:57

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,665
Website

Yanıt: App name ve url değiştirmek

.env dosyası yerel geliştirme ortamı için. Onu sunucuya göndermiyorsunuz. O dosyanın içerisine işleyeceğiniz değerler bilgisayarınızda; config/app içerisine işleyeceğiniz değerler ise sunucuda kullanılacak değerler.

config/app.php içerisinde url anahtarının üzerindeki açıklamaya bakarsanız onun Artisan komutlarını kullanırken kullanılacağını görürsünüz. (çünkü CLI ortamda HTTP/Web Server ortamının parçası olan alan adına başka türlü ulaşamazsınız)

Laravel'de alan adını yazmanız gereken tek yer config/session.php içerisindeki domain anahtarıdır. Yaptığım birçok teste ve tecrübeye dayanarak söylüyorum TokenMismatchException hatası alınmasının büyük sebeplerinden biri bu alanın doldurulmaması.

Çevrimdışı

#4 22.05.2019 08:45:56

neri
Üye
Kayıtlı: 24.07.2018
Mesajlar: 157

Yanıt: App name ve url değiştirmek

@sineld @mgsmus yardımcı olduğunuz için teşekkür ederim üstatlar.

Çevrimdışı

#5 22.05.2019 12:41:26

deathisonitsway
Üye
Kayıtlı: 01.02.2016
Mesajlar: 462

Yanıt: App name ve url değiştirmek

bu .env meselesini anlamak için şöyle bir açıklama yapayım.Zira kafalarda hep bir sorun oluşuyor soru soran arkadaşlar için.

Env laravel için ortam değişkenleri demektir.Bunu da birazdan yazacağım 3 sınıfla set ediliyor.

Öncelikle laravel env yönetemi için

https://github.com/vlucas/phpdotenv

bu paketi kullandığını bilmemiz gerekiyor.

Laravel boot sürecinde ilk olarak environment sınıfını yükler.

https://github.com/laravel/framework/bl … el.php#L37

yani bu demek oluyor ki daha providerlar bile yüklenmeden hatta ve hatta configurasyon bile yüklenmeden bu environment başlatılıyor.

Peki ne yapıyor.Uzun uzadıya anlatmak yersiz.Bizim için ipucu verecek kısım şurası

https://github.com/laravel/framework/bl … es.php#L92

bu satırda gördüğünüz gibi..Laravel environment yönetimi için sadece 3 sınıf kullanıyor...

EnvConstAdapter,ServerConstAdapter,PutenvAdapter

Bu sınıflar şuradadır.

https://github.com/vlucas/phpdotenv/tre … nt/Adapter

aslında görüldüğü gibi extradan 2 sınıf daha kullanılabilirmiş.Array ve Apache adapterleri.

Bu sınıfların icine girdiğinizde;

- EnvConstAdapter sınıfı $_ENV ile ilgili global environment değişkenine set ve get ile sorumludur.
- ServerConstAdapter sınıfı $_SERVER ile ilgili global environment değişkenine set ve get ile sorumludur.
- PutenvAdapter sınıfı putenv ve getenv ile ilgili global environment değişkenine set ve get ile sorumludur.

tüm mesele budur aslında.Laravel bu 3 sınıfa set ve get yapıyor yani

https://github.com/laravel/framework/bl … es.php#L89

bu linkte işaretlediğim satırda..create yaparken aslında environmentPath olarak dizin yolu ve environment dosyası olan .env dosyasının icindekileri tek tek bu sınıflara set ediyor.

Peki nasıl derseniz;

https://github.com/laravel/framework/bl … es.php#L32

bu linkteki işaretlediğim satır aslında takip ettiğinizde en nihai olarak

https://github.com/vlucas/phpdotenv/blo … es.php#L68

burada işaretlediğim yere gelir ve tüm adapterler olan sınıflara set yapar.

bütün mesele ana hattıyla bu kadar...

Yani siz .env dosyanızda foo = bar diye bir değer koyduğunuzda..aslında $_SERVER,$_ENV,getenv olarak kayıt yapmıs olursunuz.

.env

foo=bar
$_SERVER['foo'] // bar
$_ENV['foo'] //bar
getenv('foo') //bar

diye ulaşırsınız..hepsi aynıdır..
Laravelin yardımcı methodu olarak env() kullanır..

https://github.com/laravel/framework/bl … s.php#L641

oda burada işaretlediğim composer vasıtasıyla yüklediği helpers dosyası.

aslında env('foo',1); yaptıgınızda $variables olarak factory ettiği yine 3 sınıfı çağıyor ve get yapıyor..

$variables->get($key)

eğer 3 factory de de bulamazsa 2.parametre olarak verilen 1 değerini baz alır...

Env yönetimi genel hatlarıyla bu.

Dikkat edilmesi gereken husus,bu dosya düz bir dosyadır ve eğer izinler doğru verilmezse güvenlik açığı oluşturur.

o yüzden 2.parametre olarak verilen değer çok önemlidir.Yani .env de yoksa bu değeri kullan diye..bu da su demektir.Yani .env dosyası laravel icin zorunlu değildir ve proda gitmemesi gereken bir dosyadır aslında.

.env de olmayan bir xxx değer için şöyle yaptığımızda...

     $_SERVER['xxx'] = 'yyy';

    $a = env("xxx",1);

    dd($a); //yyy

Son olarak env() yardımcısından talep ettiğiniz her değer mutlaka string olmak zorundadır.

ornegin :

.env

1 = true

code

env(1,false); // exception alırsınız

env('1',false) // doğru olan budur.

Kolay gelsin iyi çalışmalar.

Son düzenleyen deathisonitsway (22.05.2019 13:15:54)


Laravel does not save you. Php knowledge only save you. Do not become a Laravel programmer, just the opposite,become php developer.

Çevrimdışı

#6 22.05.2019 15:26:15

neri
Üye
Kayıtlı: 24.07.2018
Mesajlar: 157

Yanıt: App name ve url değiştirmek

@deathisonitsway çok detaylı anlatmışsınız hocam teşekkür ederim.

Çevrimdışı

#7 28.05.2019 23:22:01

neri
Üye
Kayıtlı: 24.07.2018
Mesajlar: 157

Yanıt: App name ve url değiştirmek

mgsmus yazdı:

.env dosyası yerel geliştirme ortamı için. Onu sunucuya göndermiyorsunuz. O dosyanın içerisine işleyeceğiniz değerler bilgisayarınızda; config/app içerisine işleyeceğiniz değerler ise sunucuda kullanılacak değerler.

config/app.php içerisinde url anahtarının üzerindeki açıklamaya bakarsanız onun Artisan komutlarını kullanırken kullanılacağını görürsünüz. (çünkü CLI ortamda HTTP/Web Server ortamının parçası olan alan adına başka türlü ulaşamazsınız)

Laravel'de alan adını yazmanız gereken tek yer config/session.php içerisindeki domain anahtarıdır. Yaptığım birçok teste ve tecrübeye dayanarak söylüyorum TokenMismatchException hatası alınmasının büyük sebeplerinden biri bu alanın doldurulmaması.

Hocam session içinde dediğiniz gibi domain anahtarını yazdığımda 419 page expired hatası alıyorum.

Çevrimdışı

Forum alt kısmı