Php
阿帕奇給出空回复
它是隨機發生的,並且僅在 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 非常簡單,可以在其他虛擬主機中完美執行
<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)
歡迎任何想法:)
最後通過添加解決
/etc/apache2/envvars
:export USE_ZEND_ALLOC=0
查看主伺服器錯誤日誌,它應該有一些Child Segfault Error (11)。
這可能是由 PHP 引擎故障引起的,通常由錯誤的 php 模組、unicode 字元處理、gettext 損壞的 DB 等引起。
調試非常困難。
您可以啟用xdebug跟踪並查看它在哪一行出現段錯誤:
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