php cile,PHP: Kurulum - Manual

Kurulum

Bu bölüm, kurulum sırasında sık rastlanan sorunlarla ilgili sorular ve

çözümlerden derlenmiştir. PHP hemen hemen tüm işletim sistemlerine

kurulabilmekte ve hemen her HTTP sunucusu ile çalışabilmektedir.

PHP'yi kurmak için Yapılandırma ve Kurulum bölümündeki talimatları

izleyin.

Apache 2'yi çok evreli bir MPM ile üretim ortamında neden

kullanmamalıyım?

PHP üçüncü parti kütüphaneler kullanılarak muhtelif HTTP uygulamaları

geliştirmeyi sağlayan bir yapıştırıcıdır. PHP'nin esnekliği ve gücü

üzerinde çalıştığı platformun gücü ve kararlılığı ile sınırlıdır.

Çalışmak için bir işletim sistemine, HTTP sunucusuna ve 3. parti

modüllere ihtiyaç duyar ve bunlar arasında bir yapıştırıcı gibi

davranır. Bunlardan biri çalışmasını durdurursa sorunu saptayıp çabucak

çözümlemeniz gerekir. PHP'nin üzerinde çalıştığı ortamı, birbirlerinden

bağımsız çalışma evreleri, tamamen ayrı bellek bölümleri ve her istek

için ayrı bir çalışma alanı ile daha da karmaşıklaştırırsanız, PHP'nin

hamuru bir bulamaca dönüşebilir.

Çok evreli bir MPM kullanmak isterseniz, PHP'nin kendi bellek uzayında

çalışmasını sağlayan FastCGI yapılandırması bir çözüm olabilir.

Unix/Windows: php.ini dosyamın yerini bulamıyorum!

Öntanımlı olarak Unix üzerindeki yeri

/usr/local/lib dizinidir. Çoğu kişi bu dosyanın

yerini derleme sırasında --with-config-file-path

seçeneğini kullanarak değiştirmektedir. Siz de isterseniz dosyanın

yerini şöyle değiştirebilirsiniz:

--with-config-file-path=/etc

Böylece kaynak paketindeki php.ini-development dosyası

/etc/php.ini olarak kurulur ve üzerinde

istediğiniz değişiklikleri yapabilirsiniz.

--with-config-file-scan-dir=YOL

Windows'ta php.ini dosyasının öntanımlı yeri Windows dizinidir.

Apache HTTP sunucusu kullanıyorsanız php.ini önce Apache'nin kurulum

dizininde aranır (örn, c:\program files\apache

group\apache). Bu yer aynı makinede çalışan farklı Apache

sürümleri için farklı yerlerde olabilir.

Unix: PHP'yi kurdum, fakat her belge yükleyişimde 'Document Contains No

Data'! (Belge hiç veri içermiyor!) şeklinde bir ileti alıyorum. Ne

yapmalıyım?

Muhtemelen PHP'nin bazı sorunları var ve core dosyası dökümlüyor

olmalı. Bu durumda, sunucunuzun günlük kayıt dosyalarına bakıp sorunu

küçük bir deney ortamında üretmeye çalışın. 'gdb' kullanmayı

biliyorsanız, hata raporunuzda sorun hakkında geliştiricilere çok

yardımcı olacak bir hata izleme çıktısı sağlayabilirsiniz. PHP'yi bir

Apache modülü olarak kullanıyorsanız şunları yapmayı deneyin:httpd sürecini durdurun

gdb httpd

httpd süreçlerini durdurun

> run -X -f /bir/yol/httpd.conf

Ardından soruna sebep olan adresi tarayıcınızla açın.

> run -X -f /bir/yol/httpd.conf

Bir core dosyası dökümleniyorsa gdb size bunun sebebini

söyleyecektir.

Şunu yazın: bt

Hata raporunuza bu geriye doğru hata izleme bilgisini eklemeli ve

raporu » https://bugs.php.net/

adresinden göndermelisiniz.

Eğer betiğinizde düzenli ifade işlevlerini

