The awaited latest version of the PHP 7.4 was released on 28th Nov, 2019. It comes with a lot of new features such as
- Typed Properties
- Arrow Functions
- Limited Return Type Covariance and Argument Type Contravariance
- Unpacking Inside Arrays
- Numeric Literal Separator
- Weak References
- Allow Exceptions from __toString()
- Opcache Preloading
- Several Deprecations
- Extensions Removed from the Core
PHP 7.1 approaches EOL & 7.2 will become security only on 1st December.
Let's see how to upgrade your PHP installation to 7.4.
1. Add the
sudo add-apt-repository ppa:ondrej/php # Press enter to confirm. sudo apt-get update
sudo apt install apt-transport-https lsb-release sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg # Download the signing key sudo sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list' # Add Ondrej's repo to sources list. sudo apt update
2. Install PHP 7.4 and required extensions
To install PHP 7.4 core
sudo apt install php7.4 php7.4-common php7.4-cli
Install required extensions
php7.4- with an extension that you need to install.
For example to get the
php-curl extension use
sudo apt install php7.4-curl php7.4-json php7.4-gd php7.4-mbstring php7.4-intl php7.4-bcmath php7.4-bz2 php7.4-readline php7.4-zip
3. PHP 7.4 for web:
To integrate PHP with your web server, If you are using Nginx, or Apache with mod_event, you will need to install
php7.4-fpm package. If you are using PHP as an embedded Apache module, you will need the package
libapache2-mod-php7.4. For Apache, you can use
apachectl -V to see your current MPM, whether it’s
Nginx or Apache with event MPM:
sudo apt install php7.4-fpm
Apache with prefork MPM:
sudo apt install libapache2-mod-php7.4 sudo a2enmod php7.4
4. Uninstall old PHP versions:
sudo apt purge php7.3 libapache2-mod-php7.3 # For removing PHP 7.3 sudo apt purge php7.2 libapache2-mod-php7.2 # For removing PHP 7.2 sudo apt purge php7.1 libapache2-mod-php7.1 # For removing PHP 7.1 sudo apt purge php7.0 libapache2-mod-php7.0 # For removing PHP 7.0
5. Verify PHP 7.4 installation:
To verify the installation of PHP 7.4
From web server:
Create a file info.php. It must be saved to a very specific directory, which is called the “web root”. In Ubuntu and Debian this is located at /var/www/html/.
sudo nano /var/www/html/info.php
Type the following in the editor.
<?php phpinfo(); ?>
When you are finished, save and close the file.
Now visit this script in your browser.
You should see something similar to this.
So now you have PHP 7.4 up and running. See the migration guide for PHP 7.4 at https://www.php.net/migration74
Top comments (21)
Switched to PHP 7.4 yesterday. Ended up having a "MySQL server gone away" error when working with Laravel. Weirdly enough, the fix was to change MySQL authentication method to
MySQL 8.X uses caching_sha2_password as the default authentication mechanism.
I still had it on
auth_socketas authentication mechanism (after I reinstalled MySQL).
I am not an expert and having trouble updating to PHP 7.4 from 7.2.
I have a VPS, Apache-NGINX-Varnish, CentOS 7.7 and CWP Pro.
I did the steps to install:
sudo yum -y install dl.fedoraproject.org/pub/epel/epel...
sudo yum -y install rpms.remirepo.net/enterprise/remi-...
yum --enablerepo=remi-php74 install php
yum --enablerepo=remi-php74 install php-xml php-soap php-xmlrpc php-mbstring php-json php-gd php-mcrypt
sudo yum-config-manager --enable remi-php74
At this point php 7.4 seems to be installed, however php -v still returns 7.2 and CWP also shows the old version.
What else do I need to do to with Apache/NGINX?
Server version: Apache/2.4.6 (CentOS)
Server MPM: prefork
I tried this:
sudo apt install libapache2-mod-php7.4
sudo: apt: command not found
sudo dnf -y install dnf-utilsand
sudo dnf module install php:remi-7.4
I use yum, not dnf.
I already ran this:
sudo yum -y install yum-utils
Package yum-utils-1.1.31-52.el7.noarch already installed and latest version
Nothing to do
Also I just remembered that my server is running on php-cgi, not php-fpm
I have no experience with CGI.
Hello, Petter. I have the same trouble with updating PHP on CWP. Can you possibly write me if you finded the solution?
hahahaha it's like TypeScript systax
php7.4-fpmpackage -> php7.4-fpm package
also, would be cool if you would publish how all these new features would change our code!
Thanks for finding the typo. I plan on writing about it shortly.
Php is looking a bit more like typescript with all the typing and arrow functions! Thanks for writing
Very cool stuff. I haven't coded anything real in PHP in about a decade but I'm thinking about putting something together just for fun. Thanks for the article!
Do post about what you build.
Thank you for the article. There is a tiny mistake here (php7.3):
sudo apt install php7.4-curl php7.4-json php7.4-gd php7.4-mbstring php7.4-intl php7.4-bcmath php7.4-bz2 php7.3-readline php7.3-zip
Thanks for letting me know. I'll update.
Hi pushkar, can you tell me how can I install ziparchive on php 7.4? i am running virtuamin on centos 7.
I am not that familiar with virtuamin, but I think it should be same as installing any other packages. Try installing as you usually do. The ziparchive is available in php-zip.
How do you installed xdebug?
I used the pear package to install Xdebug.
Some comments may only be visible to logged-in visitors. Sign in to view all comments.