Orijinal yayın recca0120.github.io‘da yapılmıştır.
Laravel Valet ile birden fazla PHP sürümünü yönetmek oldukça faydalıdır; ancak php -v komutunu girdiğinizde, Valet’in o dizin için ayarladığı sürüm yerine global sürümü alıyorsanız sorunlar başlar. Özellikle Composer v1’e ihtiyaç duyan eski projeler, globaldeki v2 ile uyumlu çalışmaz. Bunu çözmek için birkaç satır Fish yapılandırması yeterlidir. php, composer ve phpunit otomatik olarak Valet’i takip eder.
Sorun
Sorun
Valet’in valet php komutu, mevcut dizin için yapılandırılan PHP sürümünü kullanır. Ancak doğrudan php yazdığınızda sistem genelindeki PHP sürümü kullanılır; bu da Valet ile tamamen ilgisizdir.
Composer için durum daha da kötü: bazı eski paketler Composer v2 ile uyumsuz olduğu için v1 ile kurulması gerekir. Tüm sisteminizdeki Composer’ı bir eski proje için düşüremezsiniz. Çözüm olarak, proje dizinine bir composer.phar (v1) yerleştirmeniz gerekir — fakat her seferinde php ./composer.phar yazmayı unutmamalısınız. Bu da rahatsız edici bir durumdur.
Fish Yapılandırması
Fish Yapılandırması
Bu satırları ~/.config/fish/config.fish dosyasına ekleyin:
# php, Valet'in sürümünü kullanır, dizine göre otomatik geçiş yapar
alias php "valet php"
# phpunit Valet'in php sürümünü takip eder
alias phpunit "php vendor/bin/phpunit"
# composer: akıllı v1/v2 tespiti
function composer
if [ -n "./composer.phar" ]
# Projede composer.phar (v1) var — onu kullan, bellek sınırını kaldır
COMPOSER_MEMORY_LIMIT=-1 valet php ./composer.phar $argv
else
# composer.phar yok — sistem valet composer (v2) kullan
valet composer $argv
end
end
Yapılandırmayı uygulamak için source ~/.config/fish/config.fish komutunu çalıştırın veya terminalinizi yeniden başlatın.
Her Satır Ne Yapıyor
Her Satır Ne Yapıyor
alias php "valet php"
alias php "valet php"valet php komutu, mevcut dizinin .valetphprc dosyasındaki veya Valet’in dizine özel yapılandırmasındaki PHP sürümünü seçer. Bu alias ile php artisan, php -v ve diğer tüm komutlar otomatik olarak doğru sürümü kullanır — manuel geçiş yapmaya gerek kalmaz.
alias phpunit "php vendor/bin/phpunit"
alias phpunit "php vendor/bin/phpunit"PHPUnit bir PHP scriptidir, bu yüzden hangi PHP’nin çalıştırdığı önemlidir. Bu alias, phpunit’in php (şimdi valet php) ile çalışmasını sağlar, böylece projenin PHP sürümüyle eşleşir.
function composer
function composerBu fonksiyon, Composer v1/v2 arasındaki uyum sorununu çözer:
function composer
if [ -n "./composer.phar" ]
COMPOSER_MEMORY_LIMIT=-1 valet php ./composer.phar $argv
else
valet composer $argv
end
end
[ -n "./composer.phar" ] ifadesi, mevcut dizinde composer.phar dosyasının bulunup bulunmadığını kontrol eder. Eğer varsa, onu (v1) kullanır; aksi takdirde valet composer (v2) ile devam eder.
COMPOSER_MEMORY_LIMIT=-1, bellek sınırlamasını kaldırır. Composer v1, karmaşık bağımlılık ağaçlarında kolayca bellek sınırına ulaşır. v2 ise çok daha verimlidir ve nadiren bu sınırı aşar.
$argv ifadesi, tüm argümanları geçirir, böylece composer install, composer require laravel/framework gibi komutlar normal şekilde çalışır.
Composer v1 için Eski Bir Projeyi Kurma
Composer v1 için Eski Bir Projeyi Kurma
Composer v1 gerektiren bir projeye rastladığınızda, composer.phar dosyasını proje kök dizinine indirin:
# En son Composer v1'i indirin
curl -o composer.phar https://getcomposer.org/download/latest-1.x/composer.phar
chmod +x composer.phar
# Bunu commit yapmayın
echo "composer.phar" >> .gitignore
Bu noktadan sonra, o dizindeki composer install otomatik olarak v1’i kullanacaktır. composer.phar olmayan diğer projeler ise v2 kullanmaya devam edecektir. Aralarında hiçbir etkileşim yoktur.
Kurulumu Doğrulama
Kurulumu Doğrulama
# php'nin Valet'i takip ettiğini kontrol edin
php -v
# Bu, mevcut dizin için yapılandırılmış PHP sürümünü göstermelidir
# composer fonksiyonunun aktif olduğunu kontrol edin
type composer
# Çıktı: composer bir fonksiyon, tanımı ...
# composer.phar olan bir dizinde
cd ~/Sites/legacy-project
composer --version
# Çıktı: Composer sürümü 1.x.x
# Normal bir dizinde
cd ~/Sites/modern-project
composer --version
# Çıktı: Composer sürümü 2.x.x
Özet
Özet
Temel fikir: geliştirme araçlarının PHP sürümünü Valet üzerinden otomatik olarak takip etmesine izin vermektir. php ve phpunit basit alias’lerdir. composer ise v1/v2 arasındaki uyum gereksinimi nedeniyle bir fonksiyon kullanmaktadır.
composer.phar dosyasını proje köküne yerleştirmek, o projenin v1’e ihtiyaç duyduğunu belirten bir işaret görevi görür. Ek yapılandırma dosyaları veya ortam değişkenlerine gerek kalmadan, zaten var olan bir dosya ile bu işlem yapılır.
Referanslar
Referanslar
Kaynak: Orijinal Makale


