Апач дает пустой ответ
Это происходит случайно и только на установках 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
следуйте шагам... Теперь моя почта снова работает!
Спасибо!