同大部分的网站系统一样,LimeSurvey也可以通过修改配置文件(config.php位于/limesurvey/application目录下)来达到调整的目的。
PS:貌似老版本中的config.php是位于/limesurvey目录下的(个人推测,没有考证过),所以网络上的很多文章(包括LimeSurvey官网)都是指向这里。

一、必要的设定

  • $databasetype:数据库的类型。“mysql”表示使用 MySQL 的数据库服务器,“odbc_mssql”表示使用 Microsoft SQL 服务器。
  • $databaselocation:把 MySQL 数据库设定成 IP/网络位置。大多数情况下设定为“localhost”即可。
  • $databaseport:数据库服务器使用的接口号,一般而言使用 "预设" 即可——如果数据库服务器采用非标准接口,更改接口的“预设”为该接口号即可。
  • $databasename:用于 LimeSurvey 的数据库名称。 如果你拥有服务器的管理员权限, 你可以为LimeSurvey 建立专用数据库(如果是这种情况,则在此设定填上其名称)。退而求其次,你也可以使用沿用的数据库名称,不过要确定数据库内没有旧版本的 LimeSurvey 数据表。
  • $databaseuser:数据库的用户名
  • $databasepass:数据库的密码
  • **$dbprefix:**如果你是使用独立的数据库存放 LimeSurvey, 就可以留空(例如: $dbprefix="";)。 如果你想 LimeSurvey 与其他现有数据库程序共享数据, 可以在本字段加上前缀字符串 ,建议你的前缀是 "lime_", 但一切还是悉随尊便。
  • $databasetabletype:建立问卷分析结果的数据表时,MySQL 要使用的储存引擎 (若使用 mysql 的话)。建议使用 InnoDB ,而预设是 is MyISAM。
  • **$rooturl:**这是执行 LimeSurvey 程序文件的正确 URL 地址。默认变量 {$_SERVER'SERVER_NAME'} 会自动找出执行文件的所在,万一不行,你才需要在此设定 URL——例如︰ "http://www.mydomain.com/limesurvey"。
  • $rootdir:执行 limesurvey 程序文件的绝对位置。默认变量 "dirname(!!!FILE!!!)章节;" 会自动找出执行文件的所在,万一不行,你才需要在此设定——例如︰ "/home/public_html/limesurvey"。

二、选项设定

