استكشاف الأخطاء وإصلاحها
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: امنح إذن الإنشاء والتعديل لحساب الضيف الخاص بـ 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 > إعدادات عامة > زر عرض معلومات PHP > السطر: "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 لـ Apache والذي قد يكون مقيِّدًا أكثر من اللازم في بعض الإعدادات.
- على سبيل المثال، الإعدادان "suhosin.post.max_vars" و"suhosin.request.max_vars" مضبوطان افتراضيًا على القيمة 200. قم بزيادة كلا الإعدادين إلى 400 أو أكثر ليتمكن المستخدمون من إكمال الاستبيانات الطويلة وإرسالها.
- إذا استمرت المشكلات، فجرّب تحويل الوحدة إلى وضع المحاكاة simulation_mode (أي تعطيلها فعليًا)، لأن الحد الأقصى يعتمد دائمًا على الاستبيان الخاص بك.
- قد يكون السبب الآخر وجود وكيل (proxy) أو برنامج مشابه لا يسمح بطلبات POST الكبيرة أو بطلب الصفحة نفسها عدة مرات في الخلفية (مما يؤدي إلى إنشاء مفتاح CSRF جديد). جرّب اتصال إنترنت مختلفًا في هذه الحالة.
لا تظهر أي أسئلة عند استخدام 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 محددًا
اضبط في config.php 'initSQLs' => array('SET search_path TO "LimeSurvey";'), انظر config-defaults للاطلاع على مثال.