在虛擬主機上安裝CakePHP
也很久沒有寫 CakePHP 的文章,稍微來寫一下。
有朋友會需要使用虛擬主機來幫朋友或是客戶等架設網站,若是要用 CakePHP 的話,當然會希望能簡單,安全。
若是直接把整個 CakePHP 解在虛擬主機的 DocumentRoot 下面的話,網站連結就要變成 http://xxxx.com.tw/app/controller/action 這樣子,感覺很奇怪...
且有時候已經有現成的網站,你要用 CakePHP 幫他寫一些功能的話,或許會覺得不知道該怎麼處理。
這裡提供一個我目前使用到的解決的方法。
首先,先把CakePHP下載後解開放入一個目錄中,假設是 CakeSystem 這個目錄好了。
然後我把 CakeSystem/app/webroot 目錄下的東西,作一些修改。
首先是 index.php ,我會先將這個檔案改名字,例如叫做 run.php 。
然後開啟這個檔案修改一下:
if (!defined('ROOT')) {
//define('ROOT', 'FULL PATH TO DIRECTORY WHERE APP DIRECTORY IS LOCATED DO NOT ADD A TRAILING DIRECTORY SEPARATOR';
//You should also use the DS define to seperate your directories
define('ROOT', dirname(__FILE__)."/CakeSystem/");
}
if (!defined('APP_DIR')) {
//define('APP_DIR', 'DIRECTORY NAME OF APPLICATION';
define('APP_DIR', 'app');
}
然後修改一下 .htaccess:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ main.php?url=$1 [QSA,L]
這樣基本上就好了,然後把 webroot 目錄下的東西統統拷貝到 DocumentRoot 下面....
只要虛擬主機有支援 mod_rewrite 應該就可以用 http://xxx.com.tw/controller/action 來執行 cakephp 的程式...
而原來 index.php 等其他的 也不會受到影響...
然後為了安全的部份,我們修改一下 CakeSystem/.htaccess,來禁止所有的人不能直接存取 CakeSystem 裡面的東西.
Order deny,allow
Deny from all
不過在 Dreamhost 或是 public_html 才是網頁 DocumentRoot 的話,當然也可以把 CakeSystem 放在 DocumentRoot 以外的地方,這樣會比較安全...






迴響
目前沒有人留言.