Очень странно, 2.4 должен нормально работать на php-5.4.
Это 1.9 может на php-5.4 капризничать...
Возможно есть настройки в php.ini мешающие работе moodle.
Я изначально жил на postgres-е. Сейчас moodle-1.9.19/nginx/php-fpm-5.3.23/postgres-9.2.3 замечательно работает.
С переходом на postgres-9.2 ( c 8.3 ) , была только одна хитрость - или "standard_conforming_strings = off" в конфиге постгреса, или "alter database moodle set standard_conforming_strings to false"