Apache 给出空答复

Apache 给出空答复

这种情况随机发生,并且只在 moodle 安装中发生。发生这种情况时,Apache 不会在日志中添加一行,我不知道该在哪里查找。

koke@escher:~/Code/eboxhq/moodle[master]$ curl -I http://training.ebox-technologies.com/login/signup.php?course=WNA001 
curl: (52) Empty reply from server
koke@escher:~/Code/eboxhq/moodle[master]$ curl -I http://training.ebox-technologies.com/login/signup.php?course=WNA001 
HTTP/1.1 200 OK

Apache 配置非常简单,在其他虚拟主机中运行良好

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /srv/apache/training.ebox-technologies.com/htdocs
    ServerName training.eboxhq.com
    ErrorLog /var/log/apache2/training.ebox-technologies.com-error.log
    CustomLog /var/log/apache2/training.ebox-technologies.com-access.log combined

        <FilesMatch "\.(ico|gif|jpe?g|png|js|css)$">
                ExpiresActive On
                ExpiresDefault "access plus 1 week"
                Header add Cache-Control public
        </FilesMatch>
</VirtualHost>

使用 apache 2.2.9 php 5.2.6 和 moodle 1.9.5+ (内部版本:20090722)

欢迎提出任何想法:)

答案1

查看主服务器错误日志,应该有一些子段错误 (11)

这可能是由于 PHP 引擎故障造成的,通常是由于 php 模块有缺陷、unicode 字符处理、gettext 损坏的 DB 等造成的。

调试起来非常困难。

您可以启用调试跟踪并查看哪一行发生段错误:

pecl install xdebug

php.ini

[xdebug]
xdebug.profiler_enable=1
xdebug.profiler_output_dir="/tmp/xdebug"
xdebug.auto_trace=1            ; enable tracing
xdebug.trace_format=0
xdebug.show_mem_delta=1        ; memory difference
xdebug.show_local_vars=1
xdebug.max_nesting_level=100

答案2

最后通过添加解决了/etc/apache2/envvars

export USE_ZEND_ALLOC=0

答案3

error_log 中也没有任何内容吗?

您可以将 MaxServers 设置为 1,然后在请求页面时跟踪该 apache 线程。可能是 PHP 出现分段错误,或者 apache 子进程由于其他原因而死机。

另外,在两端对请求进行 tcpdump 以查看线路上正在发送什么数据。

相关内容