适用于任何 LimeSurvey 的标准安装,以下的位置设定可以不必设定就可以自动执行(例如:你只要使用原来的目录结构),因此只要你保持原来的目录名称,就毋须在此作出任何修改.

  • **$homeurl:** 这是管理源程序的实质位置 URL。全部存放在 /limesurvey/admin 文件夹。相应的网址 URL 所在 - 在此举例 “ http://www.mydomain.com/limesurvey/html/admin ”。切勿在网址列尾加上斜线。在 config.php php 变量值默认是 {$_SERVER['SERVER_NAME']} 可以自动侦测到服务器的名称. 一般都是留空本字段,你只需要修改变量字符串后的目录名称以吻合你 LimeSurvey 源程序所在的实际目录。
  • $publicurl: 这是 '公开执行源程序'的 URL 位置. 它位于 "limesurvey" 资文件夹 (或其他你给存放 LimeSurvey 源程序的目录名称).
    • $tempurl: 这是设定 "/limesurvey/tmp" 目录的 URL 位置 - 或您想把 LimeSurvey 存放临时档案及上传档案的目录位置. 这目录必须具有读/写网络服务器的权限 (ie: chmod 755)
    • $imagefiles: 默认是指向 /limesurvey/admin/images 的 URL 位置 - 图片会自动存放于此。如果图片是存放在其他位置,请您在此设定其 URL 正确位置.
    • $homedir: 指向管埋源程序文件的实质位置 - 例如︰"/home/usr/htdocs/limesurvey/admin". 结尾切勿加上斜线. 在 config.php 默认值会采用 php 变量设定自动找寻全部文件的默认根目录 - {$_SERVER'DOCUMENT_ROOT'}. 在大多数情况下您只需要把 LimeSurvey 源程序文件所在的目录名称修改匹配即可。
    • $tempdir: 在此设定 /limesurvey/tmp 目录的实质位置,让源程序可以读写档案.
    • $publicdir: 在此设定 '公用源程序文件' 目录的实质位置.
    • $sitename: 在网站管理页面显示的名称,可以自由设定名称.(ie: "本机构的问卷工具")
    • $scriptname: 除非您已更改 admin.php 的名称,否则让本栏预设为 "admin.php". 如果您想在网址列以 "index.php"方式执行, 您就要把admin.php 檔改名, 并在此设定为 "index.php".
    • $accesscontrol: 设定值是 1 可以启用访问控制, 设定值是 0 就关闭它.
    • $defaultuser: 当LimeSurvey 第一次建立安全设定及源程序启用访问控制时,本阑就是默认建立的用户名称.
    • $defaultpass: 设定值是 1 可以启用访问控制, 设定值是 0 就关闭它.
    • $defaultuser: 当LimeSurvey 第一次建立安全设定及源程序启用访问控制时,本阑就是默认建立的用户密码.
    • $lwcdropdowns: 可以设定成 "L" 或 "R",设定成 "R" 会生成列表附有评语字段的题型.,而且有圆形的单选按钮;选用 "L" 会生成列表附有评语字段的题型,而且有下拉式选单.
    • $dropdownthreshold: 当您为 $dropdowns 选择 "R" 设定, 让您以以圆型单选的形式显示选项的最大数目,然后变回下拉式列表. 如果您有题目需要用到相当多的选项,如果以圆型单选的按钮形式显示,看来比较顺眼. 最大设定值 25 (默认值)让问卷参与者更易使用.
    • $repeatheadings: 以自定义表列题型表示您有很多答题显示在屏幕上,长度足以用上超过一个页面. 先决定了答案的数目,才重复题目的标题信息. 比较常用是 15 的设定值. 如果您不需要重复标题, 可设定为 0 (默认值).*$minrepeatheadings: 决定在自定义表列题型显示的答案选项的最小数目,之后会重复表头数据。
    • $defaultlang: 管理选单及公开问卷显示的默认语言。你可以在管理选单更改本设定,把公开问卷更改为个别问卷可以有不同的语言设定。
    • $timeadjust: 如果网管的网络服务器与网管设定问卷的实际所在的时区有出入, 请把两者的时区差异在此填写. 举例︰我住在澳洲但采用位处美国的服务器. 网络服务器所在的时区比我所在的时区慢了 14 小时。国此本栏设定就是 "14". 换言之,要把网络服务器加上14小时. 这个设定对于要加上时间印章的问卷极其重要。*$allowmandbackwards: 设定值是 1 ,表示本变量容许问卷持分者即使未有填写必须回答的题目时,也可以返回上一道题目;若设定值是 0, 持分者必须填写必须回答的题目,才可以返回上一道题目.
    • $deletenonvalues: 这项设定很难向您解释清楚. 若设定为 0, 而当中一道题目 (或许在此称之为 "b" 题目) 符合条件就会显示 (ie: 它的出现是建基于上一道题目的答案满足特定条件 - 在此称之为 "a" 题目), 当答题者回应了 "b" 题目后, 但他后悔又想返回上一道的 "a" 题目重新改答案,如此令到 "b"题目不能再出现 (因为答案改变了, 令 "b"题目出现的条件不复存在), 本设定令问卷仍会记住原来出现 "b" 题目您曾回答过的答案,把它记录下来. 我觉得本功能有可取之处,所以提供大家多一个选择。但如果您宁可保持问卷操作的完整性,而认为不应该把不合理的资料储存下来,您可以把本栏设定为 1, 问卷系统就不会额外储存上述的信息了。
    • $shownoanswer: 对于图形单选项的题型/选择包含可修改答案的选择型题目(ie: 列表及表列题型) 设定本题为可以不必回答的,只要把 $shownoanswer 设定成 1, 这样就会出现另一个条目, 显示 "N/A" 的字样- 这表示持分者可以选择不回答此题目. 有些人不喜欢这样显示的话,可以把本栏设定成 0.
    • $debug: 这栏让你把 PHP 出错讯息设定为 E_ALL. 这表示系统会显示任何细微的源程序执行过程所发生的警示或出错讯息. 如果你要调试应用软件包, 就要把本栏设定成的 1,但在正式使用时,就切勿使用此设定值,因为它会显示路径. (默认值: 0)
    • $sessionlifetime: 本设定决定问卷持分者在在线连续停顿的秒数时间 (即网页没有被翻动的状况) 以保持联机的状态,使上线的登入数据不被清除. (默认值: 3600)
    • $stripQueryFromRefurl: 本设定决定来访 URL 是否储存参数. 默认值是 "false" (在此情况下来访 URL 会储存全部参数). 相反用 "TRUE" 的设定值来访 url 部份参数不会被保留下来。

    三、邮件设定

    • $siteadminemail: 这是网站管理员的默认电邮地址,用来作为联络及发布站务讯息的用途.
    • $siteadminname: 网站管理员的真实姓名.
    • $emailmethod:决定电邮讯息发放的方式. 有以下选项:
    o mail: 采用内部 PHP 邮件处理系统
    o sendmail: 采用寄发电邮的邮件处理系统
    o smtp: 采用 SMTP 传送
    • $emailsmtphost: 如果你采用 'smtp' 作为 $emailmethod ,然后您就要在此设定 SMTP-服务器
    • $emailsmtpuser: 如果你的 SMTP-服务器需要核实,请在此输入你的用户姓名, 否则在此字段留空.
    • $emailsmtppassword: 如果你的 SMTP-服务器需要核实,请在此设定你的密码, 否则在此字段留空.
    • $maxemails: 当你发送电邮邀请或电邮提示给持分者时, 这个设定是用来决定一次过可以送出多少封电邮. 不同的网络服务器有不同的电邮容量的限制。如果你的源程序需要很长的时间才可以一次过成功发送一批电邮, 源程序在执行过程会有 time out 的系统出错的讯息. 大部份网络服务器可以在 php 源程序执行时在默认的30秒内一次过送出 100 封电邮. 如果你的源程序出现 timeout 的出错讯息,就请在此字段减低电邮发送的数目。

