เว็บโฮสติ้ง Pinkkeyhost :: Support Center

Member Center => PHP & Opensource => ข้อความที่เริ่มโดย: PinkkeyHost ที่ 05 พ.ย. 2006 21:22



หัวข้อ: ข้อแตกต่างระหว่าง PHP แบบ CGI กับแบบ CLI
เริ่มหัวข้อโดย: PinkkeyHost ที่ 05 พ.ย. 2006 21:22
เวบ Linux โดยทั่วไปจะใช้ PHP แบบ CLI (Apache Handler / mod_php4)
สำหรับทาง Pinkkeyhost ใช้ PHP แบบ CGI (suPHP / FastCGI)

ดังนั้นจึงขอแสดงข้อแตกต่างระหว่าง PHP แบบ CGI กับ CLI เพื่อประกอบการใช้งาน

1. Script ทำงานในสิทธิ์ของ user  CLI=Apache / CGI=User
ดังนั้นในการเปิดอ่านและเขียนไฟล์ต่างๆจึงใช้ permission ที่ต่างกัน
CLI - จะใช้ permission ในส่วนของ Group/Other (ที่พบเห็นบ่อยๆว่าตอนติดตั้ง script ต่างๆต้องเข้าไปเปลี่ยน file permission ให้เป็น 777/666)
CGI - จะใช้ permission ในส่วนของ Owner (ซึ่งมาตรฐาน Owner จะเป็น 7/6 อยู่แล้ว จึงไม่จำเป็นต้องใช้ 777/666 ใช้แค่ 755/644 ก็พอ)

2. ไฟล์ต่างๆที่สร้างขึ้นใหม่จาก PHP จะมี Owner เป็น CLI=Apache / CGI=User
CLI - ดังนั้นไฟล์ต่างๆที่ถูกสร้างขึ้นจาก php จะต้องเขียน code เพื่อเปลี่ยน permission ให้เป็น 777/666 เพื่อให้เราสามารถแก้ไข/ลบไฟล์นั้นได้ภายหลัง
CGI - ไฟล์ต่างๆที่ถูกสร้างขึ้นจาก php จะมี Owner เป็นของเราเองเราสามารถแก้ไข/ลบไฟล์นั้นได้ทันที

3. ปัญหาจากการสร้าง Folder ด้วย PHP ในระดับที่ 2
CLI - เนื่องจาก File Owner เป็น Apache ดังนั้นเราจะเสียสิทธิ์ในการจัดการไฟล์ใน Folder ระดับที่ 2 เนื่องจาก Owner ของ Folder ก่อนหน้าไม่ใช่ของเราแต่เป็น Apache
CGI - File Owner เป็นของเราเอง จะสร้าง Folder ด้วย PHP กี่ชั้นก็ไม่มีปัญหา

4. ปรับตั้งค่า PHP ผ่าน .htaccess
CLI - สามารถควบคุมค่าของ PHP ผ่าน .htaccess ได้ หากไม่มีการบังคับค่าไว้ใน httpd.conf
เช่นหากใน httpd.conf ไม่ได้บังคับ php_admin_flag register_globals on|off ไว้ก็จะสามารถใส่ php_flag register_globals on|off ใน .htaccess ได้
CGI - ไม่สามารถควบคุมค่าของ PHP ผ่าน .htaccess หรือ httpd.conf ได้ ต้องกำหนดผ่าน php.ini เท่านั้น เช่น php_flag ต่างๆ, php_value ต่างๆ เช่น register_globals, safe_mode, open_basedir, ... แต่ .htaccess ยังสามารถควบคุมค่าอื่นๆได้ตามปกติเช่น mod_rewrite, password_protect_dir, ...

5. ความเร็วและ Load
CLI - ใช้งาน CPU ตามปกติ
CGI - ใช้งาน CPU สูงกว่าแบบ CLI 5-15%
ส่วนความเร็วในการทำงานเท่าๆกัน

ทั้งนี้ทาง Pinkkeyhost สามารถปรับเลือกการใช้งาน PHP ในโหมด CGI/CLI ให้กับแต่ละ Domain ได้เช่นกัน
หากประสงค์จะใช้งานในโหมดปกติแบบ CLI สามารถแจ้งความประสงค์มาได้หลังจากเปิด Account เป็นที่เรียบร้อยแล้วครับ