我正在尝试在我的服务器上安装Chamilo,但是我收到警告并且安装被取消了...我认为警告不是错误而不会失败,但要么这个警告很重要,要么其他是错了,我不知道。
警告是“已发送的标头”。 我已经按照步骤解决它无济于事(我用回声评论了这些行,使用了ob函数甚至php.ini缓冲区设置,但它仍然显示这个完全相同的警告)。 它来自脚本,否则在我的WAMP测试服务器上工作正常,我发现在chamilo线程上没有任何关于它的抱怨...我甚至不确定这会导致整个安装崩溃......
Warning: Cannot modify header information - headers already sent by (output started at /var/www/new_chamilo/main/install/index.php:391) in /var/www/new_chamilo/main/inc/lib/template.lib.php on line 1038, referer: XXX/new_chamilo/main/install/index.php?running=1&installType=new&updateFromConfigFile=
[...] header()/var/www/new_chamilo/main/inc/lib/template.lib.php:1038
所以这里提到的两行是:
header()/var/www/new_chamilo/main/inc/lib/template.lib.php:1038(结束})
if ($sendHeaders) {
header('Content-Type: text/html;
charset='.api_get_system_encoding());
header(
'X-Powered-By: '.$_configuration['software_name'].'
'.substr($_configuration['system_version'], 0, 1)
);
}
和 index.php第390行
success: function(datos) {
if (datos == 'required_field_error') {
message = "<?php echo get_lang('FormHasErrorsPleaseComplete') ?>";
} else if (datos == '1') {
message = "<?php echo get_lang('ContactInformationHasBeenSent') ?>";
} else {
message = "<?php echo get_lang('Error').': '.get_lang('ContactInformationHasNotBeenSent') ?>";
}
alert(message);
$('#license-next').trigger('click');
$('#loader-button').html('');
}
我已经尝试评论这些错误回声,使用ob函数或使用php.ini进行缓冲,没有任何作用,我仍然收到警告并且安装失败(我不确定安装是否因为它而失败,但我没有任何其他消息)。 另外,php.ini说display_errors = Off但我仍然得到了
我甚至在发布这里之前就已经按照标题发送了教程,但它没有改变。 正如你在代码中看到的那样,有“echo”,我怀疑它是问题,所以我评论了整个函数(它只是关于向chamilo发送联系信息,所以它没用)但是完全相同的错误,指向评论的行,仍然会发生。 我想知道我的文件是否未被缓存。有没有办法强制刷新此文件?我看到htcacheclean可以清除缓存中的特定URL,但是我找不到如何执行此操作的示例。任何人都知道如何提供URL作为此命令的参数? Actualy我知道我必须安装一些缓存来缓存脚本以提高效率,因为它的缺失引发了许多警告。是否有多个缓存服务器端?
对此非常欢迎...... 提前感谢您的时间!
答案 0 :(得分:0)
首先,Headers already sent
消息通常是出现其他错误的症状。实际上,Headers already sent
仅在某些内容(在PHP中)尝试发送HTTP标头但是......已经发送时才出现。问题通常是标题是在它们不应该发送时发送的,因此查看错误触发的位置通常是不正确的。
其次,display_errors = Off
实际上可能会阻止您查看真正的问题,但发送标头并不总是错误的结果。
如果您可以访问服务器的error_log,那么错误可能更清楚(通常,对于Chamilo的安装过程,PHP版本应该是5.4或更高的问题) ,或未设置的date.timezone设置,或任何不匹配的依赖项)。了解出现的安装过程的哪一页也很有趣。它可能使调试更容易。 鉴于你提到了AJAX调用的块,它可能链接到联系表单,不是必须填写和发送(所以你可以完全跳过它)。
Headers already sent
消息是警告,因此它可能不会完全阻止安装。也许你可以忽略它。
最后,如果您要从以前版本的Chamilo升级而不是安装新版本,您可能需要清除模板缓存(您可以使用rm -rf app/cache/twig/*
在1.10及更高版本中执行此操作。