(

Unix: PHP'yi RPM'leri kullanarak kurdum, fakat Apache, PHP sayfalarını

işlemiyor! Ne yapmalıyım?

Hem Apache hem de PHP'yi RPM paketlerinden kurduğunuz varsayımıyla

httpd.conf dosyanıza aşağıdaki satırların tamamını veya bir kısmını

ekleyin veya başlarındaki # imlerini silip o satırları etkin kılın:

# Ek Modüller

AddModule mod_php.c

AddModule mod_perl.c

# Ek Modüller

LoadModule php_module modules/mod_php.so

LoadModule php5_module modules/libphp5.so

LoadModule perl_module modules/libperl.so

Ve sunucu genelinde geçerli olacak şekilde veya PHP'nin etkin olacağı

sanal konak bölümünde şu satırı ekleyin:

AddType application/x-httpd-php .php

Unix: Apache'yi FrontPage eklenti yamasıyla yamadım ve hemen ardından

PHP çalışmaz hale geldi. PHP, Apache FrontPage eklentileriyle uyumlu

değil mi?

PHP, FrontPage eklentileriyle gayet güzel çalışır. Sorun, FrontPage

yamasının PHP'nin de çalıştığı veri yapılarını değiştirmesidir. FP

yamasını uyguladıktan sonra PHP'yi yeniden derleyerek (make clean;

make) sorunu çözebilirsiniz.

Unix/Windows: PHP'yi kurdum, fakat PHP betiğine tarayıcımla erişmeye

çalıştığımda boş bir sayfa alıyorum.

Tarayıcınıza 'Sayfa kaynağını göster' derseniz PHP betiğinizin kaynak

koduna bakarak sorunun kaynağını bulabilirsiniz. Yani, HTTP sunucusu

betiği yorumlasın diye PHP'ye göndermemiştir. Sunucu yapılandırmasında

birşeyler yanlış gitmiş olabilir. PHP kurulum talimatlarını tekrar

uygulayarak sunucu kurulumunuzu tekrar gözden geçirin.

Unix/Windows: PHP'yi kurdum, fakat PHP betiğine tarayıcımla erişmeye

çalıştığımda sunucudan 500 hatası alıyorum.

Sunucu PHP'yi çalıştırmaya uğraşırken birşeyler yanlış gitmiş. Hataları

görmek için komut satırından PHP çalıştırılabilirinin (Windows'ta

php.exe) bulunduğu dizine geçip php

-i komutunu verin. Eğer PHP çalışırken bir sorun ortaya

çıkıyorsa ne yapılması gerektiği ile ilgili ipuçları içeren bir hata

iletisi gösterilir. Eğer ekranı dolduran bir dolu HTML kodu alıyorsanız

