การตั้งค่าเพิ่มเติม
From LimeSurvey Manual
ส่วนนี้จัดทำขึ้นสำหรับผู้ที่ต้องการแก้ไขการตั้งค่าคอนฟิกูเรชันที่ไม่สามารถแก้ไขผ่าน GUI (Graphical User Interface) ของการติดตั้ง LimeSurvey ได้ โปรดทราบว่าการเปลี่ยนแปลงทั้งหมดในไดเรกทอรีรากของ LimeSurvey เป็นความเสี่ยงของคุณเอง อย่างไรก็ตาม หากคุณพบปัญหาหรือต้องการคำแนะนำเพิ่มเติม สามารถเข้าร่วม ฟอรัมสนทนา เพื่อขอความช่วยเหลือจากชุมชน LimeSurvey ได้
บทนำ
หากต้องการแก้ไขการตั้งค่าคอนฟิกูเรชันของการติดตั้ง คุณต้องแก้ไขการตั้งค่าเพิ่มเติม ซึ่งอยู่ในไฟล์ /application/config/config-defaults.php ในไดเรกทอรีรากของ LimeSurvey การตั้งค่าเริ่มต้นของการติดตั้งมาตรฐานอยู่ในไฟล์ config-defaults.php การตั้งค่าบางส่วนสามารถแทนที่ได้โดยใช้กล่องโต้ตอบตั้งค่าโดยรวม ส่วนการตั้งค่าอื่น ๆ ต้องแก้ไขด้วยตนเอง
เมื่อมีการอัปเกรด จะมีเพียงการตั้งค่าใน config-defaults.php เท่านั้นที่เปลี่ยนแปลง ดังนั้น การแก้ไขไฟล์ config.php จะช่วยรักษาการตั้งค่าที่คุณปรับแต่งไว้
หากต้องการอัปเดต/เพิ่มการตั้งค่า LimeSurvey ใน /application/config/config.php คุณต้องอัปเดตอาร์เรย์ config:
'config'=>array(
'debug'=>0,
'debugsql'=>0,
'LimeSurveySetting'=>'New value', // Update default LimeSurvey config here
)
การตั้งค่า Yii
LimeSurvey ใช้เฟรมเวิร์ก Yii ซึ่งมีพารามิเตอร์คอนฟิกูเรชันของตัวเองในไฟล์ application/config/internal.php และ application/config/config.php นอกจากนี้ คุณยังสามารถเข้าถึงการตั้งค่าคอนฟิกูเรชันเฉพาะบางอย่างของ LimeSurvey ได้ผ่านคอนฟิกูเรชันของ Yii
เนื่องจากอาร์เรย์ใน config.php ถูกรวมเข้ากับคอนฟิกทั้งหมด คุณจึงสามารถแทนที่พารามิเตอร์ Yii ใดก็ได้ในไฟล์ config.php
การตั้งค่าเฉพาะของ Yii กำหนดในอาร์เรย์ components:
'components' => array(
'db' => array(
....
),
'Specific settings'=>array(
....
),
),
การตั้งค่าฐานข้อมูล
การตั้งค่าฐานข้อมูลจะถูกเขียนลงใน config.php โดยไฟล์ตัวติดตั้งเมื่อคุณติดตั้ง LimeSurvey เป็นครั้งแรก หากจำเป็น คุณสามารถอัปเดตส่วนนี้ของไฟล์ config.php ได้ โปรดจำไว้ว่าคุณดำเนินการนี้โดยยอมรับความเสี่ยงเอง! ดูเอกสารของ Yii ด้วย และโปรดจำไว้ว่า LimeSurvey รองรับฐานข้อมูลเพียงประเภทต่อไปนี้: mysql, pgsql, dblib, mssql และ sqlsrv
การตั้งค่าเซสชัน
คุณสามารถกำหนดพารามิเตอร์เซสชันบางอย่างใน config.php ได้ (ดูตัวอย่างสองตัวอย่างด้านล่าง) คุณสามารถยกเลิกการคอมเมนต์/เพิ่มส่วนที่ต้องการใน config.php ดูเอกสารของ Yii สำหรับการตั้งค่าอื่น ๆ
ใช้เซสชันแบบตาราง
LimeSurvey สามารถใช้เซสชันแบบตารางได้ คุณจะพบส่วนที่ถูกคอมเมนต์ไว้ในไฟล์ config.php เริ่มต้นที่ถูกสร้างขึ้น หากต้องการใช้เซสชันแบบตาราง ให้ลบ // ที่อยู่หน้าแต่ละบรรทัดออก
'session' => array (
'class' => 'application.core.web.DbHttpSession',
'connectionID' => 'db',
'sessionTableName' => '{{sessions}}',
),
การอัปเดตเซสชันอื่น ๆ
หากคุณใช้ SSL ('https') สำหรับการติดตั้ง LimeSurvey การเพิ่มบรรทัดต่อไปนี้ลงใน config.php จะช่วยเพิ่มความปลอดภัยของเซสชัน:
// Set the cookie via SSL
'session' => array (
'cookieParams' => array(
'secure' => true, // use SSL for cookies
'httponly' => true // Cookies may not be used by other protocols - experimental
),
),
หากต้องการกำหนดโดเมนของคุกกี้ ให้ใช้ไวยากรณ์ต่อไปนี้ใน config.php:
// Set the domain for cookie
'session' => array (
'cookieParams' => array(
'domain' => '.example.org',
),
),
หากคุณติดตั้งหลายอินสแตนซ์บนเซิร์ฟเวอร์เดียวกัน การตั้งชื่อเซสชันที่แตกต่างกันสำหรับแต่ละอินสแตนซ์ของ LimeSurvey จะเร็วและง่ายกว่า ซึ่งอาจจำเป็นสำหรับ IE11 ในบางกรณี (ดู issue 12083)
// Set the name of the session
'session' => array (
'sessionName' => "LimeSurveyN1",
),
การตั้งค่า Request
การตั้งค่า request มีความสำคัญ แต่การตั้งค่าเริ่มต้นได้รับการปรับให้เหมาะสมกับการใช้งาน LimeSurvey แล้ว หากต้องการอ่านเพิ่มเติม โปรดดูเอกสารของ Yii
ตัวอย่างเช่น คุณสามารถแก้ไขคอนฟิกูเรชันการตั้งค่า request ของ LimeSurvey ได้ดังนี้ (โดยยอมรับความเสี่ยงเอง):
// Disable CSRF protection
'request' => array(
'enableCsrfValidation'=>false,
),
// Enforce a certain URL base
'request' => array(
'hostInfo' => 'http://www.example.org/'
),
// Set the cookie domain name and path for CSRF protection, path is used if you have different instance on same domain
'request' => array(
'csrfCookie' => array(
'domain' => '.example.com',
'path' => '/limesurvey/',
)
),
หากคุณต้องการอัปเดตเฉพาะ URL สำหรับอีเมลโทเค็น ให้กำหนดpublicurl ในไฟล์ config.php ของคุณ
อนุญาตให้ใช้เซสชันและการตรวจสอบ CSRF ใน iFrame
การเปิด อนุญาตให้ใช้ IFrame ในการฝังได้ ในการตั้งค่าความปลอดภัยโดยรวม เพียงแต่อนุญาตให้เบราว์เซอร์แสดงแบบสำรวจของคุณใน iframe เท่านั้น เพื่อให้ผู้เข้าร่วมสามารถกรอกและส่งแบบสำรวจภายใน iframe ได้ คุณยังต้องเปลี่ยนการตั้งค่าคุกกี้เซสชันและ CSRF ใน config.php ตามที่อธิบายด้านล่าง คุกกี้ทั้งสองต้องถูกส่งด้วย SameSite=None ซึ่งเบราว์เซอร์จะยอมรับเฉพาะผ่านการเชื่อมต่อ HTTPS ที่ถูกต้องเท่านั้น
อนุญาตให้เริ่มเซสชันใน iframe
คุกกี้เซสชันต้องปลอดภัย (secure ซึ่งต้องใช้การเชื่อมต่อ HTTPS ที่ถูกต้อง) และเป็น httponly และต้องตั้งค่า samesite เป็น None คีย์ใน cookieParams ต้องเขียนด้วยตัวพิมพ์เล็กทั้งหมด
'session' => array (
'sessionName'=>'LS-VBXZZORFJZCAKGYI',
// Uncomment the following lines if you need table-based sessions.
// Note: Table-based sessions are currently not supported on MSSQL server.
// 'class' => 'application.core.web.DbHttpSession',
// 'connectionID' => 'db',
// 'sessionTableName' => '{{sessions}}',
'cookieParams' => array(
'secure' => true,
'httponly' => true,
'samesite' => 'None',
),
),
อนุญาตคุกกี้ csrf ใน iframe
เช่นเดียวกับคุกกี้เซสชัน คุกกี้ CSRF ต้องปลอดภัย (secure) และต้องตั้งค่า sameSite เป็น None โปรดทราบว่าในส่วนนี้คีย์เขียนเป็น sameSite ให้เพิ่มอาร์เรย์ request ทั้งหมดในระดับเดียวกับ session
'request' => array(
'enableCsrfValidation'=>true,
'csrfCookie' => array(
'sameSite' => 'None',
'secure' => true,
),
),
การตั้งค่า URL
หากต้องการเปลี่ยนการตั้งค่า URL เริ่มต้น ให้อัปเดต urlManager:
// Use short URL
'urlManager' => array(
'urlFormat' => 'path',
'showScriptName' => false,
),
คุณยังสามารถเพิ่ม .html หลัง ID ของแบบสำรวจได้ดังนี้:
// Use short URL
'urlManager' => array(
'urlFormat' => 'path',
'rules' => array (
'<sid:\d+>' => array('survey/index','urlSuffix'=>'.html','matchValue'=>true),
),
'showScriptName' => false,
),
สำหรับข้อมูลเพิ่มเติม โปรดดู เอกสารของ Yii
การตั้งค่าบันทึก (Logging)
Yii มีวิธีการสร้างบันทึกหลายรูปแบบ หากต้องการทราบข้อมูลเพิ่มเติม โปรดดู หัวข้อพิเศษเกี่ยวกับการบันทึก โดยค่าเริ่มต้น LimeSurvey ใช้ '1' หรือ '2' ซึ่งอนุญาตให้ผู้ใช้เว็บทุกคนดูบันทึกได้ คุณสามารถสร้างการตั้งค่าของคุณเองได้โดยใช้ Yii โดยตรง
ตัวอย่างเช่น วิธีที่รวดเร็วในการบันทึกข้อผิดพลาดและคำเตือนลงในไฟล์คือ:
return array(
'components' => array(
/* Other component part here 'db' for example */
'log' => array(
'routes' => array(
'fileError' => array(
'class' => 'CFileLogRoute',
'levels' => 'warning, error',
'except' => 'exception.CHttpException.404',
),
),
),
/* Other component part here 'urlManager' for example */
),
/* Final part (with 'runtimePath' 'config' for example) */
);
limesurvey/tmp/runtime/application.log ซึ่งอยู่ในโฟลเดอร์รากของ LimeSurvey.
Runtime path
Runtime path ต้องเป็นไดเรกทอรีที่ "ผู้ใช้เว็บ" สามารถอ่านและเขียนได้ อย่างไรก็ตาม runtime path มีไฟล์ที่อาจมีข้อมูลด้านความปลอดภัยซึ่งอยู่ในพื้นที่ที่เข้าถึงได้ผ่านเว็บสาธารณะ LimeSurvey เก็บไฟล์เหล่านี้ไว้ในไดเรกทอรี temp ของไดเรกทอรีรากของ LimeSurvey เพื่อป้องกันการเข้าถึงข้อมูลสำคัญดังกล่าว คุณสามารถตั้งค่า runtime path ให้อยู่นอกพื้นที่เข้าถึงเว็บสาธารณะได้โดยแก้ไขบรรทัดที่เกี่ยวข้องในไฟล์ /application/config/config.php:
return array(
'components' => array(
[…]
'runtimePath'=>'/var/limesurvey/runtime/',
'config'=>array(
[…]
)
)
)
การตั้งค่าทั่วไป
- sitename: ตั้งชื่อให้เว็บไซต์แบบสำรวจของคุณ ชื่อนี้จะปรากฏในภาพรวมรายการแบบสำรวจและส่วนหัวของการดูแลระบบ ค่าเริ่มต้นคือ 'LimeSurvey' และสามารถเขียนทับได้ในกล่องโต้ตอบการตั้งค่าโดยรวม หรือแก้ไขใน config.php
- siteadminemail: นี่คือที่อยู่อีเมลเริ่มต้นของผู้ดูแลเว็บไซต์ และใช้สำหรับข้อความของระบบและตัวเลือกการติดต่อ การตั้งค่านี้ใช้เป็นค่าเริ่มต้นเท่านั้น และสามารถเขียนทับได้ในกล่องโต้ตอบการตั้งค่าโดยรวม
- showEmailInError: ใช้อีเมลของผู้ดูแลเว็บไซต์เริ่มต้น (siteadminemail) สำหรับลิงก์ mailto ในหน้าข้อผิดพลาด ปิดการใช้งานเพื่อแสดงเฉพาะชื่อผู้ดูแลระบบ ค่าเริ่มต้นนี้ช่วยหลีกเลี่ยงสแปมที่ส่งไปยังอีเมลของผู้ดูแลระบบมากขึ้น
- siteadminbounce: นี่คือที่อยู่อีเมลที่จะรับอีเมลตีกลับ การตั้งค่านี้ใช้เป็นค่าเริ่มต้นเท่านั้น และสามารถเขียนทับได้ด้วยกล่องโต้ตอบการตั้งค่าโดยรวม
- siteadminname: ชื่อจริงของผู้ดูแลเว็บไซต์ การตั้งค่านี้ใช้เป็นค่าเริ่มต้นเท่านั้น และสามารถเขียนทับได้ในกล่องโต้ตอบการตั้งค่าโดยรวม)
- proxy_host_name: นี่คือชื่อโฮสต์ของพร็อกซีเซิร์ฟเวอร์ของคุณ (ต้องระบุหากคุณอยู่หลังพร็อกซีและต้องการอัปเดต LimeSurvey โดยใช้ การปรับปรุงอย่างง่าย)
- proxy_host_port: นี่คือพอร์ตของพร็อกซีเซิร์ฟเวอร์ของคุณ (ต้องระบุหากคุณอยู่หลังพร็อกซีและต้องการอัปเดต LimeSurvey โดยใช้ การปรับปรุงอย่างง่าย)
ความปลอดภัย
- maxLoginAttempt: นี่คือจำนวนครั้งที่ผู้ใช้สามารถป้อนรหัสผ่านที่ถูกต้องได้ ก่อนที่ที่อยู่ IP ของผู้ใช้จะถูกบล็อก/ล็อกออก ค่าเริ่มต้นคือ 3 และสามารถแก้ไขได้จาก config.php
- timeOutTime: หากผู้ใช้ป้อนรหัสผ่านไม่ถูกต้องครบ <maxLoginAttempt> ครั้ง ผู้ใช้จะถูกล็อกออกเป็นเวลา <timeOutTime> วินาที ค่าเริ่มต้นคือ 10 นาที และสามารถแก้ไขได้จาก config.php
- maxLoginAttemptParticipants: นี่คือจำนวนครั้งที่ผู้เข้าร่วมสามารถป้อนโทเค็นที่ถูกต้องได้ ก่อนที่ที่อยู่ IP ของผู้เข้าร่วมจะถูกบล็อก/ล็อกออก ค่าเริ่มต้นคือ 3 และสามารถแก้ไขได้จาก config.php
- timeOutParticipants: หากผู้เข้าร่วมป้อนโทเค็นไม่ถูกต้องครบ <maxLoginAttemptParticipants> ครั้ง ผู้เข้าร่วมจะถูกล็อกออกเป็นเวลา <timeOutParticipants> วินาที ค่าเริ่มต้นคือ 10 นาที และสามารถแก้ไขได้จาก config.php
- surveyPreview_require_Auth: ตั้งค่าเป็น true โดยค่าเริ่มต้น หากคุณตั้งค่านี้เป็น 'false' ใครก็ได้จะสามารถทดสอบแบบสำรวจของคุณโดยใช้ URL แบบสำรวจ โดยไม่ต้องเข้าสู่ระบบแผงควบคุมการดูแลระบบ และไม่ต้องเปิดใช้งานแบบสำรวจก่อน การตั้งค่านี้เป็นค่าเริ่มต้นและสามารถเขียนทับได้ในกล่องโต้ตอบการตั้งค่าโดยรวม หรือแก้ไขใน config.php
- usercontrolSameGroupPolicy: ตั้งค่าเป็น true โดยค่าเริ่มต้น โดยค่าเริ่มต้น ผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบซึ่งกำหนดไว้ในส่วนติดต่อการจัดการของ LimeSurvey จะเห็นได้เฉพาะผู้ใช้ที่ตนสร้างขึ้น หรือผู้ใช้ที่อยู่ในกลุ่มเดียวกันอย่างน้อยหนึ่งกลุ่ม ค่าเริ่มต้นสามารถเขียนทับได้ในกล่องโต้ตอบการตั้งค่าโดยรวม หรือแก้ไขใน config.php
- demoMode: หากตั้งค่าตัวเลือกนี้เป็น 'true' ใน config.php LimeSurvey จะเข้าสู่โหมดสาธิต โหมดสาธิตจะเปลี่ยนแปลงสิ่งต่อไปนี้:
- ปิดการใช้งานการเปลี่ยนรายละเอียดและรหัสผ่านของผู้ใช้ผู้ดูแลระบบ;
- ปิดการใช้งานการอัปโหลดไฟล์ในตัวแก้ไขเทมเพลต;
- ปิดการใช้งานการส่งอีเมลเชิญและอีเมลเตือน;
- ปิดการใช้งานการสร้างดัมพ์ฐานข้อมูล;
- ปิดการใช้งานความสามารถในการแก้ไขการตั้งค่าโดยรวมต่อไปนี้: ชื่อเว็บไซต์ ภาษาเริ่มต้น โหมดแก้ไข HTML เริ่มต้น ตัวกรอง XSS
- forcedsuperadmin: อาร์เรย์ของหมายเลขผู้ใช้ที่มีสิทธิ์ทั้งหมดบน LimeSurvey การตั้งค่านี้สามารถอัปเดตได้ในไฟล์ config.php เท่านั้น สิทธิ์ของผู้ใช้นี้ไม่สามารถแก้ไขได้ในสิทธิ์โดยรวมสำหรับผู้ใช้ แม้โดยซูเปอร์แอดมินแบบบังคับคนอื่น โดยค่าเริ่มต้น ผู้ใช้ที่มีสิทธิ์นี้คือผู้ใช้ที่มีหมายเลข: 1 ซึ่งเป็นผู้ใช้คนแรกที่สร้างขึ้นทันทีหลังการติดตั้ง
- force_ssl: บังคับให้ LimeSurvey ทำงานผ่าน HTTPS หรือบล็อก HTTPS ดู บังคับใช้ HTTPS ใน GUI การดูแลระบบของการตั้งค่าโดยรวม
- ssl_emergency_override: การตั้งค่านี้บังคับให้ปิด SSL หากคุณเปิด HTTPS/SSL ในการตั้งค่าโดยรวมแต่เซิร์ฟเวอร์ของคุณไม่ได้เปิดใช้งาน HTTPS วิธีเดียวที่จะปิดได้คือการเปลี่ยนค่าในฐานข้อมูลโดยตรง การตั้งค่านี้ช่วยให้คุณบังคับปิด HTTPS ในขณะที่เปลี่ยนการตั้งค่าโดยรวมสำหรับ Force Secure ค่านี้ควรเป็น false เสมอ ยกเว้นในกรณีฉุกเฉินที่คุณเปลี่ยนเป็น true จนกว่าจะแก้ไขปัญหาได้ การตั้งค่านี้สามารถตั้งค่าได้ผ่านไฟล์ config.php เท่านั้น
- ssl_disable_alert: ปิดการแจ้งเตือนสำหรับซูเปอร์แอดมินเกี่ยวกับ SSL ที่ไม่ได้บังคับใช้ หากคุณไม่สามารถหรือไม่ต้องการบังคับใช้ SSL จริง ๆ การตั้งค่านี้สามารถตั้งค่าได้ผ่านไฟล์ config.php เท่านั้น
- allow_unserialize_attributedescriptions: อนุญาตให้ยกเลิกการซีเรียลไลซ์ (ด้วยฟังก์ชัน unserialize ของ PHP) แอตทริบิวต์ของโทเค็นเมื่อนำเข้าหรืออ่านออบเจ็กต์แบบสำรวจ ข้อมูลแอตทริบิวต์ของโทเค็นถูกบันทึกเป็น JSON หากคุณนำเข้าไฟล์แบบสำรวจจาก LimeSurvey เวอร์ชันเก่ามากและจำเป็นต้องได้แอตทริบิวต์ของโทเค็น คุณต้องเปิดใช้งานการตั้งค่านี้ คำเตือน: การยกเลิกการซีเรียลไลซ์อาจทำให้โค้ดถูกโหลดและเรียกใช้งานจากการสร้างอ็อบเจ็กต์และการโหลดอัตโนมัติ และผู้ประสงค์ร้ายอาจใช้ช่องโหว่นี้ได้ การตั้งค่านี้สามารถตั้งค่าได้ผ่านไฟล์ config.php เท่านั้น
- allow_unserialize_attachments: อนุญาตให้ยกเลิกการซีเรียลไลซ์ (ด้วยฟังก์ชัน unserialize ของ PHP) แอตทริบิวต์ไฟล์แนบเมื่อนำเข้าแบบสำรวจ ใน limesurvey 6.16.17: แอตทริบิวต์ไฟล์แนบเปลี่ยนจาก serialize เป็น json_encode หากคุณต้องการเก็บไฟล์แนบไว้เมื่อนำเข้าไฟล์ LSS เก่า คุณต้องอนุญาตการตั้งค่านี้ คำเตือน: การยกเลิกการซีเรียลไลซ์อาจทำให้โค้ดถูกโหลดและเรียกใช้งานจากการสร้างอ็อบเจ็กต์และการโหลดอัตโนมัติ และผู้ประสงค์ร้ายอาจใช้ช่องโหว่นี้ได้ การตั้งค่านี้สามารถตั้งค่าได้ผ่านไฟล์ config.php เท่านั้น
- twig_getConfig_extraallowlist: อนุญาตให้ระบุองค์ประกอบเพิ่มเติมสำหรับฟังก์ชัน getConfig ใน twig LimeSurvey อนุญาตการตั้งค่าที่จำเป็นและใช้บ่อยส่วนใหญ่อยู่แล้ว แต่คุณอาจต้องการเพิ่มเติม หากต้องการอนุญาต 'securesetting' และ 'anothersetting' ให้ตั้งค่านี้เป็น
['securesetting','anothersetting']ดังนี้'twig_getConfig_extraallowlist' => ['securesetting','anothersetting']การตั้งค่านี้สามารถตั้งค่าได้ผ่านไฟล์ config.php เท่านั้น
การป้องกัน Cross-site scripting (XSS)
LimeSurvey ไม่อนุญาตให้ผู้ใช้ใด ๆ ใส่สคริปต์ในหน้าการดูแลระบบ หากคุณพบวิธีเพิ่มสคริปต์ XSS ในหน้าการดูแลระบบโดยผู้ใช้ใด ๆ โปรดตรวจสอบนโยบายความปลอดภัยของเรา
สคริปต์ในหน้าสาธารณะถูกจัดการด้วยการตั้งค่าตัวกรอง XSS
- filterxsshtml: การตั้งค่านี้เปิดใช้งานการกรองแท็ก HTML ที่น่าสงสัยซึ่งอยู่ภายในแบบสำรวจ กลุ่ม คำถาม และข้อความคำตอบในส่วนติดต่อการดูแลระบบ ตั้งค่าเป็น 'false' เฉพาะเมื่อคุณเชื่อถือผู้ใช้ที่คุณสร้างขึ้นสำหรับการดูแลระบบ LimeSurvey อย่างเต็มที่ และต้องการอนุญาตให้ผู้ใช้เหล่านี้ใช้ Javascript, Flash Movies ฯลฯ ได้ HTML ของซูเปอร์แอดมินจะไม่ถูกกรองเลย ค่าเริ่มต้นสามารถเขียนทับได้ในกล่องโต้ตอบการตั้งค่าโดยรวม
- filterxsshtml_forcedall: บังคับให้
filterxsshtmlเป็น true สำหรับผู้ใช้ทั้งหมด ปิดการอัปเดตใน GUI การดูแลระบบ และเปิดใช้งานการกรองแท็ก HTML ที่น่าสงสัยสำหรับซูเปอร์แอดมินด้วย - filterxsshtml_allowforcedsuperadmin: ใช้เฉพาะเมื่อ
filterxsshtml_forcedallเป็น true อนุญาตให้forcedsuperadmin(โดยค่าเริ่มต้นคือผู้ใช้ผู้ดูแลระบบหมายเลข 1) เพิ่มสคริปต์และ HTML ใดก็ได้ - disablescriptwithxss: อนุญาตให้อัปเดตสคริปต์ในคำถาม: โดยค่าเริ่มต้นเป็น true: ทำตามกฎ XSS ตั้งค่าเป็น false เพื่ออนุญาตสำหรับผู้ใช้ทั้งหมด ค่าเริ่มต้นสามารถเขียนทับได้ในกล่องโต้ตอบการตั้งค่าโดยรวม
- filterxsshtml_enablescript: ใช้เฉพาะเมื่อ filterxsshtml_forcedall เป็น true เปิดใช้งานสคริปต์ของคำถามสำหรับผู้ใช้เฉพาะ:
gui: อนุญาตให้อัปเดตการตั้งค่าผ่าน GUI;superadmin: เฉพาะซูเปอร์แอดมิน;forcedsuperadmin: เฉพาะ forced superadmin; โดยค่าเริ่มต้น: ไม่มีผู้ใช้ใดและไม่อนุญาตให้อัปเดตผ่าน GUI
อนุญาตการอัพโหลดไฟล์
- allowedthemeimageformats : ประเภทไฟล์รูปภาพที่อนุญาตให้อัปโหลดในส่วนธีม โดยค่าเริ่มต้นไฟล์ SVG จะถูกปิดใช้งานเนื่องจากอาจเกิดการโจมตีแบบ XSS
- allowedthemeuploads : ประเภทไฟล์อื่น ๆ ที่อนุญาตให้อัปโหลดในส่วนธีม (ไฟล์ zip)
- allowedresourcesuploads : ประเภทไฟล์ที่อนุญาตให้อัปโหลดในส่วนทรัพยากร และด้วยตัวแก้ไข HTML
- allowedpluginuploads : ประเภทไฟล์ที่อนุญาตเมื่ออัปโหลดไฟล์ zip ของปลั๊กอิน
เพียงป้อนสตริงของนามสกุลไฟล์ที่คั่นด้วยเครื่องหมายจุลภาค ตัวอย่างเช่น:
'allowedthemeimageformats' => 'jpg,jpeg,gif,png,webm,svg',
คำเตือน: โปรดระมัดระวังทุกครั้งเมื่ออนุญาตให้อัปโหลดไฟล์ เพราะอาจเกิดการกระทำที่เป็นอันตรายได้
ปลั๊กอิน
- usePluginWhitelist : หากเป็นจริง ปลั๊กอินที่ไม่อยู่ในรายการอนุญาต (ดู 'pluginWhitelist') จะไม่สามารถติดตั้งหรือโหลดได้ ซึ่งอาจทำให้ปลั๊กอินที่ติดตั้งไว้แล้วถูกปิดใช้งาน
- pluginWhitelist : รายชื่อปลั๊กอินที่อนุญาตให้ติดตั้งและโหลดเมื่อ 'usePluginWhitelist' เป็นจริง ปลั๊กอินหลักจะอยู่ในรายการอนุญาตโดยปริยาย
- corePluginBlacklist : รายชื่อปลั๊กอินหลักที่ไม่อนุญาตเมื่อ 'usePluginWhitelist' เป็นจริง
- disablePluginUpload : เมื่อตั้งค่านี้เป็นจริง ฟีเจอร์ "Plugin Upload" จะถูกปิดใช้งาน
การควบคุมโฮสต์
- allowedHosts : เพื่อป้องกัน Host Header Injection คุณสามารถกำหนดโฮสต์ที่อนุญาตสำหรับทุกการดำเนินการได้ หากคุณใช้โฮสต์ต่างกันสำหรับหน้าสาธารณะและหน้าผู้ดูแลระบบ คุณต้องกำหนดทั้งสองโฮสต์เป็นโฮสต์ที่อนุญาต
'config'=>array(
....
, // Update default LimeSurvey config here
'allowedHosts' => [
'survey.example.org',
'proxy.survey.example.com',
'example.limesurvey.org',
],
),
ทรัพยากร
- iSessionExpirationTime: กำหนดเวลาเป็นวินาทีที่เซสชันของแบบสำรวจจะหมดอายุ ใช้ได้เฉพาะเมื่อคุณใช้เซสชันที่เก็บในฐานข้อมูล หากคุณใช้เซสชันฐานข้อมูล ให้เปลี่ยนพารามิเตอร์ใน config.php หรือแทนที่ค่าเริ่มต้นจากกล่องโต้ตอบตั้งค่าโดยรวม
- memory_limit: กำหนดจำนวนหน่วยความจำที่ LimeSurvey เข้าถึงได้ เป็นเมกะไบต์ ค่าเริ่มต้นคือ '256' หากคุณพบข้อผิดพลาดหมดเวลา หรือมีปัญหาในการสร้างสถิติหรือส่งออกไฟล์ ให้เพิ่มขีดจำกัดนี้เป็น '512' หรือสูงกว่า หากเว็บเซิร์ฟเวอร์ของคุณกำหนดขีดจำกัดที่สูงกว่าไว้ใน php.ini การตั้งค่านี้จะถูกละเว้น
หากต้องการเพิ่มขีดจำกัดหน่วยความจำเป็น 128M คุณอาจลองเพิ่มสิ่งต่อไปนี้:
- memory_limit = 128M ในไฟล์ php.ini หลักของเซิร์ฟเวอร์ (แนะนำ หากคุณมีสิทธิ์เข้าถึง)
- memory_limit = 128M ในไฟล์ php.ini ที่ไดเรกทอรีรากของ LimeSurvey
- php_value memory_limit 128M ในไฟล์ .htaccess ที่ไดเรกทอรีรากของ LimeSurvey
- max_execution_time: กำหนดจำนวนวินาทีที่สคริปต์ได้รับอนุญาตให้ทำงาน หากเกินเวลานี้ สคริปต์จะส่งข้อผิดพลาดร้ายแรงกลับมา เพื่อให้สามารถส่งออกข้อมูลแบบสำรวจและสถิติขนาดใหญ่ได้ LimeSurvey จะพยายามตั้งค่านี้เป็น 1200 วินาทีโดยค่าเริ่มต้น คุณสามารถกำหนดเวลาให้มากขึ้นหรือน้อยลงได้ตามต้องการ เข้าถึงได้ผ่านไฟล์การตั้งค่า php เท่านั้น
รูปลักษณ์
- repeatheadings: สำหรับ ประเภทคำถาม แบบอาร์เรย์ คุณมักจะมีคำถามย่อยจำนวนมาก ซึ่งเมื่อแสดงบนหน้าจอจะยาวเกินหนึ่งหน้า การตั้งค่านี้ให้คุณกำหนดว่าจะแสดงคำถามย่อยกี่ข้อก่อนที่จะแสดงส่วนหัวของคำถามซ้ำ ค่าที่เหมาะสมคือประมาณ 15 หากไม่ต้องการให้ส่วนหัวซ้ำเลย ให้ตั้งเป็น 0 การตั้งค่านี้จะถูกแทนที่ในกล่องโต้ตอบตั้งค่าโดยรวม
- minrepeatheadings: จำนวนคำถามย่อยที่เหลืออยู่ขั้นต่ำที่ต้องมีก่อนที่จะแสดงส่วนหัวซ้ำในคำถามแบบอาร์เรย์ ค่าเริ่มต้นคือ 3 และสามารถแก้ไขได้ใน config.php
- defaulttheme: การตั้งค่านี้กำหนดธีมเริ่มต้นที่ใช้สำหรับ 'รายการสาธารณะ' ของแบบสำรวจ การตั้งค่านี้สามารถถูกแทนที่ได้ในกล่องโต้ตอบตั้งค่าโดยรวม หรือแก้ไขใน config.php
- defaulthtmleditormode: กำหนดโหมดเริ่มต้นสำหรับตัวแก้ไข HTML ที่ติดตั้งมาในระบบ การตั้งค่านี้สามารถถูกแทนที่ได้ในกล่องโต้ตอบตั้งค่าโดยรวม หรือแก้ไขใน config.php ค่าที่ใช้ได้คือ:
- 'inline' - แทนที่ช่องข้อมูลด้วยตัวแก้ไข HTML แบบอินไลน์ ช้าแต่สะดวกและใช้งานง่าย;
- 'popup' - เพิ่มไอคอนที่เรียกตัวแก้ไข HTML ในป๊อปอัปเมื่อจำเป็น เร็วกว่า แต่โค้ด HTML จะแสดงในแบบฟอร์ม;
- 'none'- ไม่มีตัวแก้ไข HTML;
- column_style: กำหนดวิธีแสดงคอลัมน์สำหรับคำตอบของแบบสำรวจเมื่อใช้ display_columns สามารถแก้ไขได้ในไฟล์ config.php ค่าที่ใช้ได้คือ:
- 'css' - ใช้วิธี CSS วิธีใดวิธีหนึ่งเพื่อสร้างคอลัมน์ (ดูรายละเอียดในไฟล์สไตล์ชีตของเทมเพลต);
- 'ul' - คอลัมน์จะแสดงเป็นรายการแบบไม่มีลำดับหลายรายการที่ลอยอยู่ (ค่าเริ่มต้น);
- 'table' - ใช้เลย์เอาต์แบบตารางทั่วไป;
- NULL - ปิดการใช้งานคอลัมน์
ภาษาและเวลา
- defaultlang: ควรตั้งเป็นภาษาเริ่มต้นที่ใช้ในสคริปต์ผู้ดูแลระบบของคุณ และเป็นการตั้งค่าภาษาเริ่มต้นในรายการแบบสำรวจสาธารณะด้วย การตั้งค่านี้สามารถถูกแทนที่ได้ในกล่องโต้ตอบตั้งค่าโดยรวม หรือแก้ไขใน config.php
- timeadjust: หากเว็บเซิร์ฟเวอร์ของคุณอยู่ในเขตเวลาที่ต่างจากสถานที่ที่แบบสำรวจของคุณใช้งาน ให้ใส่ผลต่างระหว่างเซิร์ฟเวอร์กับเขตเวลาของคุณที่นี่ ตัวอย่างเช่น ฉันอาศัยอยู่ในออสเตรเลีย แต่ใช้เว็บเซิร์ฟเวอร์ในสหรัฐอเมริกา เว็บเซิร์ฟเวอร์ช้ากว่าเขตเวลาท้องถิ่นของฉัน 14 ชั่วโมง ดังนั้นการตั้งค่าของฉันที่นี่คือ "14" กล่าวอีกนัยหนึ่งคือเพิ่ม 14 ชั่วโมงให้กับเวลาของเว็บเซิร์ฟเวอร์ การตั้งค่านี้สำคัญเป็นพิเศษเมื่อแบบสำรวจบันทึกเวลาของการตอบ การตั้งค่านี้สามารถถูกแทนที่ได้ในกล่องโต้ตอบตั้งค่าโดยรวม หรือแก้ไขใน config.php
พฤติกรรมของแบบสำรวจ
- deletenonvalues: ใช้ฟีเจอร์นี้ด้วยความระมัดระวัง โดยค่าเริ่มต้น (ค่า 1) คำถามที่ไม่เกี่ยวข้องจะถูกตั้งเป็น NULL ในฐานข้อมูล เพื่อให้มั่นใจว่าข้อมูลในฐานข้อมูลของคุณสอดคล้องกันภายใน อย่างไรก็ตาม มีบางกรณีที่พบได้น้อยซึ่งคุณอาจต้องการเก็บค่าที่ไม่เกี่ยวข้องไว้ ซึ่งในกรณีนี้คุณสามารถตั้งค่าเป็น 0 ได้ ตัวอย่างเช่น คุณถามเพศของผู้ชายคนหนึ่ง แต่เขาตอบ 'หญิง' โดยไม่ตั้งใจ แล้วตอบคำถามเฉพาะสำหรับผู้หญิง (คำถามที่มีเงื่อนไขว่าเป็นผู้หญิง จึงเกี่ยวข้องกับผู้หญิงเท่านั้น) จากนั้นเขาก็รู้ว่าตนเองผิดพลาด ย้อนกลับไป ตั้งเพศเป็น 'ชาย' และทำแบบสำรวจต่อ ตอนนี้คำถามเฉพาะสำหรับผู้หญิงจึงไม่เกี่ยวข้อง หาก
$deletenonvalues==1ค่าที่ไม่เกี่ยวข้องเหล่านั้นจะถูกล้าง (เป็น NULL) ในฐานข้อมูล หาก$deletenonvalues==0คำตอบที่ผิดพลาดของเขาจะไม่ถูกลบ จึงยังคงอยู่ในฐานข้อมูลเมื่อคุณวิเคราะห์ข้อมูล - shownoanswer: เมื่อคำถามประเภทปุ่มตัวเลือก/รายการเลือกที่มีคำตอบที่แก้ไขได้ (เช่น คำถามแบบรายการ อาร์เรย์) ไม่ได้ตั้งเป็นจำเป็น และ 'shownoanswer' ถูกตั้งเป็น 1 ระบบจะแสดงตัวเลือก 'ไม่มีคำตอบ' เพิ่มเติม เพื่อให้ผู้เข้าร่วมเลือกที่จะไม่ตอบคำถามได้ บางคนไม่ต้องการให้มีตัวเลือกนี้ การตั้งค่านี้สามารถถูกแทนที่ได้จากกล่องโต้ตอบตั้งค่าโดยรวม หรือแก้ไขใน config.php ค่าที่ใช้ได้คือ:
- '0': ไม่;
- '1': ใช่;
- '2': ผู้ดูแลแบบสำรวจสามารถเลือกได้
- printanswershonorsconditions: การตั้งค่านี้กำหนดว่าฟีเจอร์ printanswers จะแสดงรายการจากคำถามที่ถูกซ่อนด้วยการแตกกิ่งตามเงื่อนไขหรือไม่ (ค่าเริ่มต้น: 1 = ซ่อนคำตอบจากคำถามที่ถูกซ่อนด้วยเงื่อนไข)
- showpopups: แสดงข้อความป๊อปอัปหากคำถามที่จำเป็นหรือคำถามแบบมีเงื่อนไขถูกตอบไม่ถูกต้อง:
- '2' = กำหนดโดยตัวเลือกธีม (ค่าเริ่มต้น)
- '1'= แสดงข้อความป๊อปอัป;
- '0'= แสดงข้อความบนหน้าแทน;
- '-1'= ไม่แสดงข้อความเลย (ในกรณีนี้ ผู้ใช้จะยังคงเห็นคำแนะนำเฉพาะของคำถามที่ระบุว่าต้องตอบคำถามใดบ้าง)
พฤติกรรมของคำถามประเภทตัวเลข
- bFixNumAuto: ช่องตัวเลขสามารถกรองค่าที่ไม่ใช่ตัวเลขออกทั้งหมดโดยอัตโนมัติ โดยค่าเริ่มต้นจะเปิดใช้งานอยู่ และคุณสามารถปิดใช้งานแบบโดยรวมได้ การตั้งค่านี้เกี่ยวข้องกับ แก้ไขค่าตัวเลขอัตโนมัติ ใน ตัวเลือกธีม ของธีมหลัก โดยจะเปิดใช้งานสำหรับ ใช่ และปิดใช้งานสำหรับ สำหรับการแสดงออก และ ไม่
- bNumRealValue: ช่องตัวเลขที่ใช้ในตัวจัดการนิพจน์สามารถถูกแก้ไขหรือไม่ก็ได้ โดยค่าเริ่มต้นจะถูกแก้ไข หาก NUMERIC เป็นคำถามตัวเลข: ปิดใช้งานหรือ 0 : {NUMERIC} ที่มีอักขระไม่ถูกต้องจะส่งค่า '' เปิดใช้งานหรือ 1 : {NUMERIC} จะส่งอักขระทั้งหมดที่ป้อน การตั้งค่านี้เกี่ยวข้องกับ แก้ไขค่าตัวเลขอัตโนมัติ ใน ตัวเลือกธีม ของธีมหลัก โดยจะเปิดใช้งานสำหรับ ใช่ และ สำหรับการแสดงออก และปิดใช้งานสำหรับ ไม่
การพัฒนาและการดีบัก
- debug: ด้วยการตั้งค่านี้ คุณกำหนดการรายงานข้อผิดพลาดของ PHP เป็น E_ALL ซึ่งหมายความว่าจะแสดงทุกการแจ้งเตือน คำเตือน หรือข้อผิดพลาดเล็กน้อยที่เกี่ยวข้องกับสคริปต์ ควรเปลี่ยนการตั้งค่านี้เป็น '1' เฉพาะเมื่อคุณกำลังดีบักแอปพลิเคชันด้วยเหตุผลใดก็ตาม หากคุณเป็นนักพัฒนา ให้เปลี่ยนเป็น '2' อย่าเปลี่ยนเป็น '1' หรือ '2' ในสภาพแวดล้อมใช้งานจริง เนื่องจากอาจทำให้เปิดเผยพาธของระบบได้ ค่าเริ่มต้นคือ '0' และสามารถแก้ไขได้ใน config.php
- debugsql: เปิดใช้งานการตั้งค่านี้หากคุณต้องการแสดงคำสั่ง SQL ทั้งหมดที่สคริปต์เรียกใช้ที่ด้านล่างของแต่ละหน้า มีประโยชน์มากสำหรับการปรับจำนวนคำสั่งให้เหมาะสม หากต้องการเปิดใช้งาน ให้เปลี่ยนค่าเริ่มต้นเป็น '1' จากไฟล์ config.php
- use_asset_manager: โดยค่าเริ่มต้น โหมดดีบักจะปิดใช้งานตัวจัดการแอสเซ็ต คุณสามารถอนุญาตให้ใช้ตัวจัดการแอสเซ็ตขณะเปิดโหมดดีบักได้
หากคุณพบข้อผิดพลาดในแอปพลิเคชัน เราขอแนะนำอย่างยิ่งให้เปิดใช้งานการตั้งค่าดีบัก เพื่อให้ได้ข้อผิดพลาดที่ละเอียดยิ่งขึ้นซึ่งคุณสามารถส่งไปพร้อมกับรายงานข้อบกพร่อง:
'config'=>array(
'debug'=>2,
'debugsql'=>0,
)
หากคุณพัฒนาปลั๊กอินและต้องการวิธีที่รวดเร็วในการแสดงค่าตัวแปรบนหน้าจอ คุณสามารถใช้ฟังก์ชัน traceVar ได้ หากตั้งค่า debug ไว้ ฟังก์ชันนี้จะใช้ CWebLogRoute เพื่อแสดงบนหน้า HTML วิธีใช้ traceVar($MyVariable)
การตั้งค่าอีเมล
การตั้งค่าทั้งหมดด้านล่างสามารถถูกแทนที่ได้ในกล่องโต้ตอบตั้งค่าโดยรวม
- 'emailmethod: กำหนดวิธีการส่งข้อความอีเมล มีตัวเลือกดังต่อไปนี้:
- 'mail:' ใช้ตัวส่งเมลภายในของ PHP;
- 'sendmail:' ใช้ตัวส่งเมล sendmail;
- 'smtp:' ใช้การส่งต่อผ่าน SMTP ใช้การตั้งค่านี้เมื่อคุณรัน LimeSurvey บนโฮสต์ที่ไม่ใช่เซิร์ฟเวอร์อีเมลของคุณ
- 'emailsmtphost: หากคุณใช้ 'smtp' เป็น
$emailmethodคุณต้องใส่เซิร์ฟเวอร์ SMTP ของคุณที่นี่ หากคุณใช้ Google mail คุณอาจต้องเพิ่มหมายเลขพอร์ต เช่น $emailsmtphost = 'smtp.gmail.com:465' - emailsmtpuser: หากเซิร์ฟเวอร์ SMTP ของคุณต้องมีการยืนยันตัวตน ให้ตั้งค่านี้เป็นชื่อบัญชีของคุณ มิฉะนั้นต้องเว้นว่างไว้
- emailsmtppassword: หากเซิร์ฟเวอร์ SMTP ของคุณต้องมีการยืนยันตัวตน ให้ตั้งค่านี้เป็นรหัสผ่านของคุณ มิฉะนั้นต้องเว้นว่างไว้
- emailsmtpssl: ตั้งค่านี้เป็น 'ssl' หรือ 'tls' เพื่อใช้ SSL/TLS สำหรับการเชื่อมต่อ SMTP
- maxemails: เมื่อส่งคำเชิญหรือการแจ้งเตือนไปยังผู้เข้าร่วมแบบสำรวจ การตั้งค่านี้ใช้กำหนดจำนวนอีเมลที่สามารถส่งได้ในหนึ่งชุด เว็บเซิร์ฟเวอร์แต่ละแห่งมีความสามารถในการส่งอีเมลต่างกัน และหากสคริปต์ของคุณใช้เวลานานเกินไปในการส่งอีเมลหนึ่งชุด สคริปต์อาจหมดเวลาและทำให้เกิดข้อผิดพลาด เว็บเซิร์ฟเวอร์ส่วนใหญ่สามารถส่งอีเมลได้ครั้งละ 100 ฉบับภายในการจำกัดเวลาเริ่มต้น 30 วินาทีสำหรับสคริปต์ PHP หากคุณได้รับข้อผิดพลาดสคริปต์หมดเวลาเมื่อส่งอีเมลจำนวนมาก ให้ลดตัวเลขในการตั้งค่านี้ การคลิกปุ่ม 'ส่งอีเมลเชิญชวน' จากแถบเครื่องมือควบคุมโทเค็น (ไม่ใช่ปุ่มที่อยู่ทางขวาของแต่ละโทเค็น) จะส่งคำเชิญจำนวน <maxemails> ฉบับ จากนั้นจะแสดงรายการที่อยู่ของผู้รับและคำเตือนว่า มีอีเมลค้างส่งมากกว่าที่ส่งได้ในหนึ่งชุด ดำเนินการส่งอีเมลต่อโดยคลิกด้านล่าง ยังมีอีเมลที่ต้องส่งอีก ### ฉบับ พร้อมให้ "ปุ่มดำเนินการต่อ" เพื่อไปยังชุดถัดไป กล่าวคือ ผู้ใช้เป็นผู้กำหนดว่าจะส่งชุดถัดไปเมื่อใดหลังจากส่งอีเมลแต่ละชุด ไม่จำเป็นต้องรออยู่ที่หน้าจอนี้ ผู้ดูแลสามารถออกจากระบบและกลับมาในภายหลังเพื่อส่งคำเชิญชุดถัดไปได้
สถิติและการเรียกดูการตอบคำถาม
- filterout_incomplete_answers: ควบคุมพฤติกรรมเริ่มต้นของการกรองคำตอบที่ไม่สมบูรณ์เมื่อเรียกดูหรือวิเคราะห์การตอบคำถาม สำหรับการอภิปรายเกี่ยวกับการตอบคำถามที่ไม่สมบูรณ์ โปรดดู วิกิการเรียกดูผลแบบสำรวจ เนื่องจากข้อมูลเหล่านี้อาจทำให้สถิติคลาดเคลื่อน จึงมีตัวเลือกให้เปิดหรือปิดตัวกรองนี้ในหลายแบบฟอร์ม GUI ได้ สามารถแก้ไขพารามิเตอร์นี้ได้ใน config.php ตัวเลือกที่มีให้ใช้งานมีดังนี้:
- 'all': ให้คุณดูได้ทั้งคำตอบที่สมบูรณ์และไม่สมบูรณ์;
- 'complete': แสดงเฉพาะคำตอบที่สมบูรณ์;
- 'incomplete': แสดงเฉพาะคำตอบที่ไม่สมบูรณ์
- strip_query_from_referer_url: การตั้งค่านี้กำหนดว่า URL อ้างอิงจะบันทึกพารามิเตอร์หรือไม่ ค่าเริ่มต้นคือ 'false' (ในกรณีนี้ URL อ้างอิงจะบันทึกพารามิเตอร์ทั้งหมด) หรือจะตั้งค่านี้เป็น 'true' ก็ได้ และส่วนพารามิเตอร์ของ URL อ้างอิงจะถูกลบออก
- showaggregateddata: เมื่อเปิดใช้งาน จะแสดงค่าทางสถิติเพิ่มเติม เช่น ค่าเฉลี่ยทางคณิตศาสตร์และค่าเบี่ยงเบนมาตรฐาน นอกจากนี้ ข้อมูลจะถูกรวมกลุ่มเพื่อให้ได้ภาพรวมที่เร็วขึ้น ตัวอย่างเช่น ผลลัพธ์ของมาตราส่วน 1+2 และ 4+5 จะถูกรวมกันเพื่อให้ได้การจัดอันดับโดยรวม เช่น "ดี" (1/2), "ปานกลาง" (3) และ "แย่" (4/5) ทั้งนี้มีผลเฉพาะกับคำถามประเภท "A" (อาร์เรย์ 5 คะแนน) และ "5" (ตัวเลือก 5 คะแนน)
- PDF Export Settings: ฟีเจอร์นี้เปิดใช้งานการส่งออกแบบ PDF สำหรับแบบสำรวจที่พิมพ์ได้และพิมพ์คำตอบ ฟังก์ชันส่งออก PDF ยังอยู่ในขั้นทดลองทั้งหมด และผลลัพธ์ยังห่างไกลจากความสมบูรณ์ ขออภัยที่ขณะนี้ยังไม่สามารถให้การสนับสนุนได้ - หากคุณต้องการช่วยแก้ไข โปรดติดต่อเรา
- 'pdfdefaultfont': คือฟอนต์เริ่มต้นที่ฟังก์ชันส่งออก PDF จะใช้ ค่าเริ่มต้นคือ 'auto' หากต้องการเปลี่ยน คุณต้องตั้งค่าเป็นหนึ่งใน ฟอนต์หลักของ PDF
- 'alternatepdffontfile': เป็นอาร์เรย์ที่ประกอบด้วยคีย์ภาษาและฟอนต์ที่สอดคล้องกัน สามารถเปลี่ยนฟอนต์เริ่มต้นของแต่ละภาษาได้ในไฟล์ config.php;
- 'pdffontsize': แสดงขนาดตัวอักษรสำหรับข้อความปกติ สำหรับชื่อของแบบสำรวจจะเป็น <pdffontsize>+4 ส่วนชื่อกลุ่มจะเป็น <pdffontsize>+2 สามารถแก้ไขได้ในไฟล์ config.php หรือจากกล่องโต้ตอบการตั้งค่าโดยรวม
- Graph setting
- 'chartfontfile': กำหนดชื่อไฟล์ฟอนต์ที่ใช้สร้างแผนภูมิสถิติ ไฟล์ต้องอยู่ในไดเรกทอรี fonts ซึ่งอยู่ในโฟลเดอร์รากของ LimeSurvey สามารถแก้ไขได้ในไฟล์ config.php;
- 'alternatechartfontfile': เป็นอาร์เรย์ที่ประกอบด้วยคีย์ภาษาและฟอนต์ที่สอดคล้องกัน สามารถแก้ไขได้ในไฟล์ config.php
- showsgqacode: การตั้งค่านี้ใช้กับฟีเจอร์แบบสำรวจที่พิมพ์ได้ และค่าเริ่มต้นคือ 'false หากคุณตั้งค่า showsgqacode = 'true'; ระบบจะแสดง ID ของแต่ละคำถาม - และคำตอบ (ถ้ามี) ID เหล่านี้ตรงกับหัวคอลัมน์ในตาราง Lime_survey_12345 ซึ่งเก็บข้อมูลคำตอบของแบบสำรวจนั้น ๆ สามารถนำ ID เหล่านี้ไปใช้เป็นสมุดรหัสสำหรับการสืบค้นฐานข้อมูลด้วยตนเองได้
การตั้งค่า LDAP
เนื่องจากเป็นหัวข้อที่มีเนื้อหามาก เราจึงย้ายการตั้งค่า LDAPไปไว้ในอีกหน้าหนึ่ง
การตรวจสอบสิทธิ์ผู้ใช้
การตรวจสอบสิทธิ์ผู้ใช้ดำเนินการโดยปลั๊กอิน การตั้งค่าด้านล่างนี้ใช้โดยปลั๊กอิน Webserver authentication ดู ปลั๊กอินการตรวจสอบสิทธิ์ผู้ใช้
การมอบหมายการตรวจสอบสิทธิ์ผู้ใช้ให้เว็บเซิร์ฟเวอร์
ผู้ดูแลระบบอาจต้องการให้ผู้ดูแลแบบสำรวจของตนผ่านการตรวจสอบสิทธิ์กับระบบตรวจสอบสิทธิ์ส่วนกลาง (Active Directory, openLdap, Radius, ...) แทนการใช้ฐานข้อมูลภายในของ LimeSurvey วิธีที่ง่ายที่สุดคือตั้งค่าซอฟต์แวร์เว็บเซิร์ฟเวอร์ของคุณให้ใช้ระบบตรวจสอบสิทธิ์ภายนอกนี้ แล้วให้ LimeSurvey เชื่อถือข้อมูลตัวตนของผู้ใช้ที่เว็บเซิร์ฟเวอร์รายงานมา หากต้องการเปิดใช้งานฟีเจอร์นี้ คุณต้อง:
- เปิดใช้งานปลั๊กอิน Webserver ที่ การกำหนดค่า > ปลั๊กอิน และตั้งค่าคีย์เซิร์ฟเวอร์ที่เก็บชื่อผู้ใช้ (ค่าเริ่มต้น: REMOTE_USER) ในการตั้งค่าปลั๊กอิน;
- เปิดใช้งานการตรวจสอบสิทธิ์ฝั่งเว็บเซิร์ฟเวอร์
โปรดทราบว่า:
- LimeSurvey จะข้ามกระบวนการตรวจสอบสิทธิ์ของตนเอง (โดยใช้ชื่อเข้าสู่ระบบที่เว็บเซิร์ฟเวอร์รายงานมาโดยไม่ถามรหัสผ่าน);
- วิธีนี้สามารถแทนที่ได้เฉพาะระบบตรวจสอบสิทธิ์ GUI ของ LimeSurvey เท่านั้น ไม่สามารถแทนที่ระบบคำเชิญเข้าร่วมแบบสำรวจ (ส่วนติดต่อของผู้เข้าร่วม)
การมอบหมายการตรวจสอบสิทธิ์ผู้ใช้โดยไม่นำเข้าผู้ใช้อัตโนมัติ
โปรดทราบว่าการมอบหมายการตรวจสอบสิทธิ์ผู้ใช้ไม่ได้ข้ามระบบการอนุญาตของ LimeSurvey โดยค่าเริ่มต้น - หมายความว่า แม้คุณไม่ต้องจัดการรหัสผ่านใน LimeSurvey คุณก็ยังต้องกำหนดผู้ใช้ในฐานข้อมูลของ LimeSurvey และกำหนดชุดสิทธิ์ที่ถูกต้องให้ผู้ใช้เหล่านั้น เพื่อให้เข้าถึงแผงผู้ดูแลระบบได้
ผู้ใช้จะได้รับอนุญาตให้เข้าถึง LimeSurvey ก็ต่อเมื่อ:
- ผู้ใช้ผ่านการตรวจสอบสิทธิ์กับเว็บเซิร์ฟเวอร์แล้ว;
- ชื่อเข้าสู่ระบบของผู้ใช้ถูกกำหนดเป็นผู้ใช้ในฐานข้อมูลผู้ใช้ของ LimeSurvey (ผู้ใช้จะได้รับสิทธิ์ตามที่กำหนดให้ผู้ใช้นั้นในฐานข้อมูลผู้ใช้ของ LimeSurvey);
- ผู้ใช้มีสิทธิ์โดยรวม ใช้การตรวจสอบผู้ใช้จาก Web Server
การมอบหมายการตรวจสอบสิทธิ์ผู้ใช้พร้อมนำเข้าผู้ใช้อัตโนมัติ
เมื่อต้องจัดการฐานข้อมูลผู้ใช้ขนาดใหญ่ บางครั้งการนำเข้าผู้ใช้เข้าฐานข้อมูลของ LimeSurvey โดยอัตโนมัติจะง่ายกว่า:
- auth_webserver_autocreate_user: หากตั้งค่าเป็น 'true' LimeSurvey จะพยายามนำเข้าผู้ใช้ที่ผ่านการตรวจสอบสิทธิ์จากเว็บเซิร์ฟเวอร์แต่ยังไม่มีในฐานข้อมูลผู้ใช้โดยอัตโนมัติ
- auth_webserver_autocreate_profile: อาร์เรย์ที่อธิบายโปรไฟล์เริ่มต้นที่จะกำหนดให้ผู้ใช้: ชื่อ-นามสกุล (สมมติ) อีเมล และภาษา
- auth_webserver_autocreate_permissions: อาร์เรย์ที่ประกอบด้วยสิทธิ์โดยรวมที่จะกำหนดให้ผู้ใช้
หากคุณต้องการปรับแต่งโปรไฟล์ผู้ใช้ให้ตรงกับผู้ใช้ที่เข้าสู่ระบบ คุณต้องพัฒนาฟังก์ชันง่าย ๆ ชื่อ hook_get_auth_webserver_profile ใน config.php - ด้วยฟังก์ชันนี้ คุณสามารถดึงชื่อ-นามสกุล อีเมล และภาษาที่แท้จริงของผู้ใช้แต่ละคนจากฐานข้อมูลบัญชีผู้ใช้ส่วนกลาง (เช่น จากไดเรกทอรี LDAP)
ฟังก์ชัน hook_get_auth_webserver_profile รับชื่อเข้าสู่ระบบของผู้ใช้เป็นอาร์กิวเมนต์เพียงตัวเดียว และสามารถคืนค่าได้ดังนี้:
- False หรืออาร์เรย์ว่าง - ในกรณีนี้ผู้ใช้จะถูกปฏิเสธการเข้าถึง LimeSurvey;
- อาร์เรย์ที่มีรายการเหมือนกับ
auth_webserver_autocreate_profile
function hook_get_auth_webserver_profile($user_name)
{
// Retrieve user's data from your database backend (for instance LDAP) here
// ... get $user_name_from_backend
// ... get $user_email_from_backend
// ... get $user_lang_from_backend
return array(
'full_name' => $user_name_from_backend,
'email' => $user_email_from_backend,
'lang' => $user_lang_from_backend,
);
}
// If user should be denied access, return an empty array
// return array();
การแมปชื่อบัญชี
ในกรณีที่ผู้ใช้บางคนมีชื่อผู้ใช้ภายนอกที่ต่างจากชื่อบัญชี LimeSurvey ของตน คุณอาจพบว่าการใช้การแมปชื่อบัญชีเป็นประโยชน์ ใน LimeSurvey ทำได้โดยใช้พารามิเตอร์ auth_webserver_user_map ตัวอย่างเช่น สมมติว่าคุณไม่มีชื่อผู้ใช้ 'admin' ในฐานข้อมูลตรวจสอบสิทธิ์ภายนอก เพื่อเข้าสู่ระบบ LimeSurvey ในฐานะ admin คุณต้องแมปชื่อผู้ใช้ภายนอกของคุณ (สมมติว่าเป็น 'myname') ไปยังชื่อเข้าสู่ระบบ admin ใน LimeSurvey การตั้งค่าที่สอดคล้องกันคือ:
'config'=>array(
...
'auth_webserver_user_map' => array ('myname' => 'admin');
)
หลังจากตรวจสอบสิทธิ์สำเร็จด้วยชื่อเข้าสู่ระบบ 'myname' และรหัสผ่านเว็บเซิร์ฟเวอร์ คุณจะได้รับอนุญาตให้ใช้ LimeSurvey ในฐานะผู้ใช้ 'admin' ทันที
วิธีนี้มีผลกระทบด้านความปลอดภัยอย่างร้ายแรง ดังนั้นโปรดใช้ด้วยความระมัดระวัง และควรป้องกันไฟล์ config.php ของคุณไม่ให้เว็บเซิร์ฟเวอร์เขียนได้
ใช้รหัสผ่านแบบครั้งเดียว
ผู้ใช้สามารถเปิดหน้าเข้าสู่ระบบของ LimeSurvey ที่ default.com/limesurvey/admin และพิมพ์ชื่อผู้ใช้และรหัสผ่านแบบครั้งเดียวที่แอปพลิเคชันภายนอกเขียนไว้ล่วงหน้าในตารางผู้ใช้ (คอลัมน์ one_time_pw)
ต้องเปิดการตั้งค่านี้ในไฟล์ config.php เพื่อเปิดใช้งานรหัสผ่านแบบครั้งเดียว (ค่าเริ่มต้น = false)
'config'=>array(
'debug'=>0,
'debugsql'=>0,
'use_one_time_passwords'=>true,
)
สามารถดูข้อมูลเพิ่มเติมได้ในส่วน "จัดการผู้ใช้"
การตั้งค่าการเข้ารหัส
application/config/security.php คุณสามารถย้ายการตั้งค่าเหล่านี้ไปไว้ใน config.php ได้หากต้องการ หรือจะปล่อยไว้ใน security.php ก็ได้ดู การเข้ารหัสข้อมูล สำหรับรายละเอียดของฟีเจอร์นี้
- encryptionkeypair
- encryptionpublickey
- encryptionsecretkey
- encryptionnonce
- encryptionsecretboxkey
การตั้งค่า URL ขั้นสูง
- publicurl: ควรตั้งค่านี้เป็นตำแหน่ง URL ของ 'public scripts' ของคุณ สคริปต์สาธารณะคือสคริปต์ที่อยู่ในโฟลเดอร์ "limesurvey" (หรือชื่อใดก็ตามที่คุณตั้งให้กับไดเรกทอรีที่เก็บสคริปต์และไดเรกทอรีอื่นๆ ทั้งหมด) การตั้งค่านี้มีอยู่ใน config.php และใช้เมื่อ LimeSurvey ต้องการ URL แบบสมบูรณ์ (เช่น เมื่อส่งอีเมลโทเค็น)
- tempurl: ควรตั้งค่านี้เป็นตำแหน่ง URL ของไดเรกทอรี "/limesurvey/tmp" ของคุณ หรือไดเรกทอรีที่คุณต้องการให้ LimeSurvey ใช้ในการให้บริการไฟล์ชั่วคราว
- uploadurl: ควรตั้งค่านี้เป็นตำแหน่ง URL ของไดเรกทอรี "/limesurvey/upload" ของคุณ หรือไดเรกทอรีที่คุณต้องการให้ LimeSurvey ใช้ในการให้บริการไฟล์ที่อัปโหลด การตั้งค่านี้ช่วยให้คุณกำหนดให้ไฟล์ที่อัปโหลดอยู่ในโดเมน URL อื่นได้
การตั้งค่าพาธขั้นสูง
- homedir: ควรตั้งค่านี้เป็นตำแหน่งจริงบนดิสก์ของสคริปต์การดูแลระบบของคุณ เช่น "/home/usr/htdocs/limesurvey/admin" อย่าใส่เครื่องหมายสแลชท้ายค่านี้ การตั้งค่าเริ่มต้นใน config.php จะพยายามตรวจหาพาธรากเริ่มต้นของเอกสารทั้งหมดของคุณโดยใช้ตัวแปร php
{$_SERVER['DOCUMENT_ROOT']}ในกรณีส่วนใหญ่ คุณสามารถปล่อยส่วนนี้ไว้ และแก้ไขเฉพาะส่วนที่เหลือของสตริงให้ตรงกับชื่อไดเรกทอรีที่คุณวางสคริปต์ LimeSurvey ไว้ - publicdir: ควรตั้งค่านี้เป็นตำแหน่งจริงบนดิสก์ของ 'public scripts' ของคุณ
- tempdir: ควรตั้งค่านี้เป็นตำแหน่งจริงบนดิสก์ของไดเรกทอรี /limesurvey/tmp ของคุณ เพื่อให้สคริปต์สามารถอ่านและเขียนไฟล์ได้
- uploaddir: ควรตั้งค่านี้เป็นตำแหน่งจริงบนดิสก์ของไดเรกทอรี /limesurvey/upload ของคุณ เพื่อให้สคริปต์สามารถอ่านและเขียนไฟล์ได้
- sCKEditorURL: URL ของสคริปต์ CKEditor
การตั้งค่าขั้นสูงอื่นๆ
อัปโหลดไฟล์
- magic_database: อนุญาตให้ใช้ฐานข้อมูล MIME อื่นสำหรับ finfo_open สามารถแก้ไขได้เฉพาะในไฟล์ config.php เท่านั้น ตัวอย่าง:
/usr/share/misc/magic.mgcสำหรับลินุกซ์ที่ใช้ redhat - magic_file: อนุญาตให้ใช้ไฟล์อื่นในการดึงอาร์เรย์ของนามสกุลไฟล์ตามประเภท MIME แทนไฟล์ที่มาพร้อมกับระบบ ต้องเป็นไฟล์ PHP ที่คืนค่าเป็นอาร์เรย์ สามารถแก้ไขได้เฉพาะในไฟล์ config.php เท่านั้น
การปรับปรุง
- updatable: การตั้งค่านี้อยู่ใน version.php สามารถเป็น true หรือ false ได้ หากตั้งเป็น true เมื่อผู้ดูแลระบบสูงสุดเข้าสู่ระบบ LimeSurvey จะตรวจสอบว่ามีการปรับปรุงหรือไม่ และแสดงคำเตือนให้คุณทราบ หากตั้งเป็น false จะไม่มีการตรวจสอบ และคุณจะไม่สามารถใช้ ComfortUpdate ได้
โทเค็น
- allowedcharacters_pattern_token : การตั้งค่านี้ใช้กำหนดรูปแบบ regexp เมื่อกรองโทเค็น