How to Install PHP 8.3 on Ubuntu 26.04, 24.04 and 22.04

Install PHP 8.3 on Ubuntu 26.04, 24.04 and 22.04 via the Sury PPA. Covers Apache, Nginx, PHP-FPM, extensions, configuration.

Last updatedAuthorJoshua JamesRead time11 minGuide typeUbuntu

PHP 8.3 is the branch many production applications still target when they need modern language features without moving to the newest PHP line. To install PHP 8.3 on Ubuntu with current point releases, use Ondrej Sury’s third-party APT repository at packages.sury.org, then install the versioned php8.3 packages for your web stack.

The Sury repository is not the older Launchpad PPA. It currently publishes PHP 8.3 packages for Ubuntu 26.04, 24.04, and 22.04 in the architecture combinations guarded by the setup block. PHP 8.3 is in security-only support through December 31, 2027, according to PHP’s supported versions table, which makes it a compatibility branch rather than the newest feature branch.

Install PHP 8.3 on Ubuntu

Use this repository path when you specifically need PHP 8.3 across supported Ubuntu LTS releases, or when you need co-installable PHP branches for staged application upgrades. If your application works with the branch Ubuntu already ships for your release, install the default PHP on Ubuntu instead and avoid an extra package source.

Avoid one-off PHP .deb downloads for this workflow. Real PHP deployments usually need matching CLI, FPM, Apache, and extension packages, and APT keeps those packages on the same update path.

Refresh APT and Confirm Ubuntu Details

Start with current package metadata before adding the PHP source.

sudo apt update

These package-management commands need sudo privileges. If your account cannot use sudo yet, add it with Add a New User to Sudoers on Ubuntu before continuing.

Confirm the release codename and package architecture reported by the host.

grep '^VERSION_CODENAME=' /etc/os-release
dpkg --print-architecture
VERSION_CODENAME=resolute
amd64

Ubuntu 26.04 uses resolute, Ubuntu 24.04 uses noble, and Ubuntu 22.04 uses jammy. Ubuntu 20.04 left standard security maintenance in May 2025 according to the Ubuntu release cycle, so production hosts still on 20.04 should move to a supported LTS before using this package workflow. Ubuntu supports additional architectures, but Sury’s PHP indexes for this PHP 8.3 workflow currently cover Ubuntu 26.04 on amd64 and arm64, plus Ubuntu 24.04 and 22.04 on amd64, arm64, and armhf.

Add the Sury PHP Repository on Ubuntu

Install the small prerequisite set, then save the Sury signing key as a binary keyring. The curl command in Linux guide explains the -fsSLo flags if you want to adapt this repository download pattern later.

sudo apt install -y ca-certificates curl
sudo curl -fsSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg

Create a DEB822 source file for the Sury PHP repository. The guard writes the source only when the host matches a validated Ubuntu release and Sury package-index combination.

. /etc/os-release
ARCH="$(dpkg --print-architecture)"

case "$VERSION_CODENAME:$ARCH" in
  resolute:amd64|resolute:arm64|noble:amd64|noble:arm64|noble:armhf|jammy:amd64|jammy:arm64|jammy:armhf)
    printf '%s\n' \
      'Types: deb' \
      'URIs: https://packages.sury.org/php/' \
      "Suites: $VERSION_CODENAME" \
      'Components: main' \
      "Architectures: $ARCH" \
      'Signed-By: /usr/share/keyrings/deb.sury.org-php.gpg' | sudo tee /etc/apt/sources.list.d/php.sources > /dev/null
    ;;
  *)
    printf 'This PHP 8.3 workflow covers Ubuntu 26.04 on amd64/arm64 and Ubuntu 24.04/22.04 on amd64/arm64/armhf; this host reports %s/%s.\n' "$VERSION_CODENAME" "$ARCH" >&2
    false
    ;;
esac

Refresh APT after adding the source.

sudo apt update

Then confirm that php8.3 comes from Sury.

apt-cache policy php8.3
php8.3:
  Installed: (none)
  Candidate: 8.3.31-1+0~20260507.80+ubuntu26.04~1.gbp5ca983
  Version table:
     8.3.31-1+0~20260507.80+ubuntu26.04~1.gbp5ca983 500
        500 https://packages.sury.org/php resolute/main amd64 Packages

The version string and suite change by release. Ubuntu 24.04 output can also show Ubuntu’s own PHP 8.3 package from the default archive, but the Sury entry should be the newer php8.3 candidate when this repository is enabled. Ubuntu 26.04 and 22.04 rely on Sury for this branch.

Compare PHP 8.3 Web Server Setups on Ubuntu

Choose the handler that matches the web server already running on the host. If the server layer is not installed yet, start with Install Apache on Ubuntu or Install Nginx on Ubuntu first.

SetupPackagesBest FitTrade-off
Apache with mod_phpapache2, libapache2-mod-php8.3, php8.3-cliShort-lived labs and simple local Apache sitesApache runs PHP inside its worker model
Apache with PHP-FPMapache2, php8.3-fpm, php8.3-cliProduction Apache sites that need separate PHP worker poolsRequires Apache proxy and FPM configuration
Nginx with PHP-FPMnginx, php8.3-fpm, php8.3-cliLEMP stacks and high-traffic PHP sitesNginx needs a FastCGI block pointing at the PHP 8.3 socket

PHP-FPM is the better default for production because it keeps PHP in a separate service with its own pool settings, logs, and restart path. Use mod_php only when a local Apache-only setup matters more than process isolation.

Install PHP 8.3 with Apache mod_php on Ubuntu

The mod_php path loads PHP as an Apache module. It is convenient for local development, but it is less flexible than PHP-FPM for production sites.

sudo apt install -y apache2 libapache2-mod-php8.3 php8.3-cli
sudo systemctl restart apache2

Confirm the versioned PHP CLI package is available.

php8.3 -r 'printf("PHP %s\n", PHP_VERSION);'
PHP 8.3.31

Install PHP 8.3 with Apache and PHP-FPM on Ubuntu

Apache can pass PHP requests to PHP-FPM through proxy_fcgi. The Sury php8.3-fpm package ships the Apache configuration file at /etc/apache2/conf-available/php8.3-fpm.conf, so libapache2-mod-fcgid is not part of this setup.

sudo apt install -y apache2 php8.3-fpm php8.3-cli
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.3-fpm
sudo systemctl enable php8.3-fpm --now
sudo systemctl restart apache2

Check that PHP-FPM is active.

systemctl is-active php8.3-fpm
active

Install PHP 8.3 with Nginx and PHP-FPM on Ubuntu

Nginx does not load PHP as a module. Install PHP-FPM, then point the Nginx server block at the versioned PHP 8.3 socket.

sudo apt install -y nginx php8.3-fpm php8.3-cli
sudo systemctl enable php8.3-fpm --now

Add or update the PHP location block in the Nginx server block that serves your PHP application.

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
}

Test the Nginx syntax before reloading the service.

sudo nginx -t
sudo systemctl reload nginx
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Verify the PHP 8.3 Installation on Ubuntu

Use the versioned binary when scripts or application tooling must run PHP 8.3 specifically. The unversioned php command can point at a different branch on systems that run multiple PHP versions.

php8.3 -r 'printf("PHP %s\n", PHP_VERSION);'
command -v php8.3
apt-cache policy php8.3 | sed -n '1,4p'
PHP 8.3.31
/usr/bin/php8.3
php8.3:
  Installed: 8.3.31-1+0~20260507.80+ubuntu26.04~1.gbp5ca983
  Candidate: 8.3.31-1+0~20260507.80+ubuntu26.04~1.gbp5ca983

Install PHP 8.3 Extensions on Ubuntu

Most PHP applications need modules beyond the base interpreter. Install only the modules your application uses, especially on small servers where every package adds maintenance surface.

Install Common PHP 8.3 Extensions on Ubuntu

This package set covers common WordPress, Laravel, API-client, database, image-handling, archive, XML, SOAP, and multibyte-text requirements.

sudo apt install -y php8.3-curl php8.3-mysql php8.3-gd php8.3-opcache php8.3-zip php8.3-intl php8.3-bcmath php8.3-readline php8.3-mbstring php8.3-xml php8.3-soap

JSON and Tokenizer support are bundled with PHP 8.3 packages, so do not install nonexistent php8.3-json or php8.3-tokenizer packages. php8.3-common provides Tokenizer compatibility, and JSON support is built into PHP core.

Restart the PHP handler after installing extensions so web requests load the new modules.

sudo systemctl restart php8.3-fpm

If the host uses Apache with mod_php instead of PHP-FPM, restart Apache with sudo systemctl restart apache2 instead.

Verify a few commonly needed modules and confirm OPcache is loaded.

php8.3 -m | grep -E '^(curl|gd|mbstring|mysqli|xml)$'
php8.3 -m | grep '^Zend OPcache$'
curl
gd
mbstring
mysqli
xml
Zend OPcache

PHP 8.3 Extension Package Reference

The package names in this table are available in the guarded Sury PHP 8.3 workflow and match the install command above.

PackageProvidesTypical Use
php8.3-curlcURL HTTP client bindingsAPI requests, webhooks, and remote file access
php8.3-mysqlMySQLi and MySQLnd driversMySQL, MariaDB, WordPress with Nginx on Ubuntu, and many PHP frameworks
php8.3-gdGD graphics extensionThumbnails, image resizing, and simple generated images
php8.3-opcacheZend OPcacheBytecode caching for faster PHP request handling
php8.3-zipZIP archive supportArchive uploads, exports, and package extraction
php8.3-intlInternationalization functionsLocale-aware dates, numbers, collation, and translations
php8.3-bcmathArbitrary precision mathFinancial calculations and payment libraries
php8.3-mbstringMultibyte string handlingUTF-8 and multilingual text processing
php8.3-xmlDOM, SimpleXML, XMLReader, XMLWriter, and related XML modulesSitemaps, feeds, SOAP dependencies, and document parsing
php8.3-soapSOAP client and server supportLegacy API integrations and enterprise services

Install PHP 8.3 APCu When Available

APCu is useful for application-level caching, but Sury does not publish php8.3-apcu for every supported release and architecture combination. Check for a real candidate before installing it; some missing package names return no policy stanza at all.

candidate="$(apt-cache policy php8.3-apcu | sed -n 's/^[[:space:]]*Candidate: //p')"
if [ -n "$candidate" ] && [ "$candidate" != "(none)" ]; then
  printf 'php8.3-apcu candidate: %s\n' "$candidate"
  sudo apt install -y php8.3-apcu
else
  printf 'php8.3-apcu has no candidate for this Ubuntu release and architecture.\n'
fi

Check Optional PHP 8.3 Extension Candidates on Ubuntu

Older Launchpad-based PHP guides often named packages such as php8.3-redis, php8.3-memcached, php8.3-imagick, php8.3-xdebug, and php8.3-pcov. As of May 12, 2026, direct Sury packages.sury.org PHP indexes did not publish those package names for this Ubuntu PHP 8.3 workflow. Ubuntu 24.04 can still show candidates for some of them from Ubuntu’s own archive because PHP 8.3 is that release’s default PHP branch, so always check the package source before installing optional extensions.

for pkg in php8.3-redis php8.3-memcached php8.3-imagick php8.3-xdebug php8.3-pcov; do
  policy="$(apt-cache policy "$pkg" | sed -n '1,8p')"
  if [ -n "$policy" ]; then
    printf '%s\n' "$policy"
  else
    printf '%s: no candidate\n' "$pkg"
  fi
done

On Ubuntu 26.04 and 22.04 with only the Sury PHP 8.3 source active, those optional package names normally return no candidate.

php8.3-redis: no candidate
php8.3-memcached: no candidate
php8.3-imagick: no candidate
php8.3-xdebug: no candidate
php8.3-pcov: no candidate

When a required extension has no candidate, keep the PHP repository setup consistent. Do not add the older Launchpad PPA beside the Sury source just to satisfy one extension name, because mixed PHP sources can create confusing candidates or duplicate-source errors. If Ubuntu 24.04 shows an Ubuntu archive candidate for an optional extension, treat it as an Ubuntu package rather than a Sury package and stage-test it with your application before using it in production. Otherwise, choose an application-supported alternative, such as a Composer client library where the application supports it, or validate a separate extension build before using it in production.

Install PHP 8.3 Development Headers

Install the development package only on systems that compile PHP extensions or build local tooling. It pulls in build dependencies that most runtime servers do not need.

sudo apt install -y php8.3-dev

The package provides headers and tools such as phpize8.3 for extension builds. For project dependency management, install Composer on Ubuntu. For test suites, install PHPUnit on Ubuntu separately instead of treating development headers as a test runner.

Compare PHP Versions on Ubuntu

Ubuntu’s default PHP branch changes by release, while Sury publishes co-installable versioned branches. The default branch is the lowest-maintenance choice when it satisfies your application, and the Sury source is useful when you need a specific PHP branch across releases.

Ubuntu ReleaseDefault PHP BranchPHP 8.3 AvailabilityInstall Decision
Ubuntu 26.04 LTSPHP 8.5Sury repository for php8.3Use Sury only for applications pinned to PHP 8.3
Ubuntu 24.04 LTSPHP 8.3Ubuntu archive and Sury repositoryUse Ubuntu packages for the default branch, or Sury for current Sury point releases and branch consistency
Ubuntu 22.04 LTSPHP 8.1Sury repository for php8.3Use Sury when the application needs PHP 8.3 features or compatibility

Compare PHP Branch Choices for Ubuntu

PHP BranchBest FitSupport PositionTrade-off
Default PHPServers that prefer Ubuntu archive packages and fewer third-party sourcesTracks the Ubuntu release package lifecycleBranch differs by Ubuntu release
PHP 8.5New projects that can use the current PHP feature branchActive support through December 2027, security support through December 2029Newest application compatibility target
PHP 8.4Applications certified for PHP 8.4 or staged upgrades from PHP 8.1/8.3Active support through December 2026, security support through December 2028Requires a non-default branch on Ubuntu 24.04 and 22.04
PHP 8.3Applications that are stable on PHP 8.3 but not ready for newer branchesSecurity-only support through December 2027Older feature set than PHP 8.4 and PHP 8.5
PHP 8.2Legacy applications that have not moved past PHP 8.2Security-only support through December 2026Narrower future maintenance window

PHP 8.3 is a compatibility choice at this point. It remains practical for applications that have been tested on 8.3, but new deployments should compare PHP 8.4 and 8.5 before committing to an older branch.

Configure PHP 8.3 Settings on Ubuntu

PHP keeps separate configuration trees for CLI and FPM. Change the file that matches the runtime your application actually uses. For pool sizing, per-site pools, and FPM process-manager tuning, use the deeper Configure PHP-FPM on Ubuntu workflow.

Locate PHP 8.3 Configuration Files

php8.3 --ini | sed -n '1,3p'
Configuration File (php.ini) Path: /etc/php/8.3/cli
Loaded Configuration File:         /etc/php/8.3/cli/php.ini
Scan for additional .ini files in: /etc/php/8.3/cli/conf.d

For PHP-FPM web requests, edit /etc/php/8.3/fpm/php.ini. CLI changes in /etc/php/8.3/cli/php.ini do not change web application behavior.

Adjust Common PHP 8.3 Settings

Edit the FPM configuration file when the application runs through PHP-FPM.

sudo nano /etc/php/8.3/fpm/php.ini
upload_max_filesize = 64M
post_max_size = 64M
memory_limit = 256M
max_execution_time = 120
max_input_vars = 3000

For public servers, review security-sensitive settings as well. Common production choices include display_errors = Off and expose_php = Off, with error details sent to logs instead of browser responses.

Restart PHP-FPM after saving changes, then confirm the values in the FPM configuration file.

sudo systemctl restart php8.3-fpm
grep -E '^(upload_max_filesize|post_max_size|memory_limit)' /etc/php/8.3/fpm/php.ini
upload_max_filesize = 64M
post_max_size = 64M
memory_limit = 256M

Run PHP 8.3 Alongside Other PHP Versions on Ubuntu

Sury packages PHP branches independently, so PHP 8.3 can coexist with PHP 8.1, PHP 8.4, PHP 8.5, or Ubuntu’s default branch. Keep CLI, Apache, and Nginx switching separate because each layer chooses its PHP version differently.

Switch the PHP CLI Command to PHP 8.3

Use the versioned php8.3 command in scripts when possible. If you need the generic php command to use PHP 8.3 for interactive CLI work, inspect the alternatives entry first.

update-alternatives --display php | sed -n '1,4p'
php - auto mode
  link best version is /usr/bin/php8.3
  link currently points to /usr/bin/php8.3
  link php is /usr/bin/php

Set PHP 8.3 as the CLI target only when you understand that this affects shell commands and developer tools that call php.

sudo update-alternatives --set php /usr/bin/php8.3
php --version

Switch Apache or Nginx Sites to PHP 8.3

Apache mod_php sites use Apache modules. Replace php8.2 with the branch currently enabled on the server, such as php8.1, php8.4, or php8.5.

sudo a2dismod php8.2
sudo a2enmod php8.3
sudo systemctl restart apache2

Apache with PHP-FPM uses configuration snippets instead of mod_php modules. Replace php8.2-fpm with the currently enabled FPM branch if the server uses a different one.

sudo a2disconf php8.2-fpm
sudo a2enconf php8.3-fpm
sudo systemctl restart apache2

Nginx sites use the socket path inside the server block.

fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;

Test and reload Nginx after changing the socket path.

sudo nginx -t
sudo systemctl reload nginx

Update PHP 8.3 on Ubuntu

Sury PHP packages receive APT-managed updates through the source configured earlier. Refresh package metadata, then upgrade the installed PHP 8.3 package set without pulling in new optional extension packages.

sudo apt update
dpkg-query -W -f='${binary:Package}\n' 'php8.3*' 'libapache2-mod-php8.3' 2>/dev/null | xargs -r sudo apt install --only-upgrade

Restart the handler that serves your web requests after a PHP upgrade.

sudo systemctl restart php8.3-fpm

For Apache mod_php, restart Apache instead with sudo systemctl restart apache2. Nginx normally does not need a restart for PHP package upgrades unless you changed Nginx configuration.

php8.3 --version

Remove PHP 8.3 from Ubuntu

Remove PHP 8.3 Packages

Remove the installed PHP 8.3 branch packages without touching other PHP branches.

dpkg-query -W -f='${binary:Package}\n' 'php8.3*' 'libapache2-mod-php8.3' 2>/dev/null | xargs -r sudo apt remove

APT will list the exact packages before removal. Ubuntu 26.04 uses newer summary-style APT output, while Ubuntu 24.04 and 22.04 can still show the older The following packages will be REMOVED wording.

Use purge only when you also want to remove PHP 8.3 configuration under /etc/php/8.3/. Back up edited php.ini, pool, and application-specific configuration files before purging.

dpkg-query -W -f='${binary:Package}\n' 'php8.3*' 'libapache2-mod-php8.3' 2>/dev/null | xargs -r sudo apt purge

Preview orphaned dependencies before removing them.

sudo apt autoremove --dry-run

Continue only when the preview lists packages you intend to remove.

sudo apt autoremove

Remove the Sury PHP Repository from Ubuntu

Remove the Sury source and signing key only when no remaining PHP branch on the host depends on that repository for updates.

sudo rm -f /etc/apt/sources.list.d/php.sources /usr/share/keyrings/deb.sury.org-php.gpg
sudo apt update
apt-cache policy php8.3

After removing Sury on Ubuntu 24.04, apt-cache policy php8.3 can still show Ubuntu’s own PHP 8.3 candidate. On Ubuntu 26.04 and 22.04, the PHP 8.3 candidate normally disappears when no other PHP 8.3 source remains enabled.

Troubleshoot PHP 8.3 on Ubuntu

Fix Duplicate PHP Repository Sources on Ubuntu

APT should have one active PHP package source for this repository family. Check for older Launchpad PPA files and older Sury one-line source files before installing or updating PHP 8.3.

grep -R -E "ondrej/php|packages[.]sury[.]org/php" /etc/apt/sources.list /etc/apt/sources.list.d/ 2>/dev/null
/etc/apt/sources.list.d/php.sources:URIs: https://packages.sury.org/php/
/etc/apt/sources.list.d/php.list:deb [signed-by=/usr/share/keyrings/debsuryorg-archive-keyring.gpg] https://packages.sury.org/php/ noble main

If both files point to packages.sury.org/php, keep the DEB822 php.sources file created earlier and disable the older one-line file.

if [ -f /etc/apt/sources.list.d/php.list ]; then
  sudo mv /etc/apt/sources.list.d/php.list /etc/apt/sources.list.d/php.list.disabled
fi

sudo apt update

If APT still contacts the older Launchpad PHP PPA, remove that source before using the Sury packages.sury.org entry.

if command -v add-apt-repository >/dev/null 2>&1; then
  sudo add-apt-repository --remove ppa:ondrej/php -y
else
  sudo rm -f /etc/apt/sources.list.d/ondrej-ubuntu-php*.list /etc/apt/sources.list.d/ondrej-ubuntu-php*.sources
fi

sudo apt update

If the old PPA source was edited manually or lives under a different filename, use Remove a PPA from Ubuntu to identify and remove the leftover source safely.

Fix Unable to Locate Package php8.3 or php8.3-fpm

This error usually means APT has not ingested the Sury source, the source file was not written for this release and architecture, or package metadata was not refreshed after setup.

sudo apt update
apt-cache policy php8.3 php8.3-fpm
php8.3:
  Installed: (none)
  Candidate: 8.3.31-1+0~20260507.80+ubuntu26.04~1.gbp5ca983
  Version table:
     8.3.31-1+0~20260507.80+ubuntu26.04~1.gbp5ca983 500
        500 https://packages.sury.org/php resolute/main amd64 Packages
php8.3-fpm:
  Installed: (none)
  Candidate: 8.3.31-1+0~20260507.80+ubuntu26.04~1.gbp5ca983
  Version table:
     8.3.31-1+0~20260507.80+ubuntu26.04~1.gbp5ca983 500
        500 https://packages.sury.org/php resolute/main amd64 Packages

If the candidate still shows (none), re-run the source-writing block and check that the host reports one of the validated codename and architecture pairs.

Fix Missing Optional Extension Packages

APT can report no candidate for several extension names that readers may remember from older PPA workflows. Ubuntu 24.04 may instead show Ubuntu archive candidates for some names, so confirm both the candidate and the source before changing repositories.

for pkg in php8.3-redis php8.3-memcached php8.3-imagick php8.3-xdebug php8.3-pcov; do
  policy="$(apt-cache policy "$pkg" | sed -n '1,8p')"
  if [ -n "$policy" ]; then
    printf '%s\n' "$policy"
  else
    printf '%s: no candidate\n' "$pkg"
  fi
done

When no candidate exists, the compact check returns:

php8.3-redis: no candidate
php8.3-memcached: no candidate
php8.3-imagick: no candidate
php8.3-xdebug: no candidate
php8.3-pcov: no candidate

Do not solve this by enabling both the old Launchpad PPA and the direct Sury repository. Keep one PHP package source active and choose an application-supported alternative for the missing extension requirement.

Fix PHP-FPM Socket Not Found

A 502 response from Nginx often means PHP-FPM is not running or the Nginx server block points at the wrong socket. For upstream failures outside PHP-FPM, the broader Fix Nginx 502 Bad Gateway guide covers the surrounding Nginx checks.

systemctl is-active php8.3-fpm
ls -l /var/run/php/php8.3-fpm.sock
active
srw-rw---- 1 www-data www-data 0 /var/run/php/php8.3-fpm.sock

Start PHP-FPM and reload Nginx after fixing the socket path.

sudo systemctl enable php8.3-fpm --now
sudo nginx -t
sudo systemctl reload nginx

Fix Generic php-fpm Service Name Errors

Ubuntu uses versioned PHP-FPM systemd units. The generic php-fpm.service name is not the unit created by the Sury PHP 8.3 package.

systemctl status php-fpm --no-pager 2>&1 | sed -n '1p'
systemctl status php8.3-fpm --no-pager | sed -n '1p'
Unit php-fpm.service could not be found.
php8.3-fpm.service - The PHP 8.3 FastCGI Process Manager

Fix the Wrong PHP Version in the CLI

If php --version shows another branch, check the versioned binary first. Application services using PHP-FPM still follow their socket or Apache configuration, not the CLI alternative.

php8.3 --version
php --version
sudo update-alternatives --set php /usr/bin/php8.3

Conclusion

PHP 8.3 can run cleanly on supported Ubuntu LTS releases when the Sury APT source, versioned package names, and web-server handler all point at the same branch. Keep optional extensions candidate-checked, use PHP-FPM for production stacks, and compare PHP 8.4 on Ubuntu or PHP 8.5 on Ubuntu before starting new applications that do not require PHP 8.3 compatibility.

Share this guide

Help another Linux user troubleshoot faster

Share this guide with someone troubleshooting Linux systems or saving it for later.

Follow LinuxCapable

Want more LinuxCapable guides in Google?

Add LinuxCapable as a preferred source so Google can show our tutorials more often in Top Stories and mark them as preferred in AI Mode and AI Overviews when relevant.

Add LinuxCapable as a preferred source on Google
Search LinuxCapable

Need another guide?

Search LinuxCapable for package installs, commands, troubleshooting, and follow-up guides related to what you just read.

Found this guide useful?

Support LinuxCapable to keep tutorials free and up to date.

Buy me a coffeeBuy me a coffee
Before commenting, please review our Comments Policy.
Formatting tips for your comment

You can use basic HTML to format your comment. Useful tags currently allowed in published comments:

You type Result
<code>command</code> command
<strong>bold</strong> bold
<em>italic</em> italic
<a href="https://example.com">link</a> link
<blockquote>quote</blockquote> quote block

Add to the discussion

Questions, fixes, command output, and version notes help keep this guide current.

Verify before posting: