Silex, Symfony bileşenleri üzerine inşa edilmiş, hafif ve esnek bir PHP mikro-çerçevesidir. Özellikle küçük API’ler, tek sayfalık uygulamalar veya prototipleme için idealdir. Bu rehberde, Ubuntu 14.04 işletim sistemi üzerinde Silex ile nasıl başlayacağınızı adım adım öğreneceksiniz. Ubuntu 14.04 eski bir sürüm olmasına rağmen, bu rehber o ortamda Silex’i çalıştırmak isteyenler için hazırlanmıştır. Adımlar modern Ubuntu sürümlerinde de büyük ölçüde benzerlik gösterir, ancak PHP ve diğer paket sürümleri farklılık gösterebilir.
Ön Gereksinimler ve Sistem Kurulumu
Silex projenizi kurmaya başlamadan önce, Ubuntu 14.04 sunucunuzda bazı temel yazılımların kurulu ve yapılandırılmış olması gerekir. Bu bölümde, Apache web sunucusu, PHP ve Composer gibi temel bileşenleri kuracağız.
Sistem Güncellemesi
Herhangi bir yazılım kurulumuna başlamadan önce, sisteminizin güncel olduğundan emin olmak iyi bir uygulamadır:
sudo apt-get update
sudo apt-get upgrade
Apache Web Sunucusu Kurulumu
Silex uygulamalarınızı çalıştırmak için bir web sunucusuna ihtiyacımız var. Bu rehberde Apache kullanacağız.
sudo apt-get install apache2
Kurulumdan sonra Apache’nin çalıştığını doğrulamak için web tarayıcınızda http://localhost adresine gidebilirsiniz. “It works!” mesajını görmelisiniz.
Silex’in URL yönlendirme (routing) özelliklerini düzgün kullanabilmesi için Apache’nin mod_rewrite modülünü etkinleştirmemiz gerekiyor:
sudo a2enmod rewrite
sudo service apache2 restart
PHP Kurulumu
Silex bir PHP çerçevesi olduğu için PHP’ye ihtiyacımız var. Ubuntu 14.04 varsayılan olarak PHP 5.x sürümünü kullanır. Silex için gerekli temel PHP modüllerini kuralım:
sudo apt-get install php5 libapache2-mod-php5 php5-cli php5-json php5-curl php5-intl php5-mcrypt
php5-mcrypt modülünü etkinleştirmeyi unutmayın:
sudo php5enmod mcrypt
sudo service apache2 restart
PHP kurulumunuzu doğrulamak için, /var/www/html/info.php adında bir dosya oluşturup içine yazarak tarayıcınızdan http://localhost/info.php adresine gidebilirsiniz. İşiniz bittiğinde güvenlik nedeniyle bu dosyayı silmeyi unutmayın.
Composer Kurulumu
Composer, PHP için bir bağımlılık yöneticisidir ve Silex projenizin bağımlılıklarını yönetmek için olmazsa olmazdır. Kurulumu oldukça basittir:
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
Composer’ın doğru kurulduğundan emin olmak için sürümünü kontrol edebilirsiniz:
composer --version
Silex Projesi Oluşturma ve Yapılandırma
Artık tüm ön gereksinimleri kurduğunuza göre, ilk Silex projenizi oluşturmaya ve Apache web sunucusu üzerinde yapılandırmaya başlayabiliriz.
Silex Projesi Oluşturma
Silex için yeni bir dizin oluşturalım ve içine girelim:
mkdir ~/silex_app
cd ~/silex_app
Composer’ı kullanarak Silex iskelesini (skeleton) indirelim. Bu iskele, Silex uygulamaları için iyi bir başlangıç noktası sunar:
composer create-project fabpot/silex-skeleton .
Bu komut, Silex’i ve tüm bağımlılıklarını (örneğin Symfony bileşenleri) mevcut dizine kuracaktır. Kurulum tamamlandığında, projeniz aşağıdaki gibi bir yapıya sahip olacaktır:
app/: Uygulama yapılandırmaları ve servis sağlayıcıları.src/: Uygulama kodunuz (kontroller, modeller vb.).var/: Loglar ve cache dosyaları.vendor/: Composer tarafından yönetilen bağımlılıklar.web/: Web sunucusunun erişebileceği genel dosyalar (index.php, statik dosyalar).composer.json,composer.lock: Composer yapılandırma dosyaları.
Apache Sanal Ana Bilgisayar (Virtual Host) Yapılandırması
Silex uygulamanızın web/ dizinini web sunucusu için kök dizin olarak ayarlamamız gerekiyor. Bunun için yeni bir Apache sanal ana bilgisayarı oluşturalım.
Yeni bir yapılandırma dosyası oluşturalım:
sudo nano /etc/apache2/sites-available/silex_app.conf
Dosyanın içine aşağıdaki içeriği yapıştırın. /home/kullanici_adiniz/silex_app kısmını kendi kullanıcı adınıza göre düzenlemeyi unutmayın:
ServerAdmin webmaster@localhost
ServerName silex_app.local
DocumentRoot /home/kullanici_adiniz/silex_app/web
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
Require all granted
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Kaydedip çıkın (Ctrl+O, Enter, Ctrl+X).
Şimdi bu sanal ana bilgisayarı etkinleştirelim ve varsayılan siteyi devre dışı bırakalım (isteğe bağlı ama iyi bir pratik):
sudo a2ensite silex_app.conf
sudo a2dissite 000-default.conf
sudo service apache2 restart
Son olarak, yerel makinenizin hosts dosyasına bir giriş ekleyerek silex_app.local alan adını yerel IP adresinize yönlendirelim:
sudo nano /etc/hosts
Dosyanın sonuna aşağıdaki satırı ekleyin:
127.0.0.1 silex_app.local
Kaydedip çıkın.
Dizin İzinleri
Silex’in log ve cache dosyalarını yazabilmesi için var/ dizinine doğru izinleri vermemiz gerekiyor:
sudo chown -R www-data:www-data ~/silex_app/var
sudo chmod -R 775 ~/silex_app/var
Bu izinler geliştirme ortamı için uygundur. Üretim ortamında daha kısıtlayıcı izinler kullanmak isteyebilirsiniz.
İlk Silex Uygulamanızı Yazma
Artık tüm kurulum ve yapılandırma adımlarını tamamladığımıza göre, ilk Silex uygulamanızı yazmaya hazırsınız. Silex uygulamalarının giriş noktası genellikle web/index.php dosyasıdır.
Temel “Merhaba Dünya” Uygulaması
web/index.php dosyasını açın ve içeriğini aşağıdaki gibi düzenleyin:
register(new HttpFragmentServiceProvider());
$app->register(new ServiceControllerServiceProvider());
$app->register(new TwigServiceProvider(), array(
'twig.path' => __DIR__.'/../templates',
));
// Geliştirme ortamı için Web Profiler'ı etkinleştir
$app->register(new WebProfilerServiceProvider(), array(
'profiler.cache_dir' => __DIR__.'/../var/cache/profiler',
));
// İlk rotamızı tanımlayalım
$app->get('/', function () use ($app) {
return 'Merhaba, Silex!';
});
// Dinamik rota örneği
$app->get('/selam/{name}', function ($name) use ($app) {
return 'Merhaba, ' . $app->escape($name) . '! Silex\'e Hoş Geldiniz.';
});
$app->run();
Yukarıdaki kodda neler olduğuna bakalım:
require_once __DIR__.'/../vendor/autoload.php';: Composer tarafından yüklenen tüm kütüphaneleri otomatik olarak yükler.$app = new Application();: Yeni bir Silex uygulaması örneği oluşturur. Bu$appnesnesi, uygulamanızın tüm bileşenlerini (servisler, rotalar vb.) içerir.$app['debug'] = true;: Geliştirme modunda hata ayıklamayı etkinleştirir. Bu, hataları daha ayrıntılı görmenizi sağlar. Üretimdefalseyapılmalıdır.$app->register(...): Silex’in temel işlevselliğini genişletmek için servis sağlayıcıları kaydederiz. Örneğin,TwigServiceProviderşablon motorunu sağlar.$app->get('/', function () use ($app) { ... });: Bir GET isteği için bir rota tanımlar. İlk parametre URL yolu, ikinci parametre ise bu rota çağrıldığında çalışacak bir fonksiyondur.use ($app)ifadesi, anonim fonksiyon içinde$appnesnesine erişimi sağlar.$app->get('/selam/{name}', function ($name) use ($app) { ... });: Dinamik bir rota örneğidir.{name}kısmı, URL’den yakalanacak bir parametreyi temsil eder. Bu parametre, anonim fonksiyona argüman olarak iletilir.$app->escape($name), XSS saldırılarını önlemek için çıktıyı güvenli hale getirir.$app->run();: Uygulamayı başlatır ve gelen isteği işler.
Şimdi web tarayıcınızı açın ve aşağıdaki adreslere gidin:
http://silex_app.local/: “Merhaba, Silex!” çıktısını görmelisiniz.http://silex_app.local/selam/Ali: “Merhaba, Ali! Silex’e Hoş Geldiniz.” çıktısını görmelisiniz.
Tebrikler! İlk Silex uygulamanızı başarıyla çalıştırmış oldunuz.
Pratik Bilgiler ve İpuçları
Silex ile çalışırken işinize yarayacak bazı pratik bilgiler ve ipuçları aşağıdadır:
Hata Ayıklama (Debugging)
$app['debug'] = true; ayarı geliştirme sırasında çok önemlidir. Bu ayar etkin olduğunda, Silex daha detaylı hata mesajları ve yığın izleri (stack traces) gösterir. Symfony’nin Web Profiler’ı da bu rehberdeki kurulumla birlikte gelir ve tarayıcınızın alt kısmında uygulamanız hakkında kapsamlı bilgiler (loglar, rotalar, performans) sunar.
Servisler ve Bağımlılık Enjeksiyonu (DI)
Silex, Pimple adında basit bir bağımlılık enjeksiyon (DI) kapsayıcısı kullanır. Bu, uygulamanızın farklı bölümleri arasındaki bağımlılıkları yönetmenin temiz bir yoludur. Örneğin, Silex’in yerleşik servislerine ($app['session'], $app['twig']) bu şekilde erişebilirsiniz. Kendi servislerinizi de kolayca tanımlayabilirsiniz:
$app['my_service'] = function ($app) {
return new MyCustomService($app['some_dependency']);
};
Servis Sağlayıcıları (Service Providers)
Silex’in gücü, genişletilebilir yapısından gelir. Servis sağlayıcıları, uygulamanıza ek işlevsellik (veritabanı, oturum yönetimi, şablonlama vb.) eklemek için kullanılır. Bu rehberde Twig, HTTP Fragment ve Service Controller sağlayıcılarını kullandık. Diğer yaygın sağlayıcılar şunlardır:
Silex\Provider\SessionServiceProvider: Oturum yönetimi için.Silex\Provider\UrlGeneratorServiceProvider: Rotalar için URL oluşturma.Silex\Provider\DoctrineServiceProvider: Veritabanı işlemleri için Doctrine DBAL entegrasyonu.
Bir sağlayıcıyı kaydederken genellikle yapılandırma seçeneklerini de iletebilirsiniz (örneğin Twig’in şablon yolu gibi).
Veritabanı Entegrasyonu
Veritabanı işlemleri için DoctrineServiceProvider‘ı kullanabilirsiniz. Öncelikle Composer ile kurmalısınız:
composer require doctrine/dbal
Ardından index.php dosyanızda kaydedebilirsiniz:
use Silex\Provider\DoctrineServiceProvider;
$app->register(new DoctrineServiceProvider(), array(
'db.options' => array(
'driver' => 'pdo_mysql',
'host' => 'localhost',
'dbname' => 'veritabani_adiniz',
'user' => 'kullanici_adiniz',
'password' => 'sifreniz',
'charset' => 'utf8mb4',
),
));
$app->get('/users', function () use ($app) {
$users = $app['db']->fetchAll('SELECT * FROM users');
return $app->json($users); // JSON çıktısı verir
});
Güvenlik İpuçları
- Girdi Doğrulama: Kullanıcıdan gelen tüm girdileri her zaman doğrulayın ve temizleyin.
- Çıktı Kaçırma: Kullanıcı girdisini HTML çıktısına yansıtırken daima
$app->escape()veya Twig’in otomatik kaçırma özelliğini kullanın. Bu, XSS saldırılarını önler. - Hata Mesajları: Üretim ortamında
$app['debug'] = false;yapın. Ayrıntılı hata mesajları saldırganlara bilgi verebilir. - İzinler: Dizin ve dosya izinlerini mümkün olduğunca kısıtlı tutun.
Silex’in Geleceği
Silex, Symfony ekibi tarafından geliştirilmiş harika bir mikro-çerçeve olmasına rağmen, aktif gelişimi 2018 yılında durdurulmuştur. Bu, Silex’in yeni özellikler almayacağı veya ciddi hatalar için desteklenmeyeceği anlamına gelir. Yeni projeler için Silex yerine Symfony (tam çerçeve) veya Symfony bileşenleri üzerine inşa edilmiş modern alternatifler (örneğin Slim Framework veya Laravel) kullanılması önerilir. Ancak mevcut Silex projelerini anlamak veya hafif, hızlı bir prototipleme aracı olarak kullanmak için hala değerli bir araçtır.
Sonuç ve Sıkça Sorulan Sorular (SSS)
Bu rehberde, Ubuntu 14.04 üzerinde Silex’i kurmak ve temel bir uygulama oluşturmak için gerekli tüm adımları tamamladınız. Apache, PHP ve Composer gibi temel bileşenleri kurmayı, Silex projenizi oluşturmayı, Apache sanal ana bilgisayarını yapılandırmayı ve ilk “Merhaba Dünya” uygulamanızı yazmayı öğrendiniz. Silex’in hafif yapısı ve Symfony bileşenleriyle entegrasyonu, hızlı geliştirme ve esneklik sunar. Her ne kadar Silex’in aktif gelişimi durmuş olsa da, mikro-çerçeve kavramını anlamak ve küçük projeler için temel oluşturmak adına hala öğretici bir kaynaktır.
Sıkça Sorulan Sorular (SSS)
S1: Silex hala kullanılıyor mu?
C1: Silex’in aktif gelişimi 2018 yılında durdurulmuştur ve artık yeni özellikler veya güvenlik güncellemeleri almamaktadır. Yeni projeler için Symfony (tam çerçeve) veya Laravel gibi daha modern ve aktif olarak geliştirilen alternatifler önerilir.
S2: Silex yerine ne kullanmalıyım?
C2: Silex’in yerini alabilecek popüler alternatifler arasında Symfony (daha kapsamlı projeler için), Slim Framework (Silex’e benzer hafif bir mikro-çerçeve) ve Laravel (daha geniş bir ekosisteme sahip tam özellikli bir çerçeve) bulunmaktadır.
S3: Ubuntu 14.04 yerine daha yeni bir sürüm kullanabilir miyim?
C3: Kesinlikle evet! Ubuntu 14.04 eski ve artık güvenlik güncellemeleri almayan bir sürümdür. Güvenlik ve performans için her zaman Ubuntu’nun daha yeni ve desteklenen bir LTS (Uzun Süreli Destek) sürümünü kullanmanız şiddetle tavsiye edilir. Bu rehberdeki adımlar, PHP ve paket adları biraz farklılık gösterse de, genel olarak daha yeni Ubuntu sürümlerinde de benzerdir.
S4: Composer nedir ve neden ihtiyacım var?
C4: Composer, PHP için bir bağımlılık yöneticisidir. Projenizin ihtiyaç duyduğu kütüphaneleri ve paketleri (Silex ve Symfony bileşenleri gibi) kolayca kurmanızı, güncellemenizi ve yönetmenizi sağlar. Silex projenizi oluşturmak ve bağımlılıklarını yönetmek için Composer’a kesinlikle ihtiyacınız vardır.
S5: Uygulamamda 404 hatası alıyorum, ne yapmalıyım?
C5: 404 hatası alıyorsanız, genellikle aşağıdaki nedenlerden biri olabilir:
- Apache
mod_rewritemodülü etkin değil.sudo a2enmod rewritevesudo service apache2 restartkomutlarını çalıştırın. - Apache sanal ana bilgisayar yapılandırmanızda
AllowOverride Allayarı eksik veya yanlış. Bu ayar, Apache’nin.htaccessdosyalarını işlemesini sağlar. DocumentRootayarı yanlış./home/kullanici_adiniz/silex_app/webyolunun doğru olduğundan emin olun./etc/hostsdosyanızdasilex_app.localiçin bir giriş yok veya yanlış.- Rota tanımınız yanlış veya istediğiniz URL ile eşleşmiyor.