PHP Eğitimi DERS 2
Unix/Linux SistemleriKurma işlemine Unix ortamından başlayalım. Burada Unix sistemi dediğimiz zaman Unix"in tekrar bilişim haritasında yerini almasını sağlayan Linux"u kastediyorum. Bunun için önce http://www.PHP.net/ adresini ziyaret etmemiz gerekiyor. Eğer PHP uzmanı olacaksanız, burası sizin ikinci eviniz olabilir. Downloads köprüsünü tıklayarak açılacak sayfada Unix/Linux için kaynak kodunu bilgisayarınıza aktarın. PHP"yi kuracağınız bilgisayarda bir Web sunucu programı yoksa, http://www.apache.org/dist/ adresinden apache_1.3.12.tar.gz (veya daha ileri) dosyasını da indirmeniz gerekir. Unix-Linux sistemleri için bilgisayarınızda "gcc C derleyici" bulunması gerekir. Linux sisteminizde örneğin Red Hat Linux sürüm 5.2 gibi eski bir gcc derleyici varsa, gcc sürüm 2.8.1"i Internet"ten bulmanız gerekir.Linux"ta program derlediniz mi?Daha önce hiç Linux programı derlemediyseniz, önce bazı kavramları açıklığa kavuşturalım:tar: (tape archiver) birden fazla dosyayı tek dosya haline getirir ve sıkıştırır. Teyplere yedekleme amacıyla geliştirilmiştir. tar dosyaları sıkıştırılmışsa uzatması .gz, değilse .tar olur.gcc: GNU"nun C derleyicisidir. İnsan tarafından okunabilen kaynak kodlarını makina tarafından okunabilen nesne (object) dosyalarına dönüştürür. C programlama diliyle yazılmış kaynak kodları içeren dosyaların uzantını .c olur. Nesne dosyalarının adının uzantısı genellikle .o olur. Derleyici başlık (header, uzantısı .h olan) dosyalarını bulamazsa derleme hatası verir.make: henüz derlenmemiş kaynak dosyalarını derleyen yardımcı bir programdır. make, derleme talimatlarını Makefile adlı bir dosyadan alır.ld: GNU"nun bağlayıcı (linker) programıdır. Nesne dosyalarını ve kitaplık denen dosyaları birbirine bağlayarak ortaya çalıştırılabilir bir program dosyası çıkartır. Genellikle Makefile"ın içinde linker"ın çalıştırılması talimatı bulunur ve sizin bu programı kullanmanız gerekmez.ldconfig : paylaşılan kitaplık dosyalarını (shared librari) arar. Bu dosyalardan birden fazla program tarafından paylaşılır, ve dosya adlarında .so bulunur../configure : C derleyecisi ve header dosyalarının nerede olduğunu araştırır, ve vardığı sonuca göre Makefiles dosyasında değişiklik yapar.PHP, bir Unix/Linux sisteminde müstakil yorumlayıcı veya Apache Web sunucusunun bir modülü olarak çalışmak üzere derlenebilir. PHP, müstakil yorumlayıcı olarak kurulduğunda, Web sunucusu, her ihtiyaç halinde PHP yorumlayıcısının bir örneğini çalıştırır. Bu, bir süre sonra Web sunucusunun bulunduğu işletim sisteminin yükünün artmasına ve işleyişinde yavaşlamaya yol açabilir. Oysa PHP, sunucunun bir modülü olarak kurulduğunda, bu sakınca ortaya çıkmaz. (Bu özelliği ile PHP, klasik CGI/Perl"ün çalışma tarzından ayrılır, ASP"nin ve ColdFusion"ın çalışma tarzına yaklaşır.) Bununla birlikte kötü niyetle veya beceriksizce yazılmış PHP programları modül olarak kurulmuş PHP"yi çökertirlerse, Web sunucusunu da çökertmiş olurlar; oysa müstakil PHP yorumlayıcı çökerse, Web sunucusuna bir şey olmaz.Burada yapacağımız kurulum işlemi sırasında Linux kurulu olan bilgisayarımıza Apache Web sunucu programını, bu sunucunun kullanacağı güvenli Socket katmanını sağlayacak Mod_SSL programını, bu programın gerektirdiği OpenSSL aracını, MySQL veritabanı sunucusunu ve PHP Scripting dilini kurmuş olacağız.PHP"yi Linux ortamında Apache Web sunucusuna modül olarak kurmak için sırasıyla şu işlemleri yapmamız gerekir (Sisteminizde gzip veya gunzip ile gcc and GNU make kurulu olduğunu varsayıyorum):1. Sisteminizi root olarak başlatın ve sıkıştırılmış olarak alacağınız PHP ve Apache dosyalarını geniş yer olan geçici bir dizinde açın, ve o dizine gidin. Sözgelimi, Apache"nin tar-zip olarak sıkıştırılmış kaynak dosyalarının tmp adlı dizinde olduğunu varsayalım:# cd /tmp# gunzip –c apache_1.3.12.tar.gz | tar xf –Burada, indirdiğiniz Apache sürümü farklı ise onun adını yazacaksınız. Şimdi Apache"yi açtığınız klasöre gidin ve buradaki configure dosyasını çalıştırın:# cd apache_1.3.12# ./configure --prefix=/usr/local/apacheBuradaki örnekte Apache"yi /usr/local/apache dizinine koyduğumuza dikkat edin. Bu dizini, bir çok kurulumun varsayım olarak arayacağı dizin olduğu için tercih ediyoruz. Ama isterseniz siz Apache"yi başka dizine de kurabilirsiniz.2. Sıra MySQL veritabanı sunucusunda. Linux"ta root oturumunda iken sıkıştırılmış dosyaları indirdiğiniz geçici dizine geçin ve dosyaları açın; sonra oluşturulan dizine giderek, configure komutu ile veritabanı sürücüsünü yapılandırın:# cd /tmp# gunzip -dc mysql-3.22.32.tar.gz | tar xvf -# cd mysql-3.22.32# configure --prefix=/usr/local/mysqlŞimdi make komutu ile binary dosyalarını oluşturarak, ve sisteme yükleyelim:# make# make installMySQL"in kullanım izinlerini belirlememiz gerekir. Aşağıdaki komutları yazarken "parola" kelimesi yerine vermek istediğiniz parola kelimesini yazmanız gerekir:# scripts/mysql_install_db# cd /usr/local/mysql/bin# ./safe_mysqld &# ./mysqladmin -u root password "parola"Kurulum işleminin başarılı olup olmadığını sınamak için, kurulum sırasında oluşturlan örnek veritabanı dosyalarını bulunup bulunmadığını soruşturabilir ve kendimiz yeni bir veritabanı oluşturabiliriz. Bunun için şu komutu yazalım:# BINDIR/mysqlshow -p# mysql -u root -pSistem "Enter password:" karşılığını verdiğinde, yukarıda kullanım izinlerini belirlerken yazdığınız parolayı yazın; MySQL sunucusu çalışacak ve size kullanıcı izinlerinin bulunduğu "mysql" ve sınama amacıyla oluşturulan "test" adlı iki veritabanının bulunduğunu bildirecektir. Şimdi kendi veritabanımızı oluşturalım. MySQL sunucu komut istemcisi satırına şunu yazın (Bilgisayarın vereceği karşılıklardan ayırt etmek için kendi yazdıklarımızı koyu renkle gösteriyoruz):mysql> create database deneme;Sunucu "Query OK, 1 row affected (0.00 sec)" şeklinde karşılık verecektir. Şimdi bu veritabanını seçerek içinde deneme adlı ve içinde "no" ve "isim" adlı iki alan bulunan bir tablo oluşturalım (MySQL komutları büyük harf-küçük harf ayrımı yapmaz; komutlardan sonra noktalı virgül konur). Burada koyu renkle gösterilen satırlar ve işaretler bize aittir:mysql> use deneme;Database changedmysql> CREATE TABLE books (-> no int(3) not null auto_increment,-> isim char(50) not null,-> unique(no),-> primary key(no)-> );Query OK, 0 rows affected (0.00 sec)Bakalım tablomuz başarılı şekilde oluşmuş mu?mysql> show tables;mysql> describe deneme;Field Type Null Key Default Extrano int(3) PRI 0 auto_incrementisim char(50)2 rows in set (0.00 sec)Çok güzel! Hem MySQL"i kurmuş, hem de ilk tablomuzu oluşturmuş bulunuyoruz. MySQL komutlarını daha ayrıntılı öğrenebilmek için MySQL"in http://www.mysql.com adresindeki sitesini ziyaret edebilirsiniz. Şimdilik MySQL"den çıkalım ve kuruluma devam edelim.3. Sıra geldi PHP"ye! PHP kaynak dosyasının bulunduğu geçici dizine geçin, ve dosyaları açın; sonra açılan dosyaların bulunduğu dizine gidin:# gunzip -c PHP-4.0.1pl2.tar.gz | tar xf -# cd PHP-4.0.1pl2Şimdi configure dosyasını çalıştıracağız; bu komutun bir çok opsiyonu vardır; bunların tümünü görmek istiyorsanız, "configure --help" komutunu verebilirsiniz. Biz sadece PHP"ye MySQL ve Apache opsiyonlarını eklemekle yetineceğiz:# ./configure --with-mysql=/usr/local/mysql --with-xml --with-apache=../apache_1.3.12 --enable-track-varsOluşan binary dosyalarını program dosyasına çevirerek, yükleyelim:# make# make installOluşan ini dosyasını lib dizinine koplayalım:# cp PHP.ini-dist /usr/local/lib/PHP.iniPHP.ini dosyasındaki bir çok özelliği değiştirerek, PHP"nin çalışma tarzını ayarlayabilirsiniz; örneğin şu satırı ekleyerek, PHP"nin azamî çalışma süresini arttırabilirsiniz:max_execution_time = 60;Güvenli socket ve Internet Erişimi KatmanıKuracağınız Web sunucusu gerçek Internet"e açılacaksa, sisteminize Mod_SSL yeteneğini kazandırmanız gerekir. Bu sistemin rsaref-2.0 adında bir eki vardır; ancak Amerika dışında kurulan Web Sunucularda rsaref-2.0 ekinin kurulması gerekmez. Apache sunucusunu sadece PHP dosyalarınızı sınamak amacıyla kendi bilgisayarınıza kuruyorsanız, Mod_SSL kurmak şart değildir.Bu işlemi yapmak zorunda iseniz, önce http://www.openssl.org/ adresinden openssl-0.9.1c.tar.gz adlı dosyayı, http://www.modssl.org/ adresinden de mod_ssl-2.6.5-1.3.12.tar.gz dosyasını indirin. Sonra sırasıyla şu işlemleri yapabilirsiniz:# gunzip -dc openssl-0.9.5c.tar.gz | tar xvf -# cd openssl-0.9.x#./config --prefix=/usr/local/ssl -L`pwd`/../rsaref-2.0/local/rsaref -fPIC# make# make test# make install# cd ..Şimdi Mod_SSL modülünü Apache ile kullanılacak şekilde kuralım:# gunzip -dc mod_ssl-2.6.4-1.3.12.tar.gz |tar xvf -# cd# ./configure --with-apache=../apache_1.3.12# cd ..# cd apache_1.3.12# SSL_BASE=../openssl-0.9.x RSA_BASE=../rsaref-2.0/local ./configure --enable-module=ssl --activate-module=src/modules/PHP4/libPHP4.a --enable-module=PHP4 --prefix=/usr/local/apache --enable-shared=ssl[...ISS"ler buraya arzu ettikleri diğer opsiyonları ekleyebilirler..]# makeBu noktada sistem binary dosyaların oluşturulduğunu ve kurulumun gerekli güvenlik sertifikalarını istediğini bildirecektir. Sertifika oluşturma konusunda fazla bilgi için, http://www.modssl.org/docs/2.6/ssl_faq.html#ToC25 adresine bakabilirsiniz.) Diyelim ki sadece ISS"in yeri, firma adı ve bir iki diğer bilgiden oluşan özel bir sertifika oluşturmakla yetineceksiniz. Bunun için şu komutu girin ve sistemin soracağı sorulara cevap verin:# make certificate TYPE=customŞimdi Apache"yi yeniden kurabiliriz:# make installHerşey yolunda gittiyse, sistem "You now have successfully built and installed the Apache 1.3 HTTP server," şeklinde başlayan uzun bir mesaj verecektir. Bu durumda Apache sunucusu şu komutla başlatılabilir:/usr/local/apache/bin/apachectl startApache"yi güvenli iletişim katmanı desteği ile başlatmak istiyorsanız şu komutu yazın:/usr/local/apache/bin/apachectl startsslBu işlemleri başarıyla bitirmiş olsak bile sistemin çalıştığını kontrol etmemiz gerekir. Önce Apache"nin çalıştığından emin olalım. Bunun için önce Apache"nin yapılandırılmasına PHP"nun eklendiğinden emin olmamız gerekir. Kurulumu buradaki gibi yaptı iseniz /usr/local/apache/conf dizininde bulunan httpd.conf dosyasını açın; ve "addtype for PHP4" satırların önündeki yorum (#) işaretlerini kaldırın; yani bu satır yorum olmaktan çıkıp yapılandırma komutu olsun:#AddType application/x-httpd-PHP .PHP#AddType application/x-httpd-PHP-source .PHPsşeklindeki satırları şu şekle getirin:AddType application/x-httpd-PHP .PHPAddType application/x-httpd-PHP-source .PHPsŞimdi Apache sunucusunu çalıştırabilir ve PHP desteğinin bulunup bulunmadığını sınayabilirsiniz:# cd /usr/local/apache/bin# ./apachectl configtestSyntax OK# ./apachectl start./apachectl start: httpd started"httpd started" ifadesi bize Apache"nin çalıştığını gösteriyor. Şimdi Browser"ınızı açın ve HTTP sunucusu olarak Apache"nin adresini yazın. Bu, bilgisayarınızın Domain adıdır; Apache"nin kurulu olduğu bilgisayarın IP numarasını da yazabilirsiniz.Şimdi, bir düzyazı dosyasına şunları yazın:<? PHPinfo(); ?>Dosyayı PHP.PHP adıyla Apache"nin Web sunucu için kök dizin saydığı klasöre kaydedin. Browser"ınızın URL adresi alanına sunucu adıyla birlikte dosyanın adını yazın.Aldığınız sonuç, PHP"nin sistem ve sunucu hakkında ayrıntılı raporu ise, kendi kendinizi kutlayabilirsiniz: hem Apache sunucu, hem de PHP çalışıyor!Windows-PWS ve IISPHP"yi Windows 95/98/NT/2000 işletim sistemlerinden biri ile çalışan bilgisayara kurmak için önce http://www.PHP.org adresinden PHP-4.0.1pl2-Win32.zip veya daha ileri sürümdeki zip dosyasını almamız gerekir. Bu dosyayı açın ve içindekileri sözgelimi c:PHP dizinine kopyalayın. (Dizini oluştururken "PHP," "PHP" veya "PHP" yazdığınıza dikkat edin!)Daha önce Wihdows sistemine PHP 3.x kurmuş olanlar PHP 4.0"ün kurulumumu biraz farklı bulacaklardır. Bu, daha önce PHP kişisel ve Internet amaçlı Web sunucuda (PWS veya IIS) müstakil bir CGI programı olarak çalışırken şimdi buna ek olarak (tıpkı ASP gibi) DLL yoluyla, bir ISAPI modülü olarak çalışmasının sağlanmış olmasından kaynaklanıyor.PHP"yi Windows 95 veya NT4.0 sisteminde kurulu bir PWS veya IIS için kuracaksınız, önce bazı önlemler almanız gerekiyor. NT 4.0 sistemlerinde IIS 4.0"ün bulunduğu Option Pack"in kurulması şart. Windows 95 sistemlerinde ise önce DCOM bileşenlerinin günceleştirilmesi gerekiyor. Bu dosyayı, http://download.microsoft.com/msdownload/dcom/95/x86/en/dcom95.exe adresinden alabilirsiniz.PHP"yi müstakil çalışan CGI programı olarak kullanmayı düşünseniz bile daha önceki sürümlerinden farklı olarak bazı DLL dosyalarının Windows dizininde sistem alt-dizinine kopyalanması gerekir. Açtığınız Zip dosyasından çıkan ve C:PHP dizinine kopyaladığınız dosyalar arasında bulunan MSVCRT.DLL ve PHP4TS.DLL adlı dosyaları Windows 9x sistemlerinde WINDOWS dizininde SYSTEM, NT/2000"de ise WINNT dzininde SYSTEM32 dizinine kopya edin. (Windows, MSVCRT.DLL dosyasının kullanılmakta olduğu bildirerek, kopyalamayı reddederse, kopyalamaya gerek yok demektir.)IIS 4.0 ve 5.0Windows NT/2000"e kurulu olan IIS 4.0 veya 5.0"e PHP desteği kazandırmak için, önce yukarıdaki gibi DLL dosyalarını gerekli yere kopyalayın. Açtığınız Zip dosyasından çıkmış olan PHP.ini-dist isimli düz yazı dosyasını Notepad ile açın ve "extension_dir=" satırını bularak, karşısındaki "./" yazısını silip yerine PHP dosyalarını kopyaladığınız dizinin adını (örneğin C:PHP) yazın. PHP dizinin adını doğru yazdığınızı kontrol etmekte daima yarar vardır! Sonra ";browscap =" satırını bulun ve önündeki noktalı virgülü kaldırarak karşısındaki "extra/browscap.ini" kelimelerini c:Winntrowscap.ini olarak değiştirin. Bu dosyayı, PHP.ini adıyla Winnt dizinine kaydedin. (Windows dizininin Winnt adını taşıdığını varsayıyorum. Sizin Windows dizininiz başka ise, gerekli düzeltmeyi yapmanız gerekir.)Browser Yetenek Dosyası: Browscap.iniWindows sistemine kurulu bir Web Sunucu programına (PWS, IIS veya Apache Win32) PHP yeteneği kazandırabilmek için PHP"nin talep sahibi Browser"ın yeteneklerini bir dosyadan okuması gerekir. Bu dosyanın adı browscap.ini dir.Internet"te http://asptracker.com/browscap.zip dosyasını alarak açın ve çıkacak "browscap.txt" dosyasının adını "browscap.ini" olarak değiştirerek Windows/Winnt klasörüne kopyalayın.Internet Services Manager"ı açın; bu araç, NT 4.0"te Start menüsünde Programs/Option Pack"te, 2000"de ise Control Panel/Administrative Tools"dadır. Açılacak pencerede muhtemelen Default Web Server adını taşıyan Web sunucusunun adını sağ tıklayın: Açılan listede Properties maddesini; açılan kutuda Home Directory sekmesini seçin; Configuration düğmesini tıklayın ve yeni bir Application Mappings satırı eklemek üzere, Executable kutusuna PHP4isapi.dll dosyasının tam yolunu ve adını (örneğin C:PHP PHP4isapi.dll); Extension kutusuna ise .PHP yazın (IIS 4.0"te Method exclusions kutusunu boş bırakın) ve Script engine kutusuna işaret koyun. ISAPI Filters sekmesini seçin. Add düğmesini tıklayarak yeni bir ISAPI filtresi kaydı yapın. Açılacak kutuda filtre adı olarak PHP, yol olarak da PHP4isapi.dll dosyasının bulunduğu dizinin yolunu (örneğin C:PHP PHP4isapi.dll) yazın.IIS"i tamamen durdurun; ama bunun için sadece Internet Services Manager"daki Stop düğmesini tıklamak yetmez; komut istemci (MSDOS Prompt) penceresinde net stop iisadmin yazın. Windows, bu servisin bağlı olduğu diğer bazı hizmetlerin de durdurulacağını bildirince "Y" yazın ve Enter"a basın. Şimdi IIS"i tekrar başlatmak için aynı pencerede net start w3svc yazın. Artık IIS"iniz PHP anlar hale gelmiş olmalı. Bunu, hemen sınayalım. Notepad veya bir başka düzyazı programıyla şunları yazın:<? PHPinfo(); ?>Dosyayı PHP.PHP adıyla IIS"in kök dizin saydığı klasöre kaydedin. Browser"ınızın URL adresi alanına sunucu adıyla birlikte dosyanın adını yazın. Bravo! İşte yeni bir dil öğrenmiş Web sunucuya sahip oldunuz.