Takip et

Giriş: Composer Nedir ve Neden Kullanmalıyız?

Giriş: Composer Nedir ve Neden Kullanmalıyız? PHP geliştirme dünyasında bağımlılık yönetimi, projelerin karmaşıklığı arttıkça hay

Giriş: Composer Nedir ve Neden Kullanmalıyız?

PHP geliştirme dünyasında bağımlılık yönetimi, projelerin karmaşıklığı arttıkça hayati bir rol oynamaktadır. Composer, PHP için bir bağımlılık yöneticisidir. Projenizin ihtiyaç duyduğu kütüphaneleri ve paketleri belirtmenize olanak tanır ve bunları sizin için yönetir (yükler, günceller, siler). Modern PHP uygulamalarının neredeyse tamamı Composer kullanır ve bu, onu PHP ekosisteminin vazgeçilmez bir parçası haline getirir.

Composer kullanarak:

  • Projenizin tüm bağımlılıklarını tek bir yerden yönetirsiniz.
  • Kütüphaneleri manuel olarak indirip projenize dahil etme zahmetinden kurtulursunuz.
  • Paketler arası bağımlılık çakışmalarını otomatik olarak çözer.
  • Otomatik yükleme (autoloading) yeteneği sayesinde, require veya include ifadeleriyle uğraşmak yerine sınıf ve fonksiyonları kolayca kullanabilirsiniz.
  • Geliştirme ortamınızı standartlaştırır ve ekip çalışmasını kolaylaştırır.

Bu rehberde, Ubuntu işletim sistemi çalıştıran bir Sanal Özel Sunucunuza (VPS) Composer’ı nasıl kuracağınızı ve temel kullanımını adım adım öğreneceksiniz.

Ön Gereksinimler ve Sistem Hazırlığı

Composer’ı kurmaya başlamadan önce, VPS’inizin bazı temel gereksinimleri karşıladığından emin olmalıyız.

VPS’inize SSH ile Bağlanma

Öncelikle, terminaliniz veya PuTTY gibi bir SSH istemcisi kullanarak VPS’inize bağlanmanız gerekmektedir.

ssh kullanici_adiniz@sunucu_ip_adresiniz

Örnek:

ssh root@192.0.2.1

Şifrenizi girdikten sonra sunucunuzun komut satırına erişeceksiniz.

Sistemi Güncelleme

Herhangi bir yeni yazılım kurmadan önce, sunucunuzdaki paket listelerini güncellemek ve mevcut paketleri yükseltmek iyi bir uygulamadır. Bu, uyumluluk sorunlarını önler ve en son güvenlik yamalarına sahip olmanızı sağlar.

sudo apt update
sudo apt upgrade -y

PHP ve Gerekli Uzantıların Kurulumu

Composer, PHP ile çalıştığı için sunucunuzda PHP’nin kurulu olması gerekir. Ayrıca, Composer’ın düzgün çalışması için bazı PHP uzantılarına da ihtiyaç duyulur. Bu rehberde PHP 8.x sürümünü kullanacağız.

sudo apt install php-cli php-mbstring php-xml php-zip php-curl git unzip -y

Bu komutlar şunları kurar:

  • php-cli: PHP komut satırı arayüzü. Composer’ın çalışması için gereklidir.
  • php-mbstring: Çok baytlı dizeleri işlemek için PHP uzantısı.
  • php-xml: XML verilerini işlemek için PHP uzantısı.
  • php-zip: ZIP arşivlerini işlemek için PHP uzantısı.
  • php-curl: Web istekleri yapmak için PHP uzantısı. Composer paketlerini indirmek için kullanılır.
  • git: Composer, bazı paketleri Git depolarından indirebilir.
  • unzip: Arşivlenmiş dosyaları açmak için gereklidir.

Kurulumun ardından PHP sürümünü kontrol edebilirsiniz:

php -v

Çıktı, kurulu PHP sürümünü gösterecektir.

Composer’ın Kurulumu

Şimdi Composer’ı indirip sisteminize kurmaya geçebiliriz. Composer’ı genellikle global olarak kurarız, böylece herhangi bir dizinden composer komutunu çalıştırabiliriz.

Composer İndirme

Composer’ın resmi web sitesinden kurulum betiğini indireceğiz. Güvenlik nedeniyle, indirilen betiğin bütünlüğünü doğrulamak önemlidir.

curl -sS https://getcomposer.org/installer -o composer-setup.php

Bu komut, composer-setup.php adında bir dosyayı mevcut dizininize indirir. -sS bayrakları sessiz modda çalışmayı ve hata durumunda çıktı vermeyi sağlar.

İndirilen Dosyanın Doğrulanması