(bu,

Bazı işletim sistemleri: PHP'yi hatasız kurdum fakat Apache'yi

başlatmak istediğimde tanımsız simge hataları aldım:

[mybox:user /src/php5] root# apachectl configtest

apachectl: /usr/local/apache/bin/httpd Undefined symbols:

_compress

_uncompress

Bu sorun PHP'nin kendisi ile değil, MySQL istemci kütüphanesi ile

ilgilidir. Derleme sırasında --with-zlib seçeneğini kullansaydınız bu sorun çıkmayacaktı.

Bu konudan MySQL SSS'sinde de bahsedilmiştir.

Windows: PHP'yi kurdum fakat tarayıcımla bir PHP betiğine erişmek

istediğimde şöyle bir hata alıyorum:

cgi error:

The specified CGI application misbehaved by not

returning a complete set of HTTP headers.

The headers it did return are:

Hata iletisi PHP'nin hiçbir şey çıktılamadan başarısız olduğu anlamına

gelmektedir. Hataları görmek için komut satırından PHP

çalıştırılabilirinin (Windows'ta php.exe)

bulunduğu dizine geçip php -i komutunu verin. Eğer

PHP çalışırken bir sorun ortaya çıkıyorsa ne yapılması gerektiği ile

ilgili ipuçları içeren bir hata iletisi gösterilir. Eğer ekranı

dolduran bir dolu HTML kodu alıyorsanız (bu,

PHP komut satırından düzgün çalışıyorsa betiğe tarayıcınızla tekrar

erişmeyi deneyin. Yine aynı hatayı alıyorsanız sorun şunlardan biri

olabilir:

Yüklemeye çalıştığınız PHP betiği, php.exe,

php5ts.dll, php.ini veya PHP eklentileri gibi

bazı dosyaların izinleri anonim internet kullanıcısının

ISUR_ bunlara erişebilmesine izin

vermiyordur.

Betik dosyası mevcut değildir (veya belge kök dizinine göre sizin

düşündüğünüz yerde değildir). IIS kullanıyorsanız, İnternet

Hizmetleri Yöneticisinde betik eşlemlerini ayarlarken 'dosya mevcut

mu diye bir bakıver' kutusunu işaretlemek suretiyle bu hatayı

yakalayabilirsiniz. Betik dosyasının mevcut olmaması durumunda sunucu

bu hata yerine bir 404 hatası döndürecektir. IIS kullanmanın size ek

bir yararı daha olacak: Betik dosyanız üzerinde NTLanMan izinlerine

dayalı olarak gerekli kimlik doğrulaması da yapılacaktır.

Windows: Tüm talimatları izlememe rağmen PHP ile IIS'yi birlikte

çalıştıramadım!

PHP betiğini çalıştıracak kullanıcıların

php.exe'yi çalıştırabilecek izinlere sahip olup

olmadığına bakın! IIS bunun için kurulumda eklenen bir anonim kullanıcı

kullanır. Bu kullanıcının php.exe'yi çalıştıracak

izne sahip olması gerekir. Ayrıca, kimlik doğrulaması gerektiren

kullanıcıların da php.exe'yi çalıştıracak izne

sahip olması gerekir. Ve IIS4'e PHP'nin bir betik yorumlayıcı olduğunu

da belirtmeniz gerekir. Ek olarak, bu SSS'yi de okumanızı

öneririz.

PHP'yi IIS, PWS, OmniHTTPD veya Xitami ile CGI olarak çalıştırırken şu

hatayı alıyorum: Security Alert! PHP CGI

cannot be accessed directly..

cgi.force_redirect

yönergesine 0 atamalısınız. Öntanımlı değeri

1 olup, php.ini dosyasında bulunduğu satırın

başında bir ; varsa o noktalı virgülü silmeniz

gerekir.

Öntanımlı değer 1 olduğundan değişikliği doğru

php.ini dosyasında yaptığınızdan %100 emin olmalısınız. Daha

ayrıntılı bilgi için bu

SSS'ye bakınız.

Hangi php.ini dosyasının okunduğunu nasıl anlayacağım? Yaptığım

değişikliklerin bir etkisi olmuyor gibi gözüküyor.

php.ini dosyanızın PHP tarafından okunduğundan emin olmak için

Configuration File (php.ini) altında görebilirsiniz.

Böylece dosyayı nereye koyacağınızı bilirsiniz. Eğer listede sadece bir

dizin varsa php.ini dosyanızı bu dizine koymalısınız. php.ini

dosyanız listede gösterilen dizinlerden birindeyse okunacak demektir.

Eğer php.ini okunuyor ve siz PHP'yi bir modül olarak

çalıştırıyorsanız php.ini dosyanızda değişiklik yaptıktan sonra HTTP

sunucunuzu yeniden başlatmayı unutmayınız.

PHP dizinimi Windows'ta PATH değişkenine nasıl

eklerim?

Windows 7, XP, Vista, 2008, 2012 ve üstünde:Denetim Masasına gidip Sistem simgesini açın (Başlat → Denetim

Masası → Sistem).

Gelişmiş sekmesine gidin.

'Ortam Değişkenleri' düğmesine tıklayın.

'Sistem Değişkenleri' panosuna bakın.

Path girdisini bulun (bulmak için listeyi kaydırmanız gerekebilir)

Path girdisine çift tıklayın.

Satırın sonuna bir ';' koyup PHP dizini ekleyin (örnek:

;C:\php).

Tamam düğmesine tıklayın.

Windows 98/Me sistemlerinde ise autoexec.bat

dosyanızı düzenlemeniz gerekecektir:Notepad'i açın (Başlat → Çalıştır ve notepad yazıp enter tuşuna

basın)

C:\autoexec.bat dosyasını açın.

PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;..... satırını bulup satırın

sonuna şunu ekleyin: ;C:\php.

Dosyayı kaydedin ve bilgisayarınızı yeniden başlatın.

Bilginize:

PATH değişkeninde yaptığınız değişikliklerin

uygulanmasını istiyorsanız yukarıdaki işlemleri yaptıktan sonra

bilgisayarınızı yeniden başlatmayı unutmayınız.

PHP kılavuzunda, dosyaların Windows sistem dizinine kopyalanması salık

verilebilir. Bunun sebebi bu dizinin (C:\Windows,

C:\WINNT, vs.) öntanımlı olarak sistem

PATH değişkeninde bulunmasıdır. Windows sistem dizinine

dosya kopyalamak sorunlara yol açması sebebiyle uzun zamandır

önerilmemektedir.

Windows üzerinde PHP'nin php.ini dosyasını kullanabilmesini nasıl

sağlarım?

Bunu yapmanın çeşitli yolları vardır. Apache kullanıyorsanız kurulumla

ilgili talimatları izleyin (Apache 1, Apache 2), aksi takdirde

PHPRC ortam değişkenini atamanız gerekecek:

Windows üzerinde:Denetim Masasına gidip Sistem simgesini açın (Başlat → Ayarlar

→ Denetim Masası → Sistem veya sadece

Başlat → Denetim Masası → Sistem).

Gelişmiş sekmesine gidin.

'Ortam Değişkenleri' düğmesine tıklayın.

'Sistem Değişkenleri' panosuna bakın.

Click on 'Yeni' düğmesine tıklayın ve değişken ismi olarak 'PHPRC',

değer olarak da php.ini dosyanızın bulunduğu yeri yazın (örnek:

C:\php)

Tamam düğmesine tıklayın ve bilgisayarınızı yeniden başlatın.

Windows 98/Me sistemlerinde ise autoexec.bat

dosyanızı düzenlemeniz gerekecektir:Notepad'i açın (Başlat → Çalıştır ve notepad yazıp enter tuşuna

basın)

C:\autoexec.bat dosyasını açın.

Dosyanın sonuna şu satırı ekleyin: set

PHPRC=C:\php (burada C:\php yerine

php.ini dosyanızın bulunduğu dizini yazın). Belirttiğiniz dizinin

boşluk karakteri içermemesine dikkat ediniz. Örneğin, PHP'yi

C:\Program Files\PHP altına kurduysanız bunu

C:\PROGRA~1\PHP şeklinde belirtmelisiniz.

Dosyayı kaydedin ve bilgisayarınızı yeniden başlatın.

PHP ile Apache içerik dili uzlaşımını kullanmak (MultiViews seçeneği)

mümkün mü?

PHP'yi dosya uzantıları ile ilişkilendirirseniz herşey düzgün çalışır.

Bu SSS'de PHP dosyalarını uzantısız ilişkilendirdiğinizi ve içerik

uzlaşımında PHP dosyalarının uzantılarına bakılmaksızın seçilmesini

istediğinizi varsayacağız. Bu durumda, AddType

application/x-httpd-php .php yerine şunları yazın:

AddHandler php5-script php

AddType text/html php

Bu çözüm PHP'nin bir modül olarak çalıştığı Apache 1'de

php-script yakalanmayacağından çalışmayacaktır.

PHP'nin GET ve POST istekleri dışında istekleri işleme sokmaması

sağlanabilir mi?

Hayır. PHP, CONNECT gibi her istek yöntemiyle çalışabilir. Doğru yanıt

durumu

Deny from all

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值