git: c0b9892033cb - main - */*php85*: Sunrise
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 02 Jul 2025 16:30:06 UTC
The branch main has been updated by bofh:
URL: https://cgit.FreeBSD.org/ports/commit/?id=c0b9892033cb566ec6a0c6d0fe5ce4b97c4c88de
commit c0b9892033cb566ec6a0c6d0fe5ce4b97c4c88de
Author: Muhammad Moinur Rahman <bofh@FreeBSD.org>
AuthorDate: 2025-07-02 09:54:37 +0000
Commit: Muhammad Moinur Rahman <bofh@FreeBSD.org>
CommitDate: 2025-07-02 16:29:38 +0000
*/*php85*: Sunrise
Please DO NOT use this version in production, it is an early test
version.
For upgrade notes please visit:
https://github.com/php/php-src/blob/php-8.5.0alpha1/UPGRADING
Changelog: https://github.com/php/php-src/blob/php-8.5.0alpha1/NEWS
---
Mk/Uses/php.mk | 8 +-
Mk/bsd.default-versions.mk | 2 +-
archivers/Makefile | 4 +
archivers/php85-bz2/Makefile | 7 +
archivers/php85-phar/Makefile | 7 +
archivers/php85-phar/files/patch-config.m4 | 11 +
.../php85-phar/files/patch-phar__path__check.c | 241 +++++++
archivers/php85-zip/Makefile | 7 +
archivers/php85-zlib/Makefile | 7 +
archivers/php85-zlib/files/patch-zlib.c | 10 +
converters/Makefile | 2 +
converters/php85-iconv/Makefile | 7 +
converters/php85-mbstring/Makefile | 7 +
databases/Makefile | 12 +
databases/php85-dba/Makefile | 7 +
databases/php85-dba/files/patch-config.m4 | 25 +
databases/php85-mysqli/Makefile | 7 +
databases/php85-odbc/Makefile | 7 +
databases/php85-odbc/files/patch-config.m4 | 92 +++
databases/php85-pdo/Makefile | 7 +
databases/php85-pdo/files/patch-pdo__sql__parser.c | 729 +++++++++++++++++++++
databases/php85-pdo_dblib/Makefile | 7 +
databases/php85-pdo_firebird/Makefile | 9 +
databases/php85-pdo_mysql/Makefile | 7 +
.../files/patch-mysql__sql__parser.c | 398 +++++++++++
databases/php85-pdo_odbc/Makefile | 7 +
databases/php85-pdo_pgsql/Makefile | 7 +
.../files/patch-pgsql__sql__parser.c | 528 +++++++++++++++
databases/php85-pdo_sqlite/Makefile | 7 +
.../files/patch-sqlite__sql__parser.c | 398 +++++++++++
databases/php85-pgsql/Makefile | 7 +
databases/php85-sqlite3/Makefile | 7 +
devel/Makefile | 10 +
devel/php85-ffi/Makefile | 7 +
devel/php85-gettext/Makefile | 7 +
devel/php85-intl/Makefile | 7 +
devel/php85-pcntl/Makefile | 7 +
devel/php85-readline/Makefile | 7 +
devel/php85-shmop/Makefile | 7 +
devel/php85-sysvmsg/Makefile | 7 +
devel/php85-sysvsem/Makefile | 7 +
devel/php85-sysvshm/Makefile | 7 +
devel/php85-tokenizer/Makefile | 7 +
ftp/Makefile | 2 +
ftp/php85-curl/Makefile | 7 +
ftp/php85-ftp/Makefile | 7 +
graphics/Makefile | 2 +
graphics/php85-exif/Makefile | 7 +
graphics/php85-gd/Makefile | 7 +
lang/Makefile | 2 +
lang/php81/Makefile | 2 +-
lang/php82/Makefile | 2 +-
lang/php83/Makefile | 2 +-
lang/php84/Makefile | 2 +-
lang/php85-extensions/Makefile | 89 +++
lang/php85-extensions/pkg-descr | 5 +
lang/php85/Makefile | 620 ++++++++++++++++++
lang/php85/distinfo | 3 +
lang/php85/files/patch-TSRM_TSRM.c | 11 +
lang/php85/files/patch-build_Makefile.global | 19 +
lang/php85/files/patch-configure.ac | 27 +
lang/php85/files/patch-ext_hash_xxhash_xxhash.h | 46 ++
lang/php85/files/patch-ext_pcre_php__pcre.h | 11 +
.../files/patch-sapi_apache2handler_config.m4 | 11 +
lang/php85/files/patch-sapi_fpm_www.conf.in | 17 +
lang/php85/files/php_fpm.in | 102 +++
lang/php85/files/php_session.h | 328 +++++++++
lang/php85/pkg-descr | 6 +
lang/php85/pkg-message.mod | 24 +
lang/php85/pkg-plist | 549 ++++++++++++++++
lang/php85/pkg-plist.mod | 3 +
math/Makefile | 2 +
math/php85-bcmath/Makefile | 7 +
math/php85-gmp/Makefile | 7 +
misc/Makefile | 1 +
misc/php85-calendar/Makefile | 7 +
net-mgmt/Makefile | 1 +
net-mgmt/php85-snmp/Makefile | 7 +
net/Makefile | 3 +
net/php85-ldap/Makefile | 7 +
net/php85-soap/Makefile | 7 +
net/php85-sockets/Makefile | 7 +
security/Makefile | 2 +
security/php85-filter/Makefile | 7 +
security/php85-sodium/Makefile | 7 +
sysutils/Makefile | 2 +
sysutils/php85-fileinfo/Makefile | 7 +
sysutils/php85-posix/Makefile | 7 +
textproc/Makefile | 8 +
textproc/php85-ctype/Makefile | 7 +
textproc/php85-dom/Makefile | 7 +
.../patch-lexbor_selectors-adapted_selectors.c | 11 +
.../files/patch-parentnode_css__selectors.c | 11 +
textproc/php85-enchant/Makefile | 12 +
textproc/php85-simplexml/Makefile | 7 +
textproc/php85-xml/Makefile | 7 +
textproc/php85-xml/files/patch-compat.c | 13 +
textproc/php85-xmlreader/Makefile | 7 +
textproc/php85-xmlwriter/Makefile | 7 +
textproc/php85-xsl/Makefile | 12 +
www/Makefile | 4 +
www/mod_php85/Makefile | 18 +
www/php85-opcache/Makefile | 9 +
www/php85-session/Makefile | 7 +
www/php85-tidy/Makefile | 7 +
105 files changed, 4816 insertions(+), 7 deletions(-)
diff --git a/Mk/Uses/php.mk b/Mk/Uses/php.mk
index 9d5568e05047..d6b59898cb5b 100644
--- a/Mk/Uses/php.mk
+++ b/Mk/Uses/php.mk
@@ -110,7 +110,7 @@ DIST_SUBDIR= PECL
PHPBASE?= ${LOCALBASE}
-_ALL_PHP_VERSIONS= 81 82 83 84
+_ALL_PHP_VERSIONS= 81 82 83 84 85
# Make the already installed PHP the default one.
. if exists(${PHPBASE}/etc/php.conf)
@@ -179,7 +179,10 @@ PHP_VER= ${FLAVOR:S/^php//}
(${FLAVOR:Mphp[0-9][0-9]} && ${FLAVOR} != ${FLAVORS:[1]})
# When adding a version, please keep the comment in
# Mk/bsd.default-versions.mk in sync.
-. if ${PHP_VER} == 84
+. if ${PHP_VER} == 85
+PHP_EXT_DIR= 20240925
+PHP_EXT_INC= hash json openssl pcre random spl
+. elif ${PHP_VER} == 84
PHP_EXT_DIR= 20240924
PHP_EXT_INC= hash json openssl pcre random spl
. elif ${PHP_VER} == 83
@@ -387,6 +390,7 @@ _USE_PHP_VER81= ${_USE_PHP_ALL}
_USE_PHP_VER82= ${_USE_PHP_ALL}
_USE_PHP_VER83= ${_USE_PHP_ALL}
_USE_PHP_VER84= ${_USE_PHP_ALL}
+_USE_PHP_VER85= ${_USE_PHP_ALL}
bcmath_DEPENDS= math/php${PHP_VER}-bcmath
bitset_DEPENDS= math/pecl-bitset@${PHP_FLAVOR}
diff --git a/Mk/bsd.default-versions.mk b/Mk/bsd.default-versions.mk
index 6a15f83d15de..549ad04fd4c1 100644
--- a/Mk/bsd.default-versions.mk
+++ b/Mk/bsd.default-versions.mk
@@ -132,7 +132,7 @@ PERL5_DEFAULT:= ${_PERL5_FROM_BIN:R}
. endif
# Possible values: 13, 14, 15, 16, 17
PGSQL_DEFAULT?= 17
-# Possible values: 8.1, 8.2, 8.3, 8.4
+# Possible values: 8.1, 8.2, 8.3, 8.4, 8.5
PHP_DEFAULT?= 8.3
# Possible values: rust, legacy
. if empty(ARCH:Naarch64:Namd64:Narmv7:Ni386:Npowerpc64:Npowerpc64le:Npowerpc:Nriscv64)
diff --git a/archivers/Makefile b/archivers/Makefile
index 0c7e80be0b2f..d1b937bd3eb8 100644
--- a/archivers/Makefile
+++ b/archivers/Makefile
@@ -175,6 +175,10 @@
SUBDIR += php84-phar
SUBDIR += php84-zip
SUBDIR += php84-zlib
+ SUBDIR += php85-bz2
+ SUBDIR += php85-phar
+ SUBDIR += php85-zip
+ SUBDIR += php85-zlib
SUBDIR += pigz
SUBDIR += pixz
SUBDIR += plakar
diff --git a/archivers/php85-bz2/Makefile b/archivers/php85-bz2/Makefile
new file mode 100644
index 000000000000..87562c741e29
--- /dev/null
+++ b/archivers/php85-bz2/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= archivers
+
+MASTERDIR= ${.CURDIR}/../../lang/php85
+
+PKGNAMESUFFIX= -bz2
+
+.include "${MASTERDIR}/Makefile"
diff --git a/archivers/php85-phar/Makefile b/archivers/php85-phar/Makefile
new file mode 100644
index 000000000000..a3fbf377f61c
--- /dev/null
+++ b/archivers/php85-phar/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= archivers
+
+MASTERDIR= ${.CURDIR}/../../lang/php85
+
+PKGNAMESUFFIX= -phar
+
+.include "${MASTERDIR}/Makefile"
diff --git a/archivers/php85-phar/files/patch-config.m4 b/archivers/php85-phar/files/patch-config.m4
new file mode 100644
index 000000000000..13ba9cf818b4
--- /dev/null
+++ b/archivers/php85-phar/files/patch-config.m4
@@ -0,0 +1,11 @@
+--- config.m4.orig 2025-07-01 21:58:05 UTC
++++ config.m4
+@@ -32,8 +32,4 @@ if test "$PHP_PHAR" != "no"; then
+ PHP_ADD_EXTENSION_DEP(phar, spl)
+ PHP_ADD_MAKEFILE_FRAGMENT
+
+- AC_CONFIG_FILES([
+- $ext_dir/phar.1
+- $ext_dir/phar.phar.1
+- ])
+ fi
diff --git a/archivers/php85-phar/files/patch-phar__path__check.c b/archivers/php85-phar/files/patch-phar__path__check.c
new file mode 100644
index 000000000000..8e599176ec86
--- /dev/null
+++ b/archivers/php85-phar/files/patch-phar__path__check.c
@@ -0,0 +1,241 @@
+--- phar_path_check.c.orig 2025-07-02 12:00:06 UTC
++++ phar_path_check.c
+@@ -0,0 +1,238 @@
++/* Generated by re2c 3.1 */
++/*
++ +----------------------------------------------------------------------+
++ | phar php single-file executable PHP extension |
++ +----------------------------------------------------------------------+
++ | Copyright (c) The PHP Group |
++ +----------------------------------------------------------------------+
++ | This source file is subject to version 3.01 of the PHP license, |
++ | that is bundled with this package in the file LICENSE, and is |
++ | available through the world-wide-web at the following url: |
++ | https://www.php.net/license/3_01.txt |
++ | If you did not receive a copy of the PHP license and are unable to |
++ | obtain it through the world-wide-web, please send a note to |
++ | license@php.net so we can mail you a copy immediately. |
++ +----------------------------------------------------------------------+
++ | Authors: Marcus Boerger <helly@php.net> |
++ +----------------------------------------------------------------------+
++*/
++
++#include "phar_internal.h"
++
++phar_path_check_result phar_path_check(char **s, size_t *len, const char **error)
++{
++ const unsigned char *p = (const unsigned char*)*s;
++ const unsigned char *m;
++
++ if (*len == 1 && *p == '.') {
++ *error = "current directory reference";
++ return pcr_err_curr_dir;
++ } else if (*len == 2 && p[0] == '.' && p[1] == '.') {
++ *error = "upper directory reference";
++ return pcr_err_up_dir;
++ }
++
++#define YYCTYPE unsigned char
++#define YYCURSOR p
++#define YYLIMIT p+*len
++#define YYMARKER m
++#define YYFILL(n) do {} while (0)
++
++loop:
++
++{
++ YYCTYPE yych;
++ unsigned int yyaccept = 0;
++ if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
++ yych = *YYCURSOR;
++ if (yych <= '[') {
++ if (yych <= ')') {
++ if (yych <= '\f') {
++ if (yych >= 0x01) goto yy1;
++ } else {
++ if (yych <= '\r') goto yy3;
++ if (yych <= 0x19) goto yy1;
++ goto yy4;
++ }
++ } else {
++ if (yych <= '/') {
++ if (yych <= '*') goto yy6;
++ if (yych <= '.') goto yy4;
++ goto yy7;
++ } else {
++ if (yych == '?') goto yy8;
++ goto yy4;
++ }
++ }
++ } else {
++ if (yych <= 0xEC) {
++ if (yych <= 0xC1) {
++ if (yych <= '\\') goto yy9;
++ if (yych <= 0x7F) goto yy4;
++ goto yy1;
++ } else {
++ if (yych <= 0xDF) goto yy10;
++ if (yych <= 0xE0) goto yy11;
++ goto yy12;
++ }
++ } else {
++ if (yych <= 0xF0) {
++ if (yych <= 0xED) goto yy13;
++ if (yych <= 0xEF) goto yy12;
++ goto yy14;
++ } else {
++ if (yych <= 0xF3) goto yy15;
++ if (yych <= 0xF4) goto yy16;
++ goto yy1;
++ }
++ }
++ }
++ ++YYCURSOR;
++ {
++ if (**s == '/') {
++ (*s)++;
++ (*len)--;
++ }
++ if ((p - (const unsigned char*)*s) - 1 != *len)
++ {
++ *error ="illegal character";
++ return pcr_err_illegal_char;
++ }
++ *error = NULL;
++ return pcr_is_ok;
++ }
++yy1:
++ ++YYCURSOR;
++yy2:
++ {
++ *error ="illegal character";
++ return pcr_err_illegal_char;
++ }
++yy3:
++ yych = *++YYCURSOR;
++ if (yych == '\n') goto yy1;
++ goto yy2;
++yy4:
++ ++YYCURSOR;
++yy5:
++ {
++ goto loop;
++ }
++yy6:
++ ++YYCURSOR;
++ {
++ *error = "star";
++ return pcr_err_star;
++ }
++yy7:
++ yyaccept = 0;
++ yych = *(YYMARKER = ++YYCURSOR);
++ if (yych <= '-') goto yy5;
++ if (yych <= '.') goto yy17;
++ if (yych <= '/') goto yy19;
++ goto yy5;
++yy8:
++ ++YYCURSOR;
++ {
++ if (**s == '/') {
++ (*s)++;
++ }
++ *len = (p - (const unsigned char*)*s) -1;
++ *error = NULL;
++ return pcr_use_query;
++ }
++yy9:
++ ++YYCURSOR;
++ {
++ *error = "back-slash";
++ return pcr_err_back_slash;
++ }
++yy10:
++ yych = *++YYCURSOR;
++ if (yych <= 0x7F) goto yy2;
++ if (yych <= 0xBF) goto yy4;
++ goto yy2;
++yy11:
++ yyaccept = 1;
++ yych = *(YYMARKER = ++YYCURSOR);
++ if (yych <= 0x9F) goto yy2;
++ if (yych <= 0xBF) goto yy20;
++ goto yy2;
++yy12:
++ yyaccept = 1;
++ yych = *(YYMARKER = ++YYCURSOR);
++ if (yych <= 0x7F) goto yy2;
++ if (yych <= 0xBF) goto yy20;
++ goto yy2;
++yy13:
++ yyaccept = 1;
++ yych = *(YYMARKER = ++YYCURSOR);
++ if (yych <= 0x7F) goto yy2;
++ if (yych <= 0x9F) goto yy20;
++ goto yy2;
++yy14:
++ yyaccept = 1;
++ yych = *(YYMARKER = ++YYCURSOR);
++ if (yych <= 0x8F) goto yy2;
++ if (yych <= 0xBF) goto yy21;
++ goto yy2;
++yy15:
++ yyaccept = 1;
++ yych = *(YYMARKER = ++YYCURSOR);
++ if (yych <= 0x7F) goto yy2;
++ if (yych <= 0xBF) goto yy21;
++ goto yy2;
++yy16:
++ yyaccept = 1;
++ yych = *(YYMARKER = ++YYCURSOR);
++ if (yych <= 0x7F) goto yy2;
++ if (yych <= 0x8F) goto yy21;
++ goto yy2;
++yy17:
++ yych = *++YYCURSOR;
++ if (yych <= 0x00) goto yy22;
++ if (yych <= '-') goto yy18;
++ if (yych <= '.') goto yy23;
++ if (yych <= '/') goto yy22;
++yy18:
++ YYCURSOR = YYMARKER;
++ if (yyaccept == 0) {
++ goto yy5;
++ } else {
++ goto yy2;
++ }
++yy19:
++ ++YYCURSOR;
++ {
++ *error = "double slash";
++ return pcr_err_double_slash;
++ }
++yy20:
++ yych = *++YYCURSOR;
++ if (yych <= 0x7F) goto yy18;
++ if (yych <= 0xBF) goto yy4;
++ goto yy18;
++yy21:
++ yych = *++YYCURSOR;
++ if (yych <= 0x7F) goto yy18;
++ if (yych <= 0xBF) goto yy20;
++ goto yy18;
++yy22:
++ ++YYCURSOR;
++ {
++ *error = "current directory reference";
++ return pcr_err_curr_dir;
++ }
++yy23:
++ yych = *++YYCURSOR;
++ if (yych <= 0x00) goto yy24;
++ if (yych != '/') goto yy18;
++yy24:
++ ++YYCURSOR;
++ {
++ *error = "upper directory reference";
++ return pcr_err_up_dir;
++ }
++}
++
++}
diff --git a/archivers/php85-zip/Makefile b/archivers/php85-zip/Makefile
new file mode 100644
index 000000000000..d8a586997669
--- /dev/null
+++ b/archivers/php85-zip/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= archivers
+
+MASTERDIR= ${.CURDIR}/../../lang/php85
+
+PKGNAMESUFFIX= -zip
+
+.include "${MASTERDIR}/Makefile"
diff --git a/archivers/php85-zlib/Makefile b/archivers/php85-zlib/Makefile
new file mode 100644
index 000000000000..20f98d859d51
--- /dev/null
+++ b/archivers/php85-zlib/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= archivers
+
+MASTERDIR= ${.CURDIR}/../../lang/php85
+
+PKGNAMESUFFIX= -zlib
+
+.include "${MASTERDIR}/Makefile"
diff --git a/archivers/php85-zlib/files/patch-zlib.c b/archivers/php85-zlib/files/patch-zlib.c
new file mode 100644
index 000000000000..fb0e9e44311a
--- /dev/null
+++ b/archivers/php85-zlib/files/patch-zlib.c
@@ -0,0 +1,10 @@
+--- zlib.c.orig 2023-06-06 15:54:29 UTC
++++ zlib.c
+@@ -1380,6 +1380,7 @@ static PHP_MSHUTDOWN_FUNCTION(zlib)
+ /* {{{ PHP_RINIT_FUNCTION */
+ static PHP_RINIT_FUNCTION(zlib)
+ {
++ ZLIBG(output_compression) = 0;
+ ZLIBG(compression_coding) = 0;
+ if (!ZLIBG(handler_registered)) {
+ ZLIBG(output_compression) = ZLIBG(output_compression_default);
diff --git a/converters/Makefile b/converters/Makefile
index 3f23e1cfea15..7a192a7b1bd2 100644
--- a/converters/Makefile
+++ b/converters/Makefile
@@ -147,6 +147,8 @@
SUBDIR += php83-mbstring
SUBDIR += php84-iconv
SUBDIR += php84-mbstring
+ SUBDIR += php85-iconv
+ SUBDIR += php85-mbstring
SUBDIR += psiconv
SUBDIR += py-bencode.py
SUBDIR += py-bencoder
diff --git a/converters/php85-iconv/Makefile b/converters/php85-iconv/Makefile
new file mode 100644
index 000000000000..a2243f5af6ce
--- /dev/null
+++ b/converters/php85-iconv/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= converters
+
+MASTERDIR= ${.CURDIR}/../../lang/php85
+
+PKGNAMESUFFIX= -iconv
+
+.include "${MASTERDIR}/Makefile"
diff --git a/converters/php85-mbstring/Makefile b/converters/php85-mbstring/Makefile
new file mode 100644
index 000000000000..7389ede69b5d
--- /dev/null
+++ b/converters/php85-mbstring/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= converters
+
+MASTERDIR= ${.CURDIR}/../../lang/php85
+
+PKGNAMESUFFIX= -mbstring
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/Makefile b/databases/Makefile
index a119d2b4f190..ce29492a0960 100644
--- a/databases/Makefile
+++ b/databases/Makefile
@@ -633,6 +633,18 @@
SUBDIR += php84-pdo_sqlite
SUBDIR += php84-pgsql
SUBDIR += php84-sqlite3
+ SUBDIR += php85-dba
+ SUBDIR += php85-mysqli
+ SUBDIR += php85-odbc
+ SUBDIR += php85-pdo
+ SUBDIR += php85-pdo_dblib
+ SUBDIR += php85-pdo_firebird
+ SUBDIR += php85-pdo_mysql
+ SUBDIR += php85-pdo_odbc
+ SUBDIR += php85-pdo_pgsql
+ SUBDIR += php85-pdo_sqlite
+ SUBDIR += php85-pgsql
+ SUBDIR += php85-sqlite3
SUBDIR += phpliteadmin
SUBDIR += phpminiadmin
SUBDIR += phpmyadmin
diff --git a/databases/php85-dba/Makefile b/databases/php85-dba/Makefile
new file mode 100644
index 000000000000..764ffd7c7936
--- /dev/null
+++ b/databases/php85-dba/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= databases
+
+MASTERDIR= ${.CURDIR}/../../lang/php85
+
+PKGNAMESUFFIX= -dba
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php85-dba/files/patch-config.m4 b/databases/php85-dba/files/patch-config.m4
new file mode 100644
index 000000000000..7449b1a88029
--- /dev/null
+++ b/databases/php85-dba/files/patch-config.m4
@@ -0,0 +1,25 @@
+--- config.m4.orig 2024-09-10 16:10:06 UTC
++++ config.m4
+@@ -433,6 +433,14 @@ if test "$PHP_DB4" != "no"; then
+ THIS_PREFIX=$i
+ THIS_INCLUDE=$i/include/db5.3/db.h
+ break
++ elif test -f "$i/include/db5/db.h"; then
++ THIS_PREFIX=$i
++ THIS_INCLUDE=$i/include/db5/db.h
++ break
++ elif test -f "$i/include/db18/db.h"; then
++ THIS_PREFIX=$i
++ THIS_INCLUDE=$i/include/db18/db.h
++ break
+ elif test -f "$i/include/db5.1/db.h"; then
+ THIS_PREFIX=$i
+ THIS_INCLUDE=$i/include/db5.1/db.h
+@@ -480,6 +488,7 @@ if test "$PHP_DB4" != "no"; then
+ db-5.3
+ db-5.1
+ db-5.0
++ db-5
+ db-4.8
+ db-4.7
+ db-4.6
diff --git a/databases/php85-mysqli/Makefile b/databases/php85-mysqli/Makefile
new file mode 100644
index 000000000000..77bd1f7f8a5d
--- /dev/null
+++ b/databases/php85-mysqli/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= databases
+
+MASTERDIR= ${.CURDIR}/../../lang/php85
+
+PKGNAMESUFFIX= -mysqli
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php85-odbc/Makefile b/databases/php85-odbc/Makefile
new file mode 100644
index 000000000000..415b461599c9
--- /dev/null
+++ b/databases/php85-odbc/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= databases
+
+MASTERDIR= ${.CURDIR}/../../lang/php85
+
+PKGNAMESUFFIX= -odbc
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php85-odbc/files/patch-config.m4 b/databases/php85-odbc/files/patch-config.m4
new file mode 100644
index 000000000000..55e3fb3aea0c
--- /dev/null
+++ b/databases/php85-odbc/files/patch-config.m4
@@ -0,0 +1,92 @@
+--- config.m4.orig 2024-09-10 16:10:06 UTC
++++ config.m4
+@@ -117,7 +117,7 @@ PHP_ARG_WITH([adabas],
+ PHP_ARG_WITH([adabas],
+ [for Adabas support],
+ [AS_HELP_STRING([[--with-adabas[=DIR]]],
+- [Include Adabas D support [/usr/local]])])
++ [Include Adabas D support [/usr/local]])], [no], [no])
+
+ AS_VAR_IF([PHP_ADABAS], [no], [], [
+ AS_VAR_IF([PHP_ADABAS], [yes], [PHP_ADABAS=/usr/local])
+@@ -143,7 +143,7 @@ PHP_ARG_WITH([sapdb],
+ PHP_ARG_WITH([sapdb],
+ [for SAP DB support],
+ [AS_HELP_STRING([[--with-sapdb[=DIR]]],
+- [Include SAP DB support [/usr/local]])])
++ [Include SAP DB support [/usr/local]])], [no], [no])
+
+ AS_VAR_IF([PHP_SAPDB], [no], [], [
+ AS_VAR_IF([PHP_SAPDB], [yes], [PHP_SAPDB=/usr/local])
+@@ -160,7 +160,7 @@ PHP_ARG_WITH([solid],
+ PHP_ARG_WITH([solid],
+ [for Solid support],
+ [AS_HELP_STRING([[--with-solid[=DIR]]],
+- [Include Solid support [/usr/local/solid]])])
++ [Include Solid support [/usr/local/solid]])], [no], [no])
+
+ AS_VAR_IF([PHP_SOLID], [no], [], [
+ AS_VAR_IF([PHP_SOLID], [yes], [PHP_SOLID=/usr/local/solid])
+@@ -184,7 +184,7 @@ PHP_ARG_WITH([ibm-db2],
+ PHP_ARG_WITH([ibm-db2],
+ [for IBM DB2 support],
+ [AS_HELP_STRING([[--with-ibm-db2[=DIR]]],
+- [Include IBM DB2 support [/home/db2inst1/sqllib]])])
++ [Include IBM DB2 support [/home/db2inst1/sqllib]])], [no], [no])
+
+ AS_VAR_IF([PHP_IBM_DB2], [no], [], [
+ AS_VAR_IF([PHP_IBM_DB2], [yes], [
+@@ -222,7 +222,7 @@ PHP_ARG_WITH([empress],
+ [for Empress support],
+ [AS_HELP_STRING([[--with-empress[=DIR]]],
+ [Include Empress support $EMPRESSPATH (Empress Version >= 8.60
+- required)])])
++ required)])], [no], [no])
+
+ AS_VAR_IF([PHP_EMPRESS], [no], [], [
+ AS_VAR_IF([PHP_EMPRESS], [yes], [
+@@ -246,7 +246,7 @@ PHP_ARG_WITH([empress-bcs],
+ [for Empress local access support],
+ [AS_HELP_STRING([[--with-empress-bcs[=DIR]]],
+ [Include Empress Local Access support $EMPRESSPATH (Empress Version >=
+- 8.60 required)])])
++ 8.60 required)])], [no], [no])
+
+ AS_VAR_IF([PHP_EMPRESS_BCS], [no], [], [
+ AS_VAR_IF([PHP_EMPRESS_BCS], [yes], [
+@@ -290,7 +290,7 @@ PHP_ARG_WITH([custom-odbc],
+ your include dirs. For example, you should define following for Sybase SQL
+ Anywhere 5.5.00 on QNX, prior to running this configure script:
+ CPPFLAGS="-DODBC_QNX -DSQLANY_BUG" LDFLAGS=-lunix
+- CUSTOM_ODBC_LIBS="-ldblib -lodbc"])])
++ CUSTOM_ODBC_LIBS="-ldblib -lodbc"])], [no], [no])
+
+ AS_VAR_IF([PHP_CUSTOM_ODBC], [no], [], [
+ AS_VAR_IF([PHP_CUSTOM_ODBC], [yes], [PHP_CUSTOM_ODBC=/usr/local])
+@@ -309,7 +309,7 @@ PHP_ARG_WITH([iodbc],
+ PHP_ARG_WITH([iodbc],
+ [whether to build with iODBC support],
+ [AS_HELP_STRING([--with-iodbc],
+- [Include iODBC support])])
++ [Include iODBC support])], [no], [no])
+
+ AS_VAR_IF([PHP_IODBC], [no], [], [
+ PKG_CHECK_MODULES([ODBC], [libiodbc])
+@@ -324,7 +324,7 @@ PHP_ARG_WITH([esoob],
+ PHP_ARG_WITH([esoob],
+ [for Easysoft ODBC-ODBC Bridge support],
+ [AS_HELP_STRING([[--with-esoob[=DIR]]],
+- [Include Easysoft OOB support [/usr/local/easysoft/oob/client]])])
++ [Include Easysoft OOB support [/usr/local/easysoft/oob/client]])], [no], [no])
+
+ AS_VAR_IF([PHP_ESOOB], [no], [], [
+ AS_VAR_IF([PHP_ESOOB], [yes], [PHP_ESOOB=/usr/local/easysoft/oob/client])
+@@ -371,7 +371,7 @@ PHP_ARG_WITH([dbmaker],
+ PHP_ARG_WITH([dbmaker],
+ [for DBMaker support],
+ [AS_HELP_STRING([[--with-dbmaker[=DIR]]],
+- [Include DBMaker support])])
++ [Include DBMaker support])], [no], [no])
+
+ AS_VAR_IF([PHP_DBMAKER], [no], [], [
+ AS_VAR_IF([PHP_DBMAKER], [yes], [
diff --git a/databases/php85-pdo/Makefile b/databases/php85-pdo/Makefile
new file mode 100644
index 000000000000..82a9d79b6e9d
--- /dev/null
+++ b/databases/php85-pdo/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= databases
+
+MASTERDIR= ${.CURDIR}/../../lang/php85
+
+PKGNAMESUFFIX= -pdo
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php85-pdo/files/patch-pdo__sql__parser.c b/databases/php85-pdo/files/patch-pdo__sql__parser.c
new file mode 100644
index 000000000000..191eea16a3bd
--- /dev/null
+++ b/databases/php85-pdo/files/patch-pdo__sql__parser.c
@@ -0,0 +1,729 @@
+--- pdo_sql_parser.c.orig 2025-07-02 12:59:51 UTC
++++ pdo_sql_parser.c
+@@ -0,0 +1,726 @@
++/* Generated by re2c 3.1 */
++/*
++ +----------------------------------------------------------------------+
++ | Copyright (c) The PHP Group |
++ +----------------------------------------------------------------------+
++ | This source file is subject to version 3.01 of the PHP license, |
++ | that is bundled with this package in the file LICENSE, and is |
++ | available through the world-wide-web at the following url: |
++ | https://www.php.net/license/3_01.txt |
++ | If you did not receive a copy of the PHP license and are unable to |
++ | obtain it through the world-wide-web, please send a note to |
++ | license@php.net so we can mail you a copy immediately. |
++ +----------------------------------------------------------------------+
++ | Author: George Schlossnagle <george@omniti.com> |
++ +----------------------------------------------------------------------+
++*/
++
++#include "php.h"
++#include "php_pdo_driver.h"
++#include "pdo_sql_parser.h"
++
++static int default_scanner(pdo_scanner_t *s)
++{
++ const char *cursor = s->cur;
++
++ s->tok = cursor;
++
++
++
++{
++ YYCTYPE yych;
++ unsigned int yyaccept = 0;
++ if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case 0x00: goto yy1;
++ case '"': goto yy4;
++ case '\'': goto yy6;
++ case '-': goto yy7;
++ case '/': goto yy8;
++ case ':': goto yy9;
++ case '?': goto yy10;
++ default: goto yy2;
++ }
++yy1:
++ YYCURSOR = YYMARKER;
++ switch (yyaccept) {
++ case 0: goto yy5;
++ case 1: goto yy15;
++ default: goto yy19;
++ }
++yy2:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case 0x00:
++ case '"':
++ case '\'':
++ case '-':
++ case '/':
++ case ':':
++ case '?': goto yy3;
++ default: goto yy2;
++ }
++yy3:
++ { RET(PDO_PARSER_TEXT); }
++yy4:
++ yyaccept = 0;
++ yych = *(YYMARKER = ++YYCURSOR);
++ if (yych >= 0x01) goto yy13;
++yy5:
++ { SKIP_ONE(PDO_PARSER_TEXT); }
++yy6:
++ yyaccept = 0;
++ yych = *(YYMARKER = ++YYCURSOR);
++ if (yych <= 0x00) goto yy5;
++ goto yy17;
++yy7:
++ yych = *++YYCURSOR;
++ switch (yych) {
++ case '-': goto yy20;
++ default: goto yy5;
++ }
++yy8:
++ yych = *++YYCURSOR;
++ switch (yych) {
++ case '*': goto yy22;
++ default: goto yy5;
++ }
++yy9:
++ yych = *++YYCURSOR;
++ switch (yych) {
++ case '0':
++ case '1':
++ case '2':
++ case '3':
++ case '4':
++ case '5':
++ case '6':
++ case '7':
++ case '8':
++ case '9':
++ case 'A':
++ case 'B':
++ case 'C':
++ case 'D':
++ case 'E':
++ case 'F':
++ case 'G':
++ case 'H':
++ case 'I':
++ case 'J':
++ case 'K':
++ case 'L':
++ case 'M':
++ case 'N':
++ case 'O':
++ case 'P':
++ case 'Q':
++ case 'R':
++ case 'S':
++ case 'T':
++ case 'U':
++ case 'V':
++ case 'W':
++ case 'X':
++ case 'Y':
++ case 'Z':
++ case '_':
++ case 'a':
++ case 'b':
++ case 'c':
++ case 'd':
++ case 'e':
++ case 'f':
++ case 'g':
++ case 'h':
++ case 'i':
++ case 'j':
++ case 'k':
++ case 'l':
++ case 'm':
++ case 'n':
++ case 'o':
++ case 'p':
++ case 'q':
++ case 'r':
++ case 's':
++ case 't':
++ case 'u':
++ case 'v':
++ case 'w':
++ case 'x':
++ case 'y':
++ case 'z': goto yy23;
++ case ':': goto yy25;
++ default: goto yy5;
++ }
++yy10:
++ yych = *++YYCURSOR;
++ switch (yych) {
++ case '?': goto yy27;
++ default: goto yy11;
++ }
++yy11:
++ { RET(PDO_PARSER_BIND_POS); }
++yy12:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++yy13:
++ switch (yych) {
++ case 0x00: goto yy1;
++ case '"': goto yy14;
++ default: goto yy12;
++ }
++yy14:
++ yyaccept = 1;
++ YYMARKER = ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '"': goto yy12;
++ default: goto yy15;
++ }
++yy15:
++ { RET(PDO_PARSER_TEXT); }
++yy16:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++yy17:
++ switch (yych) {
++ case 0x00: goto yy1;
++ case '\'': goto yy18;
++ default: goto yy16;
++ }
++yy18:
++ yyaccept = 2;
++ YYMARKER = ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '\'': goto yy16;
++ default: goto yy19;
++ }
++yy19:
++ { RET(PDO_PARSER_TEXT); }
++yy20:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '\n': goto yy21;
*** 4719 LINES SKIPPED ***