Kategorien
Blog Software

How to upgrade WordPress to PHP7.4

My WordPress admin center was complaining for a long time that I should upgrade WordPress to PHP7.4.

And from experience, I knew that this will typically not go without any hiccups. Be aware of any risks performing this upgrade and consider at least having a backup available, better even using a staging environment e.g. with UpdraftClone.

So here are the steps I have performed to make WordPress run again on that (not really) new PHP version 7.4.

upgrade WordPress to PHP7.4

My WordPress was running on a Raspberry Pi4, with Raspberry Pi OS 10 (buster) Version, mariaDB 10.3.39, PHP 7.3, and Apache 2

First, you should check, if there are any indications that your WordPress plugins and theme is not working with the new PHP version.

Then bring your OS to the latest version.

# sudo apt update
# sudo apt upgrade -y

Then install the certificate and add the repository.

# sudo apt -y install lsb-release apt-transport-https ca-certificates
# sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
# echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list

Install the following packages.

# sudo apt update
# sudo apt install php7.4 php7.4-fpm php7.4-mysqli
# sudo apt-get install php7.4-{bcmath,bz2,intl,gd,mbstring,mysql,zip,curl,dom,imagick,mbstring,intl}

You can check if the command line interface (cli) for PHP is running the new version with:

# php -v
PHP 7.4.33 (cli) (built: Jun 9 2023 07:38:14) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.33, Copyright (c), by Zend Technologies

As we are running the Apache web server with PHP we have to configure it now with the new version.

For switching between different PHP versions on a command line interface use the following commands:

# sudo update-alternatives --set php /usr/bin/php7.4 
# sudo update-alternatives --set phar /usr/bin/phar7.4 
# sudo update-alternatives --set phar.phar /usr/bin/phar.phar7.4

You can also have multiple PHP versions on your system and switch with the following configurations between them for the Apache web server and WordPress.

# sudo a2disconf php7.3-fpm
# sudo a2dismod php7.3
# sudo a2enmod php7.4
# sudo a2enconf php7.4-fpm

We also have to replace the proxy entries in all the sites from the virtual hosts you are running with Apache (folder „sites-available“). Look for the lines:

        <FilesMatch \.php$>
                # 2.4.10+ can proxy to unix socket
                SetHandler "proxy:unix:/run/php/php7.3-fpm.sock|fcgi://localhost"
        </FilesMatch>

And set the version to php7.4-fpm.

Now it’s time to restart the Apache web server.

#  sudo service apache2 restart

Check with phpinfo() if the php configuration for Apache is working correctly. The new version 7.4 with a mysqli section should be shown.

Checkout the following references:

Kategorien
Blog Software

Upgrade to a RPi4 plus SSD

After having some trouble with my existing system I decided to upgrade to a RPi4 powered system, together with a SSD as a new storage medium.

As I wanted to migrate the old data to the new system I had to come up with a strategy how to get there.

First I prepared the RPi4 to boot from another storage device as the standard SD card, based on the following tutorial.

Then I flashed the SSD with the currently available latest raspbian buster version and attached it to the blue USB 3.0 slot.

While booting I got some errors from the fsck utility, but after some booting time it ran through. I tested a bit further and was rebooting a few times. Every time another error occured and finally – after some hours – I had the idea to put an USB hub between the SSD and the RPi4. So it looks that the USB hub solves the problem, although it’s not even powered. Weird, isn’t it?

And, voila, from now onwards the booting and also the working of the system was perfect.

Upgrade to a RPi4

Now as the base system was running and the RPi4 was able to boot from the SSD I had to migrate the software and the data of the old system to the new system.

For this I used the backup of the old system I made with raspiBackup, just flashing it completely onto the SSD.

The final step was now, to copy the .elf and .dat files from the still existing boot partition of the SD card to the boot partition of the SSD, so that the RPi is booting from the SSD.

Now the system is up and running and it is really very fast 🙂

But hold on, we are not done yet!

IP and DNS entries

I have setup the new system with a new IP address, running in parallel to the RPi3 live system. I thought, „OK, let’s just switch the port forwarding of the router to the new IP address with the ports 80, 443, for IPV4 and IPV6 addresses and it should work.“

Unfortunately it did not work.