四、统计及浏览问卷分析结果的设定

• $usejpgraph: 如果您正确进行了 jpgraph class 在你的服务器的安装设定, 您就可以开启这个功能 (1=on, 0=off) ,而统计的源程序会根摘要的分析结果显示批型图. 本功仍在开发阶段, 所以执行结果可能会有毛病。
• $jpgraphdir: 这是jpgraph class 源程序在硬盘的实质位置. 如果 $usejpgraph 的数值等于 1,本栏就必须设定。
• $jpgraphfont: 这是用于图形的字体。 预设是使用 "FF_FONT1"
• $embedded: 如果你想把 LimeSurvey 整合到另一页面,你可以采用本设定而不需要再采用 HTML 文件头的既定函数,就可以做一个快速的整合.
• $filterout_incomplete_answers: 把本栏设定为 'true' ,你就可以让 LimeSurvey 筛走在浏览或分析问卷结果时出现的不完整的答案。 有关不完整答卷内容的详情见于 浏览问卷的分析结果?. 正因为这些记录会有碍统计的结果, 你可以选择以不同的 GUI 格式把筛选设定开启或关闭: config.php 的参数只不过是不完整答案筛选设定的预设状态.

五、LDAP 设定

当前的 LDAP 是用来 "导入 LDAP 查询设定的操作代码" 但它未来会进一步用作支持 LDAP 的核证工作。要使用本功能,你要在 config.php 启用 LDAP 的支持功能,并在config-ldap.php 设定 LDAP 的参数组态。

