CakePHP 是一個遵循慣例優於配置原則的 PHP MVC 框架,支援 PHP 4/5,擁有活躍社群與靈活的 MIT 授權。本文詳細記錄從下載、安裝、配置到建立第一個應用的完整流程。
mod_rewrite 模組官網:cakephp.org(本文以 1.2.3.8166 版為例)
# 解壓至網站根目錄
/wwwRoot/First_App
# Apache DocumentRoot 指向 webroot
DocumentRoot "D:/PHP/wwwRoot/First_App/app/webroot"
app/config/core.php:
// 修改 Security.salt(約 40 字元隨機字串)
Configure::write('Security.salt', 'YourRandomStringHere40CharsLong!!');
app/config/database.php:
// 將 database.php.default 重命名為 database.php
class DATABASE_CONFIG {
var $default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'root',
'password' => '123',
'database' => 'cake',
'prefix' => '',
);
}
app/tmp 目錄權限:確保可寫入(Linux: chmod -R 777 app/tmp)
# httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so # 取消註解
# 允許 .htaccess 覆寫
<Directory "D:/PHP/wwwRoot/First_App/app/webroot">
Options FollowSymLinks
AllowOverride All
</Directory>
修改後重啟 Apache。
瀏覽 https://localhost/,若 4 項檢查全顯示綠色(Security.salt、Database、tmp 可寫、mod_rewrite)即安裝成功。
CREATE TABLE items (
id INT(11) UNSIGNED AUTO_INCREMENT,
name VARCHAR(200),
text VARCHAR(200),
created TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
);
INSERT INTO items (name, text) VALUES ('Item 1', 'Item 1 content');
<?php
class Item extends AppModel {
var $name = 'Item';
}
?>
<?php
class ItemsController extends AppController {
var $name = 'Items';
var $scaffold; // 啟用自動 scaffolding
}
?>
存取 https://localhost/items 即可看到自動生成的列表、新增、編輯、刪除介面。
AppModel、AppController 基類機制hasMany、belongsTo、hasAndBelongsToManyfind() 進階查詢與 containable 行為注意:CakePHP 1.x 已停止維護,新專案建議使用 CakePHP 4.x/5.x,核心 MVC 概念相同但 API 有重大變更。