x

主要章节

  1. LimeSurvey Cloud 与 LimeSurvey CE 对比
  2. 快速入门指南 - LimeSurvey 3.0+
  3. 软件安装
  4. 如何设计一个不错的调查(向导)
  5. 入门指南
  6. 管理 LimeSurvey
  7. 调查 - 说明
  8. 调查设置
  9. 问卷调查菜单
  10. 调查问卷结构
  11. 问题 - 简介
  12. 题组 - 简介
  13. 调查 - 管理
  14. 调查工具栏选项
  15. 多语言调查
  16. ExpressionScript 引擎 - 快速入门指南
  17. 其他和高级功能
  18. 常规问答
  19. 故障排除
  20. 变通方法
  21. 许可证
  22. 版本更改日志
  23. 插件
 Actions

故障排除

From LimeSurvey Manual

本页面可能为机器翻译,可能包含错误。 查看英文原文 · 改进此翻译
This page is a translated version of the page Troubleshooting and the translation is 100% complete.



以下 Wiki 部分内容由多位 LimeSurvey 社区成员共同编写。如需获取更新的信息,请查看 LimeSurvey 论坛。如需专业支持,请联系我们的 LimeSurvey 授权合作伙伴:https://limesurvey.com。


概述

本页列出了成功安装之后常见的技术问题及其解决方案。如果您需要排查安装过程中出现的问题,请参阅安装常见问题。

尝试打开管理登录页面时

安装后出现错误信息:“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 会话:

  1. 更新 php.ini 中的 upload_tmp_dir 和 session.save_path
  2. 创建已配置的会话目录和上传目录
  3. IIS:为 IIS 来宾用户账户分配创建和修改的权限
  4. Apache:确保您的网络服务器有权限写入已配置的目录
  5. 检查 php.ini 中的变量 "session.use_cookies" 是否设置为 1。
  6. 检查 php.ini 中的变量 "session.auto_start"。如果它被设置为 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)中对其进行设置。

在 Linux 上通过 FreeTDS 使用 MSSQL Server 时,日期显示不正确

找到 FreeTDS 的 locales.conf 文件并编辑它。如果没有其他应用程序使用 FreeTDS,只需将其内容替换为

[default]
    date format = %Y-%m-%d %H:%M:%S.%z

如果有其他应用程序使用 FreeTDS,建议您先确认需要编辑哪个区域设置。

保存并重启服务器。此时日期应能正确显示。如果仍不起作用,可能是您编辑了错误的文件——请重新操作一遍。

在调查或管理后台中输入特殊字符(中文、西里尔文、希腊文、阿拉伯文)时,每个字符都显示为问号?

如果您的数据库本身在创建时没有使用 UTF-8 字符集,就会出现这种情况。当您必须通过服务商的管理面板创建数据库时,可能会发生这种情况。您可以在数据库上(例如使用 phpMyAdmin)执行以下 SQL 命令来解决此问题 ALTER DATABASE `<your_database_name>` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

将 <your_database_name> 替换为您的数据库名称。您需要在安装 LimeSurvey 之前执行此操作。

PageSpeed 给 LimeSurvey 带来一些问题

您应当在 LimeSurvey 的虚拟主机中加入 ModPagespeed off。

否则,您将无法使用静默更新(ComfortUpdate),也无法导出数据。其他功能也可能出现故障。

参与调查时

错误“会话已过期”

您有时可能会收到类似如下的信息:

ERROR

很抱歉,您的会话已过期。

可能是您长时间处于非活动状态、浏览器已禁用 Cookie,或者网络连接出现问题。

如果您的服务器上启用了 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 配合不佳。如果您确实希望严格保护服务器,可以使用模拟模式来调整设置,并为 vars 在 1000 到 5000 之间、为 value_lengths 在 1000000 到 5000000 之间找到合适的值。

注意: 最近 PHP 新增了一项也需要调整的设置:max_input_vars - 该设置与 suhosin.post.max_vars 相同,但需要在 php.ini 中单独设置。

我无法更改语言!

无论您选择哪种语言,界面(管理端和用户端)始终显示为英语。这通常是由您的 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 目录需要写入权限,以便上传调查文件
  • 更新 php.ini 中的 doc_root 以及 config.php 中的 $rootdir

缺少文件("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)。

  • 此外,如果您的主机使用了适用于 Apache 的 Suhosin 扩展,请检查您的 PHP 设置,因为其中某些设置可能限制过严。
  • 例如,"suhosin.post.max_vars" 和 "suhosin.request.max_vars" 这两项设置默认均为 200。请将这两项设置都增加到 400 或更高,以便用户可以完成并提交较长的调查。
  • 如果仍然有问题,请尝试将该模块切换到 simulation_mode(基本上相当于停用它),因为最大值始终取决于您的具体调查。
  • 另一个原因可能是代理或类似软件不允许较大的 POST 请求,或不允许在后台多次请求同一页面(这会导致创建新的 CSRF 密钥)。遇到这种情况,请尝试使用其他网络连接。

在 Linux 上使用带 FreeTDS 的 MSSQL Server 时不显示任何问题

如果您仔细检查任一题组,会发现题组相关性中存在一个空格,导致整个题组被视为不相关。根本原因是 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。