{"id":32176,"date":"2025-10-18T16:41:47","date_gmt":"2025-10-18T13:41:47","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=32176"},"modified":"2025-10-18T16:41:47","modified_gmt":"2025-10-18T13:41:47","slug":"on-gereksinimler-ve-sistem-kurulumu","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/on-gereksinimler-ve-sistem-kurulumu\/","title":{"rendered":"\u00d6n Gereksinimler ve Sistem Kurulumu"},"content":{"rendered":"<p><body><\/p>\n<p>Silex, Symfony bile\u015fenleri \u00fczerine in\u015fa edilmi\u015f, hafif ve esnek bir PHP mikro-\u00e7er\u00e7evesidir. \u00d6zellikle k\u00fc\u00e7\u00fck API&#8217;ler, tek sayfal\u0131k uygulamalar veya prototipleme i\u00e7in idealdir. Bu rehberde, Ubuntu 14.04 i\u015fletim sistemi \u00fczerinde Silex ile nas\u0131l ba\u015flayaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m \u00f6\u011freneceksiniz. Ubuntu 14.04 eski bir s\u00fcr\u00fcm olmas\u0131na ra\u011fmen, bu rehber o ortamda Silex&#8217;i \u00e7al\u0131\u015ft\u0131rmak isteyenler i\u00e7in haz\u0131rlanm\u0131\u015ft\u0131r. Ad\u0131mlar modern Ubuntu s\u00fcr\u00fcmlerinde de b\u00fcy\u00fck \u00f6l\u00e7\u00fcde benzerlik g\u00f6sterir, ancak PHP ve di\u011fer paket s\u00fcr\u00fcmleri farkl\u0131l\u0131k g\u00f6sterebilir.<\/p>\n<h2>\u00d6n Gereksinimler ve Sistem Kurulumu<\/h2>\n<p>Silex projenizi kurmaya ba\u015flamadan \u00f6nce, Ubuntu 14.04 sunucunuzda baz\u0131 temel yaz\u0131l\u0131mlar\u0131n kurulu ve yap\u0131land\u0131r\u0131lm\u0131\u015f olmas\u0131 gerekir. Bu b\u00f6l\u00fcmde, Apache web sunucusu, PHP ve Composer gibi temel bile\u015fenleri kuraca\u011f\u0131z.<\/p>\n<h3>Sistem G\u00fcncellemesi<\/h3>\n<p>Herhangi bir yaz\u0131l\u0131m kurulumuna ba\u015flamadan \u00f6nce, sisteminizin g\u00fcncel oldu\u011fundan emin olmak iyi bir uygulamad\u0131r:<\/p>\n<pre><code>sudo apt-get update\nsudo apt-get upgrade<\/code><\/pre>\n<h3>Apache Web Sunucusu Kurulumu<\/h3>\n<p>Silex uygulamalar\u0131n\u0131z\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in bir web sunucusuna ihtiyac\u0131m\u0131z var. Bu rehberde Apache kullanaca\u011f\u0131z.<\/p>\n<pre><code>sudo apt-get install apache2<\/code><\/pre>\n<p>Kurulumdan sonra Apache&#8217;nin \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 do\u011frulamak i\u00e7in web taray\u0131c\u0131n\u0131zda <code>http:\/\/localhost<\/code> adresine gidebilirsiniz. &#8220;It works!&#8221; mesaj\u0131n\u0131 g\u00f6rmelisiniz.<\/p>\n<p>Silex&#8217;in URL y\u00f6nlendirme (routing) \u00f6zelliklerini d\u00fczg\u00fcn kullanabilmesi i\u00e7in Apache&#8217;nin <code>mod_rewrite<\/code> mod\u00fcl\u00fcn\u00fc etkinle\u015ftirmemiz gerekiyor:<\/p>\n<pre><code>sudo a2enmod rewrite\nsudo service apache2 restart<\/code><\/pre>\n<h3>PHP Kurulumu<\/h3>\n<p>Silex bir PHP \u00e7er\u00e7evesi oldu\u011fu i\u00e7in PHP&#8217;ye ihtiyac\u0131m\u0131z var. Ubuntu 14.04 varsay\u0131lan olarak PHP 5.x s\u00fcr\u00fcm\u00fcn\u00fc kullan\u0131r. Silex i\u00e7in gerekli temel PHP mod\u00fcllerini kural\u0131m:<\/p>\n<pre><code>sudo apt-get install php5 libapache2-mod-php5 php5-cli php5-json php5-curl php5-intl php5-mcrypt<\/code><\/pre>\n<p><code>php5-mcrypt<\/code> mod\u00fcl\u00fcn\u00fc etkinle\u015ftirmeyi unutmay\u0131n:<\/p>\n<pre><code>sudo php5enmod mcrypt\nsudo service apache2 restart<\/code><\/pre>\n<p>PHP kurulumunuzu do\u011frulamak i\u00e7in, <code>\/var\/www\/html\/info.php<\/code> ad\u0131nda bir dosya olu\u015fturup i\u00e7ine <code><?php phpinfo(); ?><\/code> yazarak taray\u0131c\u0131n\u0131zdan <code>http:\/\/localhost\/info.php<\/code> adresine gidebilirsiniz. \u0130\u015finiz bitti\u011finde g\u00fcvenlik nedeniyle bu dosyay\u0131 silmeyi unutmay\u0131n.<\/p>\n<h3>Composer Kurulumu<\/h3>\n<p>Composer, PHP i\u00e7in bir ba\u011f\u0131ml\u0131l\u0131k y\u00f6neticisidir ve Silex projenizin ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 y\u00f6netmek i\u00e7in olmazsa olmazd\u0131r. Kurulumu olduk\u00e7a basittir:<\/p>\n<pre><code>curl -sS https:\/\/getcomposer.org\/installer | php\nsudo mv composer.phar \/usr\/local\/bin\/composer<\/code><\/pre>\n<p>Composer&#8217;\u0131n do\u011fru kuruldu\u011fundan emin olmak i\u00e7in s\u00fcr\u00fcm\u00fcn\u00fc kontrol edebilirsiniz:<\/p>\n<pre><code>composer --version<\/code><\/pre>\n<h2>Silex Projesi Olu\u015fturma ve Yap\u0131land\u0131rma<\/h2>\n<p>Art\u0131k t\u00fcm \u00f6n gereksinimleri kurdu\u011funuza g\u00f6re, ilk Silex projenizi olu\u015fturmaya ve Apache web sunucusu \u00fczerinde yap\u0131land\u0131rmaya ba\u015flayabiliriz.<\/p>\n<h3>Silex Projesi Olu\u015fturma<\/h3>\n<p>Silex i\u00e7in yeni bir dizin olu\u015ftural\u0131m ve i\u00e7ine girelim:<\/p>\n<pre><code>mkdir ~\/silex_app\ncd ~\/silex_app<\/code><\/pre>\n<p>Composer&#8217;\u0131 kullanarak Silex iskelesini (skeleton) indirelim. Bu iskele, Silex uygulamalar\u0131 i\u00e7in iyi bir ba\u015flang\u0131\u00e7 noktas\u0131 sunar:<\/p>\n<pre><code>composer create-project fabpot\/silex-skeleton .<\/code><\/pre>\n<p>Bu komut, Silex&#8217;i ve t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 (\u00f6rne\u011fin Symfony bile\u015fenleri) mevcut dizine kuracakt\u0131r. Kurulum tamamland\u0131\u011f\u0131nda, projeniz a\u015fa\u011f\u0131daki gibi bir yap\u0131ya sahip olacakt\u0131r:<\/p>\n<ul>\n<li><code>app\/<\/code>: Uygulama yap\u0131land\u0131rmalar\u0131 ve servis sa\u011flay\u0131c\u0131lar\u0131.<\/li>\n<li><code>src\/<\/code>: Uygulama kodunuz (kontroller, modeller vb.).<\/li>\n<li><code>var\/<\/code>: Loglar ve cache dosyalar\u0131.<\/li>\n<li><code>vendor\/<\/code>: Composer taraf\u0131ndan y\u00f6netilen ba\u011f\u0131ml\u0131l\u0131klar.<\/li>\n<li><code>web\/<\/code>: Web sunucusunun eri\u015febilece\u011fi genel dosyalar (<code>index.php<\/code>, statik dosyalar).<\/li>\n<li><code>composer.json<\/code>, <code>composer.lock<\/code>: Composer yap\u0131land\u0131rma dosyalar\u0131.<\/li>\n<\/ul>\n<h3>Apache Sanal Ana Bilgisayar (Virtual Host) Yap\u0131land\u0131rmas\u0131<\/h3>\n<p>Silex uygulaman\u0131z\u0131n <code>web\/<\/code> dizinini web sunucusu i\u00e7in k\u00f6k dizin olarak ayarlamam\u0131z gerekiyor. Bunun i\u00e7in yeni bir Apache sanal ana bilgisayar\u0131 olu\u015ftural\u0131m.<\/p>\n<p>Yeni bir yap\u0131land\u0131rma dosyas\u0131 olu\u015ftural\u0131m:<\/p>\n<pre><code>sudo nano \/etc\/apache2\/sites-available\/silex_app.conf<\/code><\/pre>\n<p>Dosyan\u0131n i\u00e7ine a\u015fa\u011f\u0131daki i\u00e7eri\u011fi yap\u0131\u015ft\u0131r\u0131n. <code>\/home\/kullanici_adiniz\/silex_app<\/code> k\u0131sm\u0131n\u0131 kendi kullan\u0131c\u0131 ad\u0131n\u0131za g\u00f6re d\u00fczenlemeyi unutmay\u0131n:<\/p>\n<pre><code><VirtualHost *:80>\n    ServerAdmin webmaster@localhost\n    ServerName silex_app.local\n    DocumentRoot \/home\/kullanici_adiniz\/silex_app\/web\n\n    <Directory \/home\/kullanici_adiniz\/silex_app\/web>\n        Options Indexes FollowSymLinks MultiViews\n        AllowOverride All\n        Order allow,deny\n        allow from all\n        Require all granted\n    <\/Directory>\n\n    ErrorLog ${APACHE_LOG_DIR}\/error.log\n    CustomLog ${APACHE_LOG_DIR}\/access.log combined\n<\/VirtualHost><\/code><\/pre>\n<p>Kaydedip \u00e7\u0131k\u0131n (Ctrl+O, Enter, Ctrl+X).<\/p>\n<p>\u015eimdi bu sanal ana bilgisayar\u0131 etkinle\u015ftirelim ve varsay\u0131lan siteyi devre d\u0131\u015f\u0131 b\u0131rakal\u0131m (iste\u011fe ba\u011fl\u0131 ama iyi bir pratik):<\/p>\n<pre><code>sudo a2ensite silex_app.conf\nsudo a2dissite 000-default.conf\nsudo service apache2 restart<\/code><\/pre>\n<p>Son olarak, yerel makinenizin <code>hosts<\/code> dosyas\u0131na bir giri\u015f ekleyerek <code>silex_app.local<\/code> alan ad\u0131n\u0131 yerel IP adresinize y\u00f6nlendirelim:<\/p>\n<pre><code>sudo nano \/etc\/hosts<\/code><\/pre>\n<p>Dosyan\u0131n sonuna a\u015fa\u011f\u0131daki sat\u0131r\u0131 ekleyin:<\/p>\n<pre><code>127.0.0.1    silex_app.local<\/code><\/pre>\n<p>Kaydedip \u00e7\u0131k\u0131n.<\/p>\n<h3>Dizin \u0130zinleri<\/h3>\n<p>Silex&#8217;in log ve cache dosyalar\u0131n\u0131 yazabilmesi i\u00e7in <code>var\/<\/code> dizinine do\u011fru izinleri vermemiz gerekiyor:<\/p>\n<pre><code>sudo chown -R www-data:www-data ~\/silex_app\/var\nsudo chmod -R 775 ~\/silex_app\/var<\/code><\/pre>\n<p>Bu izinler geli\u015ftirme ortam\u0131 i\u00e7in uygundur. \u00dcretim ortam\u0131nda daha k\u0131s\u0131tlay\u0131c\u0131 izinler kullanmak isteyebilirsiniz.<\/p>\n<h2>\u0130lk Silex Uygulaman\u0131z\u0131 Yazma<\/h2>\n<p>Art\u0131k t\u00fcm kurulum ve yap\u0131land\u0131rma ad\u0131mlar\u0131n\u0131 tamamlad\u0131\u011f\u0131m\u0131za g\u00f6re, ilk Silex uygulaman\u0131z\u0131 yazmaya haz\u0131rs\u0131n\u0131z. Silex uygulamalar\u0131n\u0131n giri\u015f noktas\u0131 genellikle <code>web\/index.php<\/code> dosyas\u0131d\u0131r.<\/p>\n<h3>Temel &#8220;Merhaba D\u00fcnya&#8221; Uygulamas\u0131<\/h3>\n<p><code>web\/index.php<\/code> dosyas\u0131n\u0131 a\u00e7\u0131n ve i\u00e7eri\u011fini a\u015fa\u011f\u0131daki gibi d\u00fczenleyin:<\/p>\n<pre><code><?php\n\nrequire_once __DIR__.'\/..\/vendor\/autoload.php';\n\nuse Silex\\Application;\nuse Silex\\Provider\\HttpFragmentServiceProvider;\nuse Silex\\Provider\\ServiceControllerServiceProvider;\nuse Silex\\Provider\\TwigServiceProvider;\nuse Silex\\Provider\\WebProfilerServiceProvider;\n\n$app = new Application();\n\n\/\/ Debug modunu etkinle\u015ftir (geli\u015ftirme i\u00e7in)\n$app['debug'] = true;\n\n\/\/ Varsay\u0131lan servis sa\u011flay\u0131c\u0131lar\u0131\n$app->register(new HttpFragmentServiceProvider());\n$app->register(new ServiceControllerServiceProvider());\n$app->register(new TwigServiceProvider(), array(\n    'twig.path' => __DIR__.'\/..\/templates',\n));\n\n\/\/ Geli\u015ftirme ortam\u0131 i\u00e7in Web Profiler'\u0131 etkinle\u015ftir\n$app->register(new WebProfilerServiceProvider(), array(\n    'profiler.cache_dir' => __DIR__.'\/..\/var\/cache\/profiler',\n));\n\n\/\/ \u0130lk rotam\u0131z\u0131 tan\u0131mlayal\u0131m\n$app->get('\/', function () use ($app) {\n    return 'Merhaba, Silex!';\n});\n\n\/\/ Dinamik rota \u00f6rne\u011fi\n$app->get('\/selam\/{name}', function ($name) use ($app) {\n    return 'Merhaba, ' . $app->escape($name) . '! Silex\\'e Ho\u015f Geldiniz.';\n});\n\n$app->run();<\/code><\/pre>\n<p>Yukar\u0131daki kodda neler oldu\u011funa bakal\u0131m:<\/p>\n<ul>\n<li><code>require_once __DIR__.'\/..\/vendor\/autoload.php';<\/code>: Composer taraf\u0131ndan y\u00fcklenen t\u00fcm k\u00fct\u00fcphaneleri otomatik olarak y\u00fckler.<\/li>\n<li><code>$app = new Application();<\/code>: Yeni bir Silex uygulamas\u0131 \u00f6rne\u011fi olu\u015fturur. Bu <code>$app<\/code> nesnesi, uygulaman\u0131z\u0131n t\u00fcm bile\u015fenlerini (servisler, rotalar vb.) i\u00e7erir.<\/li>\n<li><code>$app['debug'] = true;<\/code>: Geli\u015ftirme modunda hata ay\u0131klamay\u0131 etkinle\u015ftirir. Bu, hatalar\u0131 daha ayr\u0131nt\u0131l\u0131 g\u00f6rmenizi sa\u011flar. \u00dcretimde <code>false<\/code> yap\u0131lmal\u0131d\u0131r.<\/li>\n<li><code>$app->register(...)<\/code>: Silex&#8217;in temel i\u015flevselli\u011fini geni\u015fletmek i\u00e7in servis sa\u011flay\u0131c\u0131lar\u0131 kaydederiz. \u00d6rne\u011fin, <code>TwigServiceProvider<\/code> \u015fablon motorunu sa\u011flar.<\/li>\n<li><code>$app->get('\/', function () use ($app) { ... });<\/code>: Bir GET iste\u011fi i\u00e7in bir rota tan\u0131mlar. \u0130lk parametre URL yolu, ikinci parametre ise bu rota \u00e7a\u011fr\u0131ld\u0131\u011f\u0131nda \u00e7al\u0131\u015facak bir fonksiyondur. <code>use ($app)<\/code> ifadesi, anonim fonksiyon i\u00e7inde <code>$app<\/code> nesnesine eri\u015fimi sa\u011flar.<\/li>\n<li><code>$app->get('\/selam\/{name}', function ($name) use ($app) { ... });<\/code>: Dinamik bir rota \u00f6rne\u011fidir. <code>{name}<\/code> k\u0131sm\u0131, URL&#8217;den yakalanacak bir parametreyi temsil eder. Bu parametre, anonim fonksiyona arg\u00fcman olarak iletilir. <code>$app->escape($name)<\/code>, XSS sald\u0131r\u0131lar\u0131n\u0131 \u00f6nlemek i\u00e7in \u00e7\u0131kt\u0131y\u0131 g\u00fcvenli hale getirir.<\/li>\n<li><code>$app->run();<\/code>: Uygulamay\u0131 ba\u015flat\u0131r ve gelen iste\u011fi i\u015fler.<\/li>\n<\/ul>\n<p>\u015eimdi web taray\u0131c\u0131n\u0131z\u0131 a\u00e7\u0131n ve a\u015fa\u011f\u0131daki adreslere gidin:<\/p>\n<ul>\n<li><code>http:\/\/silex_app.local\/<\/code>: &#8220;Merhaba, Silex!&#8221; \u00e7\u0131kt\u0131s\u0131n\u0131 g\u00f6rmelisiniz.<\/li>\n<li><code>http:\/\/silex_app.local\/selam\/Ali<\/code>: &#8220;Merhaba, Ali! Silex&#8217;e Ho\u015f Geldiniz.&#8221; \u00e7\u0131kt\u0131s\u0131n\u0131 g\u00f6rmelisiniz.<\/li>\n<\/ul>\n<p>Tebrikler! \u0130lk Silex uygulaman\u0131z\u0131 ba\u015far\u0131yla \u00e7al\u0131\u015ft\u0131rm\u0131\u015f oldunuz.<\/p>\n<h2>Pratik Bilgiler ve \u0130pu\u00e7lar\u0131<\/h2>\n<p>Silex ile \u00e7al\u0131\u015f\u0131rken i\u015finize yarayacak baz\u0131 pratik bilgiler ve ipu\u00e7lar\u0131 a\u015fa\u011f\u0131dad\u0131r:<\/p>\n<h3>Hata Ay\u0131klama (Debugging)<\/h3>\n<p><code>$app['debug'] = true;<\/code> ayar\u0131 geli\u015ftirme s\u0131ras\u0131nda \u00e7ok \u00f6nemlidir. Bu ayar etkin oldu\u011funda, Silex daha detayl\u0131 hata mesajlar\u0131 ve y\u0131\u011f\u0131n izleri (stack traces) g\u00f6sterir. Symfony&#8217;nin Web Profiler&#8217;\u0131 da bu rehberdeki kurulumla birlikte gelir ve taray\u0131c\u0131n\u0131z\u0131n alt k\u0131sm\u0131nda uygulaman\u0131z hakk\u0131nda kapsaml\u0131 bilgiler (loglar, rotalar, performans) sunar.<\/p>\n<h3>Servisler ve Ba\u011f\u0131ml\u0131l\u0131k Enjeksiyonu (DI)<\/h3>\n<p>Silex, Pimple ad\u0131nda basit bir ba\u011f\u0131ml\u0131l\u0131k enjeksiyon (DI) kapsay\u0131c\u0131s\u0131 kullan\u0131r. Bu, uygulaman\u0131z\u0131n farkl\u0131 b\u00f6l\u00fcmleri aras\u0131ndaki ba\u011f\u0131ml\u0131l\u0131klar\u0131 y\u00f6netmenin temiz bir yoludur. \u00d6rne\u011fin, Silex&#8217;in yerle\u015fik servislerine (<code>$app['session']<\/code>, <code>$app['twig']<\/code>) bu \u015fekilde eri\u015febilirsiniz. Kendi servislerinizi de kolayca tan\u0131mlayabilirsiniz:<\/p>\n<pre><code>$app['my_service'] = function ($app) {\n    return new MyCustomService($app['some_dependency']);\n};<\/code><\/pre>\n<h3>Servis Sa\u011flay\u0131c\u0131lar\u0131 (Service Providers)<\/h3>\n<p>Silex&#8217;in g\u00fcc\u00fc, geni\u015fletilebilir yap\u0131s\u0131ndan gelir. Servis sa\u011flay\u0131c\u0131lar\u0131, uygulaman\u0131za ek i\u015flevsellik (veritaban\u0131, oturum y\u00f6netimi, \u015fablonlama vb.) eklemek i\u00e7in kullan\u0131l\u0131r. Bu rehberde Twig, HTTP Fragment ve Service Controller sa\u011flay\u0131c\u0131lar\u0131n\u0131 kulland\u0131k. Di\u011fer yayg\u0131n sa\u011flay\u0131c\u0131lar \u015funlard\u0131r:<\/p>\n<ul>\n<li><code>Silex\\Provider\\SessionServiceProvider<\/code>: Oturum y\u00f6netimi i\u00e7in.<\/li>\n<li><code>Silex\\Provider\\UrlGeneratorServiceProvider<\/code>: Rotalar i\u00e7in URL olu\u015fturma.<\/li>\n<li><code>Silex\\Provider\\DoctrineServiceProvider<\/code>: Veritaban\u0131 i\u015flemleri i\u00e7in Doctrine DBAL entegrasyonu.<\/li>\n<\/ul>\n<p>Bir sa\u011flay\u0131c\u0131y\u0131 kaydederken genellikle yap\u0131land\u0131rma se\u00e7eneklerini de iletebilirsiniz (\u00f6rne\u011fin Twig&#8217;in \u015fablon yolu gibi).<\/p>\n<h3>Veritaban\u0131 Entegrasyonu<\/h3>\n<p>Veritaban\u0131 i\u015flemleri i\u00e7in <code>DoctrineServiceProvider<\/code>&#8216;\u0131 kullanabilirsiniz. \u00d6ncelikle Composer ile kurmal\u0131s\u0131n\u0131z:<\/p>\n<pre><code>composer require doctrine\/dbal<\/code><\/pre>\n<p>Ard\u0131ndan <code>index.php<\/code> dosyan\u0131zda kaydedebilirsiniz:<\/p>\n<pre><code>use Silex\\Provider\\DoctrineServiceProvider;\n\n$app->register(new DoctrineServiceProvider(), array(\n    'db.options' => array(\n        'driver'   => 'pdo_mysql',\n        'host'     => 'localhost',\n        'dbname'   => 'veritabani_adiniz',\n        'user'     => 'kullanici_adiniz',\n        'password' => 'sifreniz',\n        'charset'  => 'utf8mb4',\n    ),\n));\n\n$app->get('\/users', function () use ($app) {\n    $users = $app['db']->fetchAll('SELECT * FROM users');\n    return $app->json($users); \/\/ JSON \u00e7\u0131kt\u0131s\u0131 verir\n});<\/code><\/pre>\n<h3>G\u00fcvenlik \u0130pu\u00e7lar\u0131<\/h3>\n<ul>\n<li><strong>Girdi Do\u011frulama:<\/strong> Kullan\u0131c\u0131dan gelen t\u00fcm girdileri her zaman do\u011frulay\u0131n ve temizleyin.<\/li>\n<li><strong>\u00c7\u0131kt\u0131 Ka\u00e7\u0131rma:<\/strong> Kullan\u0131c\u0131 girdisini HTML \u00e7\u0131kt\u0131s\u0131na yans\u0131t\u0131rken daima <code>$app->escape()<\/code> veya Twig&#8217;in otomatik ka\u00e7\u0131rma \u00f6zelli\u011fini kullan\u0131n. Bu, XSS sald\u0131r\u0131lar\u0131n\u0131 \u00f6nler.<\/li>\n<li><strong>Hata Mesajlar\u0131:<\/strong> \u00dcretim ortam\u0131nda <code>$app['debug'] = false;<\/code> yap\u0131n. Ayr\u0131nt\u0131l\u0131 hata mesajlar\u0131 sald\u0131rganlara bilgi verebilir.<\/li>\n<li><strong>\u0130zinler:<\/strong> Dizin ve dosya izinlerini m\u00fcmk\u00fcn oldu\u011funca k\u0131s\u0131tl\u0131 tutun.<\/li>\n<\/ul>\n<h3>Silex&#8217;in Gelece\u011fi<\/h3>\n<p>Silex, Symfony ekibi taraf\u0131ndan geli\u015ftirilmi\u015f harika bir mikro-\u00e7er\u00e7eve olmas\u0131na ra\u011fmen, aktif geli\u015fimi 2018 y\u0131l\u0131nda durdurulmu\u015ftur. Bu, Silex&#8217;in yeni \u00f6zellikler almayaca\u011f\u0131 veya ciddi hatalar i\u00e7in desteklenmeyece\u011fi anlam\u0131na gelir. Yeni projeler i\u00e7in Silex yerine Symfony (tam \u00e7er\u00e7eve) veya Symfony bile\u015fenleri \u00fczerine in\u015fa edilmi\u015f modern alternatifler (\u00f6rne\u011fin Slim Framework veya Laravel) kullan\u0131lmas\u0131 \u00f6nerilir. Ancak mevcut Silex projelerini anlamak veya hafif, h\u0131zl\u0131 bir prototipleme arac\u0131 olarak kullanmak i\u00e7in hala de\u011ferli bir ara\u00e7t\u0131r.<\/p>\n<h2>Sonu\u00e7 ve S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h2>\n<p>Bu rehberde, Ubuntu 14.04 \u00fczerinde Silex&#8217;i kurmak ve temel bir uygulama olu\u015fturmak i\u00e7in gerekli t\u00fcm ad\u0131mlar\u0131 tamamlad\u0131n\u0131z. Apache, PHP ve Composer gibi temel bile\u015fenleri kurmay\u0131, Silex projenizi olu\u015fturmay\u0131, Apache sanal ana bilgisayar\u0131n\u0131 yap\u0131land\u0131rmay\u0131 ve ilk &#8220;Merhaba D\u00fcnya&#8221; uygulaman\u0131z\u0131 yazmay\u0131 \u00f6\u011frendiniz. Silex&#8217;in hafif yap\u0131s\u0131 ve Symfony bile\u015fenleriyle entegrasyonu, h\u0131zl\u0131 geli\u015ftirme ve esneklik sunar. Her ne kadar Silex&#8217;in aktif geli\u015fimi durmu\u015f olsa da, mikro-\u00e7er\u00e7eve kavram\u0131n\u0131 anlamak ve k\u00fc\u00e7\u00fck projeler i\u00e7in temel olu\u015fturmak ad\u0131na hala \u00f6\u011fretici bir kaynakt\u0131r.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<p><strong>S1: Silex hala kullan\u0131l\u0131yor mu?<\/strong><\/p>\n<p>C1: Silex&#8217;in aktif geli\u015fimi 2018 y\u0131l\u0131nda durdurulmu\u015ftur ve art\u0131k yeni \u00f6zellikler veya g\u00fcvenlik g\u00fcncellemeleri almamaktad\u0131r. Yeni projeler i\u00e7in Symfony (tam \u00e7er\u00e7eve) veya Laravel gibi daha modern ve aktif olarak geli\u015ftirilen alternatifler \u00f6nerilir.<\/p>\n<p><strong>S2: Silex yerine ne kullanmal\u0131y\u0131m?<\/strong><\/p>\n<p>C2: Silex&#8217;in yerini alabilecek pop\u00fcler alternatifler aras\u0131nda Symfony (daha kapsaml\u0131 projeler i\u00e7in), Slim Framework (Silex&#8217;e benzer hafif bir mikro-\u00e7er\u00e7eve) ve Laravel (daha geni\u015f bir ekosisteme sahip tam \u00f6zellikli bir \u00e7er\u00e7eve) bulunmaktad\u0131r.<\/p>\n<p><strong>S3: Ubuntu 14.04 yerine daha yeni bir s\u00fcr\u00fcm kullanabilir miyim?<\/strong><\/p>\n<p>C3: Kesinlikle evet! Ubuntu 14.04 eski ve art\u0131k g\u00fcvenlik g\u00fcncellemeleri almayan bir s\u00fcr\u00fcmd\u00fcr. G\u00fcvenlik ve performans i\u00e7in her zaman Ubuntu&#8217;nun daha yeni ve desteklenen bir LTS (Uzun S\u00fcreli Destek) s\u00fcr\u00fcm\u00fcn\u00fc kullanman\u0131z \u015fiddetle tavsiye edilir. Bu rehberdeki ad\u0131mlar, PHP ve paket adlar\u0131 biraz farkl\u0131l\u0131k g\u00f6sterse de, genel olarak daha yeni Ubuntu s\u00fcr\u00fcmlerinde de benzerdir.<\/p>\n<p><strong>S4: Composer nedir ve neden ihtiyac\u0131m var?<\/strong><\/p>\n<p>C4: Composer, PHP i\u00e7in bir ba\u011f\u0131ml\u0131l\u0131k y\u00f6neticisidir. Projenizin ihtiya\u00e7 duydu\u011fu k\u00fct\u00fcphaneleri ve paketleri (Silex ve Symfony bile\u015fenleri gibi) kolayca kurman\u0131z\u0131, g\u00fcncellemenizi ve y\u00f6netmenizi sa\u011flar. Silex projenizi olu\u015fturmak ve ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 y\u00f6netmek i\u00e7in Composer&#8217;a kesinlikle ihtiyac\u0131n\u0131z vard\u0131r.<\/p>\n<p><strong>S5: Uygulamamda 404 hatas\u0131 al\u0131yorum, ne yapmal\u0131y\u0131m?<\/strong><\/p>\n<p>C5: 404 hatas\u0131 al\u0131yorsan\u0131z, genellikle a\u015fa\u011f\u0131daki nedenlerden biri olabilir:<\/p>\n<ul>\n<li>Apache <code>mod_rewrite<\/code> mod\u00fcl\u00fc etkin de\u011fil. <code>sudo a2enmod rewrite<\/code> ve <code>sudo service apache2 restart<\/code> komutlar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n.<\/li>\n<li>Apache sanal ana bilgisayar yap\u0131land\u0131rman\u0131zda <code>AllowOverride All<\/code> ayar\u0131 eksik veya yanl\u0131\u015f. Bu ayar, Apache&#8217;nin <code>.htaccess<\/code> dosyalar\u0131n\u0131 i\u015flemesini sa\u011flar.<\/li>\n<li><code>DocumentRoot<\/code> ayar\u0131 yanl\u0131\u015f. <code>\/home\/kullanici_adiniz\/silex_app\/web<\/code> yolunun do\u011fru oldu\u011fundan emin olun.<\/li>\n<li><code>\/etc\/hosts<\/code> dosyan\u0131zda <code>silex_app.local<\/code> i\u00e7in bir giri\u015f yok veya yanl\u0131\u015f.<\/li>\n<li>Rota tan\u0131m\u0131n\u0131z yanl\u0131\u015f veya istedi\u011finiz URL ile e\u015fle\u015fmiyor.<\/li>\n<\/ul>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Silex, Symfony bile\u015fenleri \u00fczerine in\u015fa edilmi\u015f, hafif ve esnek bir PHP mikro-\u00e7er\u00e7evesidir. \u00d6zellikle k\u00fc\u00e7\u00fck API&#8217;ler, tek sayfal\u0131k uygulam","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-32176","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u00d6n Gereksinimler ve Sistem Kurulumu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/on-gereksinimler-ve-sistem-kurulumu\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u00d6n Gereksinimler ve Sistem Kurulumu\" \/>\n<meta property=\"og:description\" content=\"Silex, Symfony bile\u015fenleri \u00fczerine in\u015fa edilmi\u015f, hafif ve esnek bir PHP mikro-\u00e7er\u00e7evesidir. \u00d6zellikle k\u00fc\u00e7\u00fck API&#039;ler, tek sayfal\u0131k uygulam\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/on-gereksinimler-ve-sistem-kurulumu\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-18T13:41:47+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/on-gereksinimler-ve-sistem-kurulumu\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/on-gereksinimler-ve-sistem-kurulumu\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"\u00d6n Gereksinimler ve Sistem Kurulumu\",\"datePublished\":\"2025-10-18T13:41:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/on-gereksinimler-ve-sistem-kurulumu\/\"},\"wordCount\":1864,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/on-gereksinimler-ve-sistem-kurulumu\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/on-gereksinimler-ve-sistem-kurulumu\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/on-gereksinimler-ve-sistem-kurulumu\/\",\"name\":\"\u00d6n Gereksinimler ve Sistem Kurulumu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-18T13:41:47+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/on-gereksinimler-ve-sistem-kurulumu\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/on-gereksinimler-ve-sistem-kurulumu\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/on-gereksinimler-ve-sistem-kurulumu\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u00d6n Gereksinimler ve Sistem Kurulumu\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u00d6n Gereksinimler ve Sistem Kurulumu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/on-gereksinimler-ve-sistem-kurulumu\/","og_locale":"tr_TR","og_type":"article","og_title":"\u00d6n Gereksinimler ve Sistem Kurulumu","og_description":"Silex, Symfony bile\u015fenleri \u00fczerine in\u015fa edilmi\u015f, hafif ve esnek bir PHP mikro-\u00e7er\u00e7evesidir. \u00d6zellikle k\u00fc\u00e7\u00fck API'ler, tek sayfal\u0131k uygulam","og_url":"https:\/\/fatihsoysal.com\/blog\/on-gereksinimler-ve-sistem-kurulumu\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-18T13:41:47+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"5 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/on-gereksinimler-ve-sistem-kurulumu\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/on-gereksinimler-ve-sistem-kurulumu\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"\u00d6n Gereksinimler ve Sistem Kurulumu","datePublished":"2025-10-18T13:41:47+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/on-gereksinimler-ve-sistem-kurulumu\/"},"wordCount":1864,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/on-gereksinimler-ve-sistem-kurulumu\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/on-gereksinimler-ve-sistem-kurulumu\/","url":"https:\/\/fatihsoysal.com\/blog\/on-gereksinimler-ve-sistem-kurulumu\/","name":"\u00d6n Gereksinimler ve Sistem Kurulumu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-18T13:41:47+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/on-gereksinimler-ve-sistem-kurulumu\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/on-gereksinimler-ve-sistem-kurulumu\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/on-gereksinimler-ve-sistem-kurulumu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"\u00d6n Gereksinimler ve Sistem Kurulumu"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32176","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=32176"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32176\/revisions"}],"predecessor-version":[{"id":32177,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32176\/revisions\/32177"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=32176"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=32176"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=32176"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}