I forgot, that I had to reconfigure also the DNS forwarding at my domain hoster with updating the CNAME. And, unfortunately again, there is a time to live (TTL) set for the CNAME entry. So it’s much recommended to set this TTL value to the lowest possible value some days in advance. Otherwise it takes a few hours that the CNAME changes are taking effect through all the DNS servers.

So have fun to upgrade to a RPi4 on yourself 🙂

Kategorien
Blog Software

Raspbian Upgrade kills the RaspberryPi

It all started that I wanted to upgrade the PHP from version 7.0 to version 7.3/4, because wordpress was blaming about it. And I never would have imagined that an Raspbian Upgrade kills the RaspberryPi.

But first things first, that’s how the story goes that occupied my for two days.

Raspbian Upgrade kills the RaspberryPi

The base version of my Raspbian is Jessie, running on a standard RPi version 3. So I wanted to fetch the 7.3 PHP packages from the buster version of Raspbian. But I was unable to finish that process as the upgrade said, I had to break the 7.0. So I was afraid and stopped it.

The result was, that the system was completely messed up. The curl to the HTTPS world was no longer working. And I saw that even the udev package had some unmet dependencies. So I rebooted the system and it stopped completely while booting.

First attempt

What to do now?

I decided to install raspbian buster on a new hard disc (I once configured the RPi to boot directly from the USB hard drive) and install all the necessary applications based on the following tutorials:

https://projects.raspberrypi.org/en/projects/lamp-web-server-with-wordpress

https://bitreporter.de/raspberrypi/webserver-mit-wordpress-blog-auf-dem-raspberry-pi-einrichten/

For configuring the php fpm module I used https://tecadmin.net/install-apache-php-fpm-debian-10/

The last software part was getting an HTTPS certificate from let’s encrypt based on https://pimylifeup.com/raspberry-pi-ssl-lets-encrypt/

All these are really very good tutorials and worked like a charm (I just replaced once the mysql-server with mariadb-server). For connecting to the WordPress jetpack service you need also php-xml to be installed.

Fortunately I was performing a regular backup of the system with updraft. The restore worked perfectly. I was also using standard backups of the system that helped me a bit, but due to the HDD configuration I did not have a backup that I just could use, e.g. like an image to copy on the hard disk.

As I have a bit of a special wordpress installation (site URL != wordpress URL) I had to move the wordpress directory from „html“ to „wordpress“ and had to adapt the apache vhost configuration slightly.

After configuring all that the site was up and running again after around 5h.

So I thought, „Ok, let’s make a reboot.“ And the system stopped during boot.

What a shit!

The error message was:

usb usb1-port1: Cannot enable. Maybe the USB cable is bad?
usb usb1-port1: attempt power cycle

„Ok“ I thought as I was using a quite old hard disc, maybe it’s somthing wrong with the cable now. I decided to just flash the fine running hard disc of my former life system and do the process again (I was faster now, took me just 3h!)

Second attempt

After configuring everthing again, I made the reboot and…the system stopped again with the same error message.

„Ok, it cannot be that we are having here now exactly the same hardware problem with another hardware. So it must be a software issue. What did I do except just the install of new software? What was hardware related?“

There was one command:

pi@raspberrypi3:~ $ sudo apt-get upgrade
Reading package lists… Done
Building dependency tree
Reading state information… Done
Calculating upgrade… Done
The following package was automatically installed and is no longer required:
rpi-eeprom-images
Use 'sudo apt autoremove' to remove it.
The following packages will be upgraded:
ca-certificates firmware-atheros firmware-brcm80211 firmware-libertas firmware-misc-nonfree firmware-realtek
libgnutls30 libraspberrypi-bin libraspberrypi-dev libraspberrypi-doc libraspberrypi0 raspberrypi-bootloader
raspberrypi-kernel raspi-config rpi-eeprom rpi-eeprom-images
16 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 127 MB of archives.
After this operation, 6,477 kB disk space will be freed.
Do you want to continue? [Y/n]

After issuing this command the system did not boot anymore.

Final attempt

So, I did the installation process a third time (2h now), this time without the upgrade, and the system just works.

Since 2013 I’m working with this setup and it never happened that an upgrade of the operating system resulted in such a disaster!

Update from 16.08.2020

It works now. I did the upgrade in some package chunks to find out which packge caused the problem with the command:

sudo apt-get install --only-upgrade <package-name>

But I think it would have been not necessary. I have no idea, which package was changed in the mean time.