Almost always the reason will be that the php.so file is missing but also that php.conf is misconfigured.
In the problem machine it is actually PHP 7 installed so if you reference PHP 5 of course things wil be broken!
Take for example here:
cat /etc/httpd/conf.d/php.conf
#
# PHP is an HTML-embedded scripting language which attempts to make it
# easy for developers to write dynamically generated webpages.
#
LoadModule php7_module modules/libphp7.so
#
# Cause the PHP interpreter to handle files with a .php extension.
#
AddHandler php7-script .php
AddType text/html .php
#
# Add index.php to the list of files that will be served as directory
# indexes.
#
DirectoryIndex index.php
#
# Uncomment the following line to allow PHP to pretty-print .phps
# files as PHP source code:
#
#AddType application/x-httpd-php-source .phps
moodle displays code instead of outputting HTML
cat /etc/httpd/conf.d/php.conf|grep -i addhandler
AddHandler php5-script .php
Fix it and then restart Apache
sed -i s/"php5-script"/"php7-script"/g /etc/httpd/conf.d/php.conf
service httpd restart
php, displaying, apachealmost, conf, misconfigured, installed, reference, wil, etc, httpd, html, embedded, scripting, attempts, developers, dynamically, generated, webpages, loadmodule, _module, modules, libphp, interpreter, extension, addhandler, addtype, text, index, directory, indexes, directoryindex, uncomment, phps, moodle, displays, outputting, grep, restart, apache, sed, quot,