ภาษา php สำคัญมากครับ กับการใช้
CakePHP เพราะเราจะได้นำมาใช้กันแบบว่าขั้น advance เลยทีเดียว แต่ไม่ต้องกลัวครับ ค่อยๆศึกษาไปได้ ถ้าใจสู้ซะอย่าง จริงๆก็ไม่ได้ advance มากหรอกครับ มันก็มาจากพื้นฐานนี่แหละ แต่ว่าก่อนอื่นเลยผมอยากให้เรามาแก้ค่าคอนฟิกของ php หรือไฟล์ php.ini ให้เป็นไปตามนี้ก่อนครับ
http://www.keng-d.com/content/view/12/4/ เพื่อที่ว่าเมื่อเกิดปัญหาเราจะได้แก้กันง่ายขึ้น และทำให้โปรแกรมเราแข็งแรงด้วยครับ ซึ่งจะทำให้โปรแกรมเรามีภูมคุ้มกันเพื่อไปต่อสู้กับโฮสต์ต่างๆ ที่มีการตั้งค่าต่างๆกัน เมื่อเสร็จแล้วเรามาเริ่มติดตั้งกันก่อนเลยดีกว่าครับ
1.หลังจากโหลดไฟล์
CakePHP เวอร์ชั่น 1.2 มาแล้ว ให้แตกไฟล์ แล้วนำโฟลเดอร์ไปวางไว้ใน root directory ของเว็บเรา กรณีนี้ผมจะตั้งชื่อว่า cakephp12 นะครับ และสมมติว่าผมทำในเครื่องผมเองรันด้วย localhost
2.รัน
CakePHP ผ่าน browser ด้วย url :
http://localhost/cakephp12 จะได้หน้าตาดังรูปที่ 01 ครับ(กรณีนี้ผมใช้เครื่องลีนุกซ์เป็น Desktop และติดตั้ง xampp เป็นเว็บเซิร์ฟเวอร์)
3.การแก้ปัญหาโปรแกรม เราต้องเริ่มจากบนลงล่างถูกต้องมั๊ยครับ เพราะงั้นเรามาดู warning อันแรกกันดีกว่าครับ
Warning (512): /opt/lampp/htdocs/cakephp12/app/tmp/cache/ is not writable [CORE/cake/libs/cache/file.php, line 264]
นั่นหมายความว่าให้เราไปแก้ permission ของโฟลเดอร์ตาม path ดังกล่าวนั่นเอง นั่นก็คือไฟล์ cache ซึ่งเราต้องแก้ให้มันสามารถเขียนได้โดยผู้ใช้ทั่วไปครับ ในที่นี้จะแก้ให้เป็น 777 ให้พิมพ์คำสั่งนี้บน shell ครับ
chmod 0777 /opt/lampp/htdocs/cakephp12/app/tmp/cache(กรณีที่ใช้วินโดว์ ณ ขั้นตอนนี้ไม่ต้องทำนะครับ นอกเสียจากว่าเป็น window server ซึ่งจะมีการตั้งค่าที่ต่างออกไปจากนี้) เมื่อแก้เสร็จแล้วให้กด refresh ที่ browser
4.เมื่อเรา refresh ที่ browser แล้วเราจะได้ผลลัพธ์ดังรูปที่ 02 เราอาจจะเห็น error เพิ่มมาดังนี้
Notice: unserialize() [function.unserialize]: Argument is not a string in /opt/lampp/htdocs/cakephp12/cake/libs/cache/file.php on line 184
เราอย่าเพิ่งตกใจครับ อันนี้ผมคาดว่าน่าจะเป็นบั๊กของ
CakePHP เอง ให้เราไปตามแก้ดังนี้ครับ เปิดเข้าไปในไฟล์ /opt/lampp/htdocs/cakephp12/cake/libs/cache/file.php บันทัดที่ 184 เราจะเห็นโค้ดประมาณนี้ครับ
$data = unserialize($data); ให้แก้เป็น
$data = unserialize(strval($data)); หลังจากนั้นกด refresh ที่ browser ใหม่ครับ
บั๊กตรงจุดนี้นั้นบางครั้งก็ไม่เจอครับ ถ้าหากว่าทาง core หลักของ
CakePHP ได้มีการแก้ไขแล้วก็จะไม่ขึ้น error ดังกล่าว ก็ให้ข้ามไปครับ
5.มาถึงตรงนี้เราจะเห็น ข้อความแจ้งเตือนอีกอันดังนี้ครับ
Notice (1024): Please change the value of 'Security.salt' in app/config/core.php to a salt value specific to your application [CORE/cake/libs/debugger.php, line 522]
หมายความว่าให้เราเข้าไปแก้ค่า Security.salt ในไฟล์ app/config/core.php นั่นเองครับ เมื่อเปิดเข้าไปเราจะเจอดังนี้
Configure::write('Security.salt', 'DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi'); ประมาณบันทัดที่ 153 ให้เราพิมพ์ตัวหนังสือมั่วๆเข้าไปในค่า salt ครับ หรือจะลบแก้ไขยังไงก็ได้ แต่ต้องแก้ครับ เพราะตัวอักษรพวกนี้จะถูกนำไปใช้ใน security hashing methods ครับ เมื่อแก้เสร็จแล้วก็ refresh browser
6.ทีนี้ก็จะเหลือว่า
-Your tmp directory is NOT writable.
-The FileEngine is being used for caching. To change the config edit APP/config/core.php
-Your database configuration file is NOT present.
Rename config/database.php.default to config/database.php
นั่นก็คือ
-ให้แก้ไขโฟลเดอร์ tmp ของเราให้สามารถเขียนได้โดยผู้ใช้ทั่วไป อันนี้ก็ต้องพิมพ์ที่ shell ตามนี้ครับ
chmod 0777 /opt/lampp/htdocs/cakephp12/app/tmp-นั่นก็คือให้เราไขการตั้งค่าคอนฟิกต่างๆในไฟล์ APP/config/core.php ถ้าเราต้องการจะตั้ง แต่ข้อนี้สามารถละได้ครับ
-หมายความว่ามันหาไฟล์ config/database.php ไม่เจอ และให้เราทำการเปลี่ยนชื่อไฟล์ config/database.php.default เป็น config/database.php หลังจากนั้นก็อย่าลืมเปิดไฟล์นี้เข้าไปแก้ไขค่าคอนฟิกต่างๆสำหรับการติดต่อฐานข้อมูลล่ะครับ ให้แก้บริเวณนี้ครับ
var $default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',// โฮสต์ของฐานข้อมูล ปกติตรงนี้จะไม่ได้แก้
'login' => 'root', //ชื่อผู้ใช้ฐานข้อมูล
'password' => '',//รหัสผ่านฐานข้อมูล
'database' => 'cakephp12',// ชื่อฐานข้อมูล ซึ่งตรงนี้อาจจะต้องมีการสร้างฐานข้อมูลมาก่อน
'prefix' => '',// ตรงนี้เป็น prefix ของตาราง อย่างเช่นตาราง user เมื่อ prefix เป็น test_ รวมกันแล้วตารางเราจริงๆในฐานข้อมูลก็จะมีชื่อว่า test_user นั่นเองครับ กรณีทดสอบนี้ผมคิดว่าเรายังไม่ต้องใส่จะทำให้เข้าใจดีกว่าครับ
);
เมื่อแก้ตามนี้แล้วให้กด refresh ที่ browser ครับ จะได้ผลดังรูปที่ 03 ครับ นั่นหมายความว่าเว็บของเราพร้อมที่จะใช้
CakePHP แล้วครับ เย๊ๆๆๆ