5.5.1 在 config.php 启用 LDAP 功能
• $enableLdap: 如果你在 LimeSurvey 使用 LDAP 功能, 你必须设定本字段的参数为 true (默认值是 false )
5.5.2 在 config-idap.php 定义 LDAP 服务器
首先定义 ldap 服务器的连接选项. 对每个服务器而言, 有以下各选项:
• $serverId: 一个整数用来识别这个 LDAP 服务器. 它是用来做查询定义去把一个服务器维系到特定的查询设定。
• $ldap_server[$serverId]['server']: ldap 服务器的 DNS 名称或 IP 地址. 如果您使用 SSL 安全联机 (LDAPs 或 LDAP+Start-TLS) 这个名称必须对应到服务器的证书 CN (或 SubjectAlternativeName)
• $ldap_server[$serverId]['protoversion']: 可以是 'ldapv2' 或 'ldapv3' 视乎你的服务器是采用哪一通讯制式. 'ldapv3' 是最多人使用的通讯制式。不过如果你想用加密的联机, 需注意 LDAPs 只支持 'ldapv2' 模式,而 Start-TLS 是针对 'ldapv3' 使用的加密法。
• $ldap_server[$serverId]['encrypt']: 定义使用哪一种加密法. 'ldaps' 支持 'ldav2' 服务器, 'start-tls' 支持 'ldapv3' 服务器. 'none' 关键词是用于 cleartext LDAP 通讯模式
o 记住对于r 'ldaps' 或 'start-tls' 的加密法, 网络服务器必须做 LDAP 服务器的证书核实工作,所以你需要在 openldap library 定义证书的来源(一般而言,在 lINUX 系统只要在 /etc/openldap/ldap.conf file 设定即可)
• $ldap_server[$serverId]['referrals']: 布尔参数用来定义能否采用referrals (若是 ActiveDirectory 请采用采用 false 的域值)
接着你需要定义核实的方法来存取目录的数据. 如果采用 '匿名' 存取的方法就不用设定以下两个参数了;如果不用 '匿名' 就请依序进行下列设定吧:
• $ldap_server[$serverId]['binddn']: 'LDAP'用户的 DN 用来读取目录数据
• $ldap_server[$serverId]['bindpw']: 上列 'LDAP'用户的密码
如果你需要定义其他 LDAP 服务器, 可加入以下一列来新增 serverID 及相关的新参数:
• $serverId++;
5.5.3 定义 config-ldap.php 的查询设定
警告: 当其中一个参数需要 ldap 属性名称 配合时, 只限于全部小楷的英文字母名称: 举例︰输入 displayname 而不可以是 displayName.
详情见于 config-ldap.php 文件文件内的样本组态示例.
5.5.3.1 简易查询设定
简易查询设定只能筛选 LDAP 包含其相关属性及位置的条目,这些条件能够配合查询ActiveDirectory.
• $query_id: 是 LDAP 查询设定的 id
• $ldap_queries[$query_id]['ldapServerId']: 维系查询设定到特定的服务器*$ldap_queries[$query_id]['name']:__ 查询设定的字符串描述会显示在 GUI.
• $ldap_queries[$query_id]['userbase']: 在 DN 根目录起采用用户搜寻
• $ldap_queries[$query_id]['userfilter']: 用于筛选合适用户条目的筛选设定. 它必须用括号包围
• $ldap_queries[$query_id]['userscope']: 用于搜寻用户的 LDAP 范围 ('base', 'one' or 'sub')
• $ldap_queries[$query_id]['firstname_attr']: Ldap attribute 属性对应操作代码条目的名字字段
• $ldap_queries[$query_id]['lastname_attr']: Ldap 属性对应 操作代码条目的姓氏字段
• $ldap_queries[$query_id]['email_attr']: Ldap 属性对应操作代码条目的电邮地址的字段

