การแก้ไขปัญหา
From LimeSurvey Manual
ทั่วไป
หน้านี้รวบรวมปัญหาทางเทคนิคที่พบบ่อยและวิธีแก้ไข หลัง การติดตั้งสำเร็จแล้ว หากต้องการแก้ไขปัญหาที่เกิดขึ้นระหว่างการติดตั้ง โปรดดู คำถามที่พบบ่อยเกี่ยวกับการติดตั้ง
เมื่อพยายามเปิดหน้าเข้าสู่ระบบผู้ดูแล
ข้อความแจ้งข้อผิดพลาด: "No input file specified" หลังการติดตั้ง
หรือ
URL ใดก็ตามพาคุณไปยังหน้ารายการแบบสอบถาม
ระหว่างขั้นตอนการติดตั้ง LimeSurvey จะพยายามกำหนดรูปแบบ URL ที่เหมาะสมที่สุด แต่บางครั้งอาจทำงานไม่ถูกต้อง
คุณต้องบังคับให้ LimeSurvey ใช้ระบบจัดการ URL อื่น โดยแก้ไขไฟล์การกำหนดค่าของคุณ
ในไฟล์ /application/config/config.php ให้แทนที่
'urlFormat' => 'path',
ด้วย:
'urlFormat' => 'get',
จากนั้นลองเปิดแผงควบคุมผู้ดูแลโดยใช้ URL ผู้ดูแลแบบสั้น:
http://<yourserver.net>/<limesurvey_dir>/admin
หลังจากเข้าสู่ระบบผู้ดูแล
การดำเนินการใดๆ ในหน้าผู้ดูแลจะพาคุณกลับไปที่หน้าเข้าสู่ระบบ
ปัญหานี้อาจเกิดขึ้นด้วยสาเหตุหลักดังต่อไปนี้:
- ปัญหาเกี่ยวกับเซสชันของ PHP
- ปัญหาเกี่ยวกับการเข้ารหัส UTF8
- ปัญหาเกี่ยวกับ IE
เซสชันของ PHP :
- อัปเดต upload_tmp_dir และ session.save_path ใน php.ini
- สร้างไดเรกทอรีเซสชันและไดเรกทอรีอัปโหลดที่กำหนดค่าไว้
- IIS: กำหนดสิทธิ์ในการสร้างและแก้ไขให้กับบัญชีผู้ใช้ guest ของ IIS
- Apache: ตรวจสอบให้แน่ใจว่าเว็บเซิร์ฟเวอร์ของคุณมีสิทธิ์เขียนข้อมูลลงในไดเรกทอรีที่กำหนดค่าไว้
- ตรวจสอบว่าตัวแปร "session.use_cookies" ใน php.ini ถูกตั้งค่าเป็น 1
- ตรวจสอบตัวแปร "session.auto_start" ใน php.ini หากตั้งค่าเป็น 1 ให้เปลี่ยนเป็น 0
ปัญหาเกี่ยวกับ Internet Explorer LimeSurvey ไม่รองรับการเข้าถึงอินเทอร์เฟซผู้ดูแลผ่าน Internet Explorer อีกต่อไป
การเข้ารหัส UTF8 :
หากคุณแก้ไขไฟล์ใดๆ (โดยส่วนใหญ่คือ config.php) อย่าบันทึกเป็น UTF8 เพื่อรองรับอักขระพิเศษของภาษาต่างๆ! ให้บันทึกไฟล์ .php ในรูปแบบ ANSI/ISO แท้เสมอ
การส่งหน้าที่มีคำถาม/ตัวเลือกของคำตอบ/คำถามย่อยจำนวนมากไม่สำเร็จ
ใน PHP 5.3.9 มีการเพิ่มการตั้งค่าใหม่ (และถูกนำไปใช้กับ PHP รุ่นก่อนหน้าบางรุ่นด้วย) คือ max_input_vars การตั้งค่านี้จำกัดจำนวนตัวแปรสูงสุดที่สามารถ POST (ส่ง) ไปยังเซิร์ฟเวอร์ได้ ค่าเริ่มต้นคือ 1000 แต่หากคุณมีคำถามที่มีตัวเลือกของคำตอบจำนวนมาก หรือหน้าแบบสำรวจที่มีคำถาม/คำตอบจำนวนมาก อาจเกินขีดจำกัดนี้ได้ คุณต้องตั้งค่านี้ในไฟล์การกำหนดค่า PHP (php.ini)
วันที่แสดงไม่ถูกต้องเมื่อใช้ MSSQL Server กับ FreeTDS บน Linux
ค้นหาไฟล์ locales.conf ของ FreeTDS แล้วแก้ไข หากไม่มีแอปพลิเคชันอื่นที่ใช้ FreeTDS ให้แทนที่เนื้อหาทั้งหมดด้วย
[default]
date format = %Y-%m-%d %H:%M:%S.%z
หากมีแอปพลิเคชันอื่นที่ใช้ FreeTDS คุณควรตรวจสอบก่อนว่าต้องแก้ไข locale ใด
บันทึกและรีสตาร์ตเซิร์ฟเวอร์ วันที่ควรแสดงถูกต้องแล้ว หากยังไม่ได้ผล คุณอาจแก้ไขผิดไฟล์ - ให้ทำซ้ำอีกครั้ง
เมื่อฉันป้อนอักขระพิเศษ (จีน, ซิริลลิก, กรีก, อาหรับ) ลงในแบบสำรวจหรือส่วนผู้ดูแล ทุกอักขระแสดงเป็นเครื่องหมายคำถาม?
ปัญหานี้เกิดขึ้นหากฐานข้อมูลของคุณไม่ได้ถูกสร้างให้ใช้ชุดอักขระ UTF-8 ซึ่งอาจเกิดขึ้นเมื่อคุณต้องสร้างฐานข้อมูลผ่านแผงควบคุมของผู้ให้บริการ คุณสามารถแก้ไขปัญหานี้ได้โดยรันคำสั่ง SQL ต่อไปนี้กับฐานข้อมูลของคุณ (เช่น ผ่าน phpMyAdmin) ALTER DATABASE `<your_database_name>` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
แทนที่ <your_database_name> ด้วยชื่อฐานข้อมูลของคุณ คุณต้องดำเนินการนี้ก่อนติดตั้ง LimeSurvey
PageSpeed ก่อให้เกิดปัญหาบางอย่างกับ Limesurvey
คุณควรเพิ่ม ModPagespeed off ใน virtualhost ของ LimeSurvey
มิฉะนั้น คุณจะไม่สามารถใช้ ComfortUpdate หรือส่งออกข้อมูลได้ และอาจมีบางอย่างทำงานผิดพลาดอีกด้วย
ขณะทำแบบสำรวจ
ข้อผิดพลาด "Session has expired"
บางครั้งคุณอาจได้รับข้อความลักษณะนี้:
ERROR
ขออภัย ท่านใช้เวลาเกินกำหนด
ท่านอาจไม่ได้ใช้งานเป็นเวลานานเกินไป ปิดใช้งานคุกกี้ในเบราว์เซอร์ หรือการเชื่อมต่อมีปัญหา
หากเซิร์ฟเวอร์ของท่านเปิดใช้งาน Suhosin อาจเป็นสาเหตุที่ทำให้เกิดข้อความนี้กลางคันขณะทำแบบสำรวจ
Suhosin เป็นระบบป้องกันขั้นสูงสำหรับการติดตั้ง PHP แต่การตั้งค่าเริ่มต้นของ Suhosin อาจทำให้เกิดปัญหากับ LimeSurvey ได้
ขั้นแรก ให้ตรวจสอบและทดสอบโดยใช้บันทึกของ Suhosin โดยตั้งค่า suhosin.log.sapi = 511 และ suhosin.simulation = on ตาม เอกสารของ Suhosin
โดยปกติไฟล์การตั้งค่าจะอยู่ที่ /etc/php5/apache2/conf.d/suhosin.ini แต่เพื่อความแน่ใจ ท่านสามารถตรวจสอบ phpinfo (การดูแลระบบ LimeSurvey > ตั้งค่าโดยรวม > ปุ่ม แสดง PHPInfo > บรรทัด: "Additional .ini files parsed") เพื่อดูเส้นทางที่ถูกต้อง
อย่าลืมรีสตาร์ตเซิร์ฟเวอร์ Apache/Nginx เพื่อให้พารามิเตอร์มีผล (service apache2 restart หรือ service nginx restart)
เมื่อเปิดโหมดจำลอง Suhosin จะไม่บล็อกสิ่งใดและจะรายงานข้อผิดพลาดลงในบันทึก (โดยปกติอยู่ในบันทึกระบบของท่าน: /var/log/syslog) หากท่านได้รับข้อความแสดงข้อผิดพลาด เช่น "ALERT-SIMULATION - configured POST variable limit exceeded" นั่นคือการแจ้งเตือนจาก Suhosin ให้ลองใช้การตั้งค่าต่อไปนี้ (ซึ่งดูเหมือนว่าจะใช้งานกับ LimeSurvey ได้ดี):
suhosin.memory_limit = 128
suhosin.post.max_value_length = 5000000
suhosin.post.max_vars = 5000
suhosin.request.max_value_length = 5000000
suhosin.request.max_vars = 5000
เมื่อใช้พารามิเตอร์เหล่านี้ ท่านควรจะสามารถเปลี่ยน suhosin.simulation กลับเป็นค่า "off" ได้ (เพื่อให้เซิร์ฟเวอร์ได้รับการป้องกันและ LimeSurvey ยังคงทำงานได้)
ค่าเริ่มต้นของ Suhosin ทำงานร่วมกับ LimeSurvey ได้ไม่ดีนัก หากท่านต้องการรักษาความปลอดภัยของเซิร์ฟเวอร์อย่างเข้มงวด ท่านอาจใช้โหมดจำลองเพื่อปรับการตั้งค่าและหาค่าที่เหมาะสมระหว่าง 1000 ถึง 5000 สำหรับ vars และระหว่าง 1000000 ถึง 5000000 สำหรับ value_lengths
ฉันเปลี่ยนภาษาไม่ได้!
ไม่ว่าท่านจะเลือกภาษาใด อินเทอร์เฟซ (ผู้ดูแลระบบและผู้ใช้) จะแสดงเป็นภาษาอังกฤษเสมอ โดยปกติสาเหตุเกิดจากข้อบกพร่องใน PHP รุ่นที่ท่านใช้ ไม่มีวิธีแก้ไขอื่นนอกจากการอัปเดต PHP ให้เป็นรุ่นใหม่
ข้อผิดพลาดที่พบบ่อยบางประการ (เน้น IIS)
ไม่สามารถเปิด Index.php ได้
สาเหตุที่เป็นไปได้: อาจเกิดขึ้นหากท่านยังไม่ได้ติดตั้งส่วนขยายที่จำเป็น
- ท่านต้องติดตั้งส่วนขยาย Multi-byte string และ MSSQL (หรือ MySQL)
สาเหตุที่เป็นไปได้: ยังไม่ได้กำหนดค่าตัวกรอง ISAPI
- ใน IIS สำหรับเว็บไซต์ (ท่านสามารถทำในระดับไดเรกทอรีได้) ท่านต้องกำหนดค่าให้ใช้ php5isapi.dll
ไม่สามารถเปิด Index.php ได้ และ "php.exe -i" แสดงข้อความแสดงข้อผิดพลาดเกี่ยวกับ .dll ที่หายไป
อาจเกิดขึ้นหากท่านติดตั้งส่วนขยายมากเกินไป
- หากท่านติดตั้งส่วนขยาย PHP ทั้งหมด PHP จะทำงานล้มเหลวเนื่องจากความต้องการพึ่งพาบางอย่างไม่ครบถ้วน (เช่น แพ็กเกจ oracle ต้องใช้ oracle dll)
- ติดตั้งเฉพาะส่วนขยายที่ท่านต้องการ
- หากต้องการทดสอบ ให้ลองเรียกใช้ php.exe -i จากบรรทัดคำสั่ง
ข้อความแจ้งว่าไม่พบฐานข้อมูล
อาจเกิดขึ้นหากท่านเข้าไปยัง URL ที่ไม่ถูกต้อง:
- โปรดตรวจสอบให้แน่ใจว่าท่านไปที่ limesurvey/admin/install/index.php แทนที่จะเป็น limesurvey/index.php !
วิธีแก้ไขข้างต้นไม่สามารถแก้ปัญหาได้
อาจเกิดขึ้นหากท่านยังไม่ได้รีสตาร์ต IIS
- รีสตาร์ต IIS
สิ่งที่มักลืมได้ง่าย:
- .php ต้องถูกเชื่อมโยงกับตัวกรอง php5isapi.dll
- ไดเรกทอรี limesurvey/tmp ต้องมีสิทธิ์เขียนสำหรับการอัปโหลดแบบสำรวจ
- การอัปเดต doc_root ใน php.ini และ $rootdir ใน config.php
ไฟล์หาย ("No such file or directory")
เมื่ออัปโหลด LimeSurvey ไปยังเซิร์ฟเวอร์ของท่าน การเชื่อมต่ออาจถูกขัดจังหวะ ทำให้ไฟล์บางไฟล์ไม่ได้รับการถ่ายโอนหรือถ่ายโอนไม่สมบูรณ์ ขึ้นอยู่กับไฟล์ ท่านอาจได้รับข้อความแสดงข้อผิดพลาดที่แตกต่างกันทุกครั้งที่เข้าถึงฟีเจอร์/ส่วนต่าง ๆ ของ LimeSurvey ข้อผิดพลาดที่เกิดจากไฟล์ที่หายไปมีลักษณะดังนี้:
"Warning: require_once(/path/to/your/limesurvey/installation/filename) [function.require-once]: failed to open stream: No such file or directory in /path/to/your/limesurvey/installation/filename on line 12345" หรือ
"Fatal error: require_once() [function.require]: Failed opening required 'require_once(/path/to/your/limesurvey/installation/filename)' (include_path='.:/x/y/z) in /path/to/your/limesurvey/installation/filename on line 12345"
วิธีแก้ไข
1. ลบไฟล์ที่อัปโหลดทั้งหมด
2. อัปโหลดไฟล์ใหม่อีกครั้ง
(3. หากจำเป็น: ติดตั้งใหม่โดยเปิดไปที่ /limesurveyfolder/admin/install)
หลังจากส่งหน้าแบบสำรวจ คุณถูกนำไปยังหน้าดัชนีทั่วไป/หน้า 404 หรือได้รับข้อความ 'The CSRF token could not be verified'
หรือ
หลังจากคลิก 'ถัดไป' ในหน้าที่มีคำตอบ/คำถามย่อยจำนวนมาก การตอบคำถามบางส่วนไม่ถูกบันทึก
หรือ
หลังจากคลิก 'ถัดไป' ฉันกลับมาอยู่ที่หน้าเดิม
หรือ
การใช้ระบบการแปลแบบเร่งด่วนไม่บันทึกคำตอบหรือคำถามย่อย
หรือ
เมื่อส่งออกฟิลด์การตอบคำถามจำนวนมาก ฟิลด์บางส่วนไม่ถูกส่งออก
- สาเหตุที่เป็นไปได้มากที่สุดคือการตั้งค่าที่จำกัดในเว็บเซิร์ฟเวอร์ของคุณ: max_input_vars การตั้งค่านี้จำกัดจำนวนตัวแปรสูงสุดที่สามารถ POST (ส่ง) ไปยังเซิร์ฟเวอร์ได้
ค่าเริ่มต้นคือ 1000 แต่หากคุณมีคำถามที่มีตัวเลือกของคำตอบจำนวนมาก หรือหน้าแบบสำรวจที่มีคำถาม/คำตอบจำนวนมาก อาจเกินขีดจำกัดนี้ได้ คุณจะต้องแก้ไขการตั้งค่า PHP ของคุณ (php.ini)
- นอกจากนี้ ให้ตรวจสอบการตั้งค่า PHP ของคุณ หากผู้ให้บริการโฮสติ้งของคุณใช้ Suhosin extension for Apache ซึ่งอาจตั้งค่าจำกัดเกินไปในบางรายการ
- ตัวอย่างเช่น การตั้งค่า "suhosin.post.max_vars" และ "suhosin.request.max_vars" ทั้งสองค่าถูกตั้งเป็น 200 โดยค่าเริ่มต้น ให้เพิ่มทั้งสองค่าเป็น 400 หรือสูงกว่า เพื่อให้ผู้ใช้สามารถทำแบบสำรวจที่ยาวให้เสร็จและส่งได้
- หากยังมีปัญหาอยู่ ให้ลองเปลี่ยนโมดูลเป็น simulation_mode (ซึ่งโดยพื้นฐานคือการปิดการทำงานของโมดูล) เนื่องจากค่าสูงสุดขึ้นอยู่กับแบบสำรวจของคุณโดยเฉพาะเสมอ
- อีกสาเหตุหนึ่งอาจเป็นพร็อกซีหรือซอฟต์แวร์ที่คล้ายกันซึ่งไม่อนุญาตให้ส่งคำขอ POST ขนาดใหญ่ หรือการเรียกหน้าเดียวกันหลายครั้งในเบื้องหลัง (ซึ่งทำให้มีการสร้าง CSRF-key ใหม่) ในกรณีนี้ ให้ลองใช้การเชื่อมต่ออินเทอร์เน็ตอื่น
ไม่มีคำถามแสดงขึ้นเมื่อใช้ MSSQL Server กับ FreeTDS บน Linux
หากคุณตรวจสอบกลุ่มคำถามใดๆ อย่างละเอียด จะพบว่ามีช่องว่างในความเกี่ยวข้องของกลุ่ม ซึ่งทำให้ทั้งกลุ่มไม่เกี่ยวข้อง สาเหตุที่แท้จริงคือ FreeTDS ของคุณคืนค่าช่องว่างในฟิลด์ที่ว่างเนื่องจากการกำหนดค่าที่ไม่ถูกต้อง คุณสามารถแก้ไขปัญหานี้ได้โดยบังคับให้ใช้โปรโตคอล FreeTDS เวอร์ชัน 8.0 ขึ้นไป ดังนั้น ให้แก้ไข freetds.conf (เช่น /etc/freetds/freetds.conf) และเปลี่ยนบรรทัดที่เกี่ยวข้องเป็น
tds version = 8.0
ซึ่งควรแก้ไขปัญหานี้ได้
หลังจากทำแบบสำรวจ
ข้อความที่ผู้เข้าร่วมกรอกแสดงเป็นเครื่องหมายคำถามในผลลัพธ์
ปัญหานี้เกิดขึ้นหากฐานข้อมูลของคุณไม่ได้ใช้ชุดอักขระ UTF-8 เป็นค่าเริ่มต้น ซึ่งอาจเกิดขึ้นได้เมื่อคุณต้องสร้างฐานข้อมูลผ่านแผงควบคุมของผู้ให้บริการ คุณสามารถแก้ไขปัญหานี้ได้โดยรันคำสั่ง SQL ต่อไปนี้กับฐานข้อมูลของคุณ (เช่น ใช้ phpMyAdmin):
ALTER DATABASE `<your_database_name>` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
แทนที่ <your_database_name> ด้วยชื่อฐานข้อมูลของคุณ หลังจากนั้นให้ปิดใช้งานแบบสำรวจของคุณแล้วเปิดใช้งานอีกครั้ง
ปัญหาเฉพาะของฐานข้อมูล
ฉันต้องการให้ LimeSurvey ใช้ Postgres schema ที่กำหนด
ตั้งค่าใน config.php 'initSQLs' => array('SET search_path TO "LimeSurvey";'), ดูตัวอย่างได้ใน config-defaults