ผมเขียน entry นี้เพื่อที่จะเป็น tuturial เบื้องต้นให้กับ entry เกี่ยวกับ Access control list อีกที โดยดัดแปลง เพิ่มต้มมาจาก http://blog.vee-u.com/2008/02/23/cakephp_acl/ มาเป็นส่วนมาก
เริ่มจากเราไป download CakePHP 1.2.6311B มาจาก http://cakeforge.org/frs/download.php/595/cake_1.2.0.6311-beta.tar.bz2 แล้วก็เอาแกะหีบห่อด้วยคำสั่ง tar xjvf cake_1.2.0.6311-beta.tar.bz2 เราก็จะได้ folder (directory) ชื่อ cake_1.2.0.6311-beta ขึ้นมา. เพื่อที่จะได้เข้าไปใช้ง่ายๆ เราก็สามารถเปลี่ยนชื่อ folder ก่อนได้ เช่น เปลี่ยนไปเป็นชื่อ my_project ด้วยคำสั่ง mv cake_1.2.0.6311-beta my_project เป็นต้น.
เวลาลง CakePHP แล้วต้องเปลี่ยนค่า Salt คืออะไรก็ไม่รู้อะใน app/config/core.php
Configure::write('Security.salt', 'เปลี่ยนค่าตรงนี้');
แล้วก็ตั้งค่า database ใน app/config/database.php แต่ว่าทีแรกไม่มีไฟล์ database.php เราก็ copy มาจาก database.php.default (ด้วยคำสั่ง cp app/config/database.php.default app/config/database.php) ได้เลย แล้วก็แก้ค่าข้างในเอา. ถ้าไม่มี database ก็อาจจะไปสร้างรอไว้ก่อน เช่น สร้าง database ด้วยคำสั่ง mysql -umyuser -pmypassword -e ‘create database my_project’ เป็นต้น
class DATABASE_CONFIG {
var $default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',
'port' => '',
'login' => 'ชื่อผู้ใช้ของ database',
'password' => 'password',
'database' => 'ชื่อ database',
'schema' => '',
'prefix' => '',
'encoding' => ''
);
...
}
จากนั้นถ้าจะใช้ acl ก็ต้องแบบแก้ source code นิดหน่อย ที่ดูแล้วคงเป็น bug (ที่ผม CakePHP ที่ผมนำมาใช้เป็น beta version ด้วย) แก้แบบไม่ยากไปตามเว็บนี้ http://seeknstrike.net/archives/20
เพียงแต่ใส่ uses(’string’) เข้าไปในบรรทัดล่างจาก uses(’set’) ในไฟล์
cake/libs/model/datasources/dbo_source.php ตามนี้
uses('set');
uses('string'); // เพิ่มเข้าไป
ตอนนี้ code ส่วน CakePHP ก็พร้อมแล้ว. แต่ว่า Apache กับ Ubuntu ก็ต้องแก้ๆ หน่อย. ปกติ mod_rewrite ที่จำเป็นสำหรับ CakePHP มากๆ ไม่ได้ถูก enable มาให้แต่แรกเราก็เลยต้องไปแก้. วิธีแก้สามารถอ่านเพิ่มเติมได้ที่ blog entry http://bact.blogspot.com/2008/04/enable-modrewrite-in-apache.html ของ bact. อย่างไรก็ตามผมก็จะเขียนสั้นๆ เท่าที่ผมเข้าใจไว้ด้วย.
เริ่มจากสั่ง sudo a2enmod rewrite
a2enmod เป็นคำสั่งของ Debian ที่ Ubuntu ก็รับมาด้วย เอาไว้แก้ configuration ให้ Apache เรียก mod_rewrite ขั้นตอนต่อไปก็แก้ไฟล์ /etc/apache2/sites-enabled/000-default ใน tag <Directory /var/www/> …. </Directory> มีอยู่บรรทัดนึงเขียนว่า AllowOverride None เราก็ไปแก้เป็น AllowOverride All เสีย. เพื่อที่ CakePHP จะได้ควบคุม mod_rewrite จากไฟล์ .htaccess ได้. หลังจากนั้นก็ restart Apache ด้วยคำสั่ง sudo /etc/init.d/apache restart ก็น่าจะพอใช้ได้.
หลังจากนั้นก็ย้าย my_project เข้าไปใน /var/www ( ด้วยคำสั่ง mv my_project /var/www ). และแก้ folder ของ tmp เสียหน่อย ด้วยคำสั่ง sudo chown -R www-data:www-data /var/www/my_project/app/tmp
เท่านี้ก็น่าจะพอเปิดเว็บดูได้แล้ว โดยเข้าไปดูที่ url: http://localhost/my_project ได้เลย

ถ้าไม่มีข้อความเตือนความผิดพลาด ก็เป็นสัญญาณบอกแล้วว่าพร้อมที่จะเริ่มใช้ CakePHP ในขั้นต่อไปแล้ว ;-).
ป.ล. entry หายไปซะงั้นงงเลย T_T ต้องกลับมา post ใหม่