İndirilen kurulum betiğinin değiştirilmediğinden emin olmak için, Composer’ın resmi web sitesinde sağlanan SHA384 hash değerini kullanarak doğrulama yapmalıyız. Bu hash değeri zaman zaman değişebilir, bu yüzden en güncel değeri https://composer.org/download/ adresinden kontrol etmeniz önerilir.

Aşağıdaki komut, mevcut hash değerini kullanarak doğrulama yapar. Eğer hash uyuşmazsa, indirdiğiniz dosya bozuk veya değiştirilmiş olabilir.

HASH=$(curl -sS https://composer.org/installer | php --r "echo hash_file('sha384', 'composer-setup.php');")
if [ "$HASH" != "$(curl -sS https.composer.org/installer | grep -oP '(?<=signature=")[^"]*')" ]; then
    echo 'HATA: Composer kurulum dosyası doğrulanamadı!' >&2
    rm composer-setup.php
    exit 1
fi
echo 'Composer kurulum dosyası doğrulandı.'

Not: Yukarıdaki doğrulama komutu, Composer’ın kendi sitesinden güncel hash’i çekip karşılaştıran dinamik bir komuttur. Bu, manuel olarak hash kopyalayıp yapıştırmaktan daha güvenli ve otomatiktir.

Composer’ı Global Olarak Kurma

Doğrulama başarılı olduktan sonra, kurulum betiğini çalıştırabiliriz. Bu betik, Composer’ı mevcut dizininize composer.phar adıyla kuracaktır. Daha sonra bu dosyayı sistem PATH’inize eklenmiş bir konuma taşıyarak global olarak erişilebilir hale getireceğiz.

sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer

Bu komut:

  • sudo php composer-setup.php: İndirilen betiği root yetkileriyle çalıştırır.
  • --install-dir=/usr/local/bin: Composer’ın /usr/local/bin dizinine kurulmasını sağlar. Bu dizin genellikle sistem PATH’inde bulunur.
  • --filename=composer: Yürütülebilir dosyanın adını composer olarak belirler, böylece composer.phar yerine doğrudan composer yazarak çalıştırabiliriz.

Kurulum tamamlandıktan sonra, indirdiğimiz composer-setup.php dosyasını silebiliriz:

rm composer-setup.php

Kurulumun Doğrulanması

Composer’ın doğru bir şekilde kurulup kurulmadığını kontrol etmek için sürüm bilgisini sorgulayabiliriz:

composer --version

Eğer kurulum başarılıysa, Composer’ın sürüm numarasını gösteren bir çıktı alırsınız:

Composer version 2.x.x YYYY-MM-DD HH:MM:SS

Composer’ı Kullanmaya Başlama

Composer artık VPS’inizde kurulu ve kullanıma hazır. Şimdi temel Composer komutlarını ve bir PHP projesinde nasıl kullanılacağını görelim.

Yeni Bir Proje Başlatma (composer init)

Yeni bir PHP projesi başlattığınızda veya mevcut bir projeye Composer eklediğinizde composer init komutunu kullanırsınız. Bu komut, projenizin bağımlılıklarını ve diğer meta verilerini tanımlayan composer.json dosyasını interaktif olarak oluşturmanıza yardımcı olur.

Öncelikle, yeni bir proje dizini oluşturalım ve içine girelim:

mkdir my_php_app
cd my_php_app

Şimdi composer init komutunu çalıştırın:

composer init

Composer size proje hakkında çeşitli sorular soracaktır (paket adı, açıklama, yazar, minimum kararlılık, lisans vb.). Çoğu durumda varsayılan değerleri kabul edebilir veya kendi bilgilerinizi girebilirsiniz. Özellikle “Would you like to define your dependencies (require) interactively?” sorusuna “yes” diyerek bağımlılık eklemeye başlayabilirsiniz.

Bu işlem sonucunda my_php_app dizininde composer.json adında bir dosya oluşacaktır. Örnek bir composer.json şöyle görünebilir:

{
    "name": "your_vendor_name/my_php_app",
    "description": "My first PHP application with Composer",
    "type": "project",
    "license": "MIT",
    "authors": [
        {
            "name": "Your Name",
            "email": "your_email@example.com"
        }
    ],
    "require": {
        "php": ">=8.0"
    }
}

Bağımlılık Ekleme (composer require)

Projenize yeni bir kütüphane eklemek istediğinizde composer require komutunu kullanırsınız. Composer, paketi Packagist.org adresinden arar, projenizin composer.json dosyasına ekler ve ardından indirir.

Örnek olarak, popüler bir günlükleme kütüphanesi olan Monolog’u projemize ekleyelim:

composer require monolog/monolog

Bu komutu çalıştırdığınızda:

  • monolog/monolog paketi ve onun gerektirdiği tüm bağımlılıklar indirilir.
  • Proje kök dizininizde vendor adında bir klasör oluşturulur ve tüm indirilen kütüphaneler bu klasöre yerleştirilir.
  • composer.json dosyasına monolog/monolog bağımlılığı ve sürüm kısıtlaması eklenir.
  • composer.lock adında yeni bir dosya oluşturulur. Bu dosya, projenizin tam olarak hangi bağımlılıkların hangi sürümlerini kullandığını kilitler.

composer.json dosyanız artık şöyle görünecektir:

{
    "name": "your_vendor_name/my_php_app",
    "description": "My first PHP application with Composer",
    "type": "project",
    "license": "MIT",
    "authors": [
        {
            "name": "Your Name",
            "email": "your_email@example.com"
        }
    ],
    "require": {
        "php": ">=8.0",
        "monolog/monolog": "^2.0"
    }
}

Bağımlılıkları Yükleme (composer install)

Bir projeyi Git gibi bir sürüm kontrol sisteminden klonladığınızda, vendor klasörü genellikle dahil edilmez. Bu durumda, projenin tüm bağımlılıklarını yüklemek için composer install komutunu kullanırsınız. Bu komut, composer.lock dosyasını okur ve orada belirtilen tam sürümleri indirir. Eğer composer.lock dosyası yoksa, composer.json dosyasını okur ve bağımlılıkları yükler, ardından bir composer.lock dosyası oluşturur.

composer install

Bu komutu, yeni bir geliştirme ortamında veya mevcut bir projenin bağımlılıklarını ilk kez kurarken kullanırsınız.

Bağımlılıkları Güncelleme (composer update)

Mevcut bağımlılıklarınızı en son uyumlu sürümlerine güncellemek için composer update komutunu kullanırsınız. Bu komut, composer.json dosyasındaki sürüm kısıtlamalarına göre en yeni paket sürümlerini bulur, indirir ve composer.lock dosyasını buna göre günceller.

composer update

Belirli bir paketi güncellemek isterseniz:

composer update monolog/monolog

Composer ile Basit Bir PHP Uygulaması

Composer’ın otomatik yükleme (autoloading) özelliğini kullanarak Monolog kütüphanesini nasıl kullanacağımızı gösteren basit bir PHP dosyası oluşturalım.

my_php_app dizininizde index.php adında bir dosya oluşturun:

pushHandler(new StreamHandler(__DIR__ . '/my_app.log', Logger::WARNING));

// Bazı log mesajları yaz
$log->warning('Bu bir uyarı mesajıdır!');
$log->error('Bu bir hata mesajıdır!');

echo "Log mesajları 'my_app.log' dosyasına yazıldı.\n";

?>

Bu dosyayı kaydettikten sonra, komut satırından çalıştırın:

php index.php

Çıktı olarak “Log mesajları ‘my_app.log’ dosyasına yazıldı.” mesajını görmelisiniz. Ayrıca my_app.log adında yeni bir dosya oluştuğunu ve içinde log mesajlarının bulunduğunu göreceksiniz. require __DIR__ . '/vendor/autoload.php'; satırı sayesinde, Monolog kütüphanesini manuel olarak require etmek zorunda kalmadan kullanabildik.

Sık Karşılaşılan Sorunlar ve Çözümleri

Composer kullanırken karşılaşabileceğiniz bazı yaygın sorunlar ve bunların çözümleri:

PHP Bellek Limiti Hatası

Büyük projelerde veya çok sayıda bağımlılığı olan projelerde Composer, varsayılan PHP bellek limitini aşabilir ve “Allowed memory size of X bytes exhausted” hatası verebilir.

Çözüm: PHP’nin bellek limitini artırmanız gerekir. Bunu geçici olarak komut satırında yapabilir veya PHP yapılandırma dosyasında kalıcı olarak değiştirebilirsiniz.

Geçici çözüm (sadece bu komut için):

php -d memory_limit=-1 /usr/local/bin/composer install

memory_limit=-1 sınırsız bellek anlamına gelir. 2G gibi belirli bir değer de verebilirsiniz.

Kalıcı çözüm:
PHP CLI için php.ini dosyasını düzenlemeniz gerekir. Bu dosyanın konumu PHP sürümünüze göre değişebilir (örneğin, /etc/php/8.0/cli/php.ini).

sudo nano /etc/php/8.0/cli/php.ini

Dosyayı açtıktan sonra memory_limit satırını bulun ve değerini artırın:

memory_limit = 512M ; veya daha yüksek, örneğin 1G

Değişikliği kaydedin ve dosyayı kapatın.

PHP Sürümü Uyumsuzlukları

Bazen bir paket belirli bir PHP sürümünü gerektirirken, sunucunuzda farklı bir sürüm kurulu olabilir. Composer bu durumu size bildirir.

Çözüm:

  • composer.json dosyanızdaki require bölümündeki PHP sürüm kısıtlamasını kontrol edin.
  • Sunucunuzdaki PHP sürümünü güncelleyin veya projenizin gereksinimlerine uygun bir PHP sürümü kurun. Birden fazla PHP sürümünü aynı sunucuda çalıştırmak da mümkündür.

İzin (Permission) Hataları

Composer, vendor dizinini oluşturmak veya paketleri indirmek için yazma izinlerine ihtiyaç duyar. Eğer çalıştığınız dizinde yeterli izniniz yoksa hatalarla karşılaşabilirsiniz.

Çözüm:
Çalıştığınız dizinin sahibi olduğunuzdan veya yazma izinlerinizin olduğundan emin olun. Gerekirse dizin izinlerini ayarlayın:

sudo chown -R kullanici_adiniz:kullanici_adiniz /yol/projenize
sudo chmod -R 755 /yol/projenize

Composer’ı Güncelleme (self-update)

Composer’ın kendisini en son sürüme güncellemek için aşağıdaki komutu kullanabilirsiniz:

composer self-update

Bu, Composer’ın yeni özelliklerinden ve hata düzeltmelerinden yararlanmanızı sağlar.

Sonuç ve Sıkça Sorulan Sorular (SSS)

Bu rehberde, Ubuntu VPS’inize Composer’ı nasıl kuracağınızı ve temel bağımlılık yönetimi işlemlerini nasıl gerçekleştireceğinizi öğrendiniz. Composer, modern PHP geliştirme iş akışının temel bir aracıdır ve onu etkili bir şekilde kullanmak, projelerinizin yönetimini büyük ölçüde basitleştirecektir.

Sıkça Sorulan Sorular (SSS)

1. Composer neden yavaş çalışıyor?
Composer’ın yavaş çalışmasının birkaç nedeni olabilir:

  • Ağ Hızı: Paketlerin indirilmesi internet bağlantınızın hızına bağlıdır.
  • Depo Hızı: Packagist.org veya kullandığınız özel depoların yanıt süresi.
  • PHP Bellek Limiti: Yetersiz bellek limitleri performansı düşürebilir. (Yukarıdaki çözüme bakın.)
  • Önbellek: Composer’ın önbelleğini temizlemek bazen performansı artırabilir: composer clear-cache.
  • Eski Sürüm: Composer’ın eski bir sürümünü kullanıyorsanız, composer self-update ile güncelleyin.

2. composer.lock dosyası ne işe yarar?
composer.lock dosyası, projenizin bağımlılıklarının tam olarak hangi sürümlerini kurduğunu kaydeder. Bu dosya, farklı geliştirme ortamlarında veya üretim sunucularında aynı bağımlılık sürümlerinin kullanılmasını sağlar, bu da “benim makinemde çalışıyordu” sorununu önler. composer.lock dosyasını sürüm kontrol sisteminize (Git gibi) dahil etmeniz şiddetle tavsiye edilir.

3. Composer ile global paketler nasıl kurulur?
Bazı araçları (örneğin, PHPUnit, Laravel Installer) sistem genelinde kullanmak isteyebilirsiniz. Bunun için composer global require komutunu kullanırsınız:

composer global require phpunit/phpunit

Bu komut, paketi genellikle $HOME/.composer/vendor/bin dizinine kurar. Bu dizinin sistem PATH’inizde olduğundan emin olmalısınız. Eğer değilse, .bashrc veya .profile dosyanıza aşağıdaki satırı ekleyebilirsiniz:

export PATH="$HOME/.composer/vendor/bin:$PATH"

Ardından source ~/.bashrc veya source ~/.profile komutunu çalıştırarak değişikliği uygulayın.

4. Composer’ı nasıl kaldırırım?
Composer’ı sisteminizden kaldırmak için, yürütülebilir dosyasını silebilirsiniz:

sudo rm /usr/local/bin/composer

Global olarak yüklediğiniz paketleri de silmek isterseniz, $HOME/.composer dizinini de silebilirsiniz:

rm -rf ~/.composer

5. composer dump-autoload ne işe yarar?
composer dump-autoload komutu, Composer’ın otomatik yükleme dosyalarını yeniden oluşturur. Yeni sınıflar eklediğinizde veya composer.json dosyasındaki autoload bölümünde değişiklik yaptığınızda (örneğin, yeni bir PSR-4 ad alanı tanımladığınızda) bu komutu çalıştırmanız gerekir. Bu komut, Composer’ın sınıflarınızı doğru bir şekilde bulabilmesini sağlar.

composer dump-autoload

Bu rehberin, Composer’ı Ubuntu VPS’nize kurarken ve kullanırken size yardımcı olacağını umuyoruz. İyi geliştirmeler!

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Mobil sürümden çık