您亦可以自由决定是否根据目录查取相关信息:
• $ldap_queries[$query_id]['token_attr']: Ldap attribute 属性对应操作代码编码
• $ldap_queries[$query_id]['language']: Ldap 属性对应用户语言编码
• $ldap_queries[$query_id]['attr1']: Ldap 属性对应 attribute_1 字段
• $ldap_queries[$query_id]['attr2']: Ldap 属性对应 attribute_2 字段
5.5.3.2 结合组别查询设定与 DN 成员
在此示范如何建立更复杂的查询设定.
下列的查询设定是采用 LDAP 的一次搜寻法去找寻 LDAP 组别. LDAP 组别是蛋于 LDAP 的条目内有参照用户的条目,其形式如下︰:
o 用户 id (举例︰ posixGroups ) ==> 见下一章节
o 或者使用 DNs (举例︰ groupofnames 及 groupofuniquenames 均使用此搜寻法) ==> 详见下文
在此处理包含用户 DN 的组别:
• 定义 $query_id, $ldap_queries$query_id]['ldapServerId'], $ldap_queries[$query_id 如上所述
然后定义组别的筛选设定的参数:
• $ldap_queries[$query_id]['groupbase']: 由 DN 根用录起搜寻组别条目
• $ldap_queries[$query_id]['groupfilter']: 采用 LDAP 筛选设定去筛选合适的组别条目
• $ldap_queries[$query_id]['groupscope']: 找寻组别的 LDAP 搜寻范围 ('on', 'base' or 'sub')
• $ldap_queries[$query_id]['groupmemberattr']: 给予在组别条目包含参照用户条目的 LDAP 属性的名称
• $ldap_queries[$query_id]['groupmemberisdn']: TRUE
在此万事俱备,足以让 LDAP 首次搜寻法找寻到用户相应要筛选的组别. 但是你可以限制 '用户对象',方法就是采用另一个筛选设定去选择 '用户对象'. 当然以下的选项你是可以自由决定是否采用:
• $ldap_queries[$query_id]['userbase']: 适用于用户 LDAP 搜寻的 主轴 DN (限于吻合本主轴的用户对象)
• $ldap_queries[$query_id]['userscope']: 适用于苜户 LDAP 搜寻的范围 (限于吻合 userbase+scope 的范围)
• $ldap_queries[$query_id]['userfilter']: 适用于每位用户对象条目新增选项的筛选设定 (建基于它的属性)
5.5.3.3 结合 UID 成员的组别查询
当组别成员是 用户 UID 而并非用户 DN ,这里演示结合组别查询的方法.
对于 用户 DN 成员的组别查询, 方法是采用 LDAP 搜寻,它会找寻 LDAP 组利的条目,并找出相关的成员。然后这些成员的关键值会用于用户的搜寻过滤器,以筛选出相应的条目. 此外还需要设定另一个参数来定义用户条目的用户属性,而该条目必须吻合组别内的 UID 成员数据。

让我们检视必须的参数:
• 定义 $query_id, $ldap_queries$query_id]['ldapServerId'], $ldap_queries[$query_id 的方法见上文
定义组别筛选设定的参数:
• $ldap_queries[$query_id]['groupbase']:在 DN 根目录的位置起搜寻组别条目
• $ldap_queries[$query_id]['groupfilter']: 在 LDAP 筛选设定选择合适的组别条目
• $ldap_queries[$query_id]['groupscope']: 采用 LDAP 的方法定义组别的搜寻范围 ('on', 'base' or 'sub')
• $ldap_queries[$query_id]['groupmemberattr']: 在包含参照组别条目的组别条目里给予 LDAP 属性的命名
• $ldap_queries[$query_id]['groupmemberisdn']: 假
• $ldap_queries[$query_id]['useridattr']: 在组别成员找出吻合 UID 的用户属性给予命名
至此万事俱备,采用 LDAP 方法搜寻用户 UIDs 找出相应的组别,而用户搜寻的筛选设定亦自动执行。 但是你可以决定选择哪些 '用户对象' ,方法是根据成员 UID 填写自动化的用户筛选设定。以下当然是自由决定的设定:
• $ldap_queries[$query_id]['userbase']: 采用用户 LDAP 搜寻法的主轴 DN (限于吻合本设定的用户对象)
• $ldap_queries[$query_id]['userscope']: 采用用户 LDAP 搜寻法的搜寻范围 (限于吻合userbase + scope 的用户对象)
• $ldap_queries[$query_id]['userfilter']: 适用于每位用户对象条目新增选项的筛选设定 (建基于它的属性)

最后修改:2021 年 08 月 06 日
如果觉得我的文章对你有用,请随意赞赏