Bir Zend eğitiminden geçerken şu ifadeyle karşılaştım:
.Htaccess içindeki php_flag ayarlarının sadece mod_php kullanıyorsanız çalıştığını unutmayın.
Birisi bunun ne anlama geldiğini açıklayabilir mi?
Bir Zend eğitiminden geçerken şu ifadeyle karşılaştım:
.Htaccess içindeki php_flag ayarlarının sadece mod_php kullanıyorsanız çalıştığını unutmayın.
Birisi bunun ne anlama geldiğini açıklayabilir mi?
Yanıtlar:
mod_php
Apache modülü olarak PHP anlamına gelir .
Temel olarak, mod_php
bir Apache modülü olarak yüklerken , Apache'nin PHP dosyalarını (bunlar tarafından yorumlanır mod_php
) yorumlamasına izin verir .
DÜZENLEME: Var (en azından) PHP çalıştırmanın iki şekilde, Apache ile çalışırken:
mod_php
) : PHP yorumlayıcısı daha sonra Apache sürecinin içine bir tür "gömülüdür": harici bir PHP işlemi yoktur - bu da Apache ve PHP'nin daha iyi iletişim kurabileceği anlamına gelir .
Ve yorumdan sonra yeniden düzenleyin : CGI kullanmak veya mod_php
size kalmış: bu yalnızca web sunucunuzun yapılandırması ile ilgilidir.
Sunucunuzda şu anda hangi yolun kullanıldığını öğrenmek için, şu çıktıyı kontrol edebilirsiniz phpinfo()
: PHP'nin mod_php
(veya mod_php5
) veya CGI aracılığıyla mı çalıştığını gösteren bir şey olmalıdır .
Ayrıca php_sapi_name()
işleve bir göz atmak isteyebilirsiniz : web sunucusu ile PHP arasındaki arabirim türünü döndürür .
Apache'nizin yapılandırma dosyalarını kontrol ederseniz, kullanırken şuna benzer mod_php
bir LoadModule
satır olmalıdır :
LoadModule php5_module modules/libphp5.so
(Sağdaki dosya adı farklı olabilir - örneğin Windows'ta a olmalıdır .dll
)
mod_php
açık farkla en yaygın yapılandırmadır.
mod_php
gerçek PHP olmadığını söyleyebilirim ; bu sadece bir Apache eklentisidir. Daha doğrusu, yanıta PHP'nin tam olarak ne anlama geldiğini tanımlayarak başlamanız gerektiğini düşünüyorum.
Bu cevap TuxRadar'dan alınmıştır :
PHP'yi web sunucunuz üzerinden çalıştırırken iki farklı seçenek vardır: PHP'nin CGI SAPI'sini kullanarak çalıştırmak veya web sunucusu için bir modül olarak çalıştırmak. Her birinin kendi avantajları vardır, ancak genel olarak modül genellikle tercih edilir.
PHP'yi bir CGI olarak çalıştırmak, temel olarak web sunucunuza PHP çalıştırılabilir dosyasının konumunu söylediğiniz anlamına gelir ve sunucu, bir sayfayı her ziyaret ettiğinizde aradığınız komut dosyasını vererek bu yürütülebilir dosyayı çalıştırır. Bu, bir sayfayı her yüklediğinizde, PHP'nin php.ini'yi okuması ve ayarlarını yapması gerektiği, tüm uzantılarını yüklemesi gerektiği ve ardından komut dosyasını ayrıştırmaya başlaması gerektiği anlamına gelir - çok sayıda tekrarlanan çalışma vardır.
PHP'yi bir modül olarak çalıştırdığınızda, PHP kelimenin tam anlamıyla web sunucunuzun içinde oturur - yalnızca bir kez başlar, ayarlarını ve uzantılarını yalnızca bir kez yükler ve ayrıca oturumlar arasında bilgi depolayabilir. Örneğin, PHP hızlandırıcıları, PHP'nin istekler arasında önbelleğe alınmış verileri kaydedebilmesine güvenir, bu da CGI sürümünü kullanarak imkansızdır.
PHP'yi bir modül olarak kullanmanın bariz avantajı hızdır - CGI'dan bir modüle dönüştürürseniz büyük bir hız artışı göreceksiniz. Pek çok kişi, özellikle Windows kullanıcıları bunun farkında değildir ve utanç verici olan php.exe CGI SAPI'yi kullanmaya devam eder - modül genellikle üç ila beş kat daha hızlıdır.
Yine de CGI sürümünü kullanmanın önemli bir avantajı vardır ve o da, bir sayfayı her yüklediğinizde PHP'nin ayarlarını okmasıdır. PHP bir modül olarak çalışırken, php.ini dosyasında yaptığınız herhangi bir değişiklik, web sunucunuzu yeniden başlatana kadar devreye girmez; bu, çok sayıda yeni ayarı test ediyorsanız ve anında yanıtlar görmek istiyorsanız CGI sürümünü tercih edilebilir kılar.
Sunucunuzun php modüllerinin kurulu olması gerekir, böylece php kodunu ayrıştırabilir.
Eğer ubuntu'daysanız, bunu kolayca yapabilirsiniz.
sudo apt-get install apache2
sudo apt-get install php5
sudo apt-get install libapache2-mod-php5
sudo /etc/init.d/apache2 restart
Aksi takdirde apache'yi php ile derleyebilirsiniz: http://dan.drydog.com/apache2php.html
Sunucunuzun işletim sistemini belirtmeniz, başkalarının daha spesifik yanıt vermesine yardımcı olacaktır.
Bu, PHP'yi bir CGI betiği olarak başlatmak yerine Apache'de bir modül olarak kurmanız gerektiği anlamına gelir.
Sadece bu yanıtları eklemek için mod_php, HTTPD sunucusunda PHP'yi kullanmak için mevcut olan en eski ve en yavaş yöntemdir. Apache HTTPD ve PHP'nin eski sürümlerini çalıştırmadığınız sürece önerilmez. php-fpm ve proxy_cgi tercih edilen yöntemlerdir.