Changes
Page history
Add guides for DietPi
authored
Jun 06, 2021
by
Marius David Wieschollek
Show whitespace changes
Inline
Side-by-side
Administrators/Guides/DietPi/Upgrade-to-PHP-8.0-with-Lighttpd.md
0 → 100644
View page @
391a95b3
## Before you start
-
This tutorial was developed for and tested with DietPi 7.2 on a RaspberryPI.
-
This tutorial only works if you use "Lighttpd" as webserver.
Run
`dietpi-software`
and check the setting for "Webserver Preference".
-
DietPi may behave differently on other systems.
-
Nextcloud 21 is required _before_ upgrading to PHP 8.0.
-
This does not work for DietPi Docker. You can't upgrade PHP in a Docker image.
-
_Make sure to make a backup of your entire DietPi Instance (config, data, etc.) before you do this._
## Log in as Root
If you're using SSH, log in with
`ssh root@<your dietpi ip>`
.
If you're directly on the device, use
`sudo su`
## Add PHP Package Archive
Execute the following commands on your DietPi to add the repository PHP 8.0 from
[
deb.sury.org
](
https://deb.sury.org/#php-packages
)
:
```
bash
# Add the PHP PPA from deb.sury.org
apt-get
-y
install
apt-transport-https lsb-release ca-certificates curl
curl
-sSL
-o
/etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
sh
-c
'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
apt-get update
```
## Install PHP 8.0
Execute the following command on your DietPi to install PHP 8.0:
```
bash
# Install PHP 8.0
apt-get
-y
install
php8.0-fpm php8.0-apcu php8.0-mysql php8.0-xml php8.0-zip php8.0-mbstring php8.0-gd php8.0-curl php8.0-redis php8.0-intl php8.0-bcmath php8.0-gmp php8.0-imagick imagemagick
```
## Update the PHP 8.0 configuration
Execute the following command on your DietPi to link the DietPi configuration for PHP from PHP 7.3 to 8.0 and enable it:
```
bash
# Symlink NCP PHP configuration
ln
-s
/etc/php/7.3/mods-available/dietpi-nextcloud.ini /etc/php/8.0/mods-available/dietpi-nextcloud.ini
ln
-s
/etc/php/7.3/mods-available/dietpi.ini /etc/php/8.0/mods-available/dietpi.ini
phpenmod dietpi
phpenmod dietpi-nextcloud
```
Now you need to edit the configuration of PHP FPM.
Run the command
`nano /etc/php/8.0/fpm/php.ini`
to open a text editor with the config file.
Find the line
`;cgi.fix_pathinfo=1`
and remove the
`;`
at the beginning so that the line reads
`cgi.fix_pathinfo=1`
.
You can use
`CTRL`
+
`w`
to search in the file,
with
`CRTL`
+
`o`
you can save the changed file and
with
`CRTL`
+
`x`
you can close the editor.
## Set up lighttpd for PHP 8.0
Now you need to edit the configuration for lighttpd to instruct it to use PHP 8.0
Run
`nano /etc/lighttpd/conf-available/15-fastcgi-php.conf`
to open the configuration file.
It should have this section:
```
fastcgi.server += ( ".php" =>
((
"socket" => "/run/php/php7.3-fpm.sock",
"broken-scriptfilename" => "enable"
))
)
```
You need to change the "socket" from "/run/php/php7.3-fpm.sock" to "/run/php/php8.0-fpm.sock".
The section should now read like this:
```
fastcgi.server += ( ".php" =>
((
"socket" => "/run/php/php8.0-fpm.sock",
"broken-scriptfilename" => "enable"
))
)
```
Save the file and then run the following command to restart lighttpd:
```
bash
service lighttpd force-reload
```
## Check the PHP default version
By default, your DietPi should now be using PHP 8.0.
You can check this by running
`php -v`
. The output should look like this:
```
bash
root@DietPi:/home/pi# php
-v
PHP 8.0.3
(
cli
)
(
built: Mar 5 2021 08:38:30
)
(
NTS
)
Copyright
(
c
)
The PHP Group
Zend Engine v4.0.3, Copyright
(
c
)
Zend Technologies
with Zend OPcache v8.0.3, Copyright
(
c
)
, by Zend Technologies
```
If it doesn't, you should use
`update-alternatives --config php`
and set PHP 8.0 as default:
```
bash
root@DietPi:/home/pi# update-alternatives
--config
php
There are 2 choices
for
the alternative php
(
providing /usr/bin/php
)
.
Selection Path Priority Status
------------------------------------------------------------
*
0 /usr/bin/php8.0 80 auto mode
1 /usr/bin/php7.3 73 manual mode
2 /usr/bin/php7.4 74 manual mode
3 /usr/bin/php8.0 80 manual mode
Press <enter> to keep the current choice[
*
]
, or
type
selection number:0
```
## Notes
-
It can take a day before app updates show up in the apps store
\ No newline at end of file