Апач дает пустой ответ

Это происходит случайно и только на установках 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 Conf довольно прост и отлично работает в других Vhosts

<VirtualHost *:80>
    ServerAdmin webmaster@ebox-technologies.com
    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)

Любые идеи приветствуются:)

4 ответа

Решение

Наконец, решено, добавив к /etc/apache2/envvars:

export USE_ZEND_ALLOC=0

Посмотрите журнал ошибок главного сервера, в нем должна быть ошибка Child Segfault Error (11).

Вероятно, это происходит из-за сбоя движка PHP, часто из-за неисправного модуля php, обработки символов в юникоде, поврежденной БД gettext и т. Д.

Это очень сложно для отладки.

Вы можете включить трассировку xdebug и посмотреть, какая строка это segfaulting:

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

В error_log тоже ничего нет?

Вы можете установить MaxServers на 1, а затем связать этот поток apache при запросе страницы. Это может быть из-за того, что PHP является segfaulting или ребенок apache умирает по другим причинам.

Кроме того, tcpdump запрос на обоих концах, чтобы увидеть, какие данные отправляются по проводной.

Наконец, решаем, добавив в /etc/apache2/envvars:

экспорт USE_ZEND_ALLOC=0

следуйте шагам... Теперь моя почта снова работает!

Спасибо!

Другие вопросы по тегам