LimeSurvey on IIS

By Eric Woersching

January 17, 2008


LimeSurvey (formerly PHPSurveyor) is a fully functional survey development and data entry system including data entry screen, public data entry script, method for issuing tokens, emailing invitations and recording responses, and basic statistical analysis.

For more information about LimeSurvey, see

In this section, we go through the steps required to install LimeSurvey to work with FastCGI extension on IIS 6.0 and IIS 7.0 and above. To find out more about FastCGI support in IIS, see

The following steps assume that you have completed the setup and configuration of FastCGI extension and PHP libraries as described in

Download and Unpack LimeSurvey

First, download the latest stable release of the LimeSurvey application. For this article, we use LimeSurvey 1.53 downloaded from the mirror

Once you download the package, uncompress it and copy all the files and folders to

Set Up the Database

Before starting the installation procedure for LimeSurvey, create a database on your server. Also create a user and grant this user db ownership permission to the database. Follow the instructions in the Setting Up a Database for a PHP Application on IIS article for a MySQL database. This walkthrough uses the following database information:

  • Database Name: 'limesurvey'
  • Database User: 'limesurveyuser'
  • Account Password: 'limesurvey'

Set Up and Configure LimeSurvey

Install Required Libraries
LimeSurvey requires an mbstring library. To enable the mbstring library, open the PHP.ini file located in the PHP installation folder and search for mbstring. The line that contains that string is most likely commented out with a semicolon. Remove the semicolon, save and restart your Web server.
LDAP and GD are optional libraries for the LimeSurvey tool. We have not enabled these tools for our application.

Edit the configuration file config.php, which is located in the root directory of the LimeSurvey application source.

  • $databasetype: This is the database type. Set "mysql" here for the MySQL database.
  • $databaselocation: Set this to the IP/net location of your database server. In our case, it is "localhost".
  • $databaseport: Set this to the port used by your database server. In most cases "default" is fine - if your server is using a non-standard port, change 'default' to the port number.
  • $databasename: The name of the database on your server that you use for LimeSurvey. We use a previously created database named “limesurvey”.
  • $databaseuser: Your database server user name “limesurvey”.
  • $databasepass: Your database password “limesurvey”.
  • $dbprefix: Leave this setting blank.
  • $databasetabletype: The storage engine mysql is used when creating survey results tables (if mysql is used). Default is MyISAM.
  • $rooturl: Set to the URL location of your LimeSurvey scripts. The default setting will attempt to do this for you. You do not need to change anything.
  • $rootdir: Set to the physical disk location of your scripts. The default setting will attempt to do this for you. You do not need to change anything here. If it does not work, write the disc physical location like “c:\inetpub\wwwroot\limesurvey”.

Email Settings

  • $siteadminemail: This is the default email address of the site administrator and is used for system messages and contact options.
  • $siteadminname: The real name of the site administrator.
  • $emailmethod: This determines how E-mail messages are sent. The following options are available:
    • mail: use internal PHP mailer
    • sendmail: use sendmail mailer
    • smtp:use SMTP relaying. Use this setting when you run LimeSurvey on a host that is not your mail server.
  • $emailsmtphost: If you use 'smtp' as $emailmethod, then you must put your SMTP-server here.
  • $emailsmtpuser: If your SMTP-server requires authentication, then set this to your user name. Otherwise, it must be blank.
  • $emailsmtppassword: If your SMTP-server requires authentication, set this to your password. Otherwise it must be blank.
  • $maxemails: When sending invitations or reminders to survey participants, use this setting to determine how many emails can be sent in one batch. Different Web servers have different email capacities, and if your script takes too long to send a batch of emails, the script could time out and cause errors. Most Web servers can send 100 emails at a time within the default 30 second time limit for a PHP script. If you get script timeout errors when sending large numbers of emails, reduce the number in this setting.

Run the Installation Script
Go to "http://localhost/limesurvey/admin/install/index.php". If you configure everything correctly, you are asked to create the database and/or create the tables inside the database. After you have done this and the script tells you that it successfully created the tables, rename or delete the install directory.

Connect to the administration script for the first time
After uploading the files, you are ready to set up LimeSurvey from a Web browser. Open your browser and enter the URL of your admin.php script. Assuming you used LimeSurvey as the directory name in which to store the files, this is something like "".

The first time you use LimeSurvey, the script connects to the database you set in the config.php file. If the appropriate database does not yet exist, LimeSurvey gives you an error message. You should get a login screen. The default login credentials are “admin” and “password” and must be changed.

How to Use LimeSurvey

Refer to the below link for admin setup and using LimeSurvey. Refer to the following screen shots for the survey.

Getting More Information

To discuss the FastCGI support in IIS, or file bug reports, use the FastCGI forums:

To get more information regarding running various PHP applications on IIS refer to: