- 1 1. Introduction
- 2 2. Prerequisites and Preparation
- 3 3. How to Install PHP
- 4 4. Verifying PHP Installation
- 5 5. Installing Commonly Used PHP Modules
- 6 6. Managing and Switching PHP Versions
- 7 7. Configuring Integration with Apache and Nginx
- 8 8. Troubleshooting
- 9 9. Conclusion
- 10 10. Frequently Asked Questions (FAQ)
- 10.1 Q1. How do I install the latest version of PHP on Ubuntu?
- 10.2 Q2. How can I switch PHP versions on the CLI?
- 10.3 Q3. Apache shows my PHP file as plain text instead of executing it.
- 10.4 Q4. Where is the PHP configuration file (php.ini) located?
- 10.5 Q5. How do I enable a PHP extension?
- 10.6 Q6. PHP is not working properly with Nginx. What should I check?
- 10.7 Q7. PHP errors are not shown on screen.
1. Introduction
Why Use PHP on Ubuntu?
PHP is a server-side scripting language widely used in many web applications, including WordPress. It has been a standard in web development for many years, powering numerous CMSs and frameworks.
Ubuntu is a highly stable Linux distribution favored by developers worldwide and is especially well-suited for server use. The combination of Ubuntu and PHP is widely adopted, from personal projects to enterprise production environments.
Who This Article Is For & Its Purpose
This guide is for everyone from beginners—who want to install PHP on Ubuntu but aren’t sure where to start—to intermediate users who want to install a specific PHP version. We provide clear, step-by-step instructions.
We use Ubuntu 22.04 LTS as the example environment, but the steps are generally similar for other versions as well.
What You’ll Learn in This Article
By reading this guide, you’ll be able to understand and perform the following tasks:
- Basic methods for installing PHP on Ubuntu
- How to install and switch between multiple PHP versions
- How to verify PHP is working and troubleshoot issues
- How to configure integration with Apache or Nginx
- How to install commonly used PHP modules
2. Prerequisites and Preparation
How to Check Your Ubuntu Version
First, check which version of Ubuntu you’re using. The installation steps and available PHP modules may vary slightly depending on your Ubuntu version.
You can check your Ubuntu version with this command:
lsb_release -aAlternatively, you can use the following command:
cat /etc/os-releaseThis article is based on Ubuntu 22.04 LTS, but the basic procedure also applies to 20.04 and 23.10.
Keep Your System Packages Up to Date
Before installing PHP, it’s essential to update your system packages to the latest versions. This helps avoid dependency issues or inconsistencies. Update with the following commands:
sudo apt update
sudo apt upgrade -yThis refreshes the APT package index, making sure you’re installing the latest packages.
Install Required Utilities
When installing some PHP versions, you’ll need the software-properties-common package to add repositories and manage packages. If not already installed, do so with:
sudo apt install -y software-properties-commonThis package is needed for commands like add-apt-repository, especially when using a PPA (Personal Package Archive) to install specific PHP versions.
Using Root Privileges or Sudo
Most steps in this article involve making system changes, so you’ll need to use sudo with your commands. If you’re not familiar with it, review the basics of the sudo command before proceeding.
3. How to Install PHP
There are two main ways to install PHP on Ubuntu: using the default repository, or specifying a version via a PPA (Personal Package Archive). We’ll walk through both methods.
Installing PHP from the Default Repository
The Ubuntu default repository provides stable versions of PHP. If you don’t need a specific version, simply run:
sudo apt install -y phpAfter installation, check that PHP is installed correctly:
php -vExample:
PHP 8.1.2 (cli) (built: ...)On Ubuntu 22.04, PHP 8.1 is provided by default.
Installing a Specific Version Using PPA
If you want the latest PHP or need to use multiple versions, you can add the trusted ondrej/php PPA and specify the version you want.
Step 1: Add the PPA Repository
sudo add-apt-repository ppa:ondrej/php
sudo apt updateThis repository is widely used in the Ubuntu community and offers stable builds for all major PHP versions.
Step 2: Install Your Desired PHP Version
For example, to install PHP 8.2:
sudo apt install -y php8.2You can also install other versions like PHP 7.4 or 8.0 in the same way.
Step 3: Check the Installed Version
php -vIf the specific version was installed successfully, it will be displayed here.
4. Verifying PHP Installation
Once PHP is installed, check that it’s working. On Ubuntu, you can verify it via the command line (CLI) and also through your web server (Apache or Nginx). Here’s how:
Checking via Command Line (CLI)
Display the PHP version in the terminal to confirm that PHP is working:
php -vIf you see the PHP version and build information, PHP is working in the CLI.
Sample Output:
PHP 8.2.10 (cli) (built: Aug 23 2023 08:12:10) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.2.10, Copyright (c) Zend TechnologiesChecking via Web Server (Apache Example)
If you’re using Apache, create a test page with the phpinfo() function to verify PHP is working with Apache.
1. Create the Test File
Create a PHP file in your Apache web directory (usually /var/www/html) with:
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php2. Check in Your Browser
Access the file in your browser. On your local machine, visit:
http://localhost/info.php3. Review the Output
If you see detailed PHP information, PHP is working via Apache.
🔍 Tip: Since
phpinfo()can display sensitive information, delete theinfo.phpfile after checking.
sudo rm /var/www/html/info.phpChecking with Nginx + PHP-FPM
If you use Nginx, PHP runs through php-fpm. Make sure Nginx is configured to handle .php files, then create info.php as above. If you see a 500 error or a download prompt, check your Nginx settings, especially fastcgi_pass and include fastcgi-php.conf;.
5. Installing Commonly Used PHP Modules
PHP’s core installation doesn’t include all features. Many are provided as modules (extensions) that must be installed as needed. Here, we introduce essential PHP modules for development and production.
What Are PHP Modules?
PHP modules (or extensions) add features like database connectivity, multibyte string processing, image manipulation, or XML handling.
Modules are available as APT packages and can be installed like this:
sudo apt install php-[module-name]To specify a version, use something like php8.2-mbstring.

Key PHP Modules and Their Uses
php-mbstring (Multibyte String Support)
Required for handling multibyte characters like Japanese. Essential for Japanese sites or email processing.
sudo apt install php-mbstringphp-mysql (MySQL/MariaDB Connectivity)
Needed to connect to MySQL or MariaDB databases. Required for apps like WordPress that use a database.
sudo apt install php-mysqlphp-gd (Image Processing)
Handles image creation, conversion, and resizing; used for generating screenshots or thumbnails.
sudo apt install php-gdphp-xml (XML Processing)
Required for handling XML-based data such as RSS feeds or SOAP. Used in CMSs and for API integration.
sudo apt install php-xmlphp-curl (HTTP Communication)
Used for sending HTTP requests, like when integrating with external APIs. Widely used by modern frameworks.
sudo apt install php-curlphp-zip (ZIP File Handling)
Handles compressing and extracting ZIP files; useful for file upload features.
sudo apt install php-zipEnabling Modules and Restarting Services
Some modules require explicit enabling after installation. Use phpenmod as follows:
sudo phpenmod [module-name]
sudo systemctl restart apache2Changes take effect after restarting your web server.
6. Managing and Switching PHP Versions
Ubuntu lets you install and use multiple PHP versions on a single server. This is handy when hosting multiple apps or developing in various environments. Here’s how to switch versions on the CLI and with Apache.
Switching PHP Versions in the CLI
Command: update-alternatives
Use update-alternatives to easily switch the PHP version used in the CLI.
Step 1: List Installed PHP Versions
ls /usr/bin/php*Step 2: Register PHP Versions with update-alternatives (First Time Only)
sudo update-alternatives --install /usr/bin/php php /usr/bin/php7.4 74
sudo update-alternatives --install /usr/bin/php php /usr/bin/php8.2 82Step 3: Select the Version to Use
sudo update-alternatives --config phpThis shows a selection screen like:
There are 2 choices for the alternative php (providing /usr/bin/php).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/php8.2 82 auto mode
1 /usr/bin/php7.4 74 manual mode
2 /usr/bin/php8.2 82 manual mode
Press <enter> to keep the current choice[*], or type selection number:Type the number for your desired version and press Enter.
Step 4: Confirm the Version
php -vSwitching PHP Versions with Apache
With Apache, you can enable or disable PHP modules by version. Here’s how to select your preferred version:
1. List Available Modules
ls /etc/apache2/mods-available | grep php2. Disable the Current Module
sudo a2dismod php7.43. Enable the Desired Version
sudo a2enmod php8.24. Restart Apache
sudo systemctl restart apache2This applies your changes to both the CLI and Apache.
7. Configuring Integration with Apache and Nginx
PHP becomes truly powerful when integrated with a web server. On Ubuntu, you’ll usually use either Apache or Nginx. Here’s how to connect PHP with both.
Configuring Apache (mod_php)
With Apache, the mod_php module allows PHP scripts to run directly. It’s easy to set up, making it a good choice for WordPress and other CMSs.
Step 1: Install Apache and mod_php
sudo apt install -y apache2 libapache2-mod-phpWith libapache2-mod-php installed, Apache can process PHP files.
Step 2: Restart Apache
sudo systemctl restart apache2Step 3: Test with a PHP File
Create a test.php file in /var/www/html and check in your browser:
<?php
phpinfo();
?>Example URL:
http://localhost/test.phpConfiguring Nginx (PHP-FPM)
Nginx is lightweight and fast, but can’t process PHP directly. You’ll use PHP-FPM (FastCGI Process Manager) for PHP support.
Step 1: Install Nginx and PHP-FPM
sudo apt install -y nginx php-fpmStep 2: Edit the Nginx Config File
Edit /etc/nginx/sites-available/default (or your virtual host config):
sudo nano /etc/nginx/sites-available/defaultAdd or update this block:
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}Step 3: Restart Nginx
sudo systemctl restart nginxStep 4: Test with a PHP File
Create /var/www/html/test.php and check in your browser, as with Apache.
Note: Firewall Settings (If Needed)
If using UFW (Uncomplicated Firewall), allow access with:
sudo ufw allow 'Apache Full'
# or
sudo ufw allow 'Nginx Full'Apache is easy to set up, while Nginx offers high performance. Choose the best fit and ensure PHP integration is configured correctly.
8. Troubleshooting
Sometimes PHP may not work as expected, even after installation and server integration. This section covers common problems, their causes, and solutions.
PHP Not Working (Source Code Shown in Browser)
Cause
This occurs when Apache or Nginx outputs the PHP file as plain text instead of processing it. The PHP module or FastCGI settings may not be configured properly.
Solution
- For Apache:
Check thatlibapache2-mod-phpis installed and enabled, then restart Apache.
sudo apt install libapache2-mod-php
sudo systemctl restart apache2- For Nginx:
Check thatphp-fpmis installed and that the Nginx config has the correctfastcgi_passand settings.
sudo systemctl restart php8.2-fpm
sudo systemctl restart nginxSome PHP Features Not Working (Functions Undefined)
Cause
This is usually because the required PHP module is not installed or enabled.
Solution
- Install the needed module(s), such as
mbstring,xml, orcurl:
sudo apt install php-mbstring php-xml php-curl- After enabling a module, restart your web server.
sudo systemctl restart apache2 # or nginx- Check enabled modules with:
php -mPHP Errors Not Displayed
Cause
By default, PHP error messages might be turned off.
Solution
Edit php.ini and change the error display settings:
sudo nano /etc/php/8.2/apache2/php.iniFind and set the following:
display_errors = On
error_reporting = E_ALLThen restart your web server:
sudo systemctl restart apache2How to Check Error Logs
For Apache:
/var/log/apache2/error.logFor Nginx:
/var/log/nginx/error.logFor PHP-FPM (with Nginx):
/var/log/php8.2-fpm.logCheck these logs for troubleshooting:
sudo tail -f /var/log/apache2/error.logWhen errors occur, remember: Check logs → Review configuration → Restart server. Stay calm and troubleshoot step by step.
9. Conclusion
This article explained—from basics to advanced steps—how to install PHP on Ubuntu. Here are the key points and next steps to explore.
Summary of Key Points
- Check Ubuntu Version and Prepare
Checking your OS version and updating packages is crucial for a smooth PHP installation. - Two Ways to Install PHP
Install easily from the default repository, or use a PPA for specific versions. - Verify After Installing
Usephp -vandphpinfo()to check PHP in CLI and web contexts. - Extend Functionality with Modules
Install commonly used modules likephp-mbstringandphp-mysqlas needed. - Switch Between Multiple Versions
Easily manage versions withupdate-alternativesor Apache module switching. - Proper Integration with Apache/Nginx
Appropriate configuration with your chosen web server ensures stable operation. - Check Logs for Troubleshooting
If PHP doesn’t display or work correctly, reviewing the error logs is the most effective first step.
Next Steps to Learn
After installing PHP on Ubuntu, you may want to dive deeper with these related topics:
- Installing MySQL (MariaDB) and Connecting Databases
- Installing and Setting Up WordPress
- Using PHP Frameworks Like Laravel
- Enabling HTTPS (Setting up SSL Certificates with Let’s Encrypt)
- Managing Auto-Start and Restarts (Using systemd)
With these, you can build even more advanced web services and applications. Ubuntu and PHP together offer a robust, flexible open-source development environment. Use this article as your foundation to step up to new projects!
10. Frequently Asked Questions (FAQ)
This FAQ covers common stumbling blocks and questions that users often search for when installing or configuring PHP on Ubuntu. Answers are kept simple and practical, even for beginners.
Q1. How do I install the latest version of PHP on Ubuntu?
A1.
The latest PHP version is not always in Ubuntu’s default repository. Add the trusted ondrej/php PPA, then install the version you want.
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php8.2Q2. How can I switch PHP versions on the CLI?
A2.
If you have multiple versions installed, use update-alternatives to switch between them.
sudo update-alternatives --config phpEnter the number for your preferred version from the list displayed.
Q3. Apache shows my PHP file as plain text instead of executing it.
A3.
This means Apache is not processing PHP—it’s outputting it as plain text. Check that the libapache2-mod-php module is enabled and restart Apache:
sudo apt install libapache2-mod-php
sudo systemctl restart apache2Q4. Where is the PHP configuration file (php.ini) located?
A4.
There are separate files for CLI and web server use. The common locations are:
- For Apache:
/etc/php/8.2/apache2/php.ini - For CLI:
/etc/php/8.2/cli/php.ini
The “8.2” part changes depending on your PHP version.
Q5. How do I enable a PHP extension?
A5.
After installing, enable the module with phpenmod:
sudo phpenmod mbstring
sudo systemctl restart apache2Restart your web server after enabling.
Q6. PHP is not working properly with Nginx. What should I check?
A6.
Nginx requires php-fpm to process PHP. Make sure your config includes the correct fastcgi_pass entry:
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}Adjust the .sock part according to your PHP version.
Q7. PHP errors are not shown on screen.
A7.
In php.ini, display_errors may be set to Off. For development, you can enable it like this:
display_errors = On
error_reporting = E_ALLRestart your web server after making changes.
These FAQs will help you avoid common pitfalls when using PHP on Ubuntu. Keep this knowledge handy for smoother troubleshooting!


