diff --git a/nixos/doc/manual/from_md/release-notes/rl-2211.section.xml b/nixos/doc/manual/from_md/release-notes/rl-2211.section.xml
index d5cc14a3bdfd..bc5dd182e30d 100644
--- a/nixos/doc/manual/from_md/release-notes/rl-2211.section.xml
+++ b/nixos/doc/manual/from_md/release-notes/rl-2211.section.xml
@@ -139,6 +139,11 @@
other distributions.
+
+
+ PHP 8.2.0 RC 6 is available.
+
+
protonup has been aliased to and replaced
diff --git a/nixos/doc/manual/release-notes/rl-2211.section.md b/nixos/doc/manual/release-notes/rl-2211.section.md
index d61cf2967553..34371d8317bc 100644
--- a/nixos/doc/manual/release-notes/rl-2211.section.md
+++ b/nixos/doc/manual/release-notes/rl-2211.section.md
@@ -57,6 +57,8 @@ In addition to numerous new and upgraded packages, this release has the followin
`mod_php` usage we still enable `ZTS` (Zend Thread Safe). This has been a
common practice for a long time in other distributions.
+- PHP 8.2.0 RC 6 is available.
+
- `protonup` has been aliased to and replaced by `protonup-ng` due to upstream not maintaining it.
- Perl has been updated to 5.36, and its core module `HTTP::Tiny` was patched to verify SSL/TLS certificates by default.
diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix
index c7aa9ed78ba4..8afa901cc370 100644
--- a/nixos/tests/all-tests.nix
+++ b/nixos/tests/all-tests.nix
@@ -492,6 +492,7 @@ in {
php = handleTest ./php {};
php80 = handleTest ./php { php = pkgs.php80; };
php81 = handleTest ./php { php = pkgs.php81; };
+ php82 = handleTest ./php { php = pkgs.php82; };
phylactery = handleTest ./web-apps/phylactery.nix {};
pict-rs = handleTest ./pict-rs.nix {};
pinnwand = handleTest ./pinnwand.nix {};
diff --git a/pkgs/development/interpreters/php/8.2.nix b/pkgs/development/interpreters/php/8.2.nix
new file mode 100644
index 000000000000..72816da1d4b1
--- /dev/null
+++ b/pkgs/development/interpreters/php/8.2.nix
@@ -0,0 +1,61 @@
+{ callPackage, lib, stdenv, fetchurl, ... }@_args:
+
+let
+ hash = "sha256-sbT8sIwle3OugXxqLZO3jKXlrOQsX1iH7WRH8G+nv8Y=";
+
+ base = callPackage ./generic.nix (_args // {
+ version = "8.2.0";
+ phpAttrsOverrides = attrs: attrs // {
+ src = fetchurl {
+ url = "https://downloads.php.net/~sergey/php-8.2.0RC6.tar.xz";
+ inherit hash;
+ };
+ };
+ inherit hash;
+ });
+
+in
+base.withExtensions ({ all, ... }: with all; ([
+ bcmath
+ calendar
+ curl
+ ctype
+ dom
+ exif
+ fileinfo
+ filter
+ ftp
+ gd
+ gettext
+ gmp
+ iconv
+ imap
+ intl
+ ldap
+ mbstring
+ mysqli
+ mysqlnd
+ opcache
+ openssl
+ pcntl
+ pdo
+ pdo_mysql
+ pdo_odbc
+ pdo_pgsql
+ pdo_sqlite
+ pgsql
+ posix
+ readline
+ session
+ simplexml
+ sockets
+ soap
+ sodium
+ sysvsem
+ sqlite3
+ tokenizer
+ xmlreader
+ xmlwriter
+ zip
+ zlib
+]))
diff --git a/pkgs/development/php-packages/datadog_trace/default.nix b/pkgs/development/php-packages/datadog_trace/default.nix
index 9b91d85fefe5..f77433a8a9ec 100644
--- a/pkgs/development/php-packages/datadog_trace/default.nix
+++ b/pkgs/development/php-packages/datadog_trace/default.nix
@@ -1,4 +1,4 @@
-{ buildPecl, curl, fetchFromGitHub, lib, pcre2 }:
+{ buildPecl, curl, fetchFromGitHub, lib, pcre2, php }:
buildPecl rec {
pname = "ddtrace";
@@ -14,6 +14,7 @@ buildPecl rec {
buildInputs = [ curl pcre2 ];
meta = with lib; {
+ broken = lib.versionOlder php.version "8.1"; # Broken on PHP older than 8.1.
description = "Datadog Tracing PHP Client";
homepage = "https://github.com/DataDog/dd-trace-php";
license = licenses.apsl20;
diff --git a/pkgs/development/php-packages/gnupg/default.nix b/pkgs/development/php-packages/gnupg/default.nix
index 1d0b65d2c562..22ce2be4473b 100644
--- a/pkgs/development/php-packages/gnupg/default.nix
+++ b/pkgs/development/php-packages/gnupg/default.nix
@@ -1,4 +1,4 @@
-{ buildPecl, lib, gpgme, file, gnupg }:
+{ buildPecl, lib, gpgme, file, gnupg, php }:
buildPecl {
pname = "gnupg";
@@ -29,6 +29,7 @@ buildPecl {
doCheck = true;
meta = with lib; {
+ broken = lib.versionOlder php.version "8.1"; # Broken on PHP older than 8.1.
description = "PHP wrapper for GpgME library that provides access to GnuPG";
license = licenses.bsd3;
homepage = "https://pecl.php.net/package/gnupg";
diff --git a/pkgs/development/php-packages/oci8/default.nix b/pkgs/development/php-packages/oci8/default.nix
index 2657a67d38ba..477eea5898e5 100644
--- a/pkgs/development/php-packages/oci8/default.nix
+++ b/pkgs/development/php-packages/oci8/default.nix
@@ -1,12 +1,18 @@
-{ buildPecl, lib, oracle-instantclient }:
+{ buildPecl, lib, oracle-instantclient, php }:
+
let
- version = "3.0.1";
- sha256 = "108ds92620dih5768z19hi0jxfa7wfg5hdvyyvpapir87c0ap914";
+ versionData = if (lib.versionOlder php.version "8.1") then {
+ version = "3.0.1";
+ sha256 = "108ds92620dih5768z19hi0jxfa7wfg5hdvyyvpapir87c0ap914";
+ } else {
+ version = "3.2.1";
+ sha256 = "zyF703DzRZDBhlNFFt/dknmZ7layqhgjG1/ZDN+PEsg=";
+ };
in
buildPecl {
pname = "oci8";
- inherit version sha256;
+ inherit (versionData) version sha256;
buildInputs = [ oracle-instantclient ];
configureFlags = [ "--with-oci8=shared,instantclient,${oracle-instantclient.lib}/lib" ];
diff --git a/pkgs/development/php-packages/xdebug/default.nix b/pkgs/development/php-packages/xdebug/default.nix
index 80b0ec73109c..388360462dcf 100644
--- a/pkgs/development/php-packages/xdebug/default.nix
+++ b/pkgs/development/php-packages/xdebug/default.nix
@@ -1,10 +1,18 @@
-{ buildPecl, lib }:
+{ buildPecl, lib, php }:
+let
+ versionData = if (lib.versionOlder php.version "8.1") then {
+ version = "3.1.6";
+ sha256 = "1lnmrb5kgq8lbhjs48j3wwhqgk44pnqb1yjq4b5r6ysv9l5wlkjm";
+ } else {
+ version = "3.2.0RC2";
+ sha256 = "dQgXDP3Ifg+D0niWxaJ4ec71Vfr8KH40jv6QbxSyY+4=";
+ };
+in
buildPecl {
pname = "xdebug";
- version = "3.1.6";
- sha256 = "1lnmrb5kgq8lbhjs48j3wwhqgk44pnqb1yjq4b5r6ysv9l5wlkjm";
+ inherit (versionData) version sha256;
doCheck = true;
checkTarget = "test";
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index a70dd9e0494c..6550ce27ef52 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -15765,6 +15765,16 @@ with pkgs;
phpExtensions = php.extensions;
phpPackages = php.packages;
+ # Import PHP82 interpreter, extensions and packages
+ php82 = callPackage ../development/interpreters/php/8.2.nix {
+ stdenv = if stdenv.cc.isClang then llvmPackages.stdenv else stdenv;
+ pcre2 = pcre2.override {
+ withJitSealloc = !stdenv.isDarwin;
+ };
+ };
+ php82Extensions = recurseIntoAttrs php82.extensions;
+ php82Packages = recurseIntoAttrs php82.packages;
+
# Import PHP81 interpreter, extensions and packages
php81 = callPackage ../development/interpreters/php/8.1.nix {
stdenv = if stdenv.cc.isClang then llvmPackages.stdenv else stdenv;