x

Main chapters

  1. LimeSurvey Cloud vs LimeSurvey CE
  2. LimeSurvey Cloud - Quick start guide
  3. LimeSurvey CE - Installation
  4. How to design a good survey (Guide)
  5. Getting started
  6. LimeSurvey configuration
  7. Introduction - Surveys
  8. View survey settings
  9. View survey menu
  10. View survey structure
  11. Introduction - Questions
  12. Introduction - Question Groups
  13. Introduction - Surveys - Management
  14. Survey toolbar options
  15. Multilingual survey
  16. Quick start guide - ExpressionScript
  17. Advanced features
  18. General FAQ
  19. Troubleshooting
  20. Workarounds
  21. License
  22. Version change log
  23. Plugins - Advanced
 Actions

General FAQ

From LimeSurvey Manual

The following answers have been provided by the LimeSurvey user community. If something is unclear or you are not sure what to do next, ask the community in our forum: https://forums.limesurvey.org. For professional help, see our list of authorized partners: https://www.limesurvey.com.


Getting started

To get a feeling for what you can do with LimeSurvey without reading half the manual, watch some of our video tutorials on YouTube:


If you know a good video, do not hesitate to share it with us.


Where can I find a quick introduction to LimeSurvey?

For a quick written introduction to LimeSurvey, see:


Survey design and layout

How can I remove index.php from the URL to get shorter URLs?

If you want to use shorter URLs (without /index.php in every URL), edit application/config/config.php and in the urlManager section change

'showScriptName' => true,

to

'showScriptName' => false,

For this to work on Apache, mod_rewrite must be enabled, and the .htaccess file that comes with LimeSurvey must be in the LimeSurvey root folder. For nginx, see our LimeSurvey nginx example configuration.


How do I hide the red asterisk on mandatory questions?

LimeSurvey shows a red asterisk at the beginning of the question text of mandatory questions. In LimeSurvey 7.x, the word "Required" is shown next to it. To hide them, add a CSS rule to your survey theme:

  1. Core themes such as Fruity TwentyThree cannot be edited directly. Extend the theme first. This creates an editable copy.
  2. Open the theme editor for the copy and select the file custom.css.
  3. Add the following line:
.asterisk, .ls-question-mandatory {display: none;}


Save the changes. Then select the extended theme in the general settings of your survey.

This also hides the asterisk on the public registration form.

The asterisk and the word "Required" tell participants, including those using a screen reader, which questions they have to answer. If you hide them, say in the question text or in the welcome text of your survey which questions are mandatory.


How do I create a survey which is open to everyone?

To create a survey that anyone can fill out, do not create a survey participants table. Share the survey link shown on the overview panel.


How do I make all public registration fields mandatory?

If you use a survey participants table and also allow public registration, people who want to take part fill out a registration form with their first name, last name and email address. Only the email address is mandatory:



To make the first name and last name mandatory too, edit the registration form of your survey theme. For Fruity TwentyThree, extend the theme first, open the theme editor for the copy and edit the file views/subviews/registration/register_form.twig. The email field shows how a mandatory field is built:

        {# Participants email #}
        <div class='{{ aSurveyInfo.class.registerformcolrowc }} row mb-3' {{ aSurveyInfo.attr.registerformcolrowc }}>
            <label {{ aSurveyInfo.attr.registerformcolrowclabel }} class='{{ aSurveyInfo.class.registerformcolrowclabel }}  control-label'> {{ gT("E-mail") }} {{ include('./subviews/registration/required.twig') }}</label>
            <div {{ aSurveyInfo.attr.registerformcolrowcdiv }}  >
                {{ C.Html.emailField('register_email', aSurveyInfo.sEmail, ({'id' : 'register_email','class' : 'form-control ls-important-field','required' : true, 'placeholder' : gT('Enter e-mail address', 'unescaped')})) }}
            </div>
        </div>

Change the first name and last name fields the same way:

  • Add {{ include('./subviews/registration/required.twig') }} to the label. This shows the asterisk.
  • Add 'required' : true to the options of the text field. This makes the field mandatory.

The edited fields should look like this (the example is from LimeSurvey 7.x; in 6.x, the placeholder texts are written without 'unescaped'):

            {# Participants first name #}
            <div class='{{ aSurveyInfo.class.registerformcolrow }} col-md-6 col-12 mb-3 mb-md-0' {{ aSurveyInfo.attr.registerformcolrow }}>
                <label for='register_firstname' class='{{ aSurveyInfo.class.registerformcolrowlabel }} control-label '>{{ gT("First name") }} {{ include('./subviews/registration/required.twig') }}</label> {# extra label #}
                <div class="">
                    {{ C.Html.textField('register_firstname', aSurveyInfo.sFirstName, ({'id' : 'register_firstname','class' : 'form-control ls-important-field', 'required' : true, 'placeholder' : gT('Enter your first name', 'unescaped') })) }} {# mandatory field #}
                </div>
            </div>

            {# Participants last name #}
            <div class='{{ aSurveyInfo.class.registerformcolrowb }} col-md-6 col-12' {{ aSurveyInfo.attr.registerformcolrowb }}>
                <label {{ aSurveyInfo.attr.registerformcolrowblabel }}  class='{{ aSurveyInfo.class.registerformcolrowblabel }} control-label '>{{ gT("Last name") }} {{ include('./subviews/registration/required.twig') }}</label> {# extra label #}
                <div {{ aSurveyInfo.attr.registerformcolrowbdiv }} >
                    {{ C.Html.textField('register_lastname', aSurveyInfo.sLastName, ({'id' : 'register_lastname', 'class' : 'form-control ls-important-field', 'required' : true, 'placeholder' : gT('Enter your last name', 'unescaped')})) }} {# mandatory field #}
                </div>
            </div>


The public registration form now shows all three fields as mandatory:



Hiding the language switcher

How to hide the language switchers (on the welcome page and in the top menu) is described in the hints & tips for multilingual surveys.


Hiding the "Exit and clear survey" button

In Fruity TwentyThree, the "Exit and clear survey" button is controlled by the theme option Show 'Clear all' button (under Simple options). It is set to No by default, so participants only see the button if the option has been switched on. To hide the button, set the option to No in the theme options of your survey.


Hiding this button is useful for long surveys that participants save and resume later. Clicking "Exit and clear survey" deletes their partially completed response.

Help, I accidentally...

I forgot my admin password. How do I reset it?

Using the command line

  1. Log in to your server with a command line (for example with SSH).
  2. Make sure you can run PHP from the command line (see the PHP documentation).
  3. Go to your LimeSurvey directory.
  4. Run this command: php application/commands/console.php resetpassword USERNAME NEWPASSWORD

USERNAME is the name of an existing administrator account, for example admin. If the php command is not found, use its full path, for example /usr/bin/php. The new password is saved in your shell history, so change it in LimeSurvey after you have logged in.

With only FTP access

Use the third-party controller ResetPasswordController. Remove the file and its settings from config.php again once you have reset the password.


Directly in the database

If you have direct access to the LimeSurvey database, you can set a new password there. LimeSurvey accepts a password that is stored as an SHA-256 hash, and replaces it with a more secure hash the next time the user logs in.

For example, in MySQL or MariaDB, this sets the password of the user admin to newpassword:

UPDATE lime_users SET password = SHA2('newpassword', 256) WHERE users_name = 'admin';

In PostgreSQL, use encode(sha256('newpassword'), 'hex') instead of SHA2('newpassword', 256). If your tables use a different prefix than lime_, change the table name accordingly. Log in and change the password right away.


How can I restore data from a deactivated survey?

We recommend to always expire a survey instead of deactivating it. If you deactivated your survey by mistake, it is important that you don't change anything in the survey!

Then, and only then, the following steps will work:

  1. Activate your survey again.
  2. Open the responses of the survey.
  3. Click on Import and select "Import responses from a deactivated survey table" (LimeSurvey 6.x) or "Import responses from an archived response table" (LimeSurvey 7.x).
  4. Choose your source table.
  5. Click on the "Import" button.


To understand the difference between expiring and deactivating a survey, see Closing a survey.


I deleted a question/question group/survey!

If you delete it, it is gone. Only a backup can help you recover it.


If you use LimeSurvey Cloud, open a support ticket and ask the team to restore the backup of your account. Please note that this service is not free of charge!


Hardware and software requirements

For general requirements, see our installation instructions.


What limitations does LimeSurvey have...

...regarding speed

There is no speed limit in LimeSurvey. Everything depends on how fast your server and its connection are. If you expect many participants within a short time and are not sure whether your server can handle this, search our forum for similar topics, use LimeSurvey Cloud, or contact an authorized LimeSurvey partner.

...regarding survey size

'Survey size' refers to the number of questions (and answers) in your survey – don't confuse this with the number of responses to your survey (there is no limit on that). LimeSurvey itself has no limit on the number of questions or answers, but the database you use has several limits. The most important ones are the maximum number of columns in the response table and the maximum size of a row.

  Attention : Please think about what you do before you do it! An array of 10 x 10 items already costs you 100 columns. Rule of thumb: every item on the screen that can be filled in or selected costs one column!


MySQL and MariaDB

By default, LimeSurvey creates its tables with the MyISAM storage engine. You can choose InnoDB instead during the installation.

  • MyISAM: A row can have at most 65,535 bytes. With the utf8mb4 character set that LimeSurvey uses, one character can need up to four bytes, so a row may hold as few as 16,383 characters. This is usually the first limit you reach.
  • InnoDB: A table can have at most 1,017 columns.

For details, see the MySQL documentation.

You can roughly calculate the size of your survey like this:

  • Every multiple numerical question: 20 chars for each answer
  • Every multiple choice & array question answers: 5 chars for each answer
  • Every other question type: 5 chars
  • Add 10% for the usual overhead

Microsoft SQL Server

Microsoft SQL Server allows up to 1,024 columns per table and 8,060 bytes per row (see the Microsoft documentation). Even if your survey can be activated, participants may not be able to submit their responses if they contain a lot of text.

The 8,060-byte limit can also cause errors after activation when you browse or export responses. Export the answer codes instead of the answer texts, or export only some of the columns.

PostgreSQL

PostgreSQL allows 250 to 1,600 columns per table, depending on the column types (see the PostgreSQL documentation). When you export responses, you can get an SQLSTATE[54000] error. In that case, export only some of the columns. See this forum post.

How to increase the maximum number of columns in PostgreSQL

If your survey contains too many questions, you can compile PostgreSQL with a larger block size, for example 32 kB (configure option --with-blocksize=32), to fit more columns into a row. A database created with one block size cannot be used by a PostgreSQL server compiled with another one, so do this before you create the LimeSurvey database.

For step-by-step instructions, see Instructions for increasing the maximum number of columns in PostgreSQL on Linux.

Fatal error: Allowed memory size

Depending on your server configuration you might run into memory problems being reported by an error like "Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 233472 bytes) in /path/to/htdocs/limesurvey/filename.php on line 7296".

LimeSurvey sets its own memory limit, which is 256 MB by default. You can raise it by adding the optional setting memory_limit to LimeSurvey's config file.

Please bear in mind that a higher limit set in your server's PHP configuration takes precedence. To raise the PHP memory limit of your server to 512 MB, add:

  • memory_limit = 512M to your server's main php.ini file (recommended, if you have access)
  • php_value memory_limit 512M to the .htaccess file in the LimeSurvey root folder (only if PHP runs as an Apache module)
  • memory_limit = 512M to a php.ini or .user.ini file in the LimeSurvey root folder (on some hosting setups)

Specific configuration

Under certain circumstances, you need to update the LimeSurvey configuration in application/config/config.php.

Two LimeSurvey instances on the same domain

You can run several LimeSurvey instances on the same domain, for example example.org/ls1 and example.org/ls2. Each instance needs its own session cookie name, set with sessionName in the session section of application/config/config.php. The installer sets a random name, so a fresh installation needs no changes.

If you copied config.php from one instance to another, or your config.php comes from a version older than LimeSurvey 4.0, check that each instance has its own value. Otherwise, logging in to one instance logs you out of the other. Add or change the sessionName line in the existing session section, for example in the config file of ls1:

        'session' => array (
            'sessionName' => 'LS-ABCDEFGHIJKLMNOP',
        ),

Use a different random value in the config file of ls2. See also session settings.