html/ 0040755 0001012 0001012 00000000000 11310433346 013014 5 ustar docbuilder docbuilder html/copyright.html 0100644 0001012 0001012 00000004000 11310432314 015673 0 ustar docbuilder docbuilder
Copyright © 1997 - 2009 PHP Belgelendirme Grubu. Bu belge, sadece Creative Commons Attribution lisansının 3.0 veya sonraki sürümlerinin koşullarına bağlı kalınarak dağıtılabilir. Creative Commons Attribution lisansının 3.0 sürümü bu kılavuzla birlikte dağıtılmaktadır. Şu anki son sürümü » http://creativecommons.org/licenses/by/3.0/ adresinden temin edilebilir.
Bu belgenin kısmen veya tamamen, değiştirilerek veya aynen yayınlanması veya dağıtılması ile ilgileniyorsanız ve bu konuda sorularınız varsa, lütfen » doc-license@lists.php.net adresinden telif hakkı sahiplerine yazınız. Bu adres içeriği halka açık olarak arşivlenen bir eposta listesine aittir.
PHP, "PHP: Hypertext Preprocessor" sözcüklerinin baş harfleriyle temsil edilen HTML içine gömülebilir açık kaynak kodlu, genel amaçlı, özellikle site geliştirmeye uygun bir betik dilidir. Dil yapısının önemli bir kısmını C, Java ve Perl gibi dillerden almış, kendisine has özelliklerle bu yapıyı pekiştirmiş, kolay öğrenilen bir dildir. Dilin ana amacı, site geliştiricilerinin devingen sayfalar oluşturmasını çabuklaştırmaksa da PHP ile çok daha fazlasını yapabilirsiniz.
Bu kılavuz temel olarak bir işlev başvuru kılavuzudur. Fakat bunun yanında bir dil kılavuzu, PHP'nin önemli özelliklerinin bazılarının açıklamaları ile tamamlayıcı bazı bilgiler de içermektedir.
Bu kılavuzu çeşitli biçemlerde » http://www.php.net/download-docs.php adresinden temin edebilirsiniz. Bu kılavuzun nasıl geliştirildiğiyle ilgili daha ayrıntılı bilgi edinmek için eklerdeki 'Kılavuz Hakkında' bölümüne bakabilirsiniz. PHP'nin tarihçesi ile ilgileniyorsanız onu da ek bölümler arasında bulabilirsiniz.
Kılavuzun ön sayfasında şu anda en etkin kişileri ön plana çıkartıyoruz, ancak çalışmamıza halen katkıda bulunmakta olan birçok kişi ve geçmişte önemli katkılarda bulunmuş birçok insan var. Kılavuz sayfalarında kullanıcı önerileri üzerinden katılımda bulunarak destek veren birçok isimsiz kişi var. Bu kişiler düzenli olarak buradaki listelere ekleniyor, tüm katılımcılara destekleri için müteşekkiriz. Aşağıdaki listelerde isimler alfabetik olarak sıralanmıştır.
Burada yer alan katılımcılar kılavuzun içeriğine yaptıkları ve/veya yapmakta oldukları eklemelerden dolayı takdir edilmelidirler: Bill Abt, Jouni Ahto, Alexander Aulbach, Daniel Beckham, Stig Bakken, Jesus M. Castagnetto, Ron Chmara, Sean Coates, John Coggeshall, Simone Cortesi, Markus Fischer, Wez Furlong, Sara Golemon, Rui Hirokawa, Brad House, Pierre-Alain Joye, Etienne Kneuss, Moriyoshi Koizumi, Rasmus Lerdorf, Andrew Lindeman, Stanislav Malyshev, Rafael Martinez, Rick McGuire, Yasuo Ohgaki, Derick Rethans, Rob Richards, Sander Roobol, Egon Schmid, Thomas Schoefbeck, Sascha Schumann, Dan Scott, Masahiro Takagi, Michael Wallner, Lars Torben Wilson, Jim Winstead, Jeroen van Wolffelaar ve Andrei Zmievski.
Burada yer alan katılımcılar kılavuzun düzenlenmesi çalışmasında kayda değer katkılarda bulunmuşlardır: Stig Bakken, Gabor Hojtsy, Hartmut Holzgraefe ve Egon Schmid.
Şu anki en etkin geliştiriciler: Daniel Brown, Nuno Lopes, Felipe Pena, Thiago Pojda ve Maciek Sokolewicz.
Bu kişiler kullanıcı önerilerinin yönetiminde çok ciddi çaba sarfetmişlerdir: Mehdi Achour, Daniel Beckham, Friedhelm Betz, Victor Boivie, Jesus M. Castagnetto, Nicolas Chaillan, Ron Chmara, Sean Coates, James Cox, Vincent Gevers, Sara Golemon, Zak Greant, Szabolcs Heilig, Oliver Hinckel, Hartmut Holzgraefe, Etienne Kneuss, Rasmus Lerdorf, Matthew Li, Andrew Lindeman, Aidan Lister, Hannes Magnusson, Maxim Maletsky, Bobby Matthis, James Moore, Philip Olson, Sebastian Picklum, Derick Rethans, Sander Roobol, Damien Seguy, Jason Sheets, Tom Sommer, Jani Taskinen, Yasuo Ohgaki, Jakub Vrana, Lars Torben Wilson, Jim Winstead, Jared Wyles ve Jeroen van Wolffelaar.
PHP (açılımı PHP: Hypertext Preprocessor) geniş bir kitle tarafından kullanılan, özellikle sanal yöreler üzerinde geliştirme için tasarlanmış HTML içine gömülebilen bir betik dilidir.
Tamam da, bu tam olarak ne anlama gelmektedir? Bir örnek:
Örnek 1 - Başlangıç olarak bir örnek
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Örnek</title>
</head>
<body>
<?php
echo "Merhaba, ben bir PHP betiğiyim!";
?>
</body>
</html>
Bir PHP betiğinin Perl ya da C gibi dillerden ne kadar farklı bir yapıda
olduğuna dikkat edin. HTML kodu oluşturmak için bir sürü kod
yazacağınıza, istediğiniz işi yapan bir PHP kodu yazıp onu HTML kodunun
içine gömüyorsunuz (bu örnekte, yapılan iş ekrana yazı yazmak). PHP kodu
<?php ve
?> özel başlangıç ve bitiş etiketleri arasına
yazılır. Bu etiketler "PHP kipine" rahatlıkla girip çıkabilmenizi
sağlarlar.
PHP'yi Javascript gibi kullanıcı tarafında çalışan dillerden ayıran, sunucu tarafında çalıştırılıyor olmasıdır. Yukardaki örnekteki kodu kendi sunucunuzda çalıştırırsanız, sitenize bağlanan kullanıcılar kodu göremeyecekler ve müdahale edemeyecekler, yalnızca sonucu görebileceklerdir. Dilerseniz HTTP sunucunuzu bütün HTML dosyalarınızı PHP dosyası olarak görüp işleyecek hale bile getirebilirsiniz. Buna rağmen kullanıcılar sizin gerçekte sunucu taraflı bir uygulama kullandığınızı fark edemeyebilirler.
PHP kullanmanın en güzel yanlarından biri, yeni kullanıcılar için öğreniminin oldukça kolay olması ve aynı zamanda profesyonel kullanıcılar için ileri seviyede özellikler içermesidir. PHP'nin uzun özellikler listesini okumaktan korkmayın. Kısa sürede PHP ile programlamaya başlayabilir ve birkaç saat içersinde basit programlar yazmaya başlayabilirsiniz.
PHP'nin gelişimi sunucu-taraflı programlamaya odaklanmışsa da, çok daha fazlasını yapmanıza olanak tanıyan araçlara da sahiptir. PHP neler yapabilir? bölümünde bu araçlar hakkında daha fazla bilgiye ulaşabilirsiniz. Eğer yalnızca site programlama ile ilgileniyorsanız, Basit bir eğitmen bölümünden devam edebilirsiniz.
Her şeyi. PHP temel olarak sunucu-taraflı programlamaya odaklanmıştır, bu nedenle CGI uygulamalarının yaptığı her şeyi, örneğin formdan veri toplama, devingen sayfa içeriği oluşturma, ya da çerez alıp gönderme gibi işlemleri yapabilirsiniz. Ancak PHP bunlardan çok daha fazlasını yapabilecek yetenektedir.
PHP betiklerinin kullanıldığı başlıca üç alan vardır.
PHP bütün büyük işletim sistemlerinde, Linux, birçok Unix türevi (HP-UX, Solaris, OpenBSD vb.), Microsoft Windows, Mac OS X, RISC OS dahil olmak üzere çok çeşitli platformlarda çalışabilir. PHP benzer biçimde bugün yaygın biçimde kullanılan HTTP sunucularının büyük kısmını destekler. Bunlara Apache, Microsoft IIS, Microsoft PWS, Netscape ve iPlanet Sunucuları, Oreilly Website Pro, Caudium, Xitami, OmniHTTPD ve daha birçok sunucuyu örnek gösterebiliriz. Bu sunucuların çoğunluğunda PHP modül olarak kullanılabilir, geri kalanlarında da CGI standardı kullanılarak PHP bir CGI işleyici olarak çalıştırılabilir.
Sonuç olarak, PHP ile işletim sistemi ve HTTP sunucusu seçme özgürlüğüne sahipsiniz. Dahası, hangi programlama yöntemini kullanacağınıza, işlevsel yaklaşımı mı yoksa nesne yönelimli yaklaşımı mı yoksa her ikisini birden mi kullanacağınıza kendiniz karar verebilirsiniz. Bütün NYP (nesne yönelimli programlama) özellikleri PHP 4'te varolmasa da, birçok kod kütüphanesi ve büyük uygulama (PEAR kütüphanesi dahil) NYP kullanılarak yazılmıştır.
PHP'nin yetenekleri yalnızca HTML çıktı üretmekle sınırlı değildir. PHP'nin yetenekleri arasında resim çıktısı üretebilme, PDF oluşturabilme ve hatta Flash filmleri oluşturabilme (libswf ve Ming kullanarak) bulunmaktadır. Aynı şekilde XHTML ya da XML gibi her tür metin tabanlı dosyayı oluşturabilmeniz mümkündür. PHP bu dosyaları özdevinimli olarak oluşturabilir ve ekrana yazdırmanın yanında sizin için dosya sisteminde saklayabilir, böylece devingen içeriğiniz için sunucu-taraflı bir depo sistemini kullanımınıza sunabilir.
PHP'nin en güçlü ve en çok üstünde durulan özelliklerinden biri, sahip olduğu geniş ve gelişmiş veritabanı desteğidir. PHP ile veritabanı bağlantılı site sayfaları oluşturmak son derece basittir. Aşağıda desteklenen veritabanlarının listesi bulunmaktadır:
Bunların haricinde PDO adı verilen bir veritabanı soyutlama eklentisiyle, bu eklenti tarafından desteklenen veritabanlarını şeffaf olarak kullanabilirsiniz. PHP, ek olarak ODBC'yi, yani Açık Veritabanı Bağlantı standardını da destekler, bu şekilde ODBC'yi destekleyen tüm veritabanları ile iletişim kurabilirsiniz.
- Adabas D
- dBase
- Empress
- FilePro (salt okunur)
- Hyperwave
- IBM DB2
- Informix
- Ingres
- InterBase
- FrontBase
- mSQL
- Direct MS-SQL
- MySQL
- ODBC
- Oracle (OCI7 ve OCI8)
- Ovrimos
- PostgreSQL
- SQLite
- Solid
- Sybase
- Velocis
- Unix dbm
PHP, farklı hizmetlerle LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (Windows için) ve daha sayısız protokol aracılığıyla iletişim kurabilecek bir altyapıya da sahiptir. Hazır modüllerin haricinde ham ağ soketleri açıp bu soketler üzerinden istediğiniz bütün protokollerle çalışabilirsiniz. PHP, WDDX üzerinden sanal olarak sanal doku üzerinde hangi dilde yazılmış olursa olsun tüm uygulamalarla haberleşebilir. Ayrıca Java nesnelerinin oluşturulabilmesi ve şeffaf biçimde PHP nesneleri olarak kullanılabilmeleri önemli bir diğer özelliktir. Uzaktaki nesnelere erişim için CORBA uzantısı, yine PHP'nin sahip olduğu özellikler arasındadır.
PHP oldukça faydalı belge işleme özelliklerine sahiptir. Bu yelpaze Genişletilmiş POSIX ya da Perl düzenli ifade komutlarından XML dosyalarını okumaya kadar uzanır. XML dosyalarının okunması ve erişimi için SAX ve DOM standartlarını destekler. XSLT eklentisi ile XML belgeler dönüştürülebilir. PHP 5 tüm XML uzantılarını libxml2 tabanında tek bir standartta toplamış ve SimpleXML ile XMLReader desteğini bünyesine katarak sunduğu imkan yelpazesini genişletmiştir.
Bunların dışında, mnoGoSearch arama motoru, IRC ağ geçidi uzantıları, birçok sıkıştırma aracı (gzip, bz2) için yardımcı araçlar, takvim araçları, dil çeviri işlevleri yine PHP'nin sunmakta olduğu ilginç eklentilerden bazılarıdır.
Sizin de görebildiğiniz gibi bu sayfa PHP'nin sunabileceği bütün özellikleri ve faydaları anlatabilmek için yeterli değil. Yapılandırma ve Kurulum bölümünde ve İşlev başvuru kılavuzunda listelenen eklentilerin başlangıç bölümlerindeki açıklamalardan her bir eklenti için daha fazla bilgiye ulaşabilirsiniz.
Bu eğitmen süresince HTTP sunucunuzun PHP desteğinin etkinleştirilmiş olduğunu ve tüm .php uzantılı dosyaların PHP tarafından yorumlandığını varsayacağız. Çoğu sunucuda, bu uzantı PHP dosyaları için öntanımlı dosya uzantısıdır, ancak emin olmak için sunucunuzun yöneticisinden doğru bilgiyi edinebilirsiniz. Sunucunuz PHP'yi destekliyorsa, başka hiçbir şeye ihtiyacınız yok demektir. Yalnızca .php uzantılı dosyalarınızı oluşturmanız sunucunuzun belge dizinlerine koymanız, sunucunuzun bu dosyayı sizin için özdevinimli olarak işleme koyması için yeterli olacaktır. Herhangi bir şeyi derlemeniz ya da fazladan bir araç kurulumu yapmanız gerekmemektedir. PHP tarafından etkinleştirilen dosyaları yeni bir tür HTML dosyası olarak kafanızda canlandırabilirsiniz. Düşünün ki, artık HTML dosyasının içine sihirli birtakım etiketler koyabiliyor ve bu etiketler sayesinde istediğiniz her tür işlemi gerçekleştirebiliyorsunuz. Site barındırma hizmeti verenlerin çoğu PHP desteği sunmaktadır, ancak sizinki sunmuyorsa, » PHP Bağlantıları bölümünden PHP hizmeti sunan barındırma sitelerinin adreslerine ulaşabilirsiniz.
Diyelim ki çok değerli olan band genişliğinizi boşa harcamamak ve kendi sisteminizde yerel olarak geliştirme yapmak istiyorsunuz. Bu durumda, » Apache gibi bir HTTP sunucusunu ve elbette » PHP'yi indirmeniz ve kurmanız gerekecektir. Bu ikilinin yanında, » MySQL gibi bir veritabanını da indirip kurmanız iyi olacaktır.
Bu üçlüyü tek tek kumak yerine daha basit bir yol izleyebilirsiniz. Kılavuzumuz PHP için kurulum bilgileri (HTTP sunucunuzun halihazırda kurulu olduğunu öngörür) bölümüne sahiptir. PHP'yi kendiniz kurmakta sorun yaşarsanız, sorularınızın çözümü için » kurulum posta listesi'ne başvurabilirsiniz. Daha basit bir yoldan gitmek istiyorsanız, işletim sisteminize uygun olan » ön yapılandırmalı paketleri seçebilir ve tüm bu araçları bir kaç fare tıklamasıyla özdevinimli olarak yükleyebilirsiniz. MacOSX, Linux ve Windows dahil olmak üzere birçok işletim sistemine PHP destekli bir HTTP sunucusu kurmak oldukça kolaydır. Linux üzerinde, » rpmfind ve » PBone araçlar RPM dosyalarını bulmakta size yardımcı olacaklardır. Debian için ise » apt-get sayfasını ziyaret edebilirsiniz.
merhaba.php isimli bir dosya oluşturun ve HTML sunucunuzun belge kök dizinine (DOCUMENT_ROOT) aşağıdaki içerikle kaydedin:
Örnek 1 - İlk PHP betiğimiz: merhaba.php
<html>
<head>
<title>PHP Denemesi</title>
</head>
<body>
<?php echo '<p>Merhaba Dunya</p>'; ?>
</body>
</html>
Tarayıcınızı kullanarak HTTP sunucunuzun adresine erişebilirsiniz, sunucunuzun alan adının sonuna /merhaba.php eklemeniz yeterli olacaktır. Yerel olarak geliştirme yaparken bu URL http://localhost/merhaba.php ya da http://127.0.0.1/merhaba.php gibi bir şey olacaktır, ancak bu HTTP sunucusunun yapılandırma ayarlarına bağlıdır. Eğer her şey düzgün yapılandırılmışsa, bu dosya PHP tarafından işlenecek ve aşağıdaki çıktı tarayıcınıza gönderilecektir:
<html> <head> <title>PHP Denemesi</title> </head> <body> <p>Merhaba Dunya</p> </body> </html>
Bu program gördüğünüz gibi son derece basittir ve esasında böyle bir sayfa oluşturmak için PHP'ye gereksiniminiz yoktur. Görüntülenen: PHP'nin echo() deyimi kullanılarak elde edilen Merhaba Dünya cümlesidir. Bu dosyanın hiçbir şekilde çalıştırılabilir olmasına ya da özel bir türde olmasına ihtiyaç duyulmadığına dikkat edin. Sunucu dosyanın PHP tarafından işlenmesi gerektiğini bilir çünkü dosyaya ".php" uzantısını tanımladınız. Sunucu bu uzantıya sahip dosyaları PHP'ye aktaracak biçimde yapılandırılmıştır. Bunu size birtakım özel etiketlerle birçok ilginç işlem yapmanızı sağlayan bir tür HTML dosyası olarak düşünebilirsiniz.
Bu örneği denediyseniz ve hiçbir çıktı alamadıysanız, sizden dosyayı indirmenizi istediyse ya da dosyanın tüm içeriğini metin olarak ekranda gördüyseniz, büyük ihtimalle sunucunuzun PHP desteği etkinleştirilmemiştir ya da sunucunuz doğru yapılandırılmamıştır. Yöneticinizden kılavuzdaki Kurulum bölümünü kullanarak PHP'yi etkinleştirmesini rica edebilirsiniz. Yerel olarak geliştirme yapıyorsanız, kurulum bölümünü okuyarak herşeyin doğru yapılandırıldığından emin olun. Size çıktıyı sağlayan sunucudaki dosyaya http üzerinden erişmeye çalışıp çalışmadığınızı kontrol edin. Dosyayı doğrudan kendi dosya sisteminizden çağırıyorsanız, PHP tarafından işlenmeyecektir. Sorun her şeye rağmen devam ediyorsa, » PHP desteği alma yöntemlerini kullanmakta tereddüt etmeyin.
Bu örneğin amacı özel PHP etiketi biçemini göstermektir. Örnekte <?php ile PHP etiketinin başlangıcını belirledik. Sonra PHP komutunu yazdık ve kapanış etiketi ?> kullanarak PHP kipinden çıktık. Bir HTML dosyasında bu yöntemi kullanarak istediğiniz yerde PHP kipine girip çıkabilirsiniz. Daha fazla bilgi için, kılavuzun temel PHP sözdimi bölümünü okuyabilirsiniz.
Bilginize: Satırsonları hakkında
Satırsonu karakterlerinin HTML içinde bir önemi yoktur, bununla birlikte HTML kodunun göze hoş görünmesi için satırsonu karakterlerini kullanmak gerekir. ?> kapama etiketinin hemen ardından gelen satırsonu karakterini PHP silecektir. Dosyanın içine çok sayıda PHP bloğu koyarsanız veya hiçbir şey çıktılamayan betikleri dosyaya dahil etmeniz durumunda bu çok işe yarar. Ancak bu biraz kafa karıştırıcı olabilir. ?> kapama etiketinden sonra bir satırsonu karakterinin çıktılanmasını zorlamak isterseniz, ya kapama etiketinden sonra bir boşluk bırakıp onun ardına satırsonu karakterini koyun ya da PHP bloğunun son echo/print deyiminin sonuna bir satır sonu karakteri ekleyin.
Bilginize: Metin Düzenleyiciler Hakkında
PHP dosyalarını yaratabileceğiniz, düzenleyebileceğiniz ve yönetebileceğiniz birçok metin düzenleyici ve Bütünleşik Geliştirme Ortamı (IDE) bulunmaktadır. Bu araçların bir kısmı » PHP Düzenleyicileri Listesi bölümünde listelenmiştir. Sizin önermek istediğiniz bir düzenleyici varsa, lütfen yukarıdaki sayfayı ziyaret edin ve sayfa idarecisinden önermek istediğiniz düzenleyiciyi bu listeye eklemesini rica edin. Söz dizimi vurgulaması olan bir düzenleyici size yardımcı olabilir.
Bilginize: Kelime İşlemciler Hakkında
StarOffice Writer, Microsoft Word ve Abiword gibi kelime işlemciler PHP dosyalarını düzenlemek için uygun değillerdir. Eğer bu deneme betiği için bunlardan birini kullanmak istiyorsanız, dosyanın salt metin olarak kaydedildiğinden emin olun, aksi takdirde PHP'nin betiği okuması ve çalıştırması mümkün olmayacaktır.
Bilginize: Windows Not Defteri Hakkında
PHP betiklerinizi Windows Not Defteri ile yazıyorsanız, dosyalarınızın .php uzantısı ile kaydedildiğinden emin olmalısınız (Notepad birazdan bahsedeceğimiz önlemleri almadığınız takdirde dosyaların sonuna özdevinimli olarak .txt uzantısı ekler). Dosyayı kaydetmek istediğinizde, sizden dosyanız için bir isim belirtmeniz istenecektir. Dosya ismini tırnak içinde (örn. "hello.php") yazın. Bundan başka, 'Kaydet' iletişim kutusunun içindeki 'Metin Belgeleri' açılır menüsüne tıkladıktan sonra buradaki değeri "Tüm Dosyalar" olarak değiştirin. Artık dosya isminizi tırnak işareti kullanmadan yazabilirsiniz.
Artık çalışır bir PHP betiğini başarıyla oluşturduğunza göre, PHP betiklerinin en ünlüsünü oluşturma zamanı geldi demektir! phpinfo() işlevini çalıştıracağız ve sisteminiz ve yapılandırmanızla ilgili öntanımlı değişkenler, yüklü PHP modülleri ve yapılandırma ayarları gibi konularda faydalı birçok bilgiye ulaşacağız. Bu önemli bilgiler için biraz vakit ayırmanızı ve bunları incelemenizi öneririz.
Örnek 2 - PHP ile sistem bilgisine ulaşmak
<?php phpinfo(); ?>
Şimdi daha işe yarar bir şey yapalım. Ziyaretçilerinizin hangi tarayıcıyı kullandığını tespit edelim. Bunun için, ziyaretçinizin tarayıcısı tarafından HTTP isteği ile birlikte gönderilen kullanıcı aracısı dizgesine bakacağız. Bu bilgi bir değişkende saklanır. Değişkenler PHP'de her zaman dolar işareti ile başlar. Bizim şu an için ilgilendiğimiz değişken $_SERVER['HTTP_USER_AGENT']'tir.
Bilginize: $_SERVER PHP kullanımına ayrılmış özel bir değişken olup HTTP sunucusunun tüm bilgilerini içerir. Bu tür değişkenlere süper küreseller denir. Bu konuda daha ayrıntılı bilgiyi Süper küreseller bölümünde bulabilirsiniz. Bu özel değişkenler PHP » 4.1.0 sürümünden itibaren kullanılmaya başlanmıştır. Daha öncesinde, $HTTP_SERVER_VARS gibi eski $HTTP_*_VARS dizileri kullanılmaktaydı. Ömrünü doldurmuş olsa da, bu eski tarz değişkenler hala kullanılabilmektedir. (Eski kod bölümüne de bakınız.)
Bu değişkenin değerini görüntülemek için yapmanız gereken:
Örnek 1 - Bir değişkeni (dizi öğesini) yazdırmak
<?php echo $_SERVER['HTTP_USER_AGENT']; ?>
Bu betiğin çıktısı şöyle bir dizge olabilirdi:
PHP'de birçok farklı değişken türü mevcuttur. Yukardaki örnekte bir diziye ait bir öğeyi yazdırdık. Diziler çok kullanışlı olabilirler.
$_SERVER PHP tarafından kullanımınıza özdevinimli olarak sunulan bir değişkendir. Kullanım kılavuzunun Öntanımlı Değişkenler bölümünden tümünün listesine ulaşabilirsiniz ya da önceki örnekte kullandığımız phpinfo() işlevi ile üretilen çıktıya bakarak bütün listeye ulaşabilirsiniz.
PHP etiketinin içine birden çok PHP komutu koyabilir ve tek bir echo komutundan daha fazlasını yapan küçük kod blokları oluşturabilirsiniz. Örneğin, ziyaretçinizin Internet Explorer kullanıp kullanmadığını şöyle öğrenebilirsiniz:
Örnek 2 - Denetim yapılarının ve işlevlerin kullanım örneği
<?php
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) {
echo 'Internet Explorer kullanmaktasınız.<br />';
}
?>
Bu betiğin çıktısı şöyle olabilirdi:
Internet Explorer kullanmaktasınız.<br />
Burada birkaç yeni kavramı devreye soktuk. Bir if deyimimiz var. Eğer C dilinde kullanılan temel sözdizimine aşinalığınız varsa, bu kullanım size tanıdık gelecektir. Aksi takdirde, giriş düzeyinde bir PHP kitabı almanız ve ilk birkaç bölümünü okumanız ya da kılavuzun Dil Başvuru Kılavuzu bölümünü okumanız faydalı olacaktır.
Devreye soktuğumuz ikinci kavram, strpos() işlevi ile yaptığımız çağrı oldu. strpos(), bir dizgeyi başka bir dizgenin içinde arayan yerleşik bir PHP işlevidir. Burada 'MSIE' dizgesini (iğne) $_SERVER['HTTP_USER_AGENT'] içinde (samanlık) arıyoruz. Eğer iğne samanlıkta bulunursa işlev iğnenin konumunu samanlığın başlangıcına göreli olarak döndürür. Aksi takdirde FALSE döner. if ifadesinin sonucu TRUE olduğu takdirde FALSE dönmez ve kaşlı ayraçlar arasındaki kod çalıştırılır. Aksi takdirde kod çalıştırılmaz. If, else gibi denetim yapıları ile strtoupper() ve strlen() gibi işlevleri kullanarak siz de benzer örnekler yazabilirsiniz. İlgili her kılavuz sayfası aynı zamanda örnekler de içermektedir. Bu işlevleri nasıl kullanmanız gerektiğinden emin değilseniz, kılavuzdaki bir işlev tanımı nasıl okunur ve PHP işlevleri bölümlerini okuyabilirsiniz.
Bunu bir adım öteye taşıyabilir ve bir PHP bloğunun tam ortasındayken bile PHP kipine nasıl girip çıkabileceğimize bakabiliriz:
Örnek 3 - HTML ve PHP kiplerini karıştırmak
<?php
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) {
?>
<h3>strpos() false olmayan bir değer döndürmelidir</h3>
<p>Internet Explorer kullanmaktasınız</p>
<?php
} else {
?>
<h3>strpos() false döndürmelidir</h3>
<p>Internet Explorer kullanmıyorsunuz</p>
<?php
}
?>
Bu betikten elde edilebilecek sonuçlardan biri:
<h3>strpos() false olmayan bir değer döndürmelidir</h3> <p>Internet Explorer kullanmaktasınız</p>
Bir çıktı üretmek için PHP echo komutunu kullanmak yerine, PHP kipinden çıktık ve sadece düz HTML gönderdik. Burada dikkat edilmesi gereken önemli nokta, betiğin mantıksal akışının değişmiyor olmasıdır. strpos() işlevinden edinilen sonuca göre HTML bloklarından yalnızca biri görüntüleyiciye gönderilmektedir. Başka bir deyişle, bu işleyiş MSIE değişkeninin bulunup bulunmamasına bağlıdır.
PHP'nin en güçlü özelliklerinden biri HTML formlarına yaklaşım biçimidir. Bilinmesi gereken ilk önemli durum, form içindeki tüm elemanların PHP tarafından özdevinimli olarak kullanılabilir olacağıdır. PHP ile formların kullanımı ve daha ayrıntılı bilgi için Dış kaynaklı değişkenler bölümünü okuyabilirsiniz. Örnek bir HTML formu:
Örnek 1 - Örnek bir HTML formu
<form action="action.php" method="post"> <p>İsminiz: <input type="text" name="isim" /></p> <p>Yaşınız: <input type="text" name="yaş" /></p> <p><input type="submit" /></p> </form>
Bu formda özel hiçbir şey yoktur. Hiçbir özel etiket içermeyen düz bir HTML formudur. Kullanıcı formu doldurup gönder tuşuna bastığında, action.php sayfası çağrılır. Bu dosyaya aşağıdakileri yazabiliriz:
Örnek 2 - Formdan veri yazdırmak
Merhaba <?php echo htmlspecialchars($_POST['isim']); ?>.
Siz <?php echo (int)$_POST['yaş']; ?> yaşındasınız.
Bu betikten elde edilecek örnek çıktı:
Merhaba Ahmet. Siz 22 yaşındasınız.
htmlspecialchars() ve (int) kısımları harcinde yapılan iş oldukça açık. htmlspecialchars() işlevi HTML'ye özel karakterlerin doğru şekilde kodlandığından emin olunmasını sağlar, dolayısıyla başkaları sayfanıza dışardan HTML etiketleri veya Javascript yerleştiremez. Yaş alanınında ise değerin bir tamsayı olması gerektiğini bildiğimiz için değeri integer türüne dönüştürmekle özdevinimli olarak bu alana girilmesi olası başı boş karakterlerden de kurtulmuş olduk. Ayrıca, bunun PHP'de sizin yerinize özdevinimli olarak yapılmasını sağlamak için süzgeç eklentisini de kullanabilirdiniz. $_POST['isim'] değişkeni ve $_POST['yaş'] değişkenleri sizin yerinize PHP tarafından özdevinimli olarak oluşturulur. Daha önce $_SERVER süper küresel değişkenini kullanmıştık, yukarıda ise tüm POST verisini içeren $_POST süper küresel değişkenini tanımış olduk. Formumuz için tanımlı yöntemin POST oluşuna dikkat edin. GET yöntemini kullanmış olsaydık, form bilgilerimiz $_GET süper küresel değişkenine atanmış olacaktı. Bunların haricinde, istemciden gelen verinin hangi kaynaktan geldiği sizin için önemli değilse $_REQUEST süper küreselini de kullanabilirdiniz. Bu değişken GET, POST ve COOKIE verilerinin birleşiminden oluşur. Daha fazla bilgi için import_request_variables() işlevini inceleyebilirsiniz.
PHP içinde XForms öğelerini de kullanabilirsiniz, ancak başlangıç aşamasında çok iyi desteklenen HTML formları sizin işinizi görecektir. XForms ile çalışmak yeni başlayanlar için uygun olmasa da, ilginizi çekebilir. XForms ile çalışmak belgesinde bu konu ile ilgili daha fazla bilgi bulabilirsiniz.
PHP'nin günümüzün çok kullanılan bir betik dili olmasıyla birlikte, hazır kullanabileceğiniz kodlar üreten halka açık birçok depo ve kütüphane oluşturuldu. PHP geliştiricileri geriye dönük uyumluluğu mümkün olduğunca korumaya çalıştılar, dolayısıyla eski bir PHP sürümü ile birlikte yazılmış bir PHP kodu hiçbir değişiklik yapılmasına gerek duyulmadan (ideal olarak) yeni PHP sürümleri ile çalışabilir halde kaldı. Ancak uygulamada, bazı değişikliklerin yapılması gerekebilir.
Eski kodları etkileyen yakın geçmişe ait iki önemli değişiklik:
Bu değişiklikler ile ilgili daha fazla bilgi için, Öntanımlı Değişkenler bölümünden ve oradaki diğer bağlantılardan faydalanabilirsiniz.
Sahip olduğunuz yeni bilgilerle kılavuzun birçok bölümünü anlayabilir ve örnek arşivinde bulunan birçok betiği okuyabilir hale gelmiş olmalısınız. » http://www.php.net/links.php bağlantısından inceleyebileceğiniz başka örneklere ulaşabilirsiniz.
PHP ile neler yapabileceğiniz ile ilgili sunumlara ulaşmak isterseniz, » http://talks.php.net/ adresindeki PHP Konferans Malzemeleri Sitesini ziyaret edebilirsiniz.
Bu bölümde PHP ile ilgili en temel bilgileri kısa ve basit bir eğitmen üzerinde anlatmak istiyoruz. Bu metin yalnızca PHP ile devingen site sayfaları geliştirmeyi ele alır, ancak PHP'nin yeteneği yalnızca site sayfaları oluşturmakla sınırlı değildir. Daha fazla bilgi için PHP'nin yapabildikleri bölümünü inceleyebilirsiniz.
PHP tarafından etkinleştirilen site sayfaları normal HTML sayfaları gibidir ve bu sayfaları normal HTML sayfaları için kullandığınız yöntemlerle oluşturabilir ve düzenleyebilirsiniz.
Kuruluma başlamadan önce PHP'yi ne amaçla kullanacağınızı bilmeniz faydalı olur. Kullanım amaçları PHP ile ne yapılabilir? bölümünde anlatıldığı üzere 3 bölümde incelenebilir:
İlk ve en önemli amaç için üç şeye ihtiyacınız bulunmaktadır: PHP'nin kendisi, bir HTTP Sunucusu ve bir tarayıcı. Muhtemelen bir tarayıcınız zaten vardır. Kullanmakta olduğunuz işletim sistemine bağlı olarak bir HTTP Sunucunuz da olabilir (Linux ve MacOS üzerinde Apache, Windows üzerinde IIS gibi). Yoksa, bir firmadan site barındırma hizmeti alabilirsiniz. Böylece herşeyi kendiniz ayarlamak zorunda kalmazsınız. Sadece PHP betiklerinizi yazmakla ilgilenir ve onları kiraladığınız alana yükleyip tarayıcınızla sonuçları görürsünüz.
Sunucuyu ve PHP’yi kendiniz yapılandıracaksanız, PHP’yi sunucuya bağlamak için iki seçeneğiniz olacak. Bir çok sunucunun PHP için (SAPI de denilen) bir modülü vardır. Apache, Microsoft Internet Information Server, Netscape and iPlanet sunucuları bu tür sunuculardandır. Bir çok sunucunun da Microsoft modül arayüzü, ISAPI için desteği vardır (OmniHTTPd gibi). Eğer sunucunuzda PHP için modül desteği yoksa sunucunuz ne türde olursa olsun onu bir CGI veya FastCGI işlemcisi olarak kullanabilirsiniz. Yani, sunucuya gelen tüm PHP dosyası isteklerini işleme sokmak için PHP’nin CGI çalıştırılabilirini kullanmak üzere sunucunuzu yapılandırabilirsiniz.
PHP'yi komut satırı betikleri yazmak için kullanmayı düşünüyorsanız (özdevinimli olarak resim üreten veya komut satırından aktardığınız değiştirgelerle metin dosyalarını işleyen betikler gibi), bir komut satırı betik yorumlayıcısına ihtiyacınız var demektir. Bu konuda daha fazla bigi edinmek için Komut satırı PHP uygulamalarının yazılması bölümüne bakınız. Bu durumda ne sunucuya ne de tarayıcıya ihtiyacınız olur.
PHP ile PHP-GTK eklentisini kullanarak masaüstü uygulamaları da yazabilirsiniz. Herhangi bir HTML çıktı üretilmediği için Genel Ağ sayfaları yazmaktan tamamen farklı bir yaklaşıma sahiptir. Bu araçlarla sadece pencereleri ve nesneleri yönetirsiniz. PHP-GTK hakkında daha ayrıntılı bilgi edinmek için lütfen » bu eklentinin kendi sitesini ziyaret ediniz. PHP-GTK, resmi PHP dağıtımlarıyla gelmez.
Bu noktadan itibaren belgede, daha çok Unix ve Windows üzerinde çalışan modüllü HTTP sunucuları ve CGI çalıştırılabilirlerinin yapılandırılması üzerinde durulacaktır. Ayrıca, komut satırı çalıştırılabiliri hakkında da bilgi bulabileceksiniz.
PHP'nin kaynak kodu ve Windows için çalıştırılabilir sürümleri » http://www.php.net/downloads.php adresinden temin edilebilir. Dağıtımları indirmek için yakınınızdaki » yansıları kullanmanızı öneririz.
Bu bölümde, PHP'nin Unix platformlarında Apache kurulumlarına özgü bilgilere ve ipuçlarına yer verilmiştir. Apache 2 ile ilgili bilgiler ve ipuçları ayrı bir sayfada verilmiştir.
Aşağıda, 10. şıkta kullanacağınız configure betiğinin temel yapılandırma seçeneklerini eklerde bulabilirsiniz. Eklentilere özgü yapılandırma seçenekleri ise eklentilerin kılavuzdaki belgelerinde bulunabilir. Örneklerde yazılımların sürüm numaraları, belgeyi sürüm numarasına bağlı kılmamak için 'xxx' ile gösterilmiştir. Siz bu çarpıların yerine kurduğunuz paketlerin sürüm numaralarını yazacaksınız.
Örnek 1 - PHP'nin Paylaşımlı Apache Modülü olarak kurulumu
1. gunzip apache_xxx.tar.gz
2. tar -xvf apache_xxx.tar
3. gunzip php-xxx.tar.gz
4. tar -xvf php-xxx.tar
5. cd apache_xxx
6. ./configure --prefix=/usr --enable-module=so
7. make
8. make install
9. cd ../php-xxx
10. Artık PHP'yi yapılandırabilirsiniz. Burada PHP'yi eklentileri
etkinleştiren çeşitli seçeneklerle özelleştirebilirsiniz. Olası
seçeneklerin listesini almak için ./configure --help komutunu
çalıştırabilirsiniz. Bu örnekte Apache 1 için MySQL destekli
basit bir yapılandırmaya yer verilmiştir. Ayrıca, apxs komutunun
bulunduğu yer de buradakinden farklı olabilir.
./configure --with-mysql --with-apxs=/usr/bin/apxs
11. make
12. make install
Kurulumdan sonra yapılandırmanızı değiştirmek isterseniz son üç adımı
yinelemek yeterlidir. Yeni modülün etkili olması için tek ihtiyacınız
Apache'yi yeniden başlatmaktır. Apache'nin yeniden derlenmesine gerek
yoktur.
Aksi özellikle belirtilmedikçe 'make install' ile phpize gibi çeşitli PHP
araçları, PEAR, PHP CLI ve bir takım başka şeylerin de kurulumu yapılır.
13. php.ini dosyanızı yapılandırın:
cp php.ini-development /usr/local/lib/php.ini
PHP seçeneklerini ayarlamak için .ini dosyanızı düzenleyebilirsiniz. .ini
dosyanızın başka bir yerde durmasını istiyorsanız, 10. şıkta
--with-config-file-path=/başka/bir/yer seçeneği ile dosyanız için başka
bir yer belirtebilirsiniz.
php.ini-dist yerine php.ini-production (dağıtımın standart .ini dosyası
yerine önerilen yapılandırmalar dosyasını) kullanmayı tercih ederseniz,
değişiklik listesini okumayı ihmal etmeyin, çünkü bunlar PHP'nin
davranışını etkileyecektir.
14. PHP modülünün yüklenmesi için httpd.conf dosyasını düzenlemelisiniz.
LoadModule yönergesinin değeri PHP modülünün sistemdeki yerini
göstermelidir. Yukarıdaki 'make install' bunu sizin yerinize yapmıştır
ama emin olmak için siz yine de bir bakın.
PHP 4 için:
LoadModule php4_module libexec/libphp4.so
PHP 5 için:
LoadModule php5_module libexec/libphp5.so
15. httpd.conf'un AddModule bölümünde ClearModuleList yönergesinin altına
şunu ekleyin:
PHP 4 için:
AddModule mod_php4.c
PHP 5 için:
AddModule mod_php5.c
16. Apache'ye belli dosya uzantılarını PHP uzantıları olarak ele almasını
söyleyin. Örneğin, .php uzantılı dosyaları Apache'nin PHP dosyaları
olarak ele almasını isteyebiliriz. Başka uzantıları da buraya
ekleyebilirsiniz. Bunları aralarında boşluk bırakarak aynı satıra
yazabilirsiniz. Biz örnek olsun diye .phtml uzantısını ekledik.
AddType application/x-httpd-php .php .phtml
PHP kaynak kodlarını renklendirilmiş olarak göstermek için .phps
uzantısını da yapılandırmanıza ekleyebilirsiniz. Bu, şöyle yapılır:
AddType application/x-httpd-php-source .phps
17. Artık Apache'yi başlatabilirsiniz. Bunun için Apache'yi her zaman ki gibi
başlatmanız yetecektir. (Sunucunun bir HUP veya USR1 sinyali kullanılarak
yeniden yüklenmemesi için sunucunuzu yeniden başlatmadan önce
durdurmalısınız.)
PHP'yi bir duruk nesne olarak da kurabilirsiniz:
Örnek 2 - PHP'nin Duruk Apache Modülü olarak kurulumu
1. gunzip -c apache_1.3.x.tar.gz | tar xf -
2. cd apache_1.3.x
3. ./configure
4. cd ..
5. gunzip -c php-5.x.y.tar.gz | tar xf -
6. cd php-5.x.y
7. ./configure --with-mysql --with-apache=../apache_1.3.x
8. make
9. make install
10. cd ../apache_1.3.x
11. ./configure --prefix=/www --activate-module=src/modules/php5/libphp5.a
(Bu satırda bir hata yok! libphp5.a'nın henüz mevcut olmadığının
farkındayız. PHP derlenince mevcut olacak.)
12. make
(Artık httpd çalıştırılabilirini Apache bin dizinine kopyalayabilirsiniz.
Apache'yi ilk defa kuruyorsanız bu komuttan sonra "make install" komutunu
da verin.)
13. cd ../php-5.x.y
14. cp php.ini-development /usr/local/lib/php.ini
15. PHP seçeneklerini ayarlamak için artık /usr/local/lib/php.ini dosyasını
düzenleyebilirsiniz. httpd.conf veya srm.conf dosyasını açıp şunu ekleyin:
AddType application/x-httpd-php .php
Bilginize: PHP 4 kurulumu için php-5'lerin yerine php-4 ve php5'lerin yerine php4 yazın.
Kullandığınız Unix türevine ve Apache kurulumuna bağlı olarak, sunucuyu durdurmanın ve yeniden başlatmanın çeşitli yolları vardır. Aşağıda farklı Unix/Apache kurulumları için sunucuyu yeniden başlatırkan kullanılabilecek komutlara yer verilmiştir. /bir/yer/ yerine bu uygulamaların dosya sistemindeki yerlerini yazınız.
Örnek 3 - Apache'yi yeniden başlatmak için örnek komutlar
1. Çeşitli Linux ve SysV türevleri için: /etc/rc.d/init.d/httpd restart 2. apachectl betiği ile: /bir/yer/apachectl stop /bir/yer/apachectl start 3. httpdctl ve httpsdctl (OpenSSL kullanarak), apachectl gibidir: /bir/yer/httpsdctl stop /bir/yer/httpsdctl start 4. mod_ssl veya başka bir SSL sunucu kullanıyorsanız, elle durdurup başlatmanız gerekebilir: /bir/yer/apachectl stop /bir/yer/apachectl startssl
apachectl and http(s)dctl
çalıştırılabilirlerinin yerleri sık sık değişir. Sisteminizde
locate, whereis,
which gibi araçlar kuruluysa bunların yerlerini bu
araçları kullanarak öğrenebilirsiniz.
PHP'yi Apache için derlerken kullanılabilecek farklı yapılandırma örnekleri:
./configure --with-apxs --with-pgsql
Bu yapılandırmayla, Apache'nin httpd.conf dosyasında LoadModule yönergesi ile Apache'ye yüklenebilecek şekilde bir libphp5.so (veya PHP4 için libphp4.so) paylaşımlı kütüphanesi oluşturulacak, PostgreSQL desteği bu kütüphaneye gömülü olacaktır.
./configure --with-apxs --with-pgsql=shared
Bu yapılandırmayla, Apache için bir libphp4.so
paylaşımlı kütüphanesi oluşturulacak fakat önceki örnekten farklı olarak
PostgreSQL desteği için pgsql.so adında ayrı bir
paylaşımlı kütüphane oluşturulacaktır. PHP'ye PostgreSQL desteğini,
eklentiyi php.ini içinde bir extension yönergesinde
belirterek veya doğrudan bir betik içinde dl()
işlevini kullanarak verebilirsiniz.
./configure --with-apache=/bir/yer/apache_kaynak_paketi --with-pgsql
Bu yapılandırmayla, bir libmodphp5.a kütüphanesi, mod_php5.c diye bir dosya ve bunlara eşlik eden bazı dosyalar oluşturulacak ve bunlar Apache kaynak ağacının altında src/modules/php5 dizinine kopyalanacaktır. Bundan sonra Apache --activate-module=src/modules/php5/libphp5.a seçeneği kullanılarak derlendiğinde Apache libphp5.a kütüphanesini oluşturacak (PHP 4 için 5 yerine 4 yazın) ve onu httpd çalıştırılabiliri ile duruk olarak ilintileyecektir. PostgreSQL desteği de doğrudan httpd çalıştırılabiliri içinde olacaktır. Böylece sonuçta tek bir httpd çalıştırılabiliri Apache ve PHP'nin tamamını içerecektir.
./configure --with-apache=/bir/yer/apache_kaynak_paketi --with-pgsql=shared
Yukarıdakinden farklı olarak PostgreSQL desteği, doğrudan sonuncu httpd çalıştırılabiliri içinde değil, ayrı bir pgsql.so paylaşımlı kütüphanesiyle php.ini dosyası üzerinden veya doğrudan dl() işlevi kullanılarak PHP'ye yüklemek suretiyle elde edilecektir.
PHP'yi derlemek için seçtiğiniz her yolun getirileri olacağı gibi götürüleri de olacaktır. Paylaşımlı nesne olarak derlemek, Apache'yi ayrı olarak derleyip, PHP ile ilgili hiçbir şey için Apache'yi tekrar derleme ihtiyacı duymamak demektir. PHP'yi Apache içinde (duruk yöntem) derlerseniz PHP daha çabuk yüklenecek ve daha hızlı çalışacaktır. Bu konularda daha ayrıntılı bilgi edinmek için Apache'nin » DSO desteği sayfasına bakınız.
Bilginize: Apache'nin öntanımlı httpd.conf dosyası şöyle bir bölümle gelmektedir:
User nobody Group "#-1"Burada
Groupsatırı, Group nogroup veya Group daemon gibi bir satırla değiştirilmedikçe, PHP dosyaları açamayacaktır.
Bilginize: --with-apxs=/bir/yer/apxs seçeneğini kullanırken apxs'in kaynak paketindeki yerini değil, sisteminizde kurulu olduğu yeri belirtmeye dikkat edin.
Bu bölüm Unix sistemlerde PHP'nin Apache 2.x'e kurulumu hakkında bilgiler ve ipuçları içerir.
Apache 2'nin bir hizmet ortamında evreli MPM'lerle kullanımını önermiyoruz. Bunun yerine prefork MPM'sini veya Apache 1 kullanmanızı öneririz. Bunun sebebini SSS altında Apache ve evreli MPM'ler başlığı altında bulabilirsiniz.
Apache 2.x HTTP Sunucusu hakkında temel bir bilgi edinmek için mutlaka » Apache HTTP Sunucusu Sürüm 2.x Belgelerine bakmanızı öneririz.
Bilginize: PHP ve Apache 2.0.x uyumluluk bilgileri
Aşağıdaki PHP sürümlerinin Apache 2.0.x'in en son sürümleri ile çalıştığı bilinmektedir:
- PHP 4.3.0 ve sonrası » http://www.php.net/downloads.php adresinden indirilebilir.
- En son kararlı geliştirme sürümü. Kaynak kod paketini » http://snaps.php.net/php5-latest.tar.gz olarak, Windows çalıştırılabilirlerini ise » http://snaps.php.net/win32/php5-win32-latest.zip olarak indirebilirsiniz.
- Kararlı sürüm adayı sürümü » http://qa.php.net/ adresinden indirebilirsiniz.
- PHP'yi » anonim SVN'den indirme seçeneği elbette daima mevcut.
PHP'nin bu sürümleri Apache 2.0.40 ve sonrası ile uyumludur.
Apache 2.0 SAPI desteği PHP 4.2.0 ile başlamıştır. PHP'nin 4.2.3 sürümü Apache 2.0.39'da çalışır. PHP'nin 4.2.3 sürümünü bundan başka bir Apache sürümü ile kullanmayın. Ancak, PHP'nin 4.3.0 ve sonraki sürümlerini Apache2'nin en son sürümleri ile gönül rahatlığıyla kullanabilirsiniz.
PHP'nin bahsi geçen bütün sürümleri hala Apache 1.3.x ile çalışmaktadır. Apache 2.x.x'in Apache 1.3.x ile uyumlu (tek evreli çok süreçli) yapılandırmaları ile de aynı durum sözkonusudur.
En son sürümü » Apache 2.x indirme sitesinden ve buna uygun PHP sürümünü yukarıda bahsedilen yerlerden indirebilirsiniz. Bu kısa kılavuz Apache 2.x ve PHP hakkında sadece temel bilgi sağlar. Daha ayrıntılı bilgi edinmek için » Apache HTTP Sunucusu Belgelerine bakınız. Kurulum talimatlarının sürüm numaralarından ötürü geçerliliğini yitirmemesi için sürüm numaraları 'NN' şeklinde belirtilmiştir, NN yerine kurulan Apache sürümünün sürüm numarası yazılmalıdır.
Apache 2.x'in şu an iki sürümü mevcuttur: 2.0 ve 2.2. Bunlardan birini seçmek için çeşitli sebepler olabilirse de 2.2 şu an için en son ve önerilen sürümdür. Ancak, burada sözü edilen talimatlar hem 2.0 hem de 2.x için çalışır.
Örnek 1 - PHP'nin Paylaşımlı Apache 2 Modülü olarak kurulumu
1. gzip -d httpd-2_x_NN.tar.gz
2. tar xvf httpd-2_x_NN.tar
3. gunzip php-NN.tar.gz
4. tar -xvf php-NN.tar
5. cd httpd-2_x_NN
6. ./configure --enable-so
7. make
8. make install
Böylece standart prefork MPM'si ve yüklenebilir modül desteği ile Apache
2.x.NN /usr/local/apache2 altına kurulmuş oldu. Kurulumu denemek için
Apache HTTP sunucusunu normal yollardan başlatabilirsiniz. Örnek:
/usr/local/apache2/bin/apachectl start
PHP yapılandırmasıyla çalıştırmak üzere şimdilik sunucuyu durduralım:
/usr/local/apache2/bin/apachectl stop.
9. cd ../php-NN
10. Artık PHP'yi yapılandırabiliriz. Hangi eklentilerin etkin olacağını
belirten çeşitli seçenekleri kullanarak PHP'yi özelleştirebilirsiniz.
Olası seçeneklerin listesini görmek için ./configure --help komutunu
kullanın. Bu örnekte Apache 2 ve MySQL ile basit bir yapılandırmaya
gideceğiz. Sizde apxs farklı bir yere kurulmuş olabilir, hatta ismi apxs2
bile olabilir.
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql
11. make
12. make install
Eğer kurulumdan sonra yapılandırmanızı değiştirmek isterseniz sadece son
üç adımı yinelemeniz yeterli olacaktır. Yeni modülün etkin olabilmesi
için Apache'yi yeniden başlatmanız gerekir. Apache'yi yeniden derlemeniz
gerekmez.
Aksi özellikle belirtilmedikçe 'make install' ile phpize gibi çeşitli PHP
araçları, PEAR, PHP CLI ve bir takım başka şeylerin de kurulumu yapılır.
13. php.ini dosyanızı yapılandırın:
cp php.ini-development /usr/local/lib/php.ini
PHP seçeneklerini ayarlamak için .ini dosyanızı düzenleyebilirsiniz. .ini
dosyanızın başka bir yerde durmasını istiyorsanız, 10. şıkta
--with-config-file-path=/başka/bir/yer seçeneği ile dosyanız için başka
bir yer belirtebilirsiniz.
php.ini-dist yerine php.ini-production (dağıtımın standart .ini dosyası
yerine önerilen yapılandırmalar dosyasını) kullanmayı tercih ederseniz,
değişiklik listesini okumayı ihmal etmeyin, çünkü bunlar PHP'nin
davranışını etkileyecektir.
14. PHP modülünün yüklenmesi için httpd.conf dosyasını düzenlemelisiniz.
LoadModule yönergesinin değeri PHP modülünün sistemdeki yerini
göstermelidir. Yukarıdaki 'make install' bunu sizin yerinize yapmıştır
ama emin olmak için siz yine de bir bakın.
LoadModule php5_module modules/libphp5.so
15. Apache'ye belli dosya uzantılarını PHP uzantıları olarak ele almasını
söyleyin. Örneğin, .php uzantılı dosyaları Apache'nin PHP dosyaları
olarak ele almasını isteyebiliriz. Apache AddType yönergesini kullanmamak
suretiyle, PHP tarafından çalıştırılmak üzere istismar.php.jpg gibi
dosyaların oluşturulması ve yüklenmesi gibi tehlikeli durumlardan
kaçınmak isteyebilirsiniz. Biz örnek olsun diye .phtml uzantısını
ekledik. Başka uzantıları da buraya ekleyebilirsiniz. Bunları aralarında
boşluk bırakarak aynı satıra yazabilirsiniz.
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
Veya .php, .php2, .php3, .php4, .php5, .php6 ve .phtml gibi dosyalar
dışında hiçbir dosyanın PHP tarafından çalıştırılmamasını şöyle
sağlayabilirsiniz:
<FilesMatch "\.ph(p[2-6]?|tml)$">
SetHandler application/x-httpd-php
</FilesMatch>
PHP kaynak kodlarını renklendirilmiş olarak göstermek için .phps
uzantısını da yapılandırmanıza ekleyebilirsiniz. Bu, şöyle yapılır:
<FilesMatch "\.phps$">
SetHandler application/x-httpd-php-source
</FilesMatch>
.php dosyalarının uzantılarını .phps olarak değiştirmeden kaynak kodlarını
renklendirilmiş olarak göstermek isterseniz bunu şöyle yapabilirsiniz:
RewriteEngine On
RewriteRule (.*\.php)s$ $1 [H=application/x-httpd-php-source]
PHP kaynak süzgeci, gizli kalması gereken bilgiler içeren genel kullanıma
açık sunucularda kullanılmamalıdır. Aksi takdirde gizli kalması gereken
bilgiler kaynak koda eklenebilir.
16. Artık Apache'yi başlatabilirsiniz. Bunun için Apache'yi her zaman ki gibi
başlatmanız yetecektir:
/usr/local/apache2/bin/apachectl start
- VEYA -
service httpd restart
Yukarıdaki adımları izleyerek PHP'nin bir SAPI modülü olarak çalıştığı bir Apache 2 HTTP sunucusuna sahip olursunuz. Apache ve PHP için şüphesiz birçok farklı yapılandırma seçeneği vardır. Yapılandırma seçeneklerinin listesi için her kaynak ağacında ./configure --help çalıştırabilirsiniz.
Apache derlenirken prefork MPM modülü yerine , worker MPM modülü seçilerek çok evreli derlenebilir. Bunu yapmak için 6. şıkta derleme seçeneklerinize şu seçeneğini ekleyebilirsiniz:
Bunu yapmadan önce, bunun olası sonuçları hakkında bilgi sahibi olmaya, azından ne gibi etkilerinin olacağını anlamaya çalışın. Bu konuda daha ayrıntılı bilgi edinmek için Apache HTTP sunucusunun belgelerinden » Çok Süreçlilik Modülleri (MPM'ler) belgesini okuyunuz.
Bilginize: İçerik dili uzlaşımı kullanmak isterseniz Apache MultiViews SSS'ine bakınız.
Bilginize: Ayrıca, PHP'yi deneysel Zend Thread Safety (ZTS) motoru ile de derleyebilirsiniz. Böyle bir yapılandırmada bütün eklentiler kullanılamayacaktır. Bu bakımdan Apache'yi standart prefork MPM'si ile derlemenizi öneriyoruz.
Bu bölüm PHP'nin Unix sistemlerde Lighttpd 1.4 ile kurulumu hakkında bilgiler ve ipuçları içerir.
Lütfen devam etmeden önce » Lighttpd redmine sitesini ziyaret edip Lighttpd'nin doğru düzgün nasıl kurulacağını öğreniniz.
PHP ve Lighttpd'ye bağlanmak için tercih edilen SAPI Fastcgi'dir. Fastcgi, PHP 5.3'te php-cgi'yi özdevinimli olarak sihirli bir şekilde etkin kılar. Fakat, eski sürümler için PHP'nin --enable-fastcgi ile derlenmesi gerekir. PHP'nin fastcgi için hazır olduğunu doğrulamak için php -v çıktısının PHP 5.2.5 (cgi-fcgi) içermesi gerekir. PHP 5.2.3 öncesinde, fastcgi, php çalıştırılabiliri üzerinde etkindi (php-cgi diye birşey yoktu).
Lighttpd'nin PHP'ye bağlanmasını ve fastcgi süreçlerini çatallamasını sağlamak üzere yapılandırmak için lighttpd.conf dosyasını düzenlemeniz gerekir. Fastcgi süreçlerine yerel sistemden bağlanmak için soketler tercih edilir.
Örnek 1 - lighttpd.conf'tan bir bölüm
server.modules += ( "mod_fastcgi" )
fastcgi.server = ( ".php" =>
((
"socket" => "/tmp/php.socket",
"bin-path" => "/usr/local/bin/php-cgi",
"bin-environment" => (
"PHP_FCGI_CHILDREN" => "16",
"PHP_FCGI_MAX_REQUESTS" => "10000"
),
"min-procs" => 1,
"max-procs" => 1,
"idle-timeout" => 20
))
)
bin-path yönergesi lighttpd'nin fastcgi süreçlerini devingen
olarak çatallamasına izin verir. PHP kendi çocuklarını PHP_FCGI_CHILDREN
ortam değişkenine göre çatallayacaktır. PHP, PHP_FCGI_MAX_REQUESTS
değerinin aşılmasına sebep olan çocuk süreci öldürür. PHP'de
min-procs ve max-procs yönergelerinden genel
olarak kaçınılması gerekir. PHP kendi çocuklarını yönetir ve makine kodu
önbelleklerini APC gibi çocukları arasında paylaştırır.
min-procs yönergesine 1'den büyük bir değer atanmışsa PHP
yanıtçılarının sayısı PHP_FCGI_CHILDREN değerinin katları olacaktır (2
min-procs * 16 çocuk eşittir 32 yanıtçı).
Lighttpd, fastcgi süreçlerinin çatallanmasını kolaylaştırmak için spawn-fcgi adında bir programla gelir.
Süreçleri spawn-fcgi kullanmaksızın çatallamak mümkünse de, biraz ağır kaldırma çalışmak gerekir. Gelen istekleri karşılamak için PHP'nin kaç çocuk çatallayacağı PHP_FCGI_CHILDREN ortam değişkeni ile belirlenir. PHP'nin her çocuğunun kaç isteklik yaşayacağını ise PHP_FCGI_MAX_REQUESTS belirler. Aşağıda, PHP yanıtçılarının çatallanmasına yardımcı olan basit bir bash betiği verilmiştir.
Örnek 2 - FastCGI Yanıtçılarının Çatallanması
#!/bin/sh
# php-cgi çalıştırılabilirinin yeri
PHP=/usr/local/bin/php-cgi
# PID dosyasının yeri
PHP_PID=/tmp/php.pid
# Dinlenecek adres
#FCGI_BIND_ADDRESS=10.0.1.1:10000
# Dinlenecek soket
FCGI_BIND_ADDRESS=/tmp/php.sock
PHP_FCGI_CHILDREN=16
PHP_FCGI_MAX_REQUESTS=10000
env -i PHP_FCGI_CHILDREN=$PHP_FCGI_CHILDREN \
PHP_FCGI_MAX_REQUESTS=$PHP_FCGI_MAX_REQUESTS \
$PHP -b $FCGI_BIND_ADDRESS &
echo $! > "$PHP_PID"
Uygulamaları dengelemek için Fastcgi örnekleri çok sayıda uzak makineye çatallanabilir.
Örnek 3 - Uzak FCGI örneklerine bağlanmak
fastcgi.server = ( ".php" =>
(( "host" => "10.0.0.2", "port" => 1030 ),
( "host" => "10.0.0.3", "port" => 1030 ))
)
PHP, » Caudium HTTP Sunucusu için bir Pike modülü olarak derlenebilir. PHP'yi Caudium ile kullanmak için aşağıdaki basit kurulum adımlarını izleyerek kurabilirsiniz:
Örnek 1 Caudium Kurulum Adımları
1. PHP 4 kurulumuna başlamadan önce Caudium kurulmuş olmalıdır. PHP 4'ün
düzgün çalışması için Pike 7.0.268 veya daha yenisi gerekir. Bu örneğin
amaçları gereği, Caudium'un /opt/caudium/server/ altında kurulu olduğunu
varsayacağız.
2. php-x.y.z (x.y.z sürüm numarasıdır) dizinine geçin.
3. ./configure --with-caudium=/opt/caudium/server
4. make
5. make install
6. Çalışmaktaysa Caudium'u yeniden başlatın.
7. Çizgesel kurulum arayüzüne oturum açın ve PHP 4 desteği vermek istediğiniz
sanal sunucuya gidin.
8. Add Module'e tıklayın ve PHP4 Betik Destek modülünü bulup ekleyin.
9. Eğer belgeler, PHP 4 yorumlayıcısının kullanılabilir durumda olmadığını
söylüyorsa sunucuyu yeniden başlatmamış olabilirsiniz, yeniden başlatmayı
deneyin. PHP4.so ile ilgili hatalar için
/opt/caudium/logs/debug/default.1'e bakın. Ayrıca,
caudium/server/lib/[pike-version]/PHP4.so
dosyasının varlığından emin olun.
10. Gerekirse PHP Betik Destek modülünü yapılandırın.
Şüphesiz, Caudium modülünüzü PHP 4'te mevcut çeşitli eklentileri desteklemesi için derleyebilirsiniz. Eklentilere özel yapılandırma seçenekleri için eklenti belgelerine bakınız.
Bilginize: PHP 4'ü MySQL desteği ile derlerken normal MySQL istemci kodunun kullanıldığına emin olun. Aksi takdirde, Pike, MySQL desteğine sahipse çelişkili durumlar ortaya çıkabilir. MySQL kurulum dizinini --with-mysql seçeneği ile belirterek bunu sağlayabilirsiniz.
PHP'yi bir fhttpd modülü olarak derlemek için "Build as an fhttpd module?" sorusuna "yes" yanıtı verip (yapılandırmada --with-fhttpd=DİZİN seçeneği) fhttpd kaynak kök dizinini belirtin. /usr/local/src/fhttpd dizini öntanımlıdır. fhttpd ile çalışırsa PHP'yi bir modül olarak derlemek daha iyi denetim ve uzaktan yönetim yeteneği ile daha yüksek başarım sağlar.
Bilginize: PHP 4.3.0'dan itibaren fhttpd desteklenmemektedir.
Bu bölümde, PHP'nin Sun Solaris üzerinde Sun Java Sistem, Sun ONE, iPlanet ve Netscape HTTP Sunucusu kurulumlarına özgü bilgilere ve ipuçlarına yer verilmiştir.
PHP 4.3.3'ten itibaren PHP betikleri NSAPI modülü ile kullanılarak özel dizin listeleri ve hata sayfaları üretebilebilmektedir. Apache uyumluluğu sağlamak için ek işlevler de mevcuttur. Mevcut HTTP sunucuları desteği hakkında bilgi edinmek için alt istekler ile ilgili bölümü okuyunuz.
Netscape Girişimci Sunucusu (NES) için PHP yapılandırması hakkında daha ayrıntılı bilgiyi » http://benoit.noss.free.fr/php/install-php4.html adresinde bulabilirsiniz.
PHP'yi Sun Java Sistem, Sun ONE, iPlanet ve Netscape HTTP sunucularında derlemek için, kurulum dizinini --with-nsapi=[DiZiN] seçeneği ile belirtin; öntanımlı dizin: /opt/netscape/suitespot/. Ayrıca /php-xxx-version/sapi/nsapi/nsapi-readme.txt dosyasını da okuyun.
Aşağıdaki paketleri » http://www.sunfreeware.com/ veya başka bir siteden indirip kurabilirsiniz:
export PATH
ile sisteminizde kullanılabilir
olmasını sağlayın.
gunzip php-x.x.x.tar.gz
(.gz paketi değilse 4'e gidin).
tar xvf php-x.x.x.tar
cd ../php-x.x.x
Netscape sunucunuz /opt/netscape/suitespot/ dizininde kurulu değilse, aşağıdaki seçeneğe bulunduğu yeri yazın:
./configure --with-mysql=/usr/local/mysql \
--with-nsapi=/opt/netscape/suitespot/ \
--enable-libgcc
Temel kurulum bitip ilgili benioku dosyalarını da okuduktan sonra bir kaç adımlık yapılandırma işlemi kalmış olacak.
Öncelikle, sunucunun bütün paylaşımlı kütüphaneleri bulabilmesi için bazı dizinleri LD_LIBRARY_PATH ortam değişkenine eklemeniz gerekebilir. Bunun yapılacağı en uygun yer HTTP sunucunuzu başlatan betiktir. Bu betik genellikle, /bir/yol/server/https-sunucuismi/start gibi bir dosyadır. HTTP sunucunuzun /bir/yol/server/https-sunucuismi/config/ dizininde yer alan yapılandırma dosyalarını da düzenlemeniz gerekecek.
Aşağıdaki satırı mime.types dosyasına ekleyin (bunu yönetim sunucusunda yapabilirsiniz):
type=magnus-internal/x-httpd-php exts=php
magnus.conf (>= 6 sürümü sunucular için) veya obj.conf (< 6 sürümü sunucular için) dosyalarını düzenlemek için açın ve aşağıdaki satırları mime types init satırının sonrasına ekleyin. shlib (paylaşımlı kütüphane) sisteminize göre değişiklik gösterebilir, genellikle /opt/netscape/suitespot/bin/libphp4.so gibi bir dosyadır.
Init fn="load-modules" funcs="php4_init,php4_execute,php4_auth_trans" shlib="/opt/netscape/suitespot/bin/libphp4.so" Init fn="php4_init" LateInit="yes" errorString="PHP ilklendirilemedi!" [php_ini="/bir/yol/php.ini"]
(PHP >= 4.3.3) php_ini değiştirgesi isteğe bağlı olsa da oraya HTTP sunucunuzun yapılandırma dizininde bulunan php.ini dosyanızı yerleştirebilirsiniz.
obj.conf dosyasındaki öntanımlı nesneyi yapılandırın (vserver.obj.conf dosyasında sanal sunucu sınıfları [sürüm 6.0+] için):
<Object name="default"> . . . .#DiKKAT: Bu satır tüm 'ObjectType' satırlarından sonra ve .# tüm 'AddLog' satırlarından önce yer almalıdır. Service fn="php4_execute" type="magnus-internal/x-httpd-php" [inikey=value inikey=value ...] . . </Object>
(PHP >= 4.3.3) Bazı özel php.ini değerlerini ek değiştirgeler olarak ekleyebilirsiniz, örneğin php4_execute çağrısı bağlamına özgü docroot="/bir/yol/docroot" atamasını yapabilirsiniz. Mantıksal ini yönergeleri için lütfen "On","Off",... değil (çünkü doğru çalışmayacaktır), 0 ve 1 değerlerini kullanınız. Örneğin, zlib.output_compression="On" yerine zlib.output_compression=1 yazın.
Bu sadece, içinde PHP betiklerinden başka dosya bulunmayan (bir cgi-bin dizini gibi) bir dizini yapılandırmak istediğiniz takdirde gerekir :
<Object name="x-httpd-php"> ObjectType fn="force-type" type="magnus-internal/x-httpd-php" Service fn=php4_execute [inikey=value inikey=value ...] </Object>
Bundan sonra, Yönetim sunucusunda bir dizini yapılandırıp ona x-httpd-php MIME türünü atayabilirsiniz. Bu dizindeki tüm dosyalar PHP tarafından çalıştırılacağından oradaki dosyaların uzantılarını .html olarak değiştirip PHP kullanıldığını gizleyebilirsiniz.
Kimlik doğrulama ayarları: PHP kimlik doğrulaması diğer kimlik doğrulamalarıyla kullanılamaz. Bu işlem tamamen PHP betikleriniz üzerinden geçer. PHP kimlik doğrulamasını sunucunun tamamı için yapılandırmak isterseniz aşağıdaki satırı öntanımlı nesnenize ekleyiniz:
<Object name="default"> AuthTrans fn=php4_auth_trans . . . </Object>
PHP kimlik doğrulamasını tek bir dizin için kullanmak istiyorsanız şunu ekleyin:
<Object ppath="d:\kimlik\dogrulaması\yapilacak\dizin\*"> AuthTrans fn=php4_auth_trans </Object>
Bilginize: PHP'nin kullanacağı yığıt boyutu HTTP sunucusunun yapılandırmasına bağlıdır. Çok büyük PHP betiklerinin çalışmaması halinde Yönetim sunucusundan ("MAGNUS EDITOR" bölümünden) boyutu arttırmanızı öneririz.
Bir Sun JSWS/Sun ONE WS/iPlanet/Netscape sunucusu çok evreli bir HTTP sunucusu olarak çalıştığı takdirde PHP betiklerinin yazımı özel bir dikkat gerektirir. Bunun sebebi, tüm isteklerin aynı süreç uzayında (HTTP sunucusunun kendi uzayı) çalışması ve bu uzayın (ortam değişkenlerince) tek bir ortama sahip olmasıdır. PATH_INFO, HTTP_HOST gibi CGI ortam değişkenlerini almak isterseniz, bunu getenv() işlevli eski PHP yöntemleriyle veya benzer yollarla ($_ENV gibi küresellerle) yapmaya çalışmak doğru değildir. Geçerli CGI değişkenleri olmaksızın sadece çalışan HTTP sunucusunun ortamını alırsınız!
Bilginize: Soru: Ortamda neden (geçersiz) CGI değişkenleri var?
Yanıt: Bunun sebebi, HTTP sunucusu sürecini Yönetim sunucusundan başlatmanız ve başlatma betiğinin bir CGI betiği olarak çalışmasıdır (yönetim sunucusu içinde bir CGI betiği!!). Başlatılan HTTP sunucusunun bazı CGI ortam değişkenlerine sahip olmasının sebebi budur. HTTP sunucusunu yönetim sunucusunun dışında çalıştırırsanız bunun sebebini daha iyi anlarsınız. HTTP sunucusunu root kullanıcısı olarak komut satırından kendiniz başlatın ve ortamda artık CGI tarzı ortam değişkenlerinin bulunmadığını görün.
CGI değişkenlerini doğru yöntemle almak için betiklerinizde değişiklik yapmalısınız. PHP 4'te bu işlem için $_SERVER süper küreselini kullanabilirsiniz. $HTTP_HOST gibi değişkenleri kullanan eski betikleriniz varsa php.ini içinde register_globals=On yaptıktan başka değişken sırasını da değiştirin (önemli: Artık ortama ihtiyacınız olmayacağından "E"yi silin):
variables_order = "GPCS" register_globals = On
"404 Not Found" ve benzeri durumlarda hata sayfaları üretimi için PHP'yi kullanabilirsiniz. Üzerine yazmak istediğiniz her hata sayfası için obj.conf dosyasındaki nesneye aşağıdaki satırı ekleyiniz:
Error fn="php4_execute" code=XXX script="/bir/yol/betik.php" [inikey=value inikey=value...]
Burada XXX, HTTP hata kodudur. Sizinkiyle çelişen başka Error yönergeleri varsa onları silin. Tüm hatalar için hep aynı sayfayı kullanacaksanız code değiştirgesini belirtmeyin. Betiğiniz hata kodunu $_SERVER['ERROR_TYPE'] ile alacaktır.
Bir diğer olanak, özel yapım dizin listeleri üretimidir. Dizin içeriğini gösteren bir PHP betiği yazdıktan sonra, obj.conf dosyasında öntanımlı type="magnus-internal/directory" Service satırını şöyle değiştirin:
Service fn="php4_execute" type="magnus-internal/directory" script="/bir/yol/betik.php" [inikey=value inikey=value...]
Hata sayfaları ve dizin listeleri için özgün yol ve dönüşmüş yol $_SERVER['PATH_INFO'] ve $_SERVER['PATH_TRANSLATED'] değişkenlerinden alınabilir.
NSAPI modülü, HTTP sunucusunda alt istekler yapmak ve sonuçları bir sayfaya yerleştirmek için artık nsapi_virtual() işlevine sahiptir (rumuz: virtual()). Bu işlev NSAPI kütüphanesinin bazı belgelenmemiş özelliklerini kullanır. Unix üzerinde modül özdevinimli olarak gerekli işlevlerin varlığını araştırır ve kullanılabilecekse kullanır. Aksi takdirde, nsapi_virtual() iptal edilir.
Bilginize: ÖNEMLİ: nsapi_virtual() desteği DENEYSEL'dir!!!
PHP'yi bir CGI programı olarak derlemek öntanımlıdır. Bu sayede HTTP sunucuda çalışmayacak betikleri yorumlamak için veya CGI işlemleri için kullanılabilecek bir komut satırı yorumlayıcısı oluşturulmuş olur.PHP'nin bir modül olarak çalıştığı bir HTTP sunucusu genellikle başarım sorunlarına bir çözüm olarak kullanılır. Bununla birlikte, CGI sürümü, farklı PHP sayfalarını farklı kullanıcı kimlikleriyle çalıştırabilme imkanı sunar.
CGI kipinde çalışan bir sunucu olası saldırılara açık hale gelir. Sunucunuzu böyle saldırılardan nasıl koruyacağınızı öğrenmek için CGI güvenliği bölümünü okuyunuz.
PHP 4.3.0 ve sonrasında, PHP'ye bazı önemli eklemeler yapıldı. Ayrıca, CGI çalıştırılabiliri ile aynı isimde çalıştırılabilire sahip CLI adında yeni bir SAPI geldi. {PREFIX}/bin/php çalıştırılabilirinde kurulu olan şeyler yapılandırmanızı nasıl yaptığınıza bağlıdır ve bu, PHP'nin komut satırından kullanımı bölümünde ayrıntılı olarak açıklanmıştır.
PHP'yi bir CGI programı olarak derlediyseniz, derlemenizi make test komutunu vererek sınayabilirsiniz. Derlemenizi sınamak daima iyidir. Bu yolla sonradan karşılaşabileceğiniz sorunları daha ortaya çıkmadan yakalama şansınız olur.
Bazı sunucu kaynaklı ortam değişkenleri geçerli » CGI/1.1 belirtiminde tanımlanmamıştır; sadece şu değişkenler tanımlıdır: AUTH_TYPE, CONTENT_LENGTH, CONTENT_TYPE, GATEWAY_INTERFACE, PATH_INFO, PATH_TRANSLATED, QUERY_STRING, REMOTE_ADDR, REMOTE_HOST, REMOTE_IDENT, REMOTE_USER, REQUEST_METHOD, SCRIPT_NAME, SERVER_NAME, SERVER_PORT, SERVER_PROTOCOL ve SERVER_SOFTWARE. Bunların dışında kalan herşey 'üretici eklentileri' olarak ele alınmalıdır.
Bu bölüm PHP'nin HP-UX sistemlere kurulumu hakkında bilgiler ve ipuçları içerir.
PHP'nin HP-UX sistemlere kurulumunda iki seçenek söz konusudur: Ya kendiniz derlersiniz ya da bir başkasının derlediği çalıştırılabiliri kurarsınız.
Resmi derlenmiş paketleri » http://software.hp.com/ adresinden edinebilirsiniz.
Kılavuzun bu bölümü yazılana kadar, PHP'nin (ve ilgili eklentilerin) HP-UX sistemlerde derlenmesi ile ilgili belgeler kaldırılmıştı. Bunları artık bir dış kaynaktan okuyabileceksiniz: » Building Apache and PHP on HP-UX 11.11
Bu bölüm PHP'nin » OpenBSD 3.6 sistemlere kurulumu hakkında bilgiler ve ipuçları içerir.
PHP'yi OpenBSD üzerine kurmak için ikil paketlerin kullanımı en basit ve önerilen bir yoldur. Temel paket, modül paketlerinden ayrıdır ve her modül paketi diğerlerinden bağımsız olarak kurulup kaldırılabilir. İhtiyaç duyacağınız dosyaları OpenBSD CD'nizde veya FTP sitesinde bulabilirsiniz.
İhtiyacınız olan ana paket php4-core-4.3.8.tgz olup, temel motoru (artı gettext ve iconv) içerir. Modül paketleri ise php4-mysql-4.3.8.tgz veya php4-imap-4.3.8.tgz gibi isimler alırlar. Bu modülleri php.ini dosyanızda etkin ve etkisiz kılmak için phpxs komutuna ihtiyacınız olacak.
Örnek 1 - OpenBSD Paket Kurulum Örneği
# pkg_add php4-core-4.3.8.tgz # /usr/local/sbin/phpxs -s # cp /usr/local/share/doc/php4/php.ini-recommended /var/www/conf/php.ini (add in mysql) # pkg_add php4-mysql-4.3.8.tgz # /usr/local/sbin/phpxs -a mysql (add in imap) # pkg_add php4-imap-4.3.8.tgz # /usr/local/sbin/phpxs -a imap (remove mysql as a test) # pkg_delete php4-mysql-4.3.8 # /usr/local/sbin/phpxs -r mysql (install the PEAR libraries) # pkg_add php4-pear-4.3.8.tgz
OpenBSD'deki ikil paketler hakkında ayrıntılı bilgi edinmek için » packages(7) kılavuz sayfasını okuyunuz.
Ayrıca, PHP'yi kaynak paketinden » port ağacını kullanarak da derleyebilirsiniz. Ancak, bu sadece OpenBSD üzerinde tecrübeli kullanıcılar için önerilebilecek bir yoldur. PHP4 portu iki alt dizine ayrılır: çekirdek ve eklentiler. Eklentilerin bulunduğu dizin desteklenen tüm PHP modülleri için alt paketler üretir. Bu modüllerden üretilmesini istemedikleriniz için no_* FLAVOR'unu kullanınız. Örneğin imap modülünün derlenmeden geçilmesi için FLAVOR'a no_imap atayınız.
OpenBSD'nin eski dağıtımları PHP'yi duruk ilintili derlemek için FLAVORS sistemini kullanırlar. Bu yöntemle ikil paketleri üretmek zor olduğundan artık bu yol önerilmemektedir. İsterseniz hala eski port ağaçlarını kullanabilirsiniz fakat OpenBSD ekibi tarafından artık desteklenmemektedirler. Bu konuda fikirleriniz varsa port'un şu anki sürdürücüsü: Anil Madhavapeddy (avsm at openbsd dot org).
Bu bölüm PHP'nin Solaris sistemlere kurulumu hakkında bilgiler ve ipuçları içerir.
Solaris kurulumlarında sıklıkla C derleyicilerin ve bunlarla ilgili araçların yokluğu sözkonusu olur. Bu araçların GNU sürümlerinin gerekliliği hakkında bilgi edinmek için lütfen SSS'nin bu bölümünü okuyunuz. Gereken yazılımlar:
Bunlara ek olarak, Oracle veya MySQL gibi yapılandırmanıza özgü bir takım ek yazılımların kurulması da gerekebilir.
Kurulması gereken bileşinlerin çoğunu kurmak için pkgadd kullanarak Solaris kurulum işlemlerini kolaylaştırabilirsiniz.
Bu bölüm Unix sistemlerde PHP'nin » Debian GNU/Linux kurulumu hakkında bilgiler ve ipuçları içerir.
PHP'nin Unix üzerinde derlenmesi ile ilgili talimatlar Debian için de geçerli olsa da bu kılavuz sayfasında ayrıca, hem apt-get hem de aptitude komutlarının kullanımı gibi diğer seçeneklere özgü bilgilere de yer verilmiştir. Bu kılavuz sayfasında bu iki komut kimi zaman diğerinin yerine kullanılmıştır.
Öncelikle dikkat edeceğiniz şey, Apache2 ile tümleştirmek için libapache2-mod-php5 ve PEAR ile tümleştirmek için php-pear gibi PHP ile ilgili diğer paketlerinde gerekli olabileceğidir.
İkinci olarak, bir paketi kurmadan önce paket listesini güncellemeniz yerinde bir hareket olacaktır. Bu işlem genellikle apt-get update komutu çalıştırılarık yapılır.
Örnek 1 - Apache2 ile kurulum örneği
# apt-get install php5-common libapache2-mod-php5 php5-cli
APT, Apache2 için hazırlanmış PHP 5 modülünü ve bu modülü etkinleştirmek için bağımlı olduğu diğer paketleri özdevinimli olarak kuracaktır. Yapılan değişikliğin geçerli olması için Apache2 yeniden başlatılmalıdır. Örnek:
Artık herşey yerli yerine oturduğuna göre aşağıdaki örneği izleyerek Apache ve PHP'yi kurabilirsiniz:
Örnek 2 - PHP kurulduktan sonra Apache2'nin dirdirilip yeniden başlatılması
# /etc/init.d/apache2 stop # /etc/init.d/apache2 start
Bir önceki bölümde PHP sadece çekirdek modüllerle kurulmuştu. Çok geçmeden MySQL, cURL, GD ve benzeri modülleri etkinleştirme ihtiyacı duyabilirsiniz. Bunları da apt-get komutuyla kurabilirsiniz.
Örnek 3 - Ek PHP 5 paketleri listesinin alınma yöntemleri
# apt-cache search php5 # aptitude search php5 # aptitude search php5 |grep -i mysql
Bu örnek komutların çıktısından da görebileceğiniz gibi, php5-cgi, php5-cli ve php5-dev gibi özel paketlerde dahil olmak üzere kurabileceğiniz çok sayıda PHP modülü vardır. Listeyi dikkatlice inceleyip ihtiyacınız olanları seçtikten sonra apt-get veya aptitude ile bunları kurabilirsiniz. Debian bunlar içinde bağımlılık denetimleri yapacağından, örneğin MySQL ve cURL kurmak istediğinizde bunların bağımlı olduğu paketleri de kurmayı teklif edecektir:
Örnek 4 - MySQL ve cURL PHP modüllerinin kurulumu
# apt-get install php5-mysql php5-curl
APT özdevinimli olarak farklı php.ini (/etc/php5/apache2/php.ini, /etc/php5/conf.d/pdo.ini ve benzeri) dosyalarına uygun satırları ve eklentinin türüne bağlı olarak extension=foo.so benzeri girdileri ekleyecektir. Bu değişikliklerin de etkili olabilmesi için Apache2'nin yeniden başlatılması gerekir.
Bu bölümde, PHP'nin Unix sistemleri üzerindeki yapılandırmasından ve kurulumundan ana hatları ile bahsedilecektir. Kuruluma başlamadan önce platformunuza ve kullandığınız HTTP sunucusuna özgü bölümleri incelemenizi öneririz.
Kılavuzun Genel Kurulum Değerlendirmesi bölümünde ana hatlarıyla bahsettiğimiz gibi, bu bölümde esas olarak HTTP sunucusunu ilgilendiren ayarlardan bahseceksek de PHP'nin komut satırından kullanımı ile ilgili ayarlara da değineceğiz.
PHP'yi Unix platformlarına kurmanın çeşitli yolları vardır. Kaynak kod paketinden kendiniz derleyip kurabileceğiniz gibi başkaları tarafından derlenip paketlenmiş sürümleri de kurabilirsiniz. Bu belgelerde esas olarak kaynak kod paketinden derleme, kurulum ve yapılandırma sürecinden bahsedeceğiz. Çoğu Unix benzeri sistemin kendine özgü paket kurulum yöntemi vardır. Bu, standart yapılandırmaya yardımcı olabilirse de farklı özelliklere ihtiyaç duyduğunuzda (örneğin, güvenli sunucu veya veritabanı sunucusu), HTTP sunucunuzu ve PHP'yi kendiniz derlemek zorunda kalırsınız. Yazılımları kendiniz derleyip kuracak bilgiye sahip değilseniz, sizin istediğiniz özelliklerde başkaları paket derlemiş mi diye bir araştırma yapmanızı öneririz.
Derleme işlemi için gerekli bilgi ve yazılımlar:
PHP kaynak kod paketinin derleme için ayar ve yapılandırma işlemi configure betiğinin komut satırı seçenekleri kullanılarak yapılır. Bu seçeneklerin neler olduğunu görmek için kaynak paketinin kök dizininde komut satırından ./configure --help komutunu verebilirsiniz. Ayrıca, bu kılavuzda da bazı seçeneklerin açıklamalarına yer verilmiştir. Temel yapılandırma seçeneklerini eklerde bulabilirsiniz. Eklentilere özgü yapılandırma seçenekleri ise eklentilerin kılavuzdaki belgelerinde bulunabilir.
PHP'yi yapılandırdığınızda modülleri ve çalıştırılabilirleri derlemeye hazırsınız demektir. Artık make komutunu verebilirsiniz. Derleme işlemi bir noktada başarısız olursa ve bunun sebebini anlayamazsanız, Sorunlar bölümüne bakınız.
PHP'nin Mac OS X için bir kaç tane paketlenmiş ve derlenmiş sürümü vardır. Standart bir yapılandırma için bunlar yeterlidir, ancak farklı özelliklere ihtiyaç duyarsanız (güvenli sunucu, farklı bir veritabanı sürücüsü gibi), kendi PHP'nizi ve/veya HTTP sunucunuzu derlemeniz gerekebilir. Bu işleri yapacak tecrübeniz yoksa, sizin ihtiyaçlarınıza uygun olarak derlenmiş paketlerin olup olmadığını araştırmalısınız.
Aşağıdakiler, Mac OS üzerinde PHP için paket ve derlenmiş ikillerin kurulumunu kolaylaştıracaktır:
OS X'in 10.0.0 sürümünden itibaren PHP Meklerde standart hale geldi. PHP'yi öntanımlı HTTP sunucusunda etkin kılmak için Apache yapılandırma dosyası httpd.conf'ta bir kaç satırı etkin duruma getirmek gerekir, bunun yanında CGI ve/veya CLI öntanımlı olarak etkin (Terminal programından kolayca erişilebilir) kılınabilir.
Aşağıdaki talimatları kullanarak PHP'yi etkin kılmak demek çabucak bir yerel geliştirme ortamına sahip olmak demektir. Daima PHP'nin en yeni sürümünü kullanmanızı hararetle öneririz. Gelişimi sürmekte olan çoğu yazılım gibi yeni sürümlerde eski hatalar sürekli düzeltilmekte ve yeni özellikler eklenmektedir. Ayrıntılar için MAC OS X kurulum belgelerine bakınız. Aşağıdaki talimatların ayrıntı düzeyi başlangıç düzeyinde bir kullanıcıya göre olup öntanımlı ayarlarla çalışmak üzere düzenlenmiştir. Daha yeni sürümlerin derlenmesi veya daha yeni paketlerin kurulması tüm kullanıcılara tavsiye edilmektedir.
Standard kurulum türü mod_php kullanmak olup Mac OS X üzerinde Apache HTTP Sunucusu için mod_php'yi etkin kılmak (öntanımlı HTTP sunucusuna Sistem Tercihlerinden erişilebilir) amacıyla şu adımlar izlenmelidir:
Bilginize: Dosyayı açmanın tek yolu Terminal'de nano gibi Unix temelli bir metin düzenleyici kullanmaktır. Dosyanın sahibi root olduğundan dosyayı (root olarak) açmak için Terminal'de sudo komutunu kullanmalıyız (root parolası istenecektir): sudo nano /etc/apache2/httpd.conf Önemli nano komutları: ^w (arama), ^o (kayıt), and ^x (çıkış). Burada ^ imi, Ctrl tuşu anlamındadır.
Bilginize: Mac OS X'in 10.5'ten önceki sürümleri PHP ve Apache'nin eski sürümleriyle gelir. Böyle makinelerde Apache yapılandırma dosyası /etc/httpd/httpd.conf olabilir.
Bir metin düzenleyici ile aşağıdaki satırların başlarındaki # imlerini kaldırın (bu iki satır genelde birarada değildir, onları arayıp bulmalısınız):
# LoadModule php5_module libexec/httpd/libphp5.so # AddModule mod_php5.c
PHP olarak yorumlanacak uzantıları belirleyiniz (örnekler: .php .html ve .inc)
(Mac Panther'den itibaren) httpd.conf dosyasında bulunan aşağıdaki deyimden dolayı PHP etkin kılındığı anda .php uzantılı dosyalar özdevinimli olarak PHP tarafından yorumlanır.
<IfModule mod_php5.c>
# php etkinse, .php ve .phps dosyalarını yorumlasın isteriz.
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
# Çoğu kullanıcı index.php'yi ister
<IfModule mod_dir.c>
DirectoryIndex index.html index.php
</IfModule>
</IfModule>
Bilginize: OS X 10.5 (Leopard) öncesinde, PHP 5 yerine PHP 4 kullanılırdı; dolayısıyla yukarıdaki 5'leri 4'lere çevirmeniz gerekir.
phpinfo() işlevi PHP ile ilgili bilgileri gösterir. Aşağıdaki içeriğe sahip bir dosyayı belge kök dizininde oluşturun:
<?php phpinfo(); ?>
CLI (veya eski sürümlerde CGI) çalıştırılabilirinin ismi php olup genellikle bulunduğu yer /usr/bin/php'dir. PHP kılavuzunun komut satırı bölümünü okuyun ve Terminal'i açıp PHP çalıştırılabilirinin sürümünü öğrenmek için php -v komutunu çalıştırın. phpinfo() işlevine yapılacak bir çağrı da bu bilgiyi gösterecektir.
Tar paketlerini açıp aşağıdaki gibi Apache configure betiğini çalıştırın:
./configure --exec-prefix=/usr \ --localstatedir=/var \ --mandir=/usr/share/man \ --libexecdir=/System/Library/Apache/Modules \ --iconsdir=/System/Library/Apache/Icons \ --includedir=/System/Library/Frameworks/Apache.framework/Versions/1.3/Headers \ --enable-shared=max \ --enable-module=most \ --target=apache
Derleyicinin bazı en iyilemeler yapmasını isterseniz şu satırı da ekleyebilirsiniz:
setenv OPTIM=-O2
PHP 4 kaynak dizinine geçin ve PHP'yi yapılandırın:
./configure --prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--mandir=/usr/share/man \
--with-xml \
--with-apache=/src/apache_1.3.12
Başka eklentilerin de (MySQL, GD, ve benzeri) kurulmasını istiyorsanız onları da buraya ekleyin. --with-apache seçeneğine Apache kaynak dizininizi yazın (örn, /src/apache_1.3.12).
Artık Apache'yi PHP 4 ile birlikte yeniden derleyebilirsiniz:
./configure --exec-prefix=/usr \ --localstatedir=/var \ --mandir=/usr/share/man \ --libexecdir=/System/Library/Apache/Modules \ --iconsdir=/System/Library/Apache/Icons \ --includedir=/System/Library/Frameworks/Apache.framework/Versions/1.3/Headers \ --enable-shared=max \ --enable-module=most \ --target=apache \ --activate-module=src/modules/php4/libphp4.a
libmodphp4.a dosyasının güncel olmadığına dair bir hata iletisi alabilirsiniz. Bu durumda, Apacha kaynak ağacının src/modules/php4 dizinine geçip şu komutu verin: ranlib libmodphp4.a. Bu, ilintileme tablosunu güncel hale getirecektir. Ardından kaynak ağacının kök dizinine dönüp yukarıdaki configure komutunu tekrar çalıştırın. Ardından tekrar make ve make install yapın.
cp php.ini-development /usr/local/bin/php.ini
veya (/usr/local dizinine kurmuyorsanız)
cp php.ini-development /usr/bin/php.ini
.
Aşağıdaki talimatlar MacOS X'de bir PHP modülünü Apache HTTP sunucusuna kurmanıza yardımcı olacak. Bu sürüm MySQL, PostgreSQL ve iODBC veritabanlarından başka, cURL, GD, PDFLib, LDAP, vs. desteğini de içermektedir. Bu talimatlar » Marc Liyanage tarafından sağlanmıştır.
Bunu yaparken dikkatli olun, yoksa Apache HTTP sunucunuzu bozabilirsiniz!
Bilginize: Bu talimatlar sadece Apple tarafından dağıtılan özgün Apache HTTP sunucusunda çalışır. Apache’yi günceller veya yeniden derlerseniz PHP modülünü de yeniden derleyip kurmanız gerekir.
Kurulumu gerçekleştirmek için:
wget http://www2.entropy.ch/download/entropy-php-5.2.4-1.tar.gz
wget
http://www2.entropy.ch/download/entropy-php-5.2.4-1-apache2.tar.gz
Hepsi bu kadar! Artık PHP çalışıyor olmalı. Bunu ev dizininizdeki Sites dizinine dnm.php adında bir dosyayı yerleştirip deneyebilirsiniz. Bu dosyaya şu satırı yazın: <?php phpinfo() ?>
Şimdi tarayıcınızda 127.0.0.1/~kullanıcı_adınız/dnm.php sayfasını açın. PHP modülünüz hakkında bilgi içeren bir durum tablosu görüyor olmalısınız.
Bu bölümde, PHP'nin Mac OS X üzerindeki kurulumlarına özgü bilgilere ve ipuçlarına yer verilmiştir. Mac OS X'in birbirlerinden pek az farklı iki sürümü vardır: İstemci ve Sunucu. Burada PHP'nin her iki sisteme de kurulumundan bahsedilecektir. PHP'nin MacOS 9 ve öncesinde kullanılamadığına dikkat ediniz.
The Windows PHP installer is available from the downloads page at » http://www.php.net/downloads.php. This installs the CGI version of PHP and for IIS, PWS, and Xitami, it configures the web server as well. The installer does not include any extra external PHP extensions (php_*.dll) as you'll only find those in the Windows Zip Package and PECL downloads.
Bilginize: While the Windows installer is an easy way to make PHP work, it is restricted in many aspects as, for example, the automatic setup of extensions is not supported. Use of the installer isn't the preferred method for installing PHP.
First, install your selected HTTP (web) server on your system, and make sure that it works.
Run the executable installer and follow the instructions provided by the installation wizard. Two types of installation are supported - standard, which provides sensible defaults for all the settings it can, and advanced, which asks questions as it goes along.
The installation wizard gathers enough information to set up the php.ini file, and configure certain web servers to use PHP. One of the web servers the PHP installer does not configure for is Apache, so you'll need to configure it manually.
Once the installation has completed, the installer will inform you if you need to restart your system, restart the server, or just start using PHP.
Be aware, that this setup of PHP is not secure. If you would like to have a secure PHP setup, you'd better go on the manual way, and set every option carefully. This automatically working setup gives you an instantly working PHP installation, but it is not meant to be used on online servers.
The Windows PHP installer for later versions of PHP is built using MSI technology using the Wix Toolkit (» http://wix.sourceforge.net/). It will install and configure PHP and all the built-in and PECL extensions, as well as configure many of the popular web servers such as IIS, Apache, and Xitami.
First, install your selected HTTP (web) server on your system, and make sure that it works. Then proceed with one of the following install types.
Run the MSI installer and follow the instructions provided by the installation wizard. You will be prompted to select the Web Server you wish to configure first, along with any configuration details needed.
You will then be prompted to select which features and extensions you wish to install and enable. By selecting "Will be installed on local hard drive" in the drop-down menu for each item you can trigger whether to install the feature or not. By selecting "Entire feature will be installed on local hard drive", you will be able to install all sub-features of the included feature ( for example by selecting this options for the feature "PDO" you will install all PDO Drivers ).
It is not recommended to install all extensions by default, since many other them require dependencies from outside PHP in order to function properly. Instead, use the Installation Repair Mode that can be triggered thru the 'Add/Remove Programs' control panel to enable or disable extensions and features after installation.
The installer then sets up PHP to be used in Windows and the php.ini file, and configures certain web servers to use PHP. The installer will currently configure IIS, Apache, Xitami, and Sambar Server; if you are using a different web server you'll need to configure it manually.
The installer also supports a silent mode, which is helpful for Systems Administrators to deploy PHP easily. To use silent mode:
msiexec.exe /i php-VERSION-win32-install.msi /q
You can control the install directory by passing it as a parameter to the install. For example, to install to e:\php:
msiexec.exe /i php-VERSION-win32-install.msi /q INSTALLDIR=e:\php
You can also specify what features to install. For example, to install the mysqli extension and the CGI executable:
msiexec.exe /i php-VERSION-win32-install.msi /q ADDLOCAL=cgi,ext_php_mysqli
The current list of Features to install is as follows:
MainExecutable - php.exe executable ( no longer available as of PHP 5.2.10/5.3.0; it is now included by default ) ScriptExecutable - php-win.exe executable ext_php_* - the various extensions ( for example: ext_php_mysql for MySQL ) apache13 - Apache 1.3 module apache20 - Apache 2.0 module apache22 - Apache 2,2 module apacheCGI - Apache CGI executable iis4ISAPI - IIS ISAPI module iis4CGI - IIS CGI executable iis4FastCGI - IIS CGI executable NSAPI - Sun/iPlanet/Netscape server module netserve - NetServe Web Server CGI executable Xitami - Xitami CGI executable Sambar - Sambar Server ISAPI module CGI - php-cgi.exe executable PEAR - PEAR installer Manual - PHP Manual in CHM Format
For more information on installing MSI installers from the command line, visit » http://msdn.microsoft.com/en-us/library/aa367988.aspx
To upgrade, run the installer either graphically or from the command line as normal. The installer will read your current install options, remove your old installation, and reinstall PHP with the same options as before. It is recommended that you use this method of keeping PHP updated instead of manually replacing the files in the installation directory.
This section contains instructions for manually installing and configuring PHP on Microsoft Windows. For the instructions on how to use PHP installer to setup and configure PHP and a web server on Windows refer to Windows Installer (PHP 5.2 and later).
Download the PHP zip binary distribution from » PHP for Windows: Binaries and Sources. There are several different versions of the zip package - chose the version that is suitable for the web server being used:
If PHP is used with IIS then choose PHP 5.3 VC9 Non Thread Safe or PHP 5.2 VC6 Non Thread Safe;
If PHP is used with Apache 1 or Apache 2 then choose PHP 5.3 VC6 or PHP 5.2 VC6.
Bilginize: VC9 Versions are compiled with the Visual Studio 2008 compiler and have improvements in performance and stability. The VC9 versions require you to have the » Microsoft 2008 C++ Runtime (x86) or the » Microsoft 2008 C++ Runtime (x64) installed.
Unpack the content of the zip archive into a directory of your choice, for example C:\PHP\. The directory and file structure extracted from the zip will look as below:
Örnek 1 PHP 5 package structure
c:\php | +--dev | | | |-php5ts.lib -- php5.lib in non thread safe version | +--ext -- extension DLLs for PHP | | | |-php_bz2.dll | | | |-php_cpdf.dll | | | |-... | +--extras -- empty | +--pear -- initial copy of PEAR | | |-go-pear.bat -- PEAR setup script | |-... | |-php-cgi.exe -- CGI executable | |-php-win.exe -- executes scripts without an opened command prompt | |-php.exe -- Command line PHP executable (CLI) | |-... | |-php.ini-development -- default php.ini settings | |-php.ini-production -- recommended php.ini settings | |-php5apache2_2.dll -- does not exist in non thread safe version | |-php5apache2_2_filter.dll -- does not exist in non thread safe version | |-... | |-php5ts.dll -- core PHP DLL ( php5.dll in non thread safe version) | |-...
Below is the list of the modules and executables included in the PHP zip distribution:
go-pear.bat - the PEAR setup script. Refer to » Installation (PEAR) for more details.
php-cgi.exe - CGI executable that can be used when running PHP on IIS via CGI or FastCGI.
php-win.exe - the PHP executable for executing PHP scripts without using a command line window (for example PHP applications that use Windows GUI).
php.exe - the PHP executable for executing PHP scripts within a command line interface (CLI).
php5apache2_2.dll - Apache 2.2.X module.
php5apache2_2_filter.dll - Apache 2.2.X filter.
After the php package content has been extracted, copy the php.ini-production into php.ini in the same folder. If necessary, it is also possible to place the php.ini into any other location of your choice but that will require additional configuration steps as described in PHP Configuration.
The php.ini file tells PHP how to configure itself, and how to work with the environment that it runs in. Here are a number of settings for the php.ini file that help PHP work better with Windows. Some of these are optional. There are many other directives that may be relevant to your environment - refer to the list of php.ini directives for more information.
Required directives:
extension_dir = <path to extension directory> - The extension_dir needs to point to the directory where PHP extensions files are stored. The path can be absolute (i.e. "C:\PHP\ext") or relative (i.e. ".\ext"). Extensions that are listed lower in the php.ini file need to be located in the extension_dir.
extension = xxxxx.dll - For each extension you wish to enable, you need a corresponding "extension=" directive that tells PHP which extensions in the extension_dir to load at startup time.
log_errors = On - PHP has an error logging facility that can be used to send errors to a file, or to a service (i.e. syslog) and works in conjunction with the error_log directive below. When running under IIS, the log_errors should be enabled, with a valid error_log.
error_log = <path to the error log file> - The error_log needs to specify the absolute, or relative path to the file where PHP errors should be logged. This file needs to be writable for the web server. The most common places for this file are in various TEMP directories, for example "C:\inetpub\temp\php-errors.log".
cgi.force_redirect = 0 - This directive is required for running under IIS. It is a directory security facility required by many other web servers. However, enabling it under IIS will cause the PHP engine to fail on Windows.
cgi.fix_pathinfo = 1 - This lets PHP access real path info following the CGI Spec. The IIS FastCGI implementation needs this set.
fastcgi.impersonate = 1 - FastCGI under IIS supports the ability to impersonate security tokens of the calling client. This allows IIS to define the security context that the request runs under.
fastcgi.logging = 0 - FastCGI logging should be disabled on IIS. If it is left enabled, then any messages of any class are treated by FastCGI as error conditions which will cause IIS to generate an HTTP 500 exception.
Optional directives
max_execution_time = ## - This directive tells PHP the maximum amount of time that it can spend executing any given script. The default for this is 30 seconds. Increase the value of this directive if PHP application take long time to execute.
memory_limit = ###M - The amount of memory available for the PHP process, in Megabytes. The default is 128, which is fine for most PHP applications. Some of the more complex ones might need more.
display_errors = Off - This directive tells PHP whether to include any error messages in the stream that it returns to the Web server. If this is set to "On", then PHP will send whichever classes of errors that you define with the error_reporting directive back to web server as part of the error stream. For security reasons it is recommended to set it to "Off" on production servers in order not to reveal any security sensitive information that is often included in the error messages.
open_basedir = <paths to directories, separated by semicolon>, e.g. openbasedir="C:\inetpub\wwwroot;C:\inetpub\temp". This directive specified the directory paths where PHP is allowed to perform file system operations. Any file operation outside of the specified paths will result in an error. This directive is especially useful for locking down the PHP installation in shared hosting environments to prevent PHP scripts from accessing any files outside of the web site's root directory.
upload_max_filesize = ###M and post_max_size = ###M - The maximum allowed size of an uploaded file and post data respectively. The values of these directives should be increased if PHP applications need to perform large uploads, such as for example photos or video files.
PHP is now setup on your system. The next step is to choose a web server, and enable it to run PHP. Choose a web server from the table of contents.
In addition to running PHP via a web server, PHP can run from the command line just like a .BAT script. See Command Line PHP on Microsoft Windows for further details.
This section contains notes specific to the ActiveScript installation.
ActiveScript is a Windows only SAPI that enables you to use PHP script in any ActiveScript compliant host, like Windows Script Host, ASP/ASP.NET, Windows Script Components or Microsoft Scriptlet control.
As of PHP 5.0.1, ActiveScript has been moved to the » PECL repository. Bu PECL eklentisi için bir DLL mevcut değildir. Ayrıca, Windows üzerinde kurulum bölümüne de bakınız.
Bilginize: You should read the manual installation steps first!
After installing PHP, you should download the ActiveScript DLL (php5activescript.dll) and place it in the main PHP folder (e.g. C:\php).
After having all the files needed, you must register the DLL on your system. To achieve this, open a Command Prompt window (located in the Start Menu). Then go to your PHP directory by typing something like cd C:\php. To register the DLL just type regsvr32 php5activescript.dll.
To test if ActiveScript is working, create a new file, named test.wsf (the extension is very important) and type:
<job id="test">
<script language="PHPScript">
$WScript->Echo("Hello World!");
</script>
</job>
Save and double-click on the file. If you receive a little window saying "Hello World!" you're done.
Bilginize: In PHP 4, the engine was named 'ActivePHP', so if you are using PHP 4, you should replace 'PHPScript' with 'ActivePHP' in the above example.
Bilginize: ActiveScript doesn't use the default php.ini file. Instead, it will look only in the same directory as the .exe that caused it to load. You should create php-activescript.ini and place it in that folder, if you wish to load extensions, etc.
This section contains PHP installation instructions specific to Microsoft Internet Information Services (IIS).