Apache Won't load after PHP Upgrade
I upgraded ubuntu from 19 to 20. In the process PHP 7.3 was removed & 7.4 was added
Then apache wouldn't start
sudo apachectl restart gave an error pointing at /etc/apache2/apache2.conf, and subsequently pointing at /etc/apache2/mods-enabled/php-7.3.load, so I opened it & saw it was pointing to /usr/lib/apache2/modules/libphp7.3.so... which turned out not to exist any more.
My /etc/apache2/apache2.conf has wildcard loading of enabled mods:
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
So I cd /etc/apache2/mods-enabled; ls; & confirmed the php-7.3 .load & .conf are there. I move them with sudo mv php-7.3.conf ~/Documents/temp-backup/php-7.3.conf;sudo mv php-7.3.load ~/Documents/temp-backup/php-7.3.load;, which isn't really necessary because these are, I believe, the basic php 7.3 install files. I never modified them, anyway.
The php-7.3 module files are gone now (because I used mv instead of cp).
Reinstall PHP
For good measure, I remove 7.3 before installing PHP 7.4
sudo apt-get remove php7.3
sudo apt autoremove # Once upon a time, my system broke because of this. Good thing I had backed up the list of packages
sudo apt-get install php7.4
sudo apt-get install php # Not sure if I needed this, but I did it anyway
sudo apt-get update # for good measure
sudo apt-get upgrade
Okay, so sudo apachectl start
Woohoo!!! Success.
Go to dev.localhost in the browser AND!!!
... I see PHP code.
:(
So I do a quick search, ending up on techrepublic.
They suggest adding a <FilesMatch \.php$>\nSetHander application/x-httpd-php\n</FilesMatch> (note the two \n for new lines) to /etc/apache2/apache2.conf, which I try... running sudo apachectl restart & refreshing my dev.localhost.
Nothing.
They suggest running a2dismod mpm_event & a2enmod mpm_prefork, which I ignore. Though I DO use sudo a2enmod php7.4
Then sudo apachectl restart
And everything is working!
TL;DR
You may want to change the php versions from 7.3 & 7.4 & you may not need the removal step.
mkdir ~/Documents/temp-backup/;
sudo mv /etc/apache2/mods-enabled/php-7.3.conf ~/Documents/temp-backup/php-7.3.conf;
sudo mv /etc/apache2/mods-enabled/php-7.3.load ~/Documents/temp-backup/php-7.3.load;
sudo apt-get remove php7.3
sudo apt autoremove # Once upon a time, my system broke because of this. Good thing I had backed up the list of packages
sudo apt-get install php7.4
sudo apt-get install php # Not sure if I needed this, but I did it anyway
sudo apt-get update # for good measure
sudo apt-get upgrade
sudo a2enmod php7.4
sudo apachectl start
You also might just skip that mv / backup step. If you want to keep the old PHP version, you might need to remove it & reinstall it