Sun Solaris'te Sun, iPlanet ve Netscape Sunucuları
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:
- autoconf-2.13
- automake-1.4
- bison-1_25-sol26-sparc-local
- flex-2_5_4a-sol26-sparc-local
- gcc-2_95_2-sol26-sparc-local
- gzip-1.2.4-sol26-sparc-local
- m4-1_4-sol26-sparc-local
- make-3_76_1-sol26-sparc-local
-
mysql-3.23.24-beta (mysql desteği istiyorsanız)
- perl-5_005_03-sol26-sparc-local
- tar-1.13 (GNU tar)
-
PATH ortam değişkeninde gerekli dizinlerin bulunduğundan emin olun (
PATH=.:/usr/local/bin:/usr/sbin:/usr/bin:/usr/ccs/bin
)
ve 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
-
Bu işlem sonucunda oluşan PHP dizinine geçin:
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
-
Bir make ve ardından make install
yapın.
Temel kurulum bitip ilgili benioku dosyalarını da okuduktan sonra bir
kaç adımlık yapılandırma işlemi kalmış olacak.
Sun/iPlanet/Netscape için Yapılandırma Talimatları
Ö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.
CGI ortamı ve php.ini dosyasında önerilen değişiklikler
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
Özel dizin listeleri ve hata sayfaları (PHP >= 4.3.3)
"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_virtual() ve alt istekler (PHP >= 4.3.3)
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!!!