Güvenli Socket ve İnternet 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..]
# make
Bu 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 install
Herş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 start
Apache'yi güvenli iletişim katmanı desteği ile başlatmak istiyorsanız şu komutu yazın:
/usr/local/apache/bin/apachectl startssl
Bu 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 .PHP
AddType 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 configtest
Syntax 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!
Dosya okunabilir mi? is_readable()
Programda kullanmaya karar vermeden önce bir dosyanın erişilebilir ve PHP tarafından okunabilir olup olmadığını sınayan bu fonksiyon, dosya okunabilir ise true/doğru, değilse false/yanlış sonuç verir. Örnek:
if ( is_readable ( "bir_dosya.txt" ) )
print ("Bu dosya okunabilir!");
Dosya okunabilir değilse program "Bu dosya okunabilir!" yazmadan yoluna devam edecektir.
sql_regcase()
İçinde büyük harf-küçük harf ayrımı olan bir değeri büyük harf-küçük harf ayrımı olmayan Düzenli İfadeler haline çevirir. Bu fonksiyon bizden Düzenli İfade almaz, tersine Düzenli İfade oluşturur. Örnek:
<?php
$metin = "Sözler";
echo(sql_regcase($metin);
?>
Bu program, Browser penceresine şu metni yazdırır:
[Ss][Öö][Zz][Ll][Ee][Rr]
İlişkili Dizileri Sıralama: asort() ve ksort()
İlişkili dizilerin diğer dizi değişkenlere göre farkı, değerlerinin bir de adı bulunmasıdır. Değerlerin adlarına anahtar denir. Bir ilişkili diziyi değerlerine göre sıralamak için asort() fonksiyonu kullanılır. Örnek:
$birinci_dizi = array ( ogr_01=>"Özbay", ogr_02=>"Muharrem" , ogr_013>"Hasan" , ogr_04=>"Şahika");
asort ($birinci_dizi);
PHP, bu diziyi değerler itibariyle alfabetik sıraya sokacaktır. Eğer sıranın değere göre değil de değerlerin anahtarına (burada ogr_01, ogr_02 olan kelimeler) göre yapılmasını istiyorsak, ksort() fonksiyonunu kullanırız. Örnek:
$birinci_dizi = array ( ogr_01=>"Özbay", ogr_02=>"Muharrem" , ogr_013>"Hasan" , ogr_04=>"Şahika");
ksort ($birinci_dizi);
PHP, şimdi bu diziyi anahtarlara göre alfabetik sıraya sokacaktır.
fseek() ile ölçü belirleme
PHP'nin dosya işleminde kullabileceğiniz bir diğer fonksiyonu fseek() adını taşır. Daha önce açılmış olan dosyanın işaret değişkenin adını ve ve programın bu metin içinde zıplamasını istediğiniz noktanın dosyanın başından itibaren byte değerini parametre olarak alan bu fonksiyon ile, bir dosyanın içinnde istediğimiz yere gitme imkanı vardır. Örnek:
<?php
$dosya_adi = "/inetpub/wwwroot/bir_dosya.txt";
if ($dosya = (fopen ($dosya_adi , 'r') ) ) {
print ("Dosya açıldı!<br>");
}
else {
print ("Dosya açılamadı!");
}
$dosya_boyut = filesize($dosya_adi);
$olcu = (int) ($dosya_boyut / 2 );
while ( ! feof ($dosya) ) {
$paragraf = fread ( $dosya, $olcu) ;
print ("$paragraf<br>");
}
fclose ($dosya);
?>
Burada, okutulacak dosyanın boyutunun yarısını atadığımız $olcu değişkenini, okutulacak metnin ölçüsü olarak kullanıyoruz. Bu durumda PHP, dosyayı iki paragraf halinde görüntüleyecektir. Dosyalarımızın içeriğini satırlar veya belirli ölçüde parçalar halinde değil de, tek-tek karakter olarak okutmak için fgetc() fonksiyonundan yararlanırız. Bu fonksiyon, daima 1 byte ölçüsünde (bir karakter) metin okuyabileceği için, parametre olarak sadece daha önce açılmış olan dosyanın işaret değişkenin adını alır. Örnek:
<?php
$dosya_adi = "/inetpub/wwwroot/bir_dosya.txt";
if ($dosya = (fopen ($dosya_adi , 'r') ) ) {
print ("Dosya açıldı!<br>");
}
else {
print ("Dosya açılamadı!");
}
while ( ! feof ($dosya) ) {
$karakter = fgetc ( $dosya ) ;
print ("$karakter<br>");
}
fclose ($dosya);
?>
Burada fgetc() fonksiyonundan dönen değeri (yani dosyadan okunan bir karakteri), $karakter değişkenine atıyoruz ve daha sonra print() fonksiyonu ba karakteri ve HTML'in satır bölme kodu olan <br> işaretini Browser penceresine gönderiyor. Programı bu şekliyle sınarsanız, dosyadaki metnin tek karakter olarak Browser penceresinin soluna dizildiğini göreceksiniz. Programı <br> kodunu silerek çalıştırırsanız, bu kez dosyadaki metinde var olan satır sonu işaretlerinin de kaldırıldığını ve metnin bir paragraf oülarak görüntülendiğıini görebilirsiniz.