可选设置
From LimeSurvey Manual
以下内容适用于希望编辑那些无法通过 LimeSurvey 安装程序的 GUI(图形用户界面)修改的配置设置的用户。请注意,对 LimeSurvey 根目录中的文件所做的一切更改均由您自行承担风险。如果您遇到问题或需要进一步指导,请加入讨论论坛,向 LimeSurvey 社区寻求帮助。
注意
这些可选设置仅在标准安装文件 config-defaults.php 内能找到 - 某些项目仅在首次安装时使用后就被全局设置(Global settings/zh-hans)覆盖了。 如果你想改变这些设置,请不要在 config-defaults.php 文件内直接修改,而应该复制这些特定项目/行到 config.php 文件后再行修改。config.php 文件内的所有设置会覆盖 config-defaults.php 文件内的默认设置。自1.87版本开始,某些项目设置可以在全局设置对话框内覆盖。 这种方式十分利于你以后升级系统!
数据库指定
- $databaseport: 这个项目设置你的数据库服务器的端口。大多数情况下默认设置(default)工作的很好。 - 如果你的数据库服务器使用非标准端口仅简单地修改"默认设置"到实际端口。
- $databasetabletype: MySQL 存储引擎类型。该引擎在创建调查结果表和提取表的时候会被使用(如果数据库使用的是 mysql)。 'MyISAM' 类型是推荐使用的并能保证正确工作的默认引擎。
- $databasepersistent: 如果你想使能持续数据库连接设置该项目为真('true')- 对某些数据库驱动而言可能快一些。默认设置是假。
执行标准安装后,可选设定只存在于 /application/config/config-defaults.php 这一个文件中。这些可选设定中有一部分只是在初次安装的时候会被用到,它们中的部分值会被Global settings/zh-hans覆盖
config.php中的所有设定会覆盖掉 config-defaults.php 中的默认设定,且这些设置中的一部分会被全局设定对话所覆盖 (New in 1.87 ) . 通过这个方法,以后升级你的安装会容易得多。
升级时,只有 config-defaults.php 中的设置会被更改。因此,编辑 config.php 文件可以保留您的自定义设置。
要更新/添加 /application/config/config.php 中的 LimeSurvey 设置,您需要更新 config 数组:
'config'=>array(
'debug'=>0,
'debugsql'=>0,
'LimeSurveySetting'=>'New value', // Update default LimeSurvey config here
)
Yii 设置
LimeSurvey 使用 Yii 框架,该框架在 application/config/internal.php 和 application/config/config.php 文件中有其自身的配置参数。您也可以通过 Yii 配置访问 LimeSurvey 的某些特定配置设置。
由于 config.php 数组会合并到整个配置中,因此您可以在 config.php 文件中替换任何 Yii 参数。
Yii 的特定设置位于 components 数组中:
'components' => array(
'db' => array(
....
),
'Specific settings'=>array(
....
),
),
数据库设置
首次安装 LimeSurvey 时,安装程序会将数据库设置写入 config.php。如有需要,您可以更新 config.php 文件中的这一部分。请记住,此操作的风险由您自行承担! 另请参阅 Yii 文档,并请注意 LimeSurvey 仅支持以下数据库类型:mysql、pgsql、dblib、mssql 和 sqlsrv。
会话设置
您可以在 config.php 中设置一些会话参数(请参见下面的两个示例)。您可以取消注释或在 config.php 中添加所需的部分。其他设置请参阅 Yii 文档。
使用基于数据表的会话
LimeSurvey 可以使用基于数据表的会话,您可以在默认生成的 config.php 文件中找到一段被注释的内容。要使用基于数据表的会话,请删除每行前面的 //。
'session' => array (
'class' => 'application.core.web.DbHttpSession',
'connectionID' => 'db',
'sessionTableName' => '{{sessions}}',
),
其他会话更新
如果您的 LimeSurvey 安装使用 SSL('https'),在 config.php 中添加以下几行可以提高会话的安全性:
// Set the cookie via SSL
'session' => array (
'cookieParams' => array(
'secure' => true, // use SSL for cookies
'httponly' => true // Cookies may not be used by other protocols - experimental
),
),
如果您想固定 cookie 的域名,请在 config.php 中使用以下语法:
// Set the domain for cookie
'session' => array (
'cookieParams' => array(
'domain' => '.example.org',
),
),
同一域名下的每个 LimeSurvey 实例都需要有各自独立的会话名称,否则登录其中一个实例会导致您退出另一个实例。安装程序会在 config.php 中设置一个随机的会话名称。如果您是从其他实例复制的 config.php,或者您的 config.php 来自早于 LimeSurvey 4.0 的版本,请在现有的 session 部分中添加或修改 sessionName 行,并为每个实例使用不同的值:
// Set the name of the session
'session' => array (
'sessionName' => 'LS-ABCDEFGHIJKLMNOP',
),
请求设置
请求设置很重要,但默认设置已针对 LimeSurvey 的使用进行了优化。要了解更多信息,请参阅 Yii 文档。
例如,可以按以下方式修改 LimeSurvey 的请求设置配置(风险自负):
// Disable CSRF protection
'request' => array(
'enableCsrfValidation'=>false,
),
// Enforce a certain URL base
'request' => array(
'hostInfo' => 'http://www.example.org/'
),
// Set the cookie domain name and path for CSRF protection
'request' => array(
'csrfCookie' => array(
'domain' => '.example.com',
'path' => '/limesurvey/',
)
),
如果您只需要更新邀請碼邮件的 URL,请在 config.php 文件中设置 publicurl。
允许在 iFrame 中使用会话和 CSRF 验证
在全局安全设置中开启允许页面嵌入:只会允许浏览器在 iframe 中显示您的调查。要让参与者能够在 iframe 中填写并提交调查,您还需要按下文所述修改 config.php 中的会话和 CSRF cookie 设置。这两个 cookie 都必须以 SameSite=None 发送,而浏览器仅在有效的 HTTPS 连接下才接受该设置。
允许在 iframe 中启动会话
会话 cookie 必须是 secure(需要有效的 HTTPS 连接)和 httponly,并且 samesite 必须设置为 None。cookieParams 中的键必须全部使用小写字母。
'session' => array (
'sessionName'=>'LS-VBXZZORFJZCAKGYI',
// Uncomment the following lines if you need table-based sessions.
// Note: Table-based sessions are currently not supported on MSSQL server.
// 'class' => 'application.core.web.DbHttpSession',
// 'connectionID' => 'db',
// 'sessionTableName' => '{{sessions}}',
'cookieParams' => array(
'secure' => true,
'httponly' => true,
'samesite' => 'None',
),
),
允许在 iframe 中使用 csrf cookie
与会话 cookie 一样,CSRF cookie 必须是 secure,并且 sameSite 必须设置为 None。请注意,此处的键写作 sameSite。请将整个 request 数组添加在与 session 相同的层级。
'request' => array(
'enableCsrfValidation'=>true,
'csrfCookie' => array(
'sameSite' => 'None',
'secure' => true,
),
),
URL 设置
要更改默认的 URL 设置,请更新 urlManager:
// Use short URL
'urlManager' => array(
'urlFormat' => 'path',
'showScriptName' => false,
),
您还可以按以下方式在调查 ID 后添加 .html:
// Use short URL
'urlManager' => array(
'urlFormat' => 'path',
'rules' => array (
'<sid:\d+>' => array('survey/index','urlSuffix'=>'.html','matchValue'=>true),
),
'showScriptName' => false,
),
有关更多信息,请查看 Yii 文档。
日志设置
Yii 提供了多种生成日志的解决方案。要了解更多信息,请查看日志专题。LimeSurvey 默认使用 '1' 或 '2',这允许所有网络用户查看日志。您可以直接使用 Yii 创建自己的设置。
例如,将错误和警告记录到文件中的快速解决方案如下:
return array(
'components' => array(
/* Other component part here 'db' for example */
'log' => array(
'routes' => array(
'fileError' => array(
'class' => 'CFileLogRoute',
'levels' => 'warning, error',
'except' => 'exception.CHttpException.404',
),
),
),
/* Other component part here 'urlManager' for example */
),
/* Final part (with 'runtimePath' 'config' for example) */
);
application.controller.customInit.max_execution_time 和 application.controller.customInit.memory_limit 类别用于记录更改 PHP 设置的尝试。
如果您已知悉这些日志消息,并希望将其从日志中排除,可以将这些类别添加到日志路由配置的 except 选项中,如下所示:
'except' => [
'exception.CHttpException.404',
'application.controller.customInit.max_execution_time',
'application.controller.customInit.memory_limit',
],
.
运行时路径
运行时路径必须是“网络用户”可读写的目录。然而,运行时路径包含可能涉及安全信息的文件,而这些文件位于可公开访问的网络区域。LimeSurvey 将这些文件收集在 LimeSurvey 根目录的 temp 目录中。为了避免这些重要数据被访问,您可以通过编辑 /application/config/config.php 文件中的相应行,将运行时路径设置在公共网络访问范围之外:
return array(
'components' => array(
[…]
'runtimePath'=>'/var/limesurvey/runtime/',
'config'=>array(
[…]
)
)
)
基本设置
- sitename: 为您的调查站点命名。该名称将显示在调查列表概览和管理页眉中。默认值为 'LimeSurvey',可以在全局设置对话框中覆盖,或在 config.php 中编辑。
- siteadminemail: 这是站点管理员的默认电子邮件地址,用于系统消息和联系选项。此设置仅用作默认值,可以在全局设置对话框中覆盖。
- showEmailInError: 在错误页面的 mailto 链接中使用默认站点管理员电子邮件 (siteadminemail)。禁用后仅显示管理员名称。默认禁用是为了避免管理员电子邮件收到更多垃圾邮件。
- siteadminbounce: 这是退回邮件将被发送到的电子邮件地址。此设置仅用作默认值,可以通过全局设置对话框覆盖。
- siteadminname: 站点管理员的真实姓名。此设置仅用作默认值,可以在全局设置对话框中覆盖。
- proxy_host_name: 这是您的代理服务器的主机名(如果您位于代理之后并希望使用静默更新来更新 LimeSurvey,则必须填写)。
- proxy_host_port: 这是您的代理服务器的端口(如果您位于代理之后并希望使用静默更新来更新 LimeSurvey,则必须填写)。
安全
- maxLoginAttempt: 这是用户在其 IP 地址被阻止/锁定之前可以尝试输入正确密码的次数。默认值为 3,可以在 config.php 中修改。
- timeOutTime: 如果用户连续 <maxLoginAttempt> 次输入错误密码,将被锁定 <timeOutTime> 秒。默认值为 10 分钟,可以在 config.php 中修改。
- maxLoginAttemptParticipants: 这是参与者在其 IP 地址被阻止/锁定之前可以尝试输入有效邀请码的次数。默认值为 3,可以在 config.php 中修改。
- timeOutParticipants: 如果参与者连续 <maxLoginAttemptParticipants> 次输入错误邀请码,将被锁定 <timeOutParticipants> 秒。默认值为 10 分钟,可以在 config.php 中修改。
- surveyPreview_require_Auth: 默认设置为 true。如果将其设置为 'false',任何人都可以通过调查URL测试您的调查,而无需登录管理面板,也无需先激活调查。此设置为默认值,可以在全局设置对话框中覆盖,或在 config.php 中编辑。
- usercontrolSameGroupPolicy: 默认设置为 true。默认情况下,在 LimeSurvey 管理界面中定义的非管理员用户只能看到他们自己创建的用户,或至少属于同一个组的用户。默认值可以在全局设置对话框中覆盖,或在 config.php 中编辑。
- demoMode: 如果在 config.php 中将此选项设置为 'true',LimeSurvey 将进入演示模式。演示模式会更改以下内容:
- 禁用管理员用户的详细信息和密码修改;
- 禁用在模板编辑器中上传文件;
- 禁用发送电子邮件邀请和提醒;
- 禁用创建数据库转储;
- 禁用修改以下全局设置的功能:站点名称、默认语言、默认 HTML 编辑器模式、XSS 筛选。
- forcedsuperadmin: 对整个 LimeSurvey 拥有所有权限的用户 ID 数组。此设置只能在 config.php 文件中更新。该用户的权限无法在用户的全局权限中编辑,即使由其他强制超级管理员也不行。默认情况下,拥有此权限的用户是 ID 为 1 的用户,即安装后创建的第一个用户。
- force_ssl: 强制 LimeSurvey 通过 HTTPS 运行或阻止 HTTPS。请参阅全局设置管理界面中的强制 HTTPS。
- ssl_emergency_override: 此设置强制关闭 SSL。如果您在全局设置中启用了 HTTPS/SSL,但您的服务器未启用 HTTPS,则关闭它的唯一方法是直接更改数据库中的值。这允许您在更改“强制安全连接”的全局设置时强制关闭 HTTPS。此值应始终为 false,除非遇到紧急情况,此时可将其改为 true,直到问题解决。此设置只能通过 config.php 文件进行设置。
- ssl_disable_alert: 如果您确实无法或不想强制使用 SSL,可禁用向超级管理员发出的关于未强制 SSL 的警报。此设置只能通过 config.php 文件进行设置。
- allow_unserialize_attributedescriptions: 在导入或读取调查对象时,允许对邀请码属性进行反序列化(使用 PHP unserialize 函数)。邀请码属性数据以 JSON 格式保存。如果您导入的是非常旧的 LimeSurvey 版本的调查文件,并且需要获取其邀请码属性,则必须启用此设置。警告:由于对象实例化和自动加载,反序列化可能导致代码被加载并执行,恶意用户可能会利用这一点。此设置只能通过 config.php 文件进行设置。
- allow_unserialize_attachments: 在导入调查时,允许对附件属性进行反序列化(使用 PHP unserialize 函数)。在 limesurvey 6.16.17 中,附件属性从 serialize 改为 json_encode。如果您在导入旧的 LSS 文件时需要保留附件,则必须允许此项。警告:由于对象实例化和自动加载,反序列化可能导致代码被加载并执行,恶意用户可能会利用这一点。此设置只能通过 config.php 文件进行设置。
- twig_getConfig_extraallowlist: 允许为 twig 中的 getConfig 函数额外允许特定元素。LimeSurvey 已允许大多数必需且常用的设置,但您可能需要更多。如果您想允许 'securesetting' 和 'anothersetting',请将其设置为
['securesetting','anothersetting'],例如'twig_getConfig_extraallowlist' => ['securesetting','anothersetting']。此设置只能通过 config.php 文件进行设置。
跨站脚本 (XSS) 防护
LimeSurvey 不允许在管理页面上使用任何用户脚本。如果您发现任何用户可以在管理页面上添加 XSS 脚本的方法,请查看我们的安全政策。
公共页面脚本由 XSS 筛选设置管理。
- filterxsshtml: 此设置启用对管理界面中调查、组、问题和答案文本内可疑 HTML 标签的筛选。只有在您完全信任为管理 LimeSurvey 而创建的用户,并希望允许这些用户使用 Javascript、Flash 动画等时,才将其保留为 'false'。超级管理员的 HTML 永远不会被筛选。默认值可以在全局设置对话框中覆盖。
- filterxsshtml_forcedall: 对所有用户强制将
filterxsshtml设为 true,并禁用在管理界面中的更新。同时对超级管理员也启用可疑 HTML 标签的筛选。 - filterxsshtml_allowforcedsuperadmin: 仅在
filterxsshtml_forcedall为 true 时使用。允许forcedsuperadmin(默认为 1 号管理员用户)添加任意脚本和 HTML。 - disablescriptwithxss: 允许更新问题中的脚本:默认为 true,即遵循 XSS 规则;设置为 false 则允许所有用户更新。默认值可以在全局设置对话框中覆盖。
- filterxsshtml_enablescript: 仅在 filterxsshtml_forcedall 为 true 时使用。为特定用户启用问题脚本:
gui:允许通过 GUI 更新设置;superadmin:仅超级管理员;forcedsuperadmin:仅强制超级管理员;默认:没有用户,也不允许通过 GUI 更新
允许的文件上传
- allowedthemeimageformats : 允许在主题部分上传的图片文件类型。默认情况下,由于潜在的 XSS 攻击,SVG 文件被禁用。
- allowedthemeuploads : 允许在主题部分上传的其他文件类型(zip 文件)
- allowedresourcesuploads : 允许在资源部分以及通过 HTML编辑器上传的文件类型
- allowedpluginuploads : 上传插件 zip 文件时允许的文件类型。
只需输入以逗号分隔的扩展名字符串。例如:
'allowedthemeimageformats' => 'jpg,jpeg,gif,png,webm,svg',
警告:允许文件上传时请务必小心,可能会出现恶意行为。
插件
- usePluginWhitelist : 如果为 true,则不在允许列表中的插件(参见 'pluginWhitelist')将无法安装或加载。这可能会禁用已安装的插件。
- pluginWhitelist : 当 'usePluginWhitelist' 为 true 时,允许安装和加载的插件名称列表。核心插件默认已隐式列入允许列表。
- corePluginBlacklist : 当 'usePluginWhitelist' 为 true 时,禁止使用的核心插件名称列表。
- disablePluginUpload : 当此设置为 true 时,将禁用“插件上传”功能
主机控制
- allowedHosts : 为避免主机头注入(Host Header Injection),您可以为所有操作设置允许的主机。如果公共页面和管理页面使用不同的主机,则需要将两者都设置为允许的主机。
'config'=>array(
....
, // Update default LimeSurvey config here
'allowedHosts' => [
'survey.example.org',
'proxy.survey.example.com',
'example.limesurvey.org',
],
),
资源
- iSessionExpirationTime: 定义调查会话过期的时间(以秒为单位)。仅在使用数据库会话时适用。如果您使用数据库会话,请在 config.php 中修改该参数,或在全局设置对话框中覆盖默认值。
- memory_limit: 此设置决定 LimeSurvey 可使用的内存大小(以 MB 为单位)。默认值为 '256'。如果您遇到超时错误,或在生成统计或导出文件时出现问题,请将此限制提高到 '512' 或更高。如果您的 Web 服务器在 php.ini 中设置了更高的限制,则此设置将被忽略。
要将内存限制提高到 128M,您还可以尝试添加:
- memory_limit = 128M 到服务器的主 php.ini 文件(推荐,如果您有访问权限)
- memory_limit = 128M 到 LimeSurvey 根目录中的 php.ini 文件
- php_value memory_limit 128M 到 LimeSurvey 根目录中的 .htaccess 文件
- max_execution_time: 设置脚本允许运行的秒数。如果达到该时间,脚本将返回致命错误。为了能够导出大量调查数据和统计,LimeSurvey 默认会尝试将其设置为 1200 秒。您可以根据需要设置更长或更短的时间。仅可通过 php 配置文件访问。
外观
- repeatheadings: 使用阵列问题类型时,通常会有大量子问题,在屏幕上显示时会占用多个页面。此设置可让您决定在重复显示该问题的标题信息之前显示多少个子问题。建议设置为 15 左右。如果您完全不希望重复标题,请将其设置为 0。此设置会被全局设置对话框覆盖。
- minrepeatheadings: 在阵列问题中重复标题之前所需的最少剩余子问题数。默认值为 3,可在 config.php 中编辑。
- defaulttheme: 此设置指定调查“公共列表”所使用的默认主题。此设置可在全局设置对话框中覆盖,或在 config.php 中编辑。
- defaulthtmleditormode: 设置集成 HTML编辑器的默认模式。此设置可在全局设置对话框中覆盖,或在 config.php 中编辑。有效设置如下:
- 'inline' - 用 HTML编辑器就地替换字段。速度较慢,但方便且用户友好;
- 'popup' - 添加一个图标,必要时可在弹出窗口中运行 HTML编辑器。速度较快,但 HTML 代码会显示在表单中;
- 'none'- 不使用 HTML编辑器;
- column_style: 定义使用 display_columns 时调查答案的列的呈现方式。可在 config.php 文件中编辑。有效设置如下:
- 'css' - 使用多种 CSS 方法之一来创建列(详见模板样式表);
- 'ul' - 列以多个浮动无序列表的形式呈现(默认);
- 'table' - 使用传统的基于表格的布局;
- NULL - 禁用列的使用。
语言与时间
- defaultlang: 应设置为管理脚本中使用的默认语言,也是公共调查列表中语言的默认设置。此设置可在全局设置对话框中覆盖,或在 config.php 中编辑。
- timeadjust: 如果您的 Web 服务器所在时区与调查所面向的地区不同,请在此处填写服务器与您所在时区之间的时差。例如,我住在澳大利亚,但使用的是美国的 Web 服务器。该 Web 服务器比我当地时区晚 14 小时,因此我在此处的设置为“14”。换句话说,它会在 Web 服务器的时间上加 14 小时。当调查为回答记录时间戳时,此设置尤为重要。此设置可在全局设置对话框中覆盖,或在 config.php 中编辑。
调查行为
- deletenonvalues: 请谨慎使用此功能。默认情况下(值为 1),不相关的问题在数据库中会被设为 NULL。这可确保数据库中的数据在内部保持一致。但是,在极少数情况下,您可能希望保留不相关的值,此时可将该值设置为 0。例如,您询问一位男性的性别,他不小心选了“女”,然后回答了一些女性专属的问题(以“女性”为条件的问题,因此仅与女性相关)。随后,他意识到自己的错误,返回并将性别改为“男”,然后继续完成调查。此时,这些女性专属的问题就变得不相关了。如果
$deletenonvalues==1,这些不相关的值将在数据库中被清除(设为 NULL)。如果$deletenonvalues==0,他的错误答案不会被删除,因此在您分析数据库时它们仍然存在。 - shownoanswer: 当包含可编辑答案的单选按钮/选择类型问题(即:列表、阵列问题)不是必答题,且 'shownoanswer' 设置为 1 时,会显示一个额外的“拒答”条目,以便参与者可以选择不回答该问题。有些人希望不提供此选项。此设置可在全局设置对话框中覆盖,或在 config.php 中编辑。有效值为:
- '0': 否;
- '1': 是;
- '2': 调查管理员可以选择。
- printanswershonorsconditions: 此设置决定 printanswers 功能是否显示被条件分支隐藏的问题的条目(默认值:1 = 隐藏被条件隐藏的问题的答案)。
- showpopups: 如果必答问题或条件问题未被正确回答,则显示弹出消息:
- '2' = 由主题选项定义(默认)
- '1'= 显示弹出消息;
- '0'= 改为在页面上显示消息;
- '-1'= 完全不显示消息(在这种情况下,用户仍会看到针对具体问题的提示,指明哪些问题必须回答)。
数字问题类型的行为
- bFixNumAuto: 数字字段可以自动过滤,以删除所有非数字值。默认情况下此功能已启用,您可以全局禁用它。此设置与内置主题的主题选项中的自动修复数值相关。选择是时启用,选择用于表达式和否时禁用。
- bNumRealValue: 表达式管理器中使用的数字字段可以修复,也可以不修复。默认情况下会修复。如果 NUMERIC 是数字问题:禁用或为 0 时:包含错误字符的 {NUMERIC} 返回 '';启用或为 1 时:{NUMERIC} 返回输入的所有字符。此设置与内置主题的主题选项中的自动修复数值相关。选择是和用于表达式时启用,选择否时禁用。
开发与调试
- debug: 通过此设置,您可以将 PHP 错误报告设置为 E_ALL。这意味着与脚本相关的每一个提示、警告或错误都会显示出来。仅当您出于任何原因需要调试应用程序时,才应将此设置切换为 '1'。如果您是开发人员,请将其切换为 '2'。请勿在生产环境中将其切换为 '1' 或 '2',因为这可能导致路径泄露。默认值为 '0',可在 config.php 中编辑。
- debugsql: 如果您希望在每个页面底部显示脚本执行的所有 SQL 查询,请激活此设置。这对于优化查询数量非常有用。要激活它,请在 config.php 文件中将默认值更改为 '1'。
- use_asset_manager: 默认情况下,调试模式会禁用资源管理器(asset manager),您可以允许在启用调试模式时使用资源管理器。
- rpc_log: (New in 7.9.0 ) 将其设置为
true,可将每次 RemoteControl 调用记录到tmp/runtime/remotecontrol.log。每行包含所调用的方法、其参数、客户端的 IP 地址、持续时间以及响应的开头部分。密码会被移除,会话密钥会被替换为简短的哈希值,过长的值会被截短。日志中仍包含所发送和接收的调查、参与者和反馈数据,因此请仅在排查问题时启用。默认值为false。
如果您在应用程序中遇到错误,我们强烈建议激活调试设置,以获取更详细的错误信息,并将其随错误报告一并提交:
'config'=>array(
'debug'=>2,
'debugsql'=>0,
)
如果您正在开发插件,并需要一种在屏幕上输出变量的快捷方式,可以使用 traceVar 函数。如果已设置 debug,此函数会使用 CWebLogRoute 在 HTML 页面上显示。用法:traceVar($MyVariable)
邮件设置
以下所有设置都可以在全局设置对话框中覆盖。
- 'emailmethod: 此设置决定电子邮件的发送方式。可用选项如下:
- 'mail:' 使用 PHP 内部邮件发送程序;
- 'sendmail:' 使用 sendmail 邮件发送程序;
- 'smtp:' 使用 SMTP 中继。当您运行 LimeSurvey 的主机不是您的邮件服务器时,请使用此设置。
- 'emailsmtphost: 如果您将
$emailmethod设置为 'smtp',则必须在此处填写您的 SMTP 服务器。如果您使用的是 Google 邮箱,可能需要添加端口号,例如 $emailsmtphost = 'smtp.gmail.com:465'。 - emailsmtpuser: 如果您的 SMTP 服务器需要身份验证,请将其设置为您的用户名,否则必须留空。
- emailsmtppassword: 如果您的 SMTP 服务器需要身份验证,请将其设置为您的密码,否则必须留空。
- emailsmtpssl: 设置为 'ssl' 或 'tls',以对 SMTP 连接使用 SSL/TLS。
- maxemails: 向调查参与者发送邀请或提醒时,此设置用于决定一批最多可发送多少封电子邮件。不同的 Web 服务器具有不同的邮件发送能力,如果脚本发送一批电子邮件耗时过长,脚本可能会超时并导致错误。大多数 Web 服务器可在 PHP 脚本默认的 30 秒时间限制内一次发送 100 封电子邮件。如果在发送大量电子邮件时出现脚本超时错误,请减小此设置中的数值。点击邀请码控制工具栏中的“发送邮件邀请”按钮(而不是每个邀请码右侧的按钮)会发送 <maxemails> 数量的邀请,然后显示收件人地址列表以及一条警告:待发送的电子邮件多于一批所能发送的数量。请点击下方继续发送电子邮件。仍有 ### 封电子邮件待发送。并提供一个“继续按钮”以处理下一批。也就是说,每批电子邮件发送完毕后,由用户决定何时发送下一批。无需一直停留在此界面。管理员可以退出登录,稍后再回来发送下一批邀请。
- send_error_saving_results_email: (New in 7.8.0 ) 如果无法保存反馈,LimeSurvey 会通过电子邮件将答案发送给调查管理员,邮件主题为“保存结果时出错”。将其设置为
false可停止发送这些邮件。参与者仍会看到错误信息。默认值为true。此设置只能在 config.php 中更改。
统计和反馈浏览
- filterout_incomplete_answers: 控制浏览或分析反馈时筛选未完成答案的默认行为。有关未完成反馈的讨论,请参阅我们的浏览调查结果文档。由于这些记录可能会影响统计结果,因此在多个图形界面表单中提供了开启或关闭此筛选的选项。该参数可以在 config.php 中编辑。可用选项如下:
- 'all':可同时查看完整和未完成的答案;
- 'complete':仅显示完整的答案;
- 'incomplete':仅显示未完成的答案。
- strip_query_from_referer_url:此设置决定来源网址是否保存参数。默认值为 'false'(此时来源网址会保存所有参数)。也可以将该值设置为 'true',这样来源网址中的参数部分将被删除。
- showaggregateddata: 激活后,将显示算术平均数和标准差等附加统计值。此外,数据会被汇总,以便更快地获得概览。例如,尺度 1+2 和 4+5 的结果会相加,以得到“好”(1/2)、“一般”(3)和“差”(4/5)这样的总体排名。这仅影响问题类型 "A"(5 点阵列)和 "5"(5分制选择题)。
- PDF 导出设置: 此功能为可打印的调查和打印答案启用 PDF 导出。PDF 导出功能完全处于实验阶段,输出效果远未达到完美。很遗憾,目前无法提供支持——如果您愿意帮助我们修复,请与我们联系。
- 图表设置
- 'chartfontfile':设置用于创建统计图表的字体文件名称。该文件必须位于 LimeSurvey 根目录下的 fonts 目录中。可以在 config.php 文件中编辑;
- 'alternatechartfontfile':这是一个包含语言键及其对应字体的阵列。可以在 config.php 文件中编辑。
- showsgqacode: 此设置用于可打印的调查功能,默认值为 'false。如果设置 showsgqacode = 'true';,则会显示每个问题(以及适用的答案)的 ID。这些 ID 与 Lime_survey_12345 表中的列标题相对应,该表保存某个调查的答案数据。这些 ID 可用于制作代码簿,以便手动查询数据库。
LDAP 设置
由于这是一个内容广泛的主题,我们已将 LDAP 设置移至另一页面。
验证
验证由插件处理。以下设置由 Webserver 验证插件使用,请参阅验证插件。
将验证委托给网页服务器
系统管理员可能希望让其调查管理员通过中央验证系统(Active Directory、openLdap、Radius 等)进行验证,而不是使用 LimeSurvey 内部数据库。一种简便的方法是将您的网页服务器软件设置为使用该外部验证系统,然后让 LimeSurvey 信任网页服务器报告的用户身份。要启用此功能,您需要:
- 在配置 > 插件中激活 Webserver 插件,并在插件设置中设置保存用户名的服务器键(默认值:REMOTE_USER);
- 在网页服务器端启用验证。
请注意:
- 此后 LimeSurvey 将绕过其自身的验证流程(使用网页服务器报告的登录名,而不要求输入密码);
- 这只能替代 LimeSurvey 图形界面的验证系统,而不能替代调查邀请系统(参与者界面)。
不自动导入用户的验证委托
请注意,验证委托默认不会绕过 LimeSurvey 的授权系统——也就是说,即使您无需在 LimeSurvey 中管理密码,仍然需要在 LimeSurvey 数据库中定义用户,并为其分配正确的权限,才能让他们访问管理面板。
只有在满足以下所有条件时,用户才会被授予访问 LimeSurvey 的权限:
- 该用户已通过网页服务器的验证;
- 其登录名已在 LimeSurvey 用户数据库中定义为用户(此时该用户将获得 LimeSurvey 用户数据库中所定义用户的权限);
- 该用户拥有全局权限用户Web服务器验证。
自动导入用户的验证委托
在管理庞大的用户数据库时,有时自动将用户导入 LimeSurvey 数据库会更方便:
- auth_webserver_autocreate_user:如果设置为 'true',LimeSurvey 将尝试自动导入已通过网页服务器验证但尚未存在于其用户数据库中的用户。
- auth_webserver_autocreate_profile:一个描述将分配给用户的默认配置文件的阵列:全名(虚构)、电子邮件和语言。
- auth_webserver_autocreate_permissions:一个包含将分配给用户的全局权限的阵列。
如果您想自定义用户配置文件,使其与已登录的用户相匹配,则需要在 config.php 中开发一个名为 hook_get_auth_webserver_profile 的简单函数——通过此函数,您可以从中央用户账户数据库(例如 LDAP 目录)中获取特定用户的真实全名、电子邮件和语言。
hook_get_auth_webserver_profile 函数以用户登录名作为唯一参数,可以返回:
- False 或空阵列——此时该用户将被拒绝访问 LimeSurvey;
- 一个包含与
auth_webserver_autocreate_profile相同条目的阵列。
function hook_get_auth_webserver_profile($user_name)
{
// Retrieve user's data from your database backend (for instance LDAP) here
// ... get $user_name_from_backend
// ... get $user_email_from_backend
// ... get $user_lang_from_backend
return array(
'full_name' => $user_name_from_backend,
'email' => $user_email_from_backend,
'lang' => $user_lang_from_backend,
);
}
// If user should be denied access, return an empty array
// return array();
用户名映射
如果某些用户的外部用户名与其 LimeSurvey 用户名不同,您可能会发现使用用户名映射很有帮助。在 LimeSurvey 中,这是通过 auth_webserver_user_map 参数完成的。例如,假设您的外部验证数据库中没有定义 'admin' 用户名。那么,为了以 admin 身份登录 LimeSurvey,您需要将外部用户名(假设为 'myname')映射到 LimeSurvey 中的 admin 登录名。相应的设置如下:
'config'=>array(
...
'auth_webserver_user_map' => array ('myname' => 'admin');
)
使用 'myname' 登录名和网页服务器密码成功验证后,您将直接获得以 'admin' 用户身份使用 LimeSurvey 的授权。
这会带来严重的安全隐患,因此请谨慎使用。同时,请保护您的 config.php,禁止网页服务器对其进行写入。
使用一次性密码
用户可以在 default.com/limesurvey/admin 打开 LimeSurvey 登录页面,输入用户名和一次性密码,该一次性密码此前已由外部应用程序写入用户表(列 one_time_pw)。
必须在 config.php 文件中开启此设置,才能使用一次性密码(默认值 = false)。
'config'=>array(
'debug'=>0,
'debugsql'=>0,
'use_one_time_passwords'=>true,
)
更多信息请参阅“管理用户”部分。
加密设置
application/config/security.php 文件中。您可以根据需要将这些设置移至 config.php,也可以保留在 security.php 中。有关此功能的详细信息,请参阅数据加密。
- encryptionkeypair
- encryptionpublickey
- encryptionsecretkey
- encryptionnonce
- encryptionsecretboxkey
高级网址设置
- publicurl: 应设置为您的“公共脚本”所在的 URL 位置。公共脚本是指位于“limesurvey”文件夹(或您为存放所有其他脚本和目录的目录所起的任何名称)中的脚本。此设置可在 config.php 中使用,当 LimeSurvey 需要绝对 URL 时(例如发送邀請碼邮件时)会用到它。
- tempurl: 应设置为您的“/limesurvey/tmp”目录的 URL 位置,或设置为您希望 LimeSurvey 用来提供临时文件的目录。
- uploadurl: 应设置为您的“/limesurvey/upload”目录的 URL 位置,或设置为您希望 LimeSurvey 用来提供已上传文件的目录。这样您可以将已上传的文件放在另一个 URL 域名下。
高级路径设置
- homedir: 应设置为您的管理脚本在磁盘上的物理位置,例如“/home/usr/htdocs/limesurvey/admin”。请勿在此项末尾添加斜杠。config.php 中的默认设置会尝试使用 PHP 变量设置
{$_SERVER['DOCUMENT_ROOT']}来检测所有文档的默认根路径。在大多数情况下,您可以保留此部分,仅修改字符串的其余部分,使其与您存放 LimeSurvey 脚本的目录名称一致。 - publicdir: 应设置为您的“公共脚本”在磁盘上的物理位置。
- tempdir: 应设置为您的 /limesurvey/tmp 目录在磁盘上的物理位置,以便脚本可以读取和写入文件。
- uploaddir: 应设置为您的 /limesurvey/upload 目录在磁盘上的物理位置,以便脚本可以读取和写入文件。
- sCKEditorURL: CKEditor 脚本的 URL。
其他高级设置
上传文件
- magic_database: 允许为 finfo_open 使用不同的 MIME 数据库。只能在 config.php 文件中更新。示例:基于 Red Hat 的 Linux 可使用
/usr/share/misc/magic.mgc。 - magic_file: 允许使用不同于内置文件的文件,按 MIME 类型获取扩展名数组。必须是返回数组的 PHP 文件。只能在 config.php 文件中更新。
更新
- updatable: 此设置位于 version.php 中,可以为 true 或 false。如果设置为 true:超级管理员用户登录时,LimeSurvey 会检查是否有可用更新并向您显示警告。如果设置为 false:不会进行检查,并且您无法使用静默更新。
邀請碼
- allowedcharacters_pattern_token : 这些设置用于在过滤邀請碼时设置正则表达式模式。