故障排除
From LimeSurvey Manual
概述
本页列出了成功安装之后常见的技术问题及其解决方案。如果您需要排查安装过程中出现的问题,请参阅安装常见问题。
尝试打开管理登录页面时
安装后出现错误信息:“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 会话:
- 更新 php.ini 中的 upload_tmp_dir 和 session.save_path
- 创建已配置的会话目录和上传目录
- IIS:为 IIS 来宾用户账户分配创建和修改的权限
- Apache:确保您的网络服务器有权限写入已配置的目录
- 检查 php.ini 中的变量 "session.use_cookies" 是否设置为 1。
- 检查 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 版本中的错误引起的。除了更新 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。