Zend Framework Projenizi Host Etmek
Yıllardır işyerinde Zend Framework kullanıyorduk ve kendi sunucularımızda rahatlıkla projelerimizi host edebiliyorduk. Son projemizi Hostgator’dan aldığım bir sunucuda host etmek icab edince bir handikap ortaya çıktı. Zend Projeleri üç ana klasör içerir; application, library ve public. Projenin webe açık olan klasörü ise sadece public’dir, index.php dosyası public klasörünün altındadır. Diğer klasörlere webden doğruca erişilmeye ihtiyaç yoktur.
Hostgator gibi firmalarda host ayarlarına müdahale etmek malesef mümkün olmadığından web dosyalarınızı size açılan hesaptaki “public_html” klasörüne koymak zorundasınız. Zend projelerindeki bu uyumsuzluğu gidermenin meğer basit bir yolu varmış. Şöyle yapılıyor:
Zend projenizin ana dizinine index.php adıyla bir dosya oluşturun ve içerisine şu kodları yazın:
<?php
define(‘RUNNING_FROM_ROOT’, true);
include ‘public/index.php’;
?>
Yine ana dizine bir tane .htaccess dosyası oluşturun ve içerisine şu ifadeleri yazın:
SetEnv APPLICATION_ENV production
RewriteEngine On
RewriteRule .* index.php
Projenizin tüm dosyalarını artık public_html klasörüne atabilirsiniz. Kod sorunsuz çalışacaktır, fakat bir problem daha var. Projedeki layoutlarda CSS, JS ve imaj referanslarınız düzgün çalışmayacaktır. Çünkü önceden hepsi public klasörünü kök klasör kabul ederek yazılmışlardı, örneğin public/css/style.css dosyasını çağırırken “/css/style.css” diye çağırabiliyorken şimdi “/public/css/style.css” diye çağırmak gerekecek. Eğer projenizin layoutlarında “/” yerine $this->baseUrl gibi bir ifade kullanmaya üşenmediyseniz yaşadınız. Çünkü $this->baseUrl tanımının olduğu yeri düzeltip “/” yerine “/public/” yazarsınız, olur biter.