*/*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
This commit is contained in:
Muhammad Moinur Rahman
2025-07-02 11:54:37 +02:00
parent 44399f99c7
commit c0b9892033
105 changed files with 4816 additions and 7 deletions
+6 -2
View File
@@ -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}
+1 -1
View File
@@ -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)
+4
View File
@@ -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
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= archivers
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -bz2
.include "${MASTERDIR}/Makefile"
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= archivers
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -phar
.include "${MASTERDIR}/Makefile"
@@ -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
@@ -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;
+ }
+}
+
+}
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= archivers
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -zip
.include "${MASTERDIR}/Makefile"
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= archivers
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -zlib
.include "${MASTERDIR}/Makefile"
+10
View File
@@ -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);
+2
View File
@@ -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
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= converters
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -iconv
.include "${MASTERDIR}/Makefile"
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= converters
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -mbstring
.include "${MASTERDIR}/Makefile"
+12
View File
@@ -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
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= databases
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -dba
.include "${MASTERDIR}/Makefile"
+25
View File
@@ -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
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= databases
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -mysqli
.include "${MASTERDIR}/Makefile"
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= databases
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -odbc
.include "${MASTERDIR}/Makefile"
@@ -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], [
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= databases
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -pdo
.include "${MASTERDIR}/Makefile"
@@ -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;
+ default: goto yy20;
+ }
+yy21:
+ { RET(PDO_PARSER_TEXT); }
+yy22:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch (yych) {
+ case '*': goto yy28;
+ default: goto yy22;
+ }
+yy23:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ 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;
+ default: goto yy24;
+ }
+yy24:
+ { RET(PDO_PARSER_BIND); }
+yy25:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch (yych) {
+ case ':': goto yy25;
+ default: goto yy26;
+ }
+yy26:
+ { RET(PDO_PARSER_TEXT); }
+yy27:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch (yych) {
+ case '?': goto yy27;
+ default: goto yy26;
+ }
+yy28:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch (yych) {
+ case '*': goto yy28;
+ case '/': goto yy29;
+ default: goto yy22;
+ }
+yy29:
+ ++YYCURSOR;
+ goto yy21;
+}
+
+}
+
+struct placeholder {
+ const char *pos;
+ size_t len;
+ zend_string *quoted; /* quoted value */
+ int bindno;
+ struct placeholder *next;
+};
+
+struct custom_quote {
+ const char *pos;
+ size_t len;
+};
+
+static void free_param_name(zval *el) {
+ zend_string_release(Z_PTR_P(el));
+}
+
+PDO_API int pdo_parse_params(pdo_stmt_t *stmt, zend_string *inquery, zend_string **outquery)
+{
+ pdo_scanner_t s;
+ char *newbuffer;
+ ptrdiff_t t;
+ uint32_t bindno = 0;
+ int ret = 0, escapes = 0;
+ size_t newbuffer_len;
+ HashTable *params;
+ struct pdo_bound_param_data *param;
+ int query_type = PDO_PLACEHOLDER_NONE;
+ struct placeholder *placeholders = NULL, *placetail = NULL, *plc = NULL;
+ int (*scan)(pdo_scanner_t *s);
+ struct custom_quote custom_quote = {NULL, 0};
+
+ scan = stmt->dbh->methods->scanner ? stmt->dbh->methods->scanner : default_scanner;
+
+ s.cur = ZSTR_VAL(inquery);
+ s.end = s.cur + ZSTR_LEN(inquery) + 1;
+
+ /* phase 1: look for args */
+ while((t = scan(&s)) != PDO_PARSER_EOI) {
+ if (custom_quote.pos) {
+ /* Inside a custom quote */
+ if (t == PDO_PARSER_CUSTOM_QUOTE && custom_quote.len == s.cur - s.tok && !strncmp(s.tok, custom_quote.pos, custom_quote.len)) {
+ /* Matching closing quote found, end custom quoting */
+ custom_quote.pos = NULL;
+ custom_quote.len = 0;
+ } else if (t == PDO_PARSER_ESCAPED_QUESTION) {
+ /* An escaped question mark has been used inside a dollar quoted string, most likely as a workaround
+ * as a single "?" would have been parsed as placeholder, due to the lack of support for dollar quoted
+ * strings. For now, we emit a deprecation notice, but still process it */
+ php_error_docref(NULL, E_DEPRECATED, "Escaping question marks inside dollar quoted strings is not required anymore and is deprecated");
+
+ goto placeholder;
+ }
+
+ continue;
+ }
+
+ if (t == PDO_PARSER_CUSTOM_QUOTE) {
+ /* Start of a custom quote, keep a reference to search for the matching closing quote */
+ custom_quote.pos = s.tok;
+ custom_quote.len = s.cur - s.tok;
+
+ continue;
+ }
+
+ if (t == PDO_PARSER_BIND || t == PDO_PARSER_BIND_POS || t == PDO_PARSER_ESCAPED_QUESTION) {
+ if (t == PDO_PARSER_ESCAPED_QUESTION && stmt->supports_placeholders == PDO_PLACEHOLDER_POSITIONAL) {
+ /* escaped question marks unsupported, treat as text */
+ continue;
+ }
+
+ if (t == PDO_PARSER_BIND) {
+ ptrdiff_t len = s.cur - s.tok;
+ if ((ZSTR_VAL(inquery) < (s.cur - len)) && isalnum(*(s.cur - len - 1))) {
+ continue;
+ }
+ query_type |= PDO_PLACEHOLDER_NAMED;
+ } else if (t == PDO_PARSER_BIND_POS) {
+ query_type |= PDO_PLACEHOLDER_POSITIONAL;
+ }
+
+placeholder:
+ plc = emalloc(sizeof(*plc));
+ memset(plc, 0, sizeof(*plc));
+ plc->next = NULL;
+ plc->pos = s.tok;
+ plc->len = s.cur - s.tok;
+
+ if (t == PDO_PARSER_ESCAPED_QUESTION) {
+ plc->bindno = PDO_PARSER_BINDNO_ESCAPED_CHAR;
+ plc->quoted = ZSTR_CHAR('?');
+ escapes++;
+ } else {
+ plc->bindno = bindno++;
+ }
+
+ if (placetail) {
+ placetail->next = plc;
+ } else {
+ placeholders = plc;
+ }
+ placetail = plc;
+ }
+ }
+
+ /* did the query make sense to me? */
+ if (query_type == (PDO_PLACEHOLDER_NAMED|PDO_PLACEHOLDER_POSITIONAL)) {
+ /* they mixed both types; punt */
+ pdo_raise_impl_error(stmt->dbh, stmt, "HY093", "mixed named and positional parameters");
+ ret = -1;
+ goto clean_up;
+ }
+
+ params = stmt->bound_params;
+ if (stmt->supports_placeholders == PDO_PLACEHOLDER_NONE && params && bindno != zend_hash_num_elements(params)) {
+ /* extra bit of validation for instances when same params are bound more than once */
+ if (query_type != PDO_PLACEHOLDER_POSITIONAL && bindno > zend_hash_num_elements(params)) {
+ int ok = 1;
+ for (plc = placeholders; plc; plc = plc->next) {
+ if ((param = zend_hash_str_find_ptr(params, plc->pos, plc->len)) == NULL) {
+ ok = 0;
+ break;
+ }
+ }
+ if (ok) {
+ goto safe;
+ }
+ }
+ pdo_raise_impl_error(stmt->dbh, stmt, "HY093", "number of bound variables does not match number of tokens");
+ ret = -1;
+ goto clean_up;
+ }
+
+ if (!placeholders) {
+ /* nothing to do; good! */
+ return 0;
+ }
+
+ if (stmt->supports_placeholders == query_type && !stmt->named_rewrite_template) {
+ /* query matches native syntax */
+ if (escapes) {
+ newbuffer_len = ZSTR_LEN(inquery);
+ goto rewrite;
+ }
+
+ ret = 0;
+ goto clean_up;
+ }
+
+ if (query_type == PDO_PLACEHOLDER_NAMED && stmt->named_rewrite_template) {
+ /* magic/hack.
+ * We we pretend that the query was positional even if
+ * it was named so that we fall into the
+ * named rewrite case below. Not too pretty,
+ * but it works. */
+ query_type = PDO_PLACEHOLDER_POSITIONAL;
+ }
+
+safe:
+ /* what are we going to do ? */
+ if (stmt->supports_placeholders == PDO_PLACEHOLDER_NONE) {
+ /* query generation */
+
+ newbuffer_len = ZSTR_LEN(inquery);
+
+ /* let's quote all the values */
+ for (plc = placeholders; plc && params; plc = plc->next) {
+ if (plc->bindno == PDO_PARSER_BINDNO_ESCAPED_CHAR) {
+ /* escaped character */
+ continue;
+ }
+
+ if (query_type == PDO_PLACEHOLDER_NONE) {
+ continue;
+ }
+
+ if (query_type == PDO_PLACEHOLDER_POSITIONAL) {
+ param = zend_hash_index_find_ptr(params, plc->bindno);
+ } else {
+ param = zend_hash_str_find_ptr(params, plc->pos, plc->len);
+ }
+ if (param == NULL) {
+ /* parameter was not defined */
+ ret = -1;
+ pdo_raise_impl_error(stmt->dbh, stmt, "HY093", "parameter was not defined");
+ goto clean_up;
+ }
+ if (stmt->dbh->methods->quoter) {
+ zval *parameter;
+ if (Z_ISREF(param->parameter)) {
+ parameter = Z_REFVAL(param->parameter);
+ } else {
+ parameter = &param->parameter;
+ }
+ if (param->param_type == PDO_PARAM_LOB && Z_TYPE_P(parameter) == IS_RESOURCE) {
+ php_stream *stm;
+
+ php_stream_from_zval_no_verify(stm, parameter);
+ if (stm) {
+ zend_string *buf;
+
+ buf = php_stream_copy_to_mem(stm, PHP_STREAM_COPY_ALL, 0);
+ if (!buf) {
+ buf = ZSTR_EMPTY_ALLOC();
+ }
+
+ plc->quoted = stmt->dbh->methods->quoter(stmt->dbh, buf, param->param_type);
+
+ if (buf) {
+ zend_string_release_ex(buf, 0);
+ }
+ if (plc->quoted == NULL) {
+ /* bork */
+ ret = -1;
+ strncpy(stmt->error_code, stmt->dbh->error_code, 6);
+ goto clean_up;
+ }
+
+ } else {
+ pdo_raise_impl_error(stmt->dbh, stmt, "HY105", "Expected a stream resource");
+ ret = -1;
+ goto clean_up;
+ }
+ } else {
+ enum pdo_param_type param_type = param->param_type;
+ zend_string *buf = NULL;
+
+ /* assume all types are nullable */
+ if (Z_TYPE_P(parameter) == IS_NULL) {
+ param_type = PDO_PARAM_NULL;
+ }
+
+ switch (param_type) {
+ case PDO_PARAM_BOOL:
+ plc->quoted = zend_is_true(parameter) ? ZSTR_CHAR('1') : ZSTR_CHAR('0');
+ break;
+
+ case PDO_PARAM_INT:
+ plc->quoted = zend_long_to_str(zval_get_long(parameter));
+ break;
+
+ case PDO_PARAM_NULL:
+ plc->quoted = ZSTR_KNOWN(ZEND_STR_NULL);
+ break;
+
+ default: {
+ buf = zval_try_get_string(parameter);
+ /* parameter does not have a string representation, buf == NULL */
+ if (EG(exception)) {
+ /* bork */
+ ret = -1;
+ strncpy(stmt->error_code, stmt->dbh->error_code, 6);
+ goto clean_up;
+ }
+
+ plc->quoted = stmt->dbh->methods->quoter(stmt->dbh, buf, param_type);
+ }
+ }
+
+ if (buf) {
+ zend_string_release_ex(buf, 0);
+ }
+ }
+ } else {
+ zval *parameter;
+ if (Z_ISREF(param->parameter)) {
+ parameter = Z_REFVAL(param->parameter);
+ } else {
+ parameter = &param->parameter;
+ }
+ plc->quoted = zend_string_copy(Z_STR_P(parameter));
+ }
+ newbuffer_len += ZSTR_LEN(plc->quoted);
+ }
+
+rewrite:
+ /* allocate output buffer */
+ *outquery = zend_string_alloc(newbuffer_len, 0);
+ newbuffer = ZSTR_VAL(*outquery);
+
+ /* and build the query */
+ const char *ptr = ZSTR_VAL(inquery);
+ plc = placeholders;
+
+ do {
+ t = plc->pos - ptr;
+ if (t) {
+ memcpy(newbuffer, ptr, t);
+ newbuffer += t;
+ }
+ if (plc->quoted) {
+ memcpy(newbuffer, ZSTR_VAL(plc->quoted), ZSTR_LEN(plc->quoted));
+ newbuffer += ZSTR_LEN(plc->quoted);
+ } else {
+ memcpy(newbuffer, plc->pos, plc->len);
+ newbuffer += plc->len;
+ }
+ ptr = plc->pos + plc->len;
+
+ plc = plc->next;
+ } while (plc);
+
+ t = ZSTR_VAL(inquery) + ZSTR_LEN(inquery) - ptr;
+ if (t) {
+ memcpy(newbuffer, ptr, t);
+ newbuffer += t;
+ }
+ *newbuffer = '\0';
+ ZSTR_LEN(*outquery) = newbuffer - ZSTR_VAL(*outquery);
+
+ ret = 1;
+ goto clean_up;
+
+ } else if (query_type == PDO_PLACEHOLDER_POSITIONAL) {
+ /* rewrite ? to :pdoX */
+ const char *tmpl = stmt->named_rewrite_template ? stmt->named_rewrite_template : ":pdo%d";
+ int bind_no = 1;
+
+ newbuffer_len = ZSTR_LEN(inquery);
+
+ if (stmt->bound_param_map == NULL) {
+ ALLOC_HASHTABLE(stmt->bound_param_map);
+ zend_hash_init(stmt->bound_param_map, 13, NULL, free_param_name, 0);
+ }
+
+ for (plc = placeholders; plc; plc = plc->next) {
+ int skip_map = 0;
+ zend_string *p;
+ zend_string *idxbuf;
+
+ if (plc->bindno == PDO_PARSER_BINDNO_ESCAPED_CHAR) {
+ continue;
+ }
+
+ zend_string *name = zend_string_init(plc->pos, plc->len, 0);
+
+ /* check if bound parameter is already available */
+ if (zend_string_equals_literal(name, "?") || (p = zend_hash_find_ptr(stmt->bound_param_map, name)) == NULL) {
+ idxbuf = zend_strpprintf(0, tmpl, bind_no++);
+ } else {
+ idxbuf = zend_string_copy(p);
+ skip_map = 1;
+ }
+
+ plc->quoted = idxbuf;
+ newbuffer_len += ZSTR_LEN(plc->quoted);
+
+ if (!skip_map && stmt->named_rewrite_template) {
+ /* create a mapping */
+ zend_hash_update_ptr(stmt->bound_param_map, name, zend_string_copy(plc->quoted));
+ }
+
+ /* map number to name */
+ zend_hash_index_update_ptr(stmt->bound_param_map, plc->bindno, zend_string_copy(plc->quoted));
+
+ zend_string_release(name);
+ }
+
+ goto rewrite;
+
+ } else {
+ /* rewrite :name to ? */
+
+ newbuffer_len = ZSTR_LEN(inquery);
+
+ if (stmt->bound_param_map == NULL) {
+ ALLOC_HASHTABLE(stmt->bound_param_map);
+ zend_hash_init(stmt->bound_param_map, 13, NULL, free_param_name, 0);
+ }
+
+ for (plc = placeholders; plc; plc = plc->next) {
+ zend_string *name = zend_string_init(plc->pos, plc->len, 0);
+ zend_hash_index_update_ptr(stmt->bound_param_map, plc->bindno, name);
+ plc->quoted = ZSTR_CHAR('?');
+ newbuffer_len -= plc->len - 1;
+ }
+
+ goto rewrite;
+ }
+
+clean_up:
+
+ while (placeholders) {
+ plc = placeholders;
+ placeholders = plc->next;
+ if (plc->quoted) {
+ zend_string_release_ex(plc->quoted, 0);
+ }
+ efree(plc);
+ }
+
+ return ret;
+}
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= databases
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -pdo_dblib
.include "${MASTERDIR}/Makefile"
+9
View File
@@ -0,0 +1,9 @@
CATEGORIES= databases
PORTREVISION= 0
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -pdo_firebird
.include "${MASTERDIR}/Makefile"
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= databases
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -pdo_mysql
.include "${MASTERDIR}/Makefile"
@@ -0,0 +1,398 @@
--- mysql_sql_parser.c.orig 2025-07-02 13:18:02 UTC
+++ mysql_sql_parser.c
@@ -0,0 +1,395 @@
+/* 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: Matteo Beccati <mbeccati@php.net> |
+ +----------------------------------------------------------------------+
+*/
+
+
+#include "php.h"
+#include "ext/pdo/php_pdo_driver.h"
+#include "ext/pdo/pdo_sql_parser.h"
+
+int pdo_mysql_scanner(pdo_scanner_t *s)
+{
+ const char *cursor = s->cur;
+
+ s->tok = cursor;
+
+
+
+{
+ YYCTYPE yych;
+ unsigned int yyaccept = 0;
+ if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+ 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;
+ case '?': goto yy11;
+ case '`': goto yy13;
+ default: goto yy2;
+ }
+yy1:
+ YYCURSOR = YYMARKER;
+ switch (yyaccept) {
+ case 0: goto yy5;
+ case 1: goto yy17;
+ case 2: goto yy24;
+ default: goto yy36;
+ }
+yy2:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch (yych) {
+ case 0x00:
+ case '"':
+ case '#':
+ 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 yy15;
+yy5:
+ { SKIP_ONE(PDO_PARSER_TEXT); }
+yy6:
+ yych = *++YYCURSOR;
+ switch (yych) {
+ case '\n': goto yy5;
+ default: goto yy19;
+ }
+yy7:
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= 0x00) goto yy5;
+ goto yy22;
+yy8:
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch (yych) {
+ case '-': goto yy26;
+ default: goto yy5;
+ }
+yy9:
+ yych = *++YYCURSOR;
+ switch (yych) {
+ case '*': goto yy27;
+ default: goto yy5;
+ }
+yy10:
+ 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 yy28;
+ case ':': goto yy30;
+ default: goto yy5;
+ }
+yy11:
+ yych = *++YYCURSOR;
+ switch (yych) {
+ case '?': goto yy32;
+ default: goto yy12;
+ }
+yy12:
+ { RET(PDO_PARSER_BIND_POS); }
+yy13:
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= 0x00) goto yy5;
+ goto yy34;
+yy14:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+yy15:
+ switch (yych) {
+ case 0x00: goto yy1;
+ case '"': goto yy16;
+ case '\\': goto yy18;
+ default: goto yy14;
+ }
+yy16:
+ yyaccept = 1;
+ YYMARKER = ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch (yych) {
+ case '"': goto yy14;
+ default: goto yy17;
+ }
+yy17:
+ { RET(PDO_PARSER_TEXT); }
+yy18:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ if (yych <= 0x00) goto yy1;
+ goto yy14;
+yy19:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch (yych) {
+ case '\n': goto yy20;
+ default: goto yy19;
+ }
+yy20:
+ { RET(PDO_PARSER_TEXT); }
+yy21:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+yy22:
+ switch (yych) {
+ case 0x00: goto yy1;
+ case '\'': goto yy23;
+ case '\\': goto yy25;
+ default: goto yy21;
+ }
+yy23:
+ yyaccept = 2;
+ YYMARKER = ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch (yych) {
+ case '\'': goto yy21;
+ default: goto yy24;
+ }
+yy24:
+ { RET(PDO_PARSER_TEXT); }
+yy25:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ if (yych <= 0x00) goto yy1;
+ goto yy21;
+yy26:
+ yych = *++YYCURSOR;
+ switch (yych) {
+ case '\t':
+ case '\v':
+ case '\f':
+ case '\r':
+ case ' ': goto yy19;
+ default: goto yy1;
+ }
+yy27:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch (yych) {
+ case '*': goto yy37;
+ default: goto yy27;
+ }
+yy28:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ 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 yy28;
+ default: goto yy29;
+ }
+yy29:
+ { RET(PDO_PARSER_BIND); }
+yy30:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch (yych) {
+ case ':': goto yy30;
+ default: goto yy31;
+ }
+yy31:
+ { RET(PDO_PARSER_TEXT); }
+yy32:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch (yych) {
+ case '?': goto yy32;
+ default: goto yy31;
+ }
+yy33:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+yy34:
+ switch (yych) {
+ case 0x00: goto yy1;
+ case '`': goto yy35;
+ default: goto yy33;
+ }
+yy35:
+ yyaccept = 3;
+ YYMARKER = ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch (yych) {
+ case '`': goto yy33;
+ default: goto yy36;
+ }
+yy36:
+ { RET(PDO_PARSER_TEXT); }
+yy37:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch (yych) {
+ case '*': goto yy37;
+ case '/': goto yy38;
+ default: goto yy27;
+ }
+yy38:
+ ++YYCURSOR;
+ goto yy20;
+}
+
+}
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= databases
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -pdo_odbc
.include "${MASTERDIR}/Makefile"
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= databases
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -pdo_pgsql
.include "${MASTERDIR}/Makefile"
@@ -0,0 +1,528 @@
--- pgsql_sql_parser.c.orig 2025-07-02 13:28:41 UTC
+++ pgsql_sql_parser.c
@@ -0,0 +1,525 @@
+/* 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: Matteo Beccati <mbeccati@php.net> |
+ +----------------------------------------------------------------------+
+*/
+
+
+#include "php.h"
+#include "ext/pdo/php_pdo_driver.h"
+#include "ext/pdo/pdo_sql_parser.h"
+
+int pdo_pgsql_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;
+ case '?': goto yy11;
+ case 'E':
+ case 'e': goto yy13;
+ default: goto yy2;
+ }
+yy1:
+ YYCURSOR = YYMARKER;
+ switch (yyaccept) {
+ case 0: goto yy5;
+ case 1: goto yy17;
+ case 2: goto yy23;
+ default: goto yy35;
+ }
+yy2:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch (yych) {
+ case 0x00:
+ case '"':
+ case '$':
+ case '\'':
+ case '-':
+ case '/':
+ case ':':
+ case '?':
+ case 'E':
+ case 'e': goto yy3;
+ default: goto yy2;
+ }
+yy3:
+ { RET(PDO_PARSER_TEXT); }
+yy4:
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych >= 0x01) goto yy15;
+yy5:
+ { SKIP_ONE(PDO_PARSER_TEXT); }
+yy6:
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch (yych) {
+ case 0x00:
+ case 0x01:
+ case 0x02:
+ case 0x03:
+ case 0x04:
+ case 0x05:
+ case 0x06:
+ case 0x07:
+ case 0x08:
+ case '\t':
+ case '\n':
+ case '\v':
+ case '\f':
+ case '\r':
+ case 0x0E:
+ case 0x0F:
+ case 0x10:
+ case 0x11:
+ case 0x12:
+ case 0x13:
+ case 0x14:
+ case 0x15:
+ case 0x16:
+ case 0x17:
+ case 0x18:
+ case 0x19:
+ case 0x1A:
+ case 0x1B:
+ case 0x1C:
+ case 0x1D:
+ case 0x1E:
+ case 0x1F:
+ case ' ':
+ case '!':
+ case '"':
+ case '#':
+ case '%':
+ case '&':
+ case '\'':
+ case '(':
+ case ')':
+ case '*':
+ case '+':
+ case ',':
+ case '-':
+ case '.':
+ case '/':
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case ':':
+ case ';':
+ case '<':
+ case '=':
+ case '>':
+ case '?':
+ case '@':
+ case '[':
+ case '\\':
+ case ']':
+ case '^':
+ case '`':
+ case '{':
+ case '|':
+ case '}':
+ case '~':
+ case 0x7F: goto yy5;
+ case '$': goto yy18;
+ default: goto yy19;
+ }
+yy7:
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= 0x00) goto yy5;
+ goto yy21;
+yy8:
+ yych = *++YYCURSOR;
+ switch (yych) {
+ case '-': goto yy24;
+ default: goto yy5;
+ }
+yy9:
+ yych = *++YYCURSOR;
+ switch (yych) {
+ case '*': goto yy26;
+ default: goto yy5;
+ }
+yy10:
+ 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 yy27;
+ case ':': goto yy29;
+ default: goto yy5;
+ }
+yy11:
+ yych = *++YYCURSOR;
+ switch (yych) {
+ case '?': goto yy31;
+ default: goto yy12;
+ }
+yy12:
+ { RET(PDO_PARSER_BIND_POS); }
+yy13:
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch (yych) {
+ case '\'': goto yy32;
+ default: goto yy5;
+ }
+yy14:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+yy15:
+ switch (yych) {
+ case 0x00: goto yy1;
+ case '"': goto yy16;
+ default: goto yy14;
+ }
+yy16:
+ yyaccept = 1;
+ YYMARKER = ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch (yych) {
+ case '"': goto yy14;
+ default: goto yy17;
+ }
+yy17:
+ { RET(PDO_PARSER_TEXT); }
+yy18:
+ ++YYCURSOR;
+ { RET(PDO_PARSER_CUSTOM_QUOTE); }
+yy19:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch (yych) {
+ case 0x00:
+ case 0x01:
+ case 0x02:
+ case 0x03:
+ case 0x04:
+ case 0x05:
+ case 0x06:
+ case 0x07:
+ case 0x08:
+ case '\t':
+ case '\n':
+ case '\v':
+ case '\f':
+ case '\r':
+ case 0x0E:
+ case 0x0F:
+ case 0x10:
+ case 0x11:
+ case 0x12:
+ case 0x13:
+ case 0x14:
+ case 0x15:
+ case 0x16:
+ case 0x17:
+ case 0x18:
+ case 0x19:
+ case 0x1A:
+ case 0x1B:
+ case 0x1C:
+ case 0x1D:
+ case 0x1E:
+ case 0x1F:
+ case ' ':
+ case '!':
+ case '"':
+ case '#':
+ case '%':
+ case '&':
+ case '\'':
+ case '(':
+ case ')':
+ case '*':
+ case '+':
+ case ',':
+ case '-':
+ case '.':
+ case '/':
+ case ':':
+ case ';':
+ case '<':
+ case '=':
+ case '>':
+ case '?':
+ case '@':
+ case '[':
+ case '\\':
+ case ']':
+ case '^':
+ case '`':
+ case '{':
+ case '|':
+ case '}':
+ case '~':
+ case 0x7F: goto yy1;
+ case '$': goto yy18;
+ default: goto yy19;
+ }
+yy20:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+yy21:
+ switch (yych) {
+ case 0x00: goto yy1;
+ case '\'': goto yy22;
+ default: goto yy20;
+ }
+yy22:
+ yyaccept = 2;
+ YYMARKER = ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch (yych) {
+ case '\'': goto yy20;
+ default: goto yy23;
+ }
+yy23:
+ { RET(PDO_PARSER_TEXT); }
+yy24:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch (yych) {
+ case '\n': goto yy25;
+ default: goto yy24;
+ }
+yy25:
+ { RET(PDO_PARSER_TEXT); }
+yy26:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch (yych) {
+ case '*': goto yy33;
+ default: goto yy26;
+ }
+yy27:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ 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 yy27;
+ default: goto yy28;
+ }
+yy28:
+ { RET(PDO_PARSER_BIND); }
+yy29:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch (yych) {
+ case ':': goto yy29;
+ default: goto yy30;
+ }
+yy30:
+ { RET(PDO_PARSER_TEXT); }
+yy31:
+ ++YYCURSOR;
+ { RET(PDO_PARSER_ESCAPED_QUESTION); }
+yy32:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch (yych) {
+ case 0x00: goto yy1;
+ case '\'': goto yy34;
+ case '\\': goto yy36;
+ default: goto yy32;
+ }
+yy33:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch (yych) {
+ case '*': goto yy33;
+ case '/': goto yy37;
+ default: goto yy26;
+ }
+yy34:
+ yyaccept = 3;
+ YYMARKER = ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch (yych) {
+ case '\'': goto yy32;
+ default: goto yy35;
+ }
+yy35:
+ { RET(PDO_PARSER_TEXT); }
+yy36:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ if (yych <= 0x00) goto yy1;
+ goto yy32;
+yy37:
+ ++YYCURSOR;
+ goto yy25;
+}
+
+}
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= databases
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -pdo_sqlite
.include "${MASTERDIR}/Makefile"
@@ -0,0 +1,398 @@
--- sqlite_sql_parser.c.orig 2025-07-02 13:27:28 UTC
+++ sqlite_sql_parser.c
@@ -0,0 +1,395 @@
+/* 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: Matteo Beccati <mbeccati@php.net> |
+ +----------------------------------------------------------------------+
+*/
+
+
+#include "php.h"
+#include "ext/pdo/php_pdo_driver.h"
+#include "ext/pdo/pdo_sql_parser.h"
+
+int pdo_sqlite_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;
+ case '[': goto yy12;
+ case '`': goto yy13;
+ default: goto yy2;
+ }
+yy1:
+ YYCURSOR = YYMARKER;
+ switch (yyaccept) {
+ case 0: goto yy5;
+ case 1: goto yy17;
+ case 2: goto yy21;
+ case 3: goto yy33;
+ default: goto yy37;
+ }
+yy2:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch (yych) {
+ case 0x00:
+ case '"':
+ case '\'':
+ 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 yy15;
+yy5:
+ { SKIP_ONE(PDO_PARSER_TEXT); }
+yy6:
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= 0x00) goto yy5;
+ goto yy19;
+yy7:
+ yych = *++YYCURSOR;
+ switch (yych) {
+ case '-': goto yy22;
+ default: goto yy5;
+ }
+yy8:
+ yych = *++YYCURSOR;
+ switch (yych) {
+ case '*': goto yy24;
+ 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 yy25;
+ case ':': goto yy27;
+ default: goto yy5;
+ }
+yy10:
+ yych = *++YYCURSOR;
+ switch (yych) {
+ case '?': goto yy29;
+ default: goto yy11;
+ }
+yy11:
+ { RET(PDO_PARSER_BIND_POS); }
+yy12:
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= 0x00) goto yy5;
+ goto yy31;
+yy13:
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= 0x00) goto yy5;
+ goto yy35;
+yy14:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+yy15:
+ switch (yych) {
+ case 0x00: goto yy1;
+ case '"': goto yy16;
+ default: goto yy14;
+ }
+yy16:
+ yyaccept = 1;
+ YYMARKER = ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch (yych) {
+ case 0x00: goto yy17;
+ case '"': goto yy16;
+ default: goto yy14;
+ }
+yy17:
+ { RET(PDO_PARSER_TEXT); }
+yy18:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+yy19:
+ switch (yych) {
+ case 0x00: goto yy1;
+ case '\'': goto yy20;
+ default: goto yy18;
+ }
+yy20:
+ yyaccept = 2;
+ YYMARKER = ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch (yych) {
+ case 0x00: goto yy21;
+ case '\'': goto yy20;
+ default: goto yy18;
+ }
+yy21:
+ { RET(PDO_PARSER_TEXT); }
+yy22:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch (yych) {
+ case '\n': goto yy23;
+ default: goto yy22;
+ }
+yy23:
+ { RET(PDO_PARSER_TEXT); }
+yy24:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch (yych) {
+ case '*': goto yy38;
+ default: goto yy24;
+ }
+yy25:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ 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 yy25;
+ default: goto yy26;
+ }
+yy26:
+ { RET(PDO_PARSER_BIND); }
+yy27:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch (yych) {
+ case ':': goto yy27;
+ default: goto yy28;
+ }
+yy28:
+ { RET(PDO_PARSER_TEXT); }
+yy29:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch (yych) {
+ case '?': goto yy29;
+ default: goto yy28;
+ }
+yy30:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+yy31:
+ switch (yych) {
+ case 0x00: goto yy1;
+ case ']': goto yy32;
+ default: goto yy30;
+ }
+yy32:
+ yyaccept = 3;
+ YYMARKER = ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch (yych) {
+ case 0x00: goto yy33;
+ case ']': goto yy32;
+ default: goto yy30;
+ }
+yy33:
+ { RET(PDO_PARSER_TEXT); }
+yy34:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+yy35:
+ switch (yych) {
+ case 0x00: goto yy1;
+ case '`': goto yy36;
+ default: goto yy34;
+ }
+yy36:
+ yyaccept = 4;
+ YYMARKER = ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch (yych) {
+ case 0x00: goto yy37;
+ case '`': goto yy36;
+ default: goto yy34;
+ }
+yy37:
+ { RET(PDO_PARSER_TEXT); }
+yy38:
+ ++YYCURSOR;
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch (yych) {
+ case '*': goto yy38;
+ case '/': goto yy39;
+ default: goto yy24;
+ }
+yy39:
+ ++YYCURSOR;
+ goto yy23;
+}
+
+}
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= databases
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -pgsql
.include "${MASTERDIR}/Makefile"
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= databases
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -sqlite3
.include "${MASTERDIR}/Makefile"
+10
View File
@@ -4281,6 +4281,16 @@
SUBDIR += php84-sysvsem
SUBDIR += php84-sysvshm
SUBDIR += php84-tokenizer
SUBDIR += php85-ffi
SUBDIR += php85-gettext
SUBDIR += php85-intl
SUBDIR += php85-pcntl
SUBDIR += php85-readline
SUBDIR += php85-shmop
SUBDIR += php85-sysvmsg
SUBDIR += php85-sysvsem
SUBDIR += php85-sysvshm
SUBDIR += php85-tokenizer
SUBDIR += phpunit10
SUBDIR += phpunit11
SUBDIR += phpunit12
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= devel
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -ffi
.include "${MASTERDIR}/Makefile"
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= devel
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -gettext
.include "${MASTERDIR}/Makefile"
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= devel
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -intl
.include "${MASTERDIR}/Makefile"
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= devel
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -pcntl
.include "${MASTERDIR}/Makefile"
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= devel
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -readline
.include "${MASTERDIR}/Makefile"
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= devel
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -shmop
.include "${MASTERDIR}/Makefile"
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= devel
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -sysvmsg
.include "${MASTERDIR}/Makefile"
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= devel
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -sysvsem
.include "${MASTERDIR}/Makefile"
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= devel
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -sysvshm
.include "${MASTERDIR}/Makefile"
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= devel
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -tokenizer
.include "${MASTERDIR}/Makefile"
+2
View File
@@ -61,6 +61,8 @@
SUBDIR += php83-ftp
SUBDIR += php84-curl
SUBDIR += php84-ftp
SUBDIR += php85-curl
SUBDIR += php85-ftp
SUBDIR += phpwebftp
SUBDIR += proftpd
SUBDIR += proftpd-mod_vroot
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= ftp
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -curl
.include "${MASTERDIR}/Makefile"
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= ftp
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -ftp
.include "${MASTERDIR}/Makefile"
+2
View File
@@ -831,6 +831,8 @@
SUBDIR += php83-gd
SUBDIR += php84-exif
SUBDIR += php84-gd
SUBDIR += php85-exif
SUBDIR += php85-gd
SUBDIR += phplot
SUBDIR += picpuz
SUBDIR += piddle
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= graphics
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -exif
.include "${MASTERDIR}/Makefile"
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= graphics
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -gd
.include "${MASTERDIR}/Makefile"
+2
View File
@@ -278,6 +278,8 @@
SUBDIR += php83-extensions
SUBDIR += php84
SUBDIR += php84-extensions
SUBDIR += php85
SUBDIR += php85-extensions
SUBDIR += picoc
SUBDIR += picolisp
SUBDIR += pkl
+1 -1
View File
@@ -181,7 +181,7 @@ COMMENT= The ${PHP_MODNAME} shared extension for php
USES+= php:ext,noflavors
PHP_MODNAME= ${PKGNAMESUFFIX:S/-//}
PHP_VER= 81
IGNORE_WITH_PHP= 82 83 84
IGNORE_WITH_PHP= 82 83 84 85
EXTSUBDIR= ${DISTNAME}/ext/${PHP_MODNAME}
WRKSRC= ${WRKDIR}/${EXTSUBDIR}
+1 -1
View File
@@ -177,7 +177,7 @@ COMMENT= The ${PHP_MODNAME} shared extension for php
USES+= php:ext,noflavors
PHP_MODNAME= ${PKGNAMESUFFIX:S/-//}
PHP_VER= 82
IGNORE_WITH_PHP= 81 83 84
IGNORE_WITH_PHP= 81 83 84 85
EXTSUBDIR= ${DISTNAME}/ext/${PHP_MODNAME}
WRKSRC= ${WRKDIR}/${EXTSUBDIR}
+1 -1
View File
@@ -195,7 +195,7 @@ COMMENT= The ${PHP_MODNAME} shared extension for php
USES+= php:ext,noflavors
PHP_MODNAME= ${PKGNAMESUFFIX:S/-//}
PHP_VER= 83
IGNORE_WITH_PHP= 81 82 84
IGNORE_WITH_PHP= 81 82 84 85
EXTSUBDIR= ${DISTNAME}/ext/${PHP_MODNAME}
WRKSRC= ${WRKDIR}/${EXTSUBDIR}
+1 -1
View File
@@ -197,7 +197,7 @@ COMMENT= The ${PHP_MODNAME} shared extension for php
USES+= php:ext,noflavors
PHP_MODNAME= ${PKGNAMESUFFIX:S/-//}
PHP_VER= 84
IGNORE_WITH_PHP= 81 82 83
IGNORE_WITH_PHP= 81 82 83 85
EXTSUBDIR= ${DISTNAME}/ext/${PHP_MODNAME}
WRKSRC= ${WRKDIR}/${EXTSUBDIR}
+89
View File
@@ -0,0 +1,89 @@
PORTNAME= php85
PORTVERSION= 1.0
CATEGORIES= lang
PKGNAMESUFFIX= -extensions
MAINTAINER= bofh@FreeBSD.org
COMMENT= "meta-port" to install PHP extensions (8.4.X branch)
WWW= https://www.php.net/
USES= metaport php
PHP_VER= 85
IGNORE_WITH_PHP= 81 82 83 84
OPTIONS_DEFINE= BCMATH BZ2 CALENDAR CTYPE CURL DBA DOM ENCHANT EXIF FFI \
FILEINFO FILTER FTP GD GETTEXT GMP ICONV INTL LDAP \
MBSTRING MYSQLI ODBC OPCACHE PCNTL PDO \
PDO_DBLIB PDO_FIREBIRD PDO_MYSQL PDO_ODBC PDO_PGSQL \
PDO_SQLITE PGSQL PHAR POSIX READLINE SESSION \
SHMOP SIMPLEXML SNMP SOAP SOCKETS SODIUM SQLITE3 \
SYSVMSG SYSVSEM SYSVSHM TIDY TOKENIZER XML XMLREADER \
XMLWRITER XSL ZIP ZLIB
OPTIONS_DEFAULT= CTYPE DOM FILTER ICONV OPCACHE PDO PDO_SQLITE PHAR \
POSIX SESSION SIMPLEXML SQLITE3 TOKENIZER XML XMLREADER \
XMLWRITER
BCMATH_DESC= bc style precision math functions
BZ2_DESC= bzip2 library support
CALENDAR_DESC= calendar conversion support
CTYPE_DESC= ctype functions
CURL_DESC= CURL support
DBA_DESC= dba support
DOM_DESC= DOM support
ENCHANT_DESC= Enchant spelling support
EXIF_DESC= EXIF support
FFI_DESC= Foreign Function Interface support
FILEINFO_DESC= fileinfo support
FILTER_DESC= input filter support
FTP_DESC= FTP support
GD_DESC= GD library support
GETTEXT_DESC= gettext library support
GMP_DESC= GNU MP support
ICONV_DESC= iconv support
INTL_DESC= Internationalization(ICU)
LDAP_DESC= OpenLDAP support
MBSTRING_DESC= multibyte string support
MYSQLI_DESC= MySQLi database support
ODBC_DESC= ODBC support
OPCACHE_DESC= OPcache support
PCNTL_DESC= pcntl support (CLI only)
PDO_DBLIB_DESC= PDO DBLIB-DB driver
PDO_DESC= PHP Data Objects Interface (PDO)
PDO_FIREBIRD_DESC= PDO Firebird driver
PDO_MYSQL_DESC= PDO MySQL driver
PDO_ODBC_DESC= PDO ODBC driver
PDO_PGSQL_DESC= PDO PostgreSQL driver
PDO_SQLITE_DESC= PDO sqlite driver
PHAR_DESC= phar support
POSIX_DESC= POSIX-like functions
READLINE_DESC= readline support (CLI only)
SESSION_DESC= session support
SHMOP_DESC= shmop support
SIMPLEXML_DESC= simplexml support
SNMP_DESC= SNMP support
SOAP_DESC= SOAP support
SOCKETS_DESC= sockets support
SODIUM_DESC= Sodium encryption support
SQLITE3_DESC= sqlite3 support
SYSVMSG_DESC= System V message support
SYSVSEM_DESC= System V semaphore support
SYSVSHM_DESC= System V shared memory support
TIDY_DESC= TIDY support
TOKENIZER_DESC= tokenizer support
XMLREADER_DESC= XMLReader support
XMLWRITER_DESC= XMLWriter support
XML_DESC= XML support
XSL_DESC= XSL support (Implies DOM)
ZIP_DESC= ZIP support
ZLIB_DESC= ZLIB support
.include <bsd.port.options.mk>
.for opt in ${OPTIONS_DEFINE}
. if ${PORT_OPTIONS:M${opt}}
USE_PHP+= ${opt:tl}
. endif
.endfor
.include <bsd.port.mk>
+5
View File
@@ -0,0 +1,5 @@
This is a "meta-port" to install the extensions for PHP 8.0
Defaults to:
ctype, dom, filter, iconv, json, opcache, pdo, pdo_sqlite, phar, posix,
session, simplexml, sqlite3, tokenizer, xml, xmlreader and xmlwriter.
+620
View File
@@ -0,0 +1,620 @@
PORTNAME= php85
DISTVERSION= 8.5.0alpha1
PORTREVISION?= 0
CATEGORIES?= lang devel www
MASTER_SITES= LOCAL/bofh/lang/${PORTNAME}
DISTNAME= php-${DISTVERSION}
MAINTAINER= bofh@FreeBSD.org
COMMENT= PHP Scripting Language (8.5.X branch)
WWW= https://www.php.net/
LICENSE= PHP301
USES+= compiler:c11 cpe gnome localbase pkgconfig #tar:xz
CPE_PRODUCT= php
PHP_VER= 85
PHP_WRKSRC= php-src-php-${DISTVERSION}
WRKSRC= ${WRKDIR}/${PHP_WRKSRC}
CONFLICTS_INSTALL?= php[0-9][0-9]${PKGNAMESUFFIX}
.if !defined(PKGNAMESUFFIX)
LIB_DEPENDS= libargon2.so:security/libargon2 \
libpcre2-8.so:devel/pcre2
GNU_CONFIGURE= yes
CONFIGURE_ARGS+= \
--disable-all \
--program-prefix="" \
--with-config-file-scan-dir=${PREFIX}/etc/php \
--with-layout=GNU \
--with-libxml \
--with-openssl \
--with-password-argon2=${LOCALBASE}
USES+= autoreconf:build bison ssl
USE_GNOME= libxml2
LDFLAGS+= -L${OPENSSLLIB} -lcrypto -lssl
# PR230207 Allow relocations against read-only segments (override lld default)
LDFLAGS_i386= -Wl,-z,notext
OPTIONS_DEFINE+=CGI CLI DEBUG DTRACE EMBED FPM IPV6 LINKTHR \
MYSQLND NOASLR PCRE PHPDBG ZTS
OPTIONS_DEFAULT= CGI CLI DTRACE EMBED FPM LINKTHR MYSQLND PCRE
OPTIONS_EXCLUDE_DragonFly= DTRACE
# ld(1) fails to link probes: Relocations in generic ELF (EM: 0)
OPTIONS_EXCLUDE_aarch64= DTRACE
# dt_modtext:opensolaris/ib/libdtrace/common/dt_link.c: arm not impemented
OPTIONS_EXCLUDE_armv6= DTRACE
OPTIONS_EXCLUDE_armv7= DTRACE
# Bug 197128: No ASM code for MIPS/MIPS64, disable FPM
OPTIONS_EXCLUDE_mips= DTRACE FPM
OPTIONS_EXCLUDE_mips64= DTRACE FPM
OPTIONS_EXCLUDE_riscv64= DTRACE
NO_OPTIONS_SORT= yes
OPTIONS_SUB= yes
CGI_DESC= Build CGI version
CLI_DESC= Build CLI version
EMBED_DESC= Build embedded library
FPM_DESC= Build FPM version
LINKTHR_DESC= Link thread lib (for threaded extensions)
MYSQLND_DESC= Build with MySQL Native Driver
PCRE_DESC= Use system pcre instead of bundled one
PHPDBG_DESC= Interactive PHP debugger
ZTS_DESC= Force Zend Thread Safety (ZTS) build
CGI_CONFIGURE_OFF= --disable-cgi
CGI_VARS= PHP_SAPI+=cgi
CLI_CONFIGURE_OFF= --disable-cli
CLI_VARS= PHP_SAPI+=cli
DEBUG_CONFIGURE_ON= --enable-debug
DTRACE_CONFIGURE_ON= --enable-dtrace
EMBED_CONFIGURE_ON= --enable-embed
EMBED_VARS= PHP_SAPI+=embed
FPM_CONFIGURE_ON= --enable-fpm \
--with-fpm-group=${WWWGRP} \
--with-fpm-user=${WWWOWN}
FPM_VARS= PHP_SAPI+=fpm \
USE_RC_SUBR+=php_fpm
IPV6_CONFIGURE_OFF= --disable-ipv6
LINKTHR_LIBS= -lpthread
NOASLR_USES= elfctl
MYSQLND_CONFIGURE_ON= --enable-mysqlnd
PCRE_BUILD_DEPENDS= re2c>0:devel/re2c
PCRE_CONFIGURE_ON= --with-external-pcre=${LOCALBASE}
PCRE_PLIST_SUB= BUNDLED_PCRE="@comment "
PCRE_PLIST_SUB_OFF= BUNDLED_PCRE=""
PHPDBG_CONFIGURE_ON= --enable-phpdbg
PHPDBG_VARS= PHP_SAPI+=phpdbg
ZTS_CONFIGURE_ON= --enable-zts
ZTS_CONFIGURE_ENV= pthreads_working="yes"
DESTDIRNAME= INSTALL_ROOT
.if defined(PKGNAMEPREFIX)
USES+= apache
PLIST= ${PKGDIR}/pkg-plist.mod
PKGMESSAGE= ${PKGDIR}/pkg-message.mod
MODULENAME= libphp
SHORTMODNAME= php
WARNING= "!!! If you have a threaded Apache, you must build ${PHP_PORT} with ZTS support to enable thread-safety in extensions !!!"
WARNING+= "!!! Consider switching to php-fpm and mod_proxy_fcgi as per Apache httpd recommendations !!!"
.endif
.include <bsd.port.options.mk>
.if ${PORT_OPTIONS:NOASLR}
.if ${PORT_OPTIONS:MCLI}
ELF_FEATURES+=+noaslr:sapi/cli/php
.endif
.if ${PORT_OPTIONS:MCGI}
ELF_FEATURES+=+noaslr:sapi/cgi/php-cgi
.endif
.if ${PORT_OPTIONS:MPHPDBG}
ELF_FEATURES+=+noaslr:sapi/phpdbg/phpdbg
.endif
.if ${PORT_OPTIONS:MFPM}
ELF_FEATURES+=+noaslr:sapi/fpm/php-fpm
.endif
.endif
.include <bsd.port.pre.mk>
.if ${ARCH} == riscv64
CONFIGURE_ARGS+= --without-pcre-jit
.endif
.if ${PORT_OPTIONS:MPHPDBG} && ${PORT_OPTIONS:MDEBUG}
CONFIGURE_ARGS+= --enable-phpdbg-debug
.endif
.if ${PORT_OPTIONS:MCLI} || ${PORT_OPTIONS:MEMBED}
PLIST_SUB+= SAPI_INC=""
.else
PLIST_SUB+= SAPI_INC="@comment "
.endif
CONFIGURE_ENV+= ac_cv_decimal_fp_supported="no" \
lt_cv_path_SED="sed" \
OPENSSL_CFLAGS="-I${OPENSSLINC}" \
OPENSSL_LIBS="-L${OPENSSLLIB} -lssl -lcrypto" \
PHP_OPENSSL=yes
post-patch:
@${TOUCH} ${WRKSRC}/ext/php_config.h
post-patch-FPM-on:
@${REINPLACE_CMD} -e "s|^;\(pid\)|\1|;s|^;\(pm\.[a-z_]*_servers\)|\1|" \
${WRKSRC}/sapi/fpm/php-fpm.conf.in
pre-configure:
@(cd ${WRKSRC} && ${SETENV} MAKE=${MAKE_CMD} ./buildconf --force)
.if !defined(PKGNAMEPREFIX)
post-build:
@${ECHO_CMD} "PHP_VER=${PHP_VER}" > ${WRKDIR}/php.conf
@${ECHO_CMD} "PHP_VERSION=${PORTVERSION}" >> ${WRKDIR}/php.conf
@${ECHO_CMD} "PHP_SAPI=${PHP_SAPI}" >> ${WRKDIR}/php.conf
@${ECHO_CMD} -n "PHP_EXT_DIR=" >> ${WRKDIR}/php.conf
@${SH} ${WRKSRC}/scripts/php-config --extension-dir | ${SED} -ne 's,^${PREFIX}/lib/php/,,p' >> ${WRKDIR}/php.conf
@${ECHO_CMD} "PHP_EXT_INC=hash json openssl pcre random spl" >> ${WRKDIR}/php.conf
test: build
@(cd ${WRKSRC} && ${MAKE} test)
post-install:
${INSTALL_DATA} ${WRKSRC}/php.ini-development ${WRKSRC}/php.ini-production \
${WRKDIR}/php.conf ${STAGEDIR}/${PREFIX}/etc
${INSTALL_DATA} ${WRKSRC}/Zend/zend_property_hooks.h ${STAGEDIR}${PREFIX}/include/php/Zend
${INSTALL_DATA} ${WRKSRC}/Zend/zend_lazy_objects.h ${STAGEDIR}${PREFIX}/include/php/Zend
(cd ${WRKSRC}/ext/lexbor && \
${COPYTREE_SHARE} lexbor ${STAGEDIR}${PREFIX}/include/php/ext "-name *\.h")
post-install-CGI-on:
${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/php-cgi
post-install-CLI-on:
${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/php
post-install-EMBED-on:
${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/libphp.so
post-install-FPM-on:
${STRIP_CMD} ${STAGEDIR}${PREFIX}/sbin/php-fpm
post-install-PHPDBG-on:
${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/phpdbg
.else
do-install:
${MKDIR} ${STAGEDIR}${PREFIX}/${APACHEMODDIR}
${INSTALL_LIB} ${WRKSRC}/libs/${MODULENAME}.so \
${STAGEDIR}${PREFIX}/${APACHEMODDIR}
.endif
.else
COMMENT= The ${PHP_MODNAME} shared extension for php
USES+= php:ext,noflavors
PHP_MODNAME= ${PKGNAMESUFFIX:S/-//}
PHP_VER= 85
IGNORE_WITH_PHP= 81 82 83 84
EXTSUBDIR= ${PHP_WRKSRC}/ext/${PHP_MODNAME}
WRKSRC= ${WRKDIR}/${EXTSUBDIR}
PATCHDIR= ${.CURDIR}/files
PLIST= ${NONEXISTENT}
EXTRACT_AFTER_ARGS?= ${EXTSUBDIR}
TEST_TARGET= test
.if ${PHP_MODNAME} == "bcmath"
CONFIGURE_ARGS+= --enable-bcmath
PHP_HEADER_DIRS= libbcmath/src
.endif
.if ${PHP_MODNAME} == "bz2"
CONFIGURE_ARGS+= --with-bz2=/usr
.endif
.if ${PHP_MODNAME} == "calendar"
CONFIGURE_ARGS+= --enable-calendar
.endif
.if ${PHP_MODNAME} == "ctype"
CONFIGURE_ARGS+= --enable-ctype
.endif
.if ${PHP_MODNAME} == "curl"
LIB_DEPENDS+= libcurl.so:ftp/curl
CONFIGURE_ARGS+= --with-curl=${LOCALBASE}
USES+= pkgconfig
.endif
.if ${PHP_MODNAME} == "dba"
CONFIGURE_ARGS+= --enable-dba
OPTIONS_DEFINE= CDB DB4 FLATFILE GDBM INIFILE LMDB QDBM TOKYO
OPTIONS_DEFAULT= CDB FLATFILE INIFILE
CDB_DESC= cdb database support
DB4_DESC= Berkeley DB4 support
FLATFILE_DESC= flatfile support
GDBM_DESC= GDBM database support
INIFILE_DESC= INI file support
LMDB_DESC= LMDB database support
QDBM_DESC= QDBM database support
TOKYO_DESC= Tokyo Cabinet database support
CDB_CONFIGURE_OFF= --without-cdb
DB4_CONFIGURE_ON= --with-db4=${LOCALBASE}
DB4_USES= bdb
DB4_VARS= WITH_BDB_HIGHEST=yes
FLATFILE_CONFIGURE_ON= --disable-flatfile
GDBM_LIB_DEPENDS= libgdbm.so:databases/gdbm
GDBM_CONFIGURE_ARGS= --with-gdbm=${LOCALBASE}
INIFILE_CONFIGURE_OFF= --disable-inifile
LMDB_LIB_DEPENDS= liblmdb.so:databases/lmdb
LMDB_CONFIGURE_ARGS= --with-lmdb=${LOCALBASE}
QDBM_LIB_DEPENDS= libqdbm.so:databases/qdbm
QDBM_CONFIGURE_ARGS= --with-qdbm=${LOCALBASE}
TOKYO_LIB_DEPENDS= libtokyocabinet.so:databases/tokyocabinet
TOKYO_CONFIGURE_ON= --with-tcadb=${LOCALBASE}
PHP_HEADER_DIRS= libcdb libflatfile libinifile
.endif
.if ${PHP_MODNAME} == "dom"
CONFIGURE_ARGS+= --enable-dom
USES+= pkgconfig
USE_GNOME= libxml2
.endif
.if ${PHP_MODNAME} == "enchant"
LIB_DEPENDS+= libenchant-2.so:textproc/enchant2
CONFIGURE_ARGS+=--with-enchant=${LOCALBASE}
USES+= pkgconfig
.endif
.if ${PHP_MODNAME} == "exif"
CONFIGURE_ARGS+= --enable-exif
.endif
.if ${PHP_MODNAME} == "ffi"
LIB_DEPENDS= libffi.so:devel/libffi
CONFIGURE_ARGS+= --with-ffi
.endif
.if ${PHP_MODNAME} == "fileinfo"
CONFIGURE_ARGS+= --enable-fileinfo
PHP_HEADER_DIRS= libmagic
.endif
.if ${PHP_MODNAME} == "filter"
CONFIGURE_ARGS+= --enable-filter
.endif
.if ${PHP_MODNAME} == "ftp"
CONFIGURE_ARGS+= --enable-ftp
CONFIGURE_ENV+= OPENSSL_CFLAGS="-I${OPENSSLINC}" \
OPENSSL_LIBS="-L${OPENSSLLIB} -lssl -lcrypto" \
PHP_OPENSSL=yes
LDFLAGS+= -L${OPENSSLLIB} -lcrypto -lssl
USES+= pkgconfig ssl
.endif
.if ${PHP_MODNAME} == "gd"
LIB_DEPENDS= libfreetype.so:print/freetype2 \
libgd.so:graphics/gd \
libpng.so:graphics/png
USES+= jpeg
CONFIGURE_ARGS+= --enable-gd \
--with-external-gd
EXTRACT_AFTER_ARGS= --no-same-owner --no-same-permissions --exclude libgd \
${PHP_WRKSRC}/ext/gd
OPTIONS_DEFINE= JIS WEBP X11
JIS_DESC= Enable JIS-mapped Japanese font support
WEBP_DESC= Enable WebP image format support
X11_DESC= Enable XPM support
JIS_CONFIGURE_ON= --enable-gd-jis-conv
WEBP_CONFIGURE_ON= --with-webp
WEBP_LIB_DEPENDS= libwebp.so:graphics/webp
X11_CONFIGURE_ON= --with-xpm
X11_USE= XORG=xpm
X11_USES= xorg
.endif
.if ${PHP_MODNAME} == "gettext"
CONFIGURE_ARGS+= --with-gettext=${LOCALBASE}
USES+= gettext
.endif
.if ${PHP_MODNAME} == "gmp"
LIB_DEPENDS+= libgmp.so:math/gmp
CONFIGURE_ARGS+= --with-gmp=${LOCALBASE}
.endif
.if ${PHP_MODNAME} == "iconv"
CONFIGURE_ARGS+= --with-iconv=${LOCALBASE}
USES+= iconv:translit
.endif
.if ${PHP_MODNAME} == "intl"
LIB_DEPENDS= libicui18n.so:devel/icu
USES+= pkgconfig
CPPFLAGS+= -DU_USING_ICU_NAMESPACE=1
.endif
.if ${PHP_MODNAME} == "ldap"
LIB_DEPENDS+=libsasl2.so:security/cyrus-sasl2
CONFIGURE_ARGS+=--with-ldap=${LOCALBASE} --with-ldap-sasl=${LOCALBASE}
USES+= ldap
.endif
.if ${PHP_MODNAME} == "mbstring"
CONFIGURE_ARGS+= --enable-mbstring
OPTIONS_DEFINE= REGEX
OPTIONS_DEFAULT= REGEX
REGEX_DESC= Enable multibyte regex support
REGEX_LIB_DEPENDS= libonig.so:devel/oniguruma
REGEX_CONFIGURE_OFF= --disable-mbregex
PHP_HEADER_DIRS= libmbfl libmbfl/filters libmbfl/mbfl libmbfl/nls
.endif
.if ${PHP_MODNAME} == "mysqli"
CONFIGURE_ARGS+= --with-mysqli
.endif
.if ${PHP_MODNAME} == "odbc"
LIB_DEPENDS+= libodbc.so:databases/unixODBC
CONFIGURE_ARGS+= --with-unixODBC=${LOCALBASE}
.endif
.if ${PHP_MODNAME} == "opcache"
LIB_DEPENDS+= libcapstone.so:devel/capstone
# This is needed by Zend extensions, keep before everything.
PHP_MOD_PRIO= 10
CONFIGURE_ARGS+= --enable-opcache --with-capstone
.endif
.if ${PHP_MODNAME} == "pcntl"
CONFIGURE_ARGS+= --enable-pcntl
.endif
.if ${PHP_MODNAME} == "pdo"
CONFIGURE_ARGS+= --enable-pdo
.endif
.if ${PHP_MODNAME} == "pdo_dblib"
CONFIGURE_ARGS+= --with-pdo-dblib=${LOCALBASE}
USE_PHP= pdo:build
OPTIONS_DEFINE= MSSQL
MSSQL_DESC= Enable Microsoft SQL Server support
MSSQL_LIB_DEPENDS= libsybdb.so:databases/freetds
MSSQL_LIB_DEPENDS_OFF= libct.so:databases/freetds
.endif
.if ${PHP_MODNAME} == "pdo_firebird"
CONFIGURE_ARGS+= --with-pdo-firebird=${LOCALBASE}
USES+= firebird
USE_PHP= pdo:build
.endif
.if ${PHP_MODNAME} == "pdo_odbc"
LIB_DEPENDS+= libodbc.so:databases/unixODBC
CONFIGURE_ARGS+= --with-pdo-odbc=unixODBC,${LOCALBASE}
USE_PHP= pdo:build
.endif
.if ${PHP_MODNAME} == "pdo_mysql"
OPTIONS_DEFINE= MYSQLND
OPTIONS_DEFAULT= MYSQLND
MYSQLND_DESC= Use MySQL Native Driver
MYSQLND_CONFIGURE_ON= --with-pdo-mysql=mysqlnd
MYSQLND_CONFIGURE_OFF= --with-pdo-mysql=${LOCALBASE} \
--with-zlib-dir=/usr
MYSQLND_USES_OFF= mysql
USE_PHP= pdo:build
.endif
.if ${PHP_MODNAME} == "pdo_pgsql"
USES+= pgsql
CONFIGURE_ARGS+= --with-pdo-pgsql=${LOCALBASE}
USE_PHP= pdo:build
.endif
.if ${PHP_MODNAME} == "pdo_sqlite"
USES+= localbase sqlite
CONFIGURE_ARGS+= --with-pdo-sqlite=${LOCALBASE}
USE_PHP= pdo:build
.endif
.if ${PHP_MODNAME} == "pgsql"
USES+= pgsql
CONFIGURE_ARGS+= --with-pgsql=${LOCALBASE}
.endif
.if ${PHP_MODNAME} == "phar"
CONFIGURE_ARGS+= --enable-phar
.endif
.if ${PHP_MODNAME} == "posix"
CONFIGURE_ARGS+= --enable-posix
.endif
.if ${PHP_MODNAME} == "readline"
CONFIGURE_ARGS+=--with-libedit
USES+= libedit
.endif
.if ${PHP_MODNAME} == "session"
CONFIGURE_ARGS+= --enable-session
PHP_MOD_PRIO= 18
.endif
.if ${PHP_MODNAME} == "shmop"
CONFIGURE_ARGS+= --enable-shmop
.endif
.if ${PHP_MODNAME} == "simplexml"
CONFIGURE_ARGS+= --enable-simplexml
USES+= pkgconfig
USE_GNOME= libxml2
.endif
.if ${PHP_MODNAME} == "snmp"
CONFIGURE_ARGS+= --with-snmp=${LOCALBASE}
CONFIGURE_ENV+= ac_cv_buggy_snprint_value="no"
LIB_DEPENDS+= libnetsnmp.so:net-mgmt/net-snmp
LDFLAGS+= -L${OPENSSLLIB} -lcrypto -lssl
USES+= ssl
.endif
.if ${PHP_MODNAME} == "soap"
CONFIGURE_ARGS+= --enable-soap
USES+= pkgconfig
USE_GNOME= libxml2
.endif
.if ${PHP_MODNAME} == "sockets"
CONFIGURE_ARGS+= --enable-sockets
CONFIGURE_ENV+= LOCAL_CREDS_PERSISTENT=yes
.endif
.if ${PHP_MODNAME} == "sodium"
CONFIGURE_ARGS+= --with-sodium=${LOCALBASE}
LIB_DEPENDS+= libsodium.so:security/libsodium
.endif
.if ${PHP_MODNAME} == "sqlite3"
USES+= localbase pkgconfig sqlite
CONFIGURE_ARGS+= --with-sqlite3=${LOCALBASE}
.endif
.if ${PHP_MODNAME} == "sysvmsg"
CONFIGURE_ARGS+= --enable-sysvmsg
.endif
.if ${PHP_MODNAME} == "sysvsem"
CONFIGURE_ARGS+= --enable-sysvsem
.endif
.if ${PHP_MODNAME} == "sysvshm"
CONFIGURE_ARGS+= --enable-sysvshm
.endif
.if ${PHP_MODNAME} == "tidy"
CONFIGURE_ARGS+= --with-tidy=${LOCALBASE}
LIB_DEPENDS+= libtidy5.so:www/tidy-html5
.endif
.if ${PHP_MODNAME} == "tokenizer"
CONFIGURE_ARGS+= --enable-tokenizer
.endif
.if ${PHP_MODNAME} == "xml"
CONFIGURE_ARGS+= --enable-xml
USES+= pkgconfig
USE_GNOME= libxml2
.endif
.if ${PHP_MODNAME} == "xmlreader"
CONFIGURE_ARGS+= --enable-xmlreader
USE_GNOME= libxml2
USE_PHP= dom:build
.endif
.if ${PHP_MODNAME} == "xmlwriter"
CONFIGURE_ARGS+= --enable-xmlwriter
USES+= pkgconfig
USE_GNOME= libxml2
.endif
.if ${PHP_MODNAME} == "xsl"
CONFIGURE_ARGS+= --with-xsl=${LOCALBASE}
USE_GNOME= libxslt
USE_PHP= dom:build xml:build
.endif
.if ${PHP_MODNAME} == "zip"
LIB_DEPENDS+= libzip.so:archivers/libzip
CONFIGURE_ARGS+= --with-zip
USES+= pkgconfig
.endif
.if ${PHP_MODNAME} == "zlib"
CONFIGURE_ARGS+= --with-zlib=/usr
USES+= pkgconfig
.endif
.include <bsd.port.pre.mk>
.if (${ARCH} == aarch64 || ${ARCH} == amd64 || ${ARCH} == i386) && ${PHP_MODNAME} == "opcache"
post-configure:
@${BSDMAKE} -C ${WRKSRC} ./jit/ir/ir_fold_hash.h
@${BSDMAKE} -C ${WRKSRC} ./jit/ir/ir_emit.lo
.endif
.if ${PHP_MODNAME} == "soap"
post-extract:
@${MKDIR} ${WRKSRC}/ext/session
@${CP} ${FILESDIR}/php_session.h ${WRKSRC}/ext/session
.endif
.if ${PHP_MODNAME} == "sqlite3" || ${PHP_MODNAME} == "zlib"
post-extract:
@${MV} ${WRKSRC}/config0.m4 ${WRKSRC}/config.m4
.endif
.if ${PHP_MODNAME} == "xml"
post-extract:
@${MKDIR} ${WRKSRC}/ext/xml
@${CP} ${WRKSRC}/expat_compat.h ${WRKSRC}/ext/xml
.endif
.endif
.include <bsd.port.post.mk>
+3
View File
@@ -0,0 +1,3 @@
TIMESTAMP = 1751455337
SHA256 (php-8.5.0alpha1.tar.gz) = ab8c5f2d559c41b711190e0850b981bfea0bda34f7129cd77567b35266a01b50
SIZE (php-8.5.0alpha1.tar.gz) = 23014352
+11
View File
@@ -0,0 +1,11 @@
--- TSRM/TSRM.c.orig 2024-07-02 13:43:13 UTC
+++ TSRM/TSRM.c
@@ -792,7 +792,7 @@ TSRM_API size_t tsrm_get_ls_cache_tcb_offset(void)
asm ("leal _tsrm_ls_cache@ntpoff,%0"
: "=r" (ret));
return ret;
-#elif defined(__aarch64__)
+#elif defined(__aarch64__) && !defined(__FreeBSD__)
size_t ret;
# ifdef __APPLE__
@@ -0,0 +1,19 @@
--- build/Makefile.global.orig 2024-07-02 13:43:13 UTC
+++ build/Makefile.global
@@ -91,14 +91,14 @@ test: all
@if test ! -z "$(PHP_EXECUTABLE)" && test -x "$(PHP_EXECUTABLE)"; then \
INI_FILE=`$(PHP_EXECUTABLE) -d 'display_errors=stderr' -r 'echo php_ini_loaded_file();' 2> /dev/null`; \
if test "$$INI_FILE"; then \
- $(EGREP) -h -v $(PHP_DEPRECATED_DIRECTIVES_REGEX) "$$INI_FILE" > $(top_builddir)/tmp-php.ini; \
+ $(EGREP) -h -v $(PHP_DEPRECATED_DIRECTIVES_REGEX) "$$INI_FILE" > $(top_builddir)/tmp-php.ini || :; \
else \
echo > $(top_builddir)/tmp-php.ini; \
fi; \
INI_SCANNED_PATH=`$(PHP_EXECUTABLE) -d 'display_errors=stderr' -r '$$a = explode(",\n", trim(php_ini_scanned_files())); echo $$a[0];' 2> /dev/null`; \
if test "$$INI_SCANNED_PATH"; then \
INI_SCANNED_PATH=`$(top_srcdir)/build/shtool path -d $$INI_SCANNED_PATH`; \
- $(EGREP) -h -v $(PHP_DEPRECATED_DIRECTIVES_REGEX) "$$INI_SCANNED_PATH"/*.ini >> $(top_builddir)/tmp-php.ini; \
+ $(EGREP) -h -v $(PHP_DEPRECATED_DIRECTIVES_REGEX) "$$INI_SCANNED_PATH"/*.ini >> $(top_builddir)/tmp-php.ini || :; \
fi; \
TEST_PHP_EXECUTABLE=$(PHP_EXECUTABLE) \
TEST_PHP_SRCDIR=$(top_srcdir) \
+27
View File
@@ -0,0 +1,27 @@
--- configure.ac.orig 2024-09-10 16:10:06 UTC
+++ configure.ac
@@ -55,6 +55,7 @@ AH_BOTTOM([
#include <string.h>
+#include <ext/php_config.h>
#endif /* PHP_CONFIG_H */
])
@@ -249,7 +250,6 @@ AS_VAR_APPEND([CPPFLAGS], [" -D_GNU_SOURCE"])
dnl require extensions to C and POSIX.
AS_VAR_APPEND([CPPFLAGS], [" -D_GNU_SOURCE"])
-PTHREADS_CHECK
PHP_HELP_SEPARATOR([SAPI modules:])
PHP_SHLIB_SUFFIX_NAMES
PHP_BUILD_PROGRAM
@@ -1368,7 +1368,7 @@ EXPANDED_PHP_CONFIG_FILE_SCAN_DIR=$(eval echo "$PHP_CO
EXPANDED_DATADIR=$datadir
EXPANDED_PHP_CONFIG_FILE_PATH=$(eval echo "$PHP_CONFIG_FILE_PATH")
EXPANDED_PHP_CONFIG_FILE_SCAN_DIR=$(eval echo "$PHP_CONFIG_FILE_SCAN_DIR")
-INCLUDE_PATH=.:$EXPANDED_PEAR_INSTALLDIR
+INCLUDE_PATH=.:${prefix}/share/pear
exec_prefix=$old_exec_prefix
libdir=$old_libdir
@@ -0,0 +1,46 @@
--- ext/hash/xxhash/xxhash.h.orig 2023-06-06 15:54:29 UTC
+++ ext/hash/xxhash/xxhash.h
@@ -3078,22 +3078,32 @@ enum XXH_VECTOR_TYPE /* fake enum */ {
* inconsistent intrinsics, spotty coverage, and multiple endiannesses.
*/
#if XXH_VECTOR == XXH_VSX
+/* Annoyingly, these headers _may_ define three macros: `bool`, `vector`,
+ * and `pixel`. This is a problem for obvious reasons.
+ *
+ * These keywords are unnecessary; the spec literally says they are
+ * equivalent to `__bool`, `__vector`, and `__pixel` and may be undef'd
+ * after including the header.
+ *
+ * We use pragma push_macro/pop_macro to keep the namespace clean. */
+# pragma push_macro("bool")
+# pragma push_macro("vector")
+# pragma push_macro("pixel")
+/* silence potential macro redefined warnings */
+# undef bool
+# undef vector
+# undef pixel
+
# if defined(__s390x__)
# include <s390intrin.h>
# else
-/* gcc's altivec.h can have the unwanted consequence to unconditionally
- * #define bool, vector, and pixel keywords,
- * with bad consequences for programs already using these keywords for other purposes.
- * The paragraph defining these macros is skipped when __APPLE_ALTIVEC__ is defined.
- * __APPLE_ALTIVEC__ is _generally_ defined automatically by the compiler,
- * but it seems that, in some cases, it isn't.
- * Force the build macro to be defined, so that keywords are not altered.
- */
-# if defined(__GNUC__) && !defined(__APPLE_ALTIVEC__)
-# define __APPLE_ALTIVEC__
-# endif
# include <altivec.h>
# endif
+
+/* Restore the original macro values, if applicable. */
+# pragma pop_macro("pixel")
+# pragma pop_macro("vector")
+# pragma pop_macro("bool")
typedef __vector unsigned long long xxh_u64x2;
typedef __vector unsigned char xxh_u8x16;
@@ -0,0 +1,11 @@
--- ext/pcre/php_pcre.h.orig 2024-07-28 11:55:02 UTC
+++ ext/pcre/php_pcre.h
@@ -20,7 +20,7 @@
#ifdef HAVE_BUNDLED_PCRE
#include "pcre2lib/pcre2.h"
#else
-#include "pcre2.h"
+#include <pcre2.h>
#endif
#include <locale.h>
@@ -0,0 +1,11 @@
--- sapi/apache2handler/config.m4.orig 2024-08-27 14:33:48 UTC
+++ sapi/apache2handler/config.m4
@@ -61,7 +61,7 @@ if test "$PHP_APXS2" != "no"; then
[AC_MSG_ERROR([Please note that Apache version >= 2.4 is required])])
APXS_LIBEXECDIR='$(INSTALL_ROOT)'$($APXS -q LIBEXECDIR)
- if test -z $($APXS -q SYSCONFDIR); then
+ if true; then
INSTALL_IT="\$(mkinstalldirs) '$APXS_LIBEXECDIR' && \
$APXS -S LIBEXECDIR='$APXS_LIBEXECDIR' \
-i -n php"
@@ -0,0 +1,17 @@
--- sapi/fpm/www.conf.in.orig 2023-03-14 16:11:05 UTC
+++ sapi/fpm/www.conf.in
@@ -32,10 +32,14 @@ group = @php_fpm_group@
; Valid syntaxes are:
; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on
; a specific port;
+; '0.0.0.0:port' - to listen on a TCP socket to all IPv4 addresses on
+; a specific port;
; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
; a specific port;
; 'port' - to listen on a TCP socket to all addresses
; (IPv6 and IPv4-mapped) on a specific port;
+; Note: IPv4-mapped addresses are disabled by-default in
+; FreeBSD for security reasons;
; '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = 127.0.0.1:9000
+102
View File
@@ -0,0 +1,102 @@
#!/bin/sh
# PROVIDE: php_fpm
# REQUIRE: LOGIN
# KEYWORD: shutdown
#
# Add the following line to /etc/rc.conf to enable php_fpm:
# php_fpm_enable (bool): Set to "NO" by default.
# Set it to "YES" to enable php_fpm
# php_fpm_profiles (str): Set to "" by default.
# Define your profiles here.
# php_fpm_pid_prefix (str): Set to "" by default.
# When using profiles manually assign value to "php_fpm_"
# for prevent collision with other PIDs names.
. /etc/rc.subr
name="php_fpm"
rcvar=php_fpm_enable
start_precmd="php_fpm_prestart"
restart_precmd="php_fpm_checkconfig"
reload_precmd="php_fpm_checkconfig"
command="%%PREFIX%%/sbin/php-fpm"
configtest_cmd="php_fpm_checkconfig"
_pidprefix="/var/run"
pidfile="${_pidprefix}/php-fpm.pid"
required_files="%%PREFIX%%/etc/php-fpm.conf"
load_rc_config "${name}"
: ${php_fpm_enable="NO"}
: ${php_fpm_umask=""}
: ${php_fpm_svcj_options:="net_basic"}
if [ -n "$2" ]; then
profile="$2"
if [ "x${php_fpm_profiles}" != "x" ]; then
pidfile="${_pidprefix}/${php_fpm_pid_prefix}php-fpm-${profile}.pid"
eval php_fpm_configfile="\${php_fpm_${profile}_configfile:-}"
if [ "x${php_fpm_configfile}" = "x" ]; then
echo "You must define a configuration file (php_fpm_${profile}_configfile)"
exit 1
fi
required_files="${php_fpm_configfile}"
eval php_fpm_enable="\${php_fpm_${profile}_enable:-${php_fpm_enable}}"
php_fpm_flags="-y ${php_fpm_configfile} -g ${pidfile}"
else
echo "$0: extra argument ignored"
fi
else
if [ "x${php_fpm_profiles}" != "x" -a "x$1" != "x" ]; then
for profile in ${php_fpm_profiles}; do
echo "===> php_fpm profile: ${profile}"
%%PREFIX%%/etc/rc.d/php_fpm $1 ${profile}
retcode="$?"
if [ "0${retcode}" -ne 0 ]; then
failed="${profile} (${retcode}) ${failed:-}"
else
success="${profile} ${success:-}"
fi
done
exit 0
fi
fi
extra_commands="reload configtest logrotate"
sig_stop="QUIT"
sig_reload="USR2"
logrotate_cmd="php_fpm_logrotate"
php_fpm_logrotate() {
if [ -z "$rc_pid" ]; then
_run_rc_notrunning
return 1
fi
echo "Rotating logs $name."
kill -USR1 $rc_pid
}
php_fpm_checkconfig()
{
echo "Performing sanity check on php-fpm configuration:"
eval ${command} ${php_fpm_flags} -t
}
php_fpm_prestart()
{
php_fpm_checkconfig
checkconfig=$?
if [ $checkconfig -ne 0 ]; then
return $checkconfig
fi
if [ ! -z "$php_fpm_umask" ]; then
echo "Setting umask to: ${php_fpm_umask}"
umask $php_fpm_umask
fi
}
run_rc_command "$1"
+328
View File
@@ -0,0 +1,328 @@
/*
+----------------------------------------------------------------------+
| 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: Sascha Schumann <sascha@schumann.cx> |
+----------------------------------------------------------------------+
*/
#ifndef PHP_SESSION_H
#define PHP_SESSION_H
#include "ext/standard/php_var.h"
#include "ext/random/php_random.h"
#define PHP_SESSION_API 20161017
#include "php_version.h"
#define PHP_SESSION_VERSION PHP_VERSION
/* save handler macros */
#define PS_OPEN_ARGS void **mod_data, const char *save_path, const char *session_name
#define PS_CLOSE_ARGS void **mod_data
#define PS_READ_ARGS void **mod_data, zend_string *key, zend_string **val, zend_long maxlifetime
#define PS_WRITE_ARGS void **mod_data, zend_string *key, zend_string *val, zend_long maxlifetime
#define PS_DESTROY_ARGS void **mod_data, zend_string *key
#define PS_GC_ARGS void **mod_data, zend_long maxlifetime, zend_long *nrdels
#define PS_CREATE_SID_ARGS void **mod_data
#define PS_VALIDATE_SID_ARGS void **mod_data, zend_string *key
#define PS_UPDATE_TIMESTAMP_ARGS void **mod_data, zend_string *key, zend_string *val, zend_long maxlifetime
typedef struct ps_module_struct {
const char *s_name;
zend_result (*s_open)(PS_OPEN_ARGS);
zend_result (*s_close)(PS_CLOSE_ARGS);
zend_result (*s_read)(PS_READ_ARGS);
zend_result (*s_write)(PS_WRITE_ARGS);
zend_result (*s_destroy)(PS_DESTROY_ARGS);
zend_long (*s_gc)(PS_GC_ARGS);
zend_string *(*s_create_sid)(PS_CREATE_SID_ARGS);
zend_result (*s_validate_sid)(PS_VALIDATE_SID_ARGS);
zend_result (*s_update_timestamp)(PS_UPDATE_TIMESTAMP_ARGS);
} ps_module;
#define PS_GET_MOD_DATA() *mod_data
#define PS_SET_MOD_DATA(a) *mod_data = (a)
#define PS_OPEN_FUNC(x) zend_result ps_open_##x(PS_OPEN_ARGS)
#define PS_CLOSE_FUNC(x) zend_result ps_close_##x(PS_CLOSE_ARGS)
#define PS_READ_FUNC(x) zend_result ps_read_##x(PS_READ_ARGS)
#define PS_WRITE_FUNC(x) zend_result ps_write_##x(PS_WRITE_ARGS)
#define PS_DESTROY_FUNC(x) zend_result ps_delete_##x(PS_DESTROY_ARGS)
#define PS_GC_FUNC(x) zend_long ps_gc_##x(PS_GC_ARGS)
#define PS_CREATE_SID_FUNC(x) zend_string *ps_create_sid_##x(PS_CREATE_SID_ARGS)
#define PS_VALIDATE_SID_FUNC(x) zend_result ps_validate_sid_##x(PS_VALIDATE_SID_ARGS)
#define PS_UPDATE_TIMESTAMP_FUNC(x) zend_result ps_update_timestamp_##x(PS_UPDATE_TIMESTAMP_ARGS)
/* Legacy save handler module definitions */
#define PS_FUNCS(x) \
PS_OPEN_FUNC(x); \
PS_CLOSE_FUNC(x); \
PS_READ_FUNC(x); \
PS_WRITE_FUNC(x); \
PS_DESTROY_FUNC(x); \
PS_GC_FUNC(x); \
PS_CREATE_SID_FUNC(x)
#define PS_MOD(x) \
#x, ps_open_##x, ps_close_##x, ps_read_##x, ps_write_##x, \
ps_delete_##x, ps_gc_##x, php_session_create_id, \
php_session_validate_sid, php_session_update_timestamp
/* Legacy SID creation enabled save handler module definitions */
#define PS_FUNCS_SID(x) \
PS_OPEN_FUNC(x); \
PS_CLOSE_FUNC(x); \
PS_READ_FUNC(x); \
PS_WRITE_FUNC(x); \
PS_DESTROY_FUNC(x); \
PS_GC_FUNC(x); \
PS_CREATE_SID_FUNC(x); \
PS_VALIDATE_SID_FUNC(x); \
PS_UPDATE_TIMESTAMP_FUNC(x);
#define PS_MOD_SID(x) \
#x, ps_open_##x, ps_close_##x, ps_read_##x, ps_write_##x, \
ps_delete_##x, ps_gc_##x, ps_create_sid_##x, \
php_session_validate_sid, php_session_update_timestamp
/* Update timestamp enabled save handler module definitions
New save handlers should use this API */
#define PS_FUNCS_UPDATE_TIMESTAMP(x) \
PS_OPEN_FUNC(x); \
PS_CLOSE_FUNC(x); \
PS_READ_FUNC(x); \
PS_WRITE_FUNC(x); \
PS_DESTROY_FUNC(x); \
PS_GC_FUNC(x); \
PS_CREATE_SID_FUNC(x); \
PS_VALIDATE_SID_FUNC(x); \
PS_UPDATE_TIMESTAMP_FUNC(x);
#define PS_MOD_UPDATE_TIMESTAMP(x) \
#x, ps_open_##x, ps_close_##x, ps_read_##x, ps_write_##x, \
ps_delete_##x, ps_gc_##x, ps_create_sid_##x, \
ps_validate_sid_##x, ps_update_timestamp_##x
typedef enum {
php_session_disabled,
php_session_none,
php_session_active
} php_session_status;
typedef struct _php_session_rfc1867_progress {
size_t sname_len;
zval sid;
smart_str key;
zend_long update_step;
zend_long next_update;
double next_update_time;
bool cancel_upload;
bool apply_trans_sid;
size_t content_length;
zval data; /* the array exported to session data */
zval files; /* data["files"] array */
zval *post_bytes_processed; /* data["bytes_processed"] */
zval *current_file_bytes_processed;
zval current_file; /* array of currently uploading file */
} php_session_rfc1867_progress;
typedef struct _php_ps_globals {
char *save_path;
char *session_name;
zend_string *id;
char *extern_referer_chk;
char *cache_limiter;
zend_long cookie_lifetime;
char *cookie_path;
char *cookie_domain;
char *cookie_samesite;
bool cookie_secure;
bool cookie_httponly;
const ps_module *mod;
const ps_module *default_mod;
void *mod_data;
php_session_status session_status;
zend_string *session_started_filename;
uint32_t session_started_lineno;
int module_number;
php_random_status_state_pcgoneseq128xslrr64 random_state;
php_random_algo_with_state random;
zend_long gc_probability;
zend_long gc_divisor;
zend_long gc_maxlifetime;
zend_long cache_expire;
struct {
zval ps_open;
zval ps_close;
zval ps_read;
zval ps_write;
zval ps_destroy;
zval ps_gc;
zval ps_create_sid;
zval ps_validate_sid;
zval ps_update_timestamp;
} mod_user_names;
zend_string *mod_user_class_name;
bool mod_user_implemented;
bool mod_user_is_open;
bool auto_start;
bool use_cookies;
bool use_only_cookies;
bool use_trans_sid; /* contains the INI value of whether to use trans-sid */
bool send_cookie;
bool define_sid;
const struct ps_serializer_struct *serializer;
zval http_session_vars;
zend_long sid_length;
zend_long sid_bits_per_character;
php_session_rfc1867_progress *rfc1867_progress;
char *rfc1867_prefix; /* session.upload_progress.prefix */
char *rfc1867_name; /* session.upload_progress.name */
zend_long rfc1867_freq; /* session.upload_progress.freq */
double rfc1867_min_freq; /* session.upload_progress.min_freq */
bool rfc1867_enabled; /* session.upload_progress.enabled */
bool rfc1867_cleanup; /* session.upload_progress.cleanup */
bool use_strict_mode; /* whether or not PHP accepts unknown session ids */
bool lazy_write; /* omit session write when it is possible */
bool in_save_handler; /* state if session is in save handler or not */
bool set_handler; /* state if session module i setting handler or not */
zend_string *session_vars; /* serialized original session data */
} php_ps_globals;
typedef php_ps_globals zend_ps_globals;
extern zend_module_entry session_module_entry;
#define phpext_session_ptr &session_module_entry
#ifdef ZTS
#define PS(v) ZEND_TSRMG(ps_globals_id, php_ps_globals *, v)
#ifdef COMPILE_DL_SESSION
ZEND_TSRMLS_CACHE_EXTERN()
#endif
#else
#define PS(v) (ps_globals.v)
#endif
#define PS_SERIALIZER_ENCODE_ARGS void
#define PS_SERIALIZER_DECODE_ARGS const char *val, size_t vallen
typedef struct ps_serializer_struct {
const char *name;
zend_string *(*encode)(PS_SERIALIZER_ENCODE_ARGS);
zend_result (*decode)(PS_SERIALIZER_DECODE_ARGS);
} ps_serializer;
#define PS_SERIALIZER_ENCODE_NAME(x) ps_srlzr_encode_##x
#define PS_SERIALIZER_DECODE_NAME(x) ps_srlzr_decode_##x
#define PS_SERIALIZER_ENCODE_FUNC(x) \
zend_string *PS_SERIALIZER_ENCODE_NAME(x)(PS_SERIALIZER_ENCODE_ARGS)
#define PS_SERIALIZER_DECODE_FUNC(x) \
zend_result PS_SERIALIZER_DECODE_NAME(x)(PS_SERIALIZER_DECODE_ARGS)
#define PS_SERIALIZER_FUNCS(x) \
PS_SERIALIZER_ENCODE_FUNC(x); \
PS_SERIALIZER_DECODE_FUNC(x)
#define PS_SERIALIZER_ENTRY(x) \
{ #x, PS_SERIALIZER_ENCODE_NAME(x), PS_SERIALIZER_DECODE_NAME(x) }
/* default create id function */
PHPAPI zend_string *php_session_create_id(PS_CREATE_SID_ARGS);
/* Dummy PS module functions */
PHPAPI zend_result php_session_validate_sid(PS_VALIDATE_SID_ARGS);
PHPAPI zend_result php_session_update_timestamp(PS_UPDATE_TIMESTAMP_ARGS);
PHPAPI void session_adapt_url(const char *url, size_t url_len, char **new_url, size_t *new_len);
PHPAPI zend_result php_session_destroy(void);
PHPAPI void php_add_session_var(zend_string *name);
PHPAPI zval *php_set_session_var(zend_string *name, zval *state_val, php_unserialize_data_t *var_hash);
PHPAPI zval *php_get_session_var(zend_string *name);
PHPAPI zval* php_get_session_var_str(const char *name, size_t name_len);
PHPAPI zend_result php_session_register_module(const ps_module *);
PHPAPI zend_result php_session_register_serializer(const char *name,
zend_string *(*encode)(PS_SERIALIZER_ENCODE_ARGS),
zend_result (*decode)(PS_SERIALIZER_DECODE_ARGS));
PHPAPI zend_result php_session_start(void);
PHPAPI zend_result php_session_flush(int write);
PHPAPI php_session_status php_get_session_status(void);
PHPAPI const ps_module *_php_find_ps_module(const char *name);
PHPAPI const ps_serializer *_php_find_ps_serializer(const char *name);
PHPAPI zend_result php_session_valid_key(const char *key);
PHPAPI zend_result php_session_reset_id(void);
#define PS_ADD_VARL(name) do { \
php_add_session_var(name); \
} while (0)
#define PS_ADD_VAR(name) PS_ADD_VARL(name)
#define PS_DEL_VARL(name) do { \
if (!Z_ISNULL(PS(http_session_vars))) { \
zend_hash_del(Z_ARRVAL(PS(http_session_vars)), name); \
} \
} while (0)
#define PS_ENCODE_VARS \
zend_string *key; \
zend_ulong num_key; \
zval *struc;
#define PS_ENCODE_LOOP(code) do { \
HashTable *_ht = Z_ARRVAL_P(Z_REFVAL(PS(http_session_vars))); \
ZEND_HASH_FOREACH_KEY(_ht, num_key, key) { \
if (key == NULL) { \
php_error_docref(NULL, E_WARNING, \
"Skipping numeric key " ZEND_LONG_FMT, num_key);\
continue; \
} \
if ((struc = php_get_session_var(key))) { \
code; \
} \
} ZEND_HASH_FOREACH_END(); \
} while(0)
PHPAPI ZEND_EXTERN_MODULE_GLOBALS(ps)
void php_session_auto_start(void *data);
extern PHPAPI zend_class_entry *php_session_class_entry;
extern PHPAPI zend_class_entry *php_session_iface_entry;
extern PHPAPI zend_class_entry *php_session_id_iface_entry;
extern PHPAPI zend_class_entry *php_session_update_timestamp_iface_entry;
extern PHP_METHOD(SessionHandler, open);
extern PHP_METHOD(SessionHandler, close);
extern PHP_METHOD(SessionHandler, read);
extern PHP_METHOD(SessionHandler, write);
extern PHP_METHOD(SessionHandler, destroy);
extern PHP_METHOD(SessionHandler, gc);
extern PHP_METHOD(SessionHandler, create_sid);
#endif
+6
View File
@@ -0,0 +1,6 @@
PHP, which stands for "PHP: Hypertext Preprocessor" is a widely-used Open
Source general-purpose scripting language that is especially suited for
Web development and can be embedded into HTML. Its syntax draws upon C,
Java, and Perl, and is easy to learn. The main goal of the language is to
allow web developers to write dynamically generated webpages quickly, but
you can do much more with PHP.
+24
View File
@@ -0,0 +1,24 @@
******************************************************************************
Consider switching to php-fpm and mod_fast_cgi as per Apache httpd project
recommendation. See https://cwiki.apache.org/confluence/display/HTTPD/PHP-FPM
******************************************************************************
If you are building PHP-based ports in poudriere(8) or Synth with ZTS enabled,
add WITH_MPM=event to /etc/make.conf to prevent build failures.
******************************************************************************
Make sure index.php is part of your DirectoryIndex.
You should add the following to your Apache configuration file:
<FilesMatch "\.php$">
SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch "\.phps$">
SetHandler application/x-httpd-php-source
</FilesMatch>
******************************************************************************
+549
View File
@@ -0,0 +1,549 @@
%%CLI%%bin/php
%%CGI%%bin/php-cgi
bin/php-config
%%PHPDBG%%bin/phpdbg
bin/phpize
%%FPM%%sbin/php-fpm
etc/php.conf
etc/php.ini-development
etc/php.ini-production
%%FPM%%@sample etc/php-fpm.conf.default etc/php-fpm.conf
%%FPM%%@sample etc/php-fpm.d/www.conf.default etc/php-fpm.d/www.conf
include/php/TSRM/TSRM.h
include/php/TSRM/tsrm_win32.h
include/php/Zend/Optimizer/zend_call_graph.h
include/php/Zend/Optimizer/zend_cfg.h
include/php/Zend/Optimizer/zend_dfg.h
include/php/Zend/Optimizer/zend_dump.h
include/php/Zend/Optimizer/zend_func_info.h
include/php/Zend/Optimizer/zend_inference.h
include/php/Zend/Optimizer/zend_optimizer.h
include/php/Zend/Optimizer/zend_ssa.h
include/php/Zend/Optimizer/zend_worklist.h
include/php/Zend/zend.h
include/php/Zend/zend_API.h
include/php/Zend/zend_alloc.h
include/php/Zend/zend_alloc_sizes.h
include/php/Zend/zend_arena.h
include/php/Zend/zend_ast.h
include/php/Zend/zend_atomic.h
include/php/Zend/zend_attributes.h
include/php/Zend/zend_attributes_arginfo.h
include/php/Zend/zend_bitset.h
include/php/Zend/zend_build.h
include/php/Zend/zend_builtin_functions.h
include/php/Zend/zend_builtin_functions_arginfo.h
include/php/Zend/zend_call_stack.h
include/php/Zend/zend_closures.h
include/php/Zend/zend_closures_arginfo.h
include/php/Zend/zend_compile.h
include/php/Zend/zend_config.h
include/php/Zend/zend_config.w32.h
include/php/Zend/zend_constants.h
include/php/Zend/zend_constants_arginfo.h
include/php/Zend/zend_cpuinfo.h
include/php/Zend/zend_dtrace.h
%%DTRACE%%include/php/Zend/zend_dtrace_gen.h
include/php/Zend/zend_enum.h
include/php/Zend/zend_enum_arginfo.h
include/php/Zend/zend_errors.h
include/php/Zend/zend_exceptions.h
include/php/Zend/zend_exceptions_arginfo.h
include/php/Zend/zend_execute.h
include/php/Zend/zend_extensions.h
include/php/Zend/zend_fibers.h
include/php/Zend/zend_fibers_arginfo.h
include/php/Zend/zend_float.h
include/php/Zend/zend_frameless_function.h
include/php/Zend/zend_gc.h
include/php/Zend/zend_gdb.h
include/php/Zend/zend_generators.h
include/php/Zend/zend_generators_arginfo.h
include/php/Zend/zend_globals.h
include/php/Zend/zend_globals_macros.h
include/php/Zend/zend_hash.h
include/php/Zend/zend_highlight.h
include/php/Zend/zend_hrtime.h
include/php/Zend/zend_inheritance.h
include/php/Zend/zend_ini.h
include/php/Zend/zend_ini_parser.h
include/php/Zend/zend_ini_scanner.h
include/php/Zend/zend_ini_scanner_defs.h
include/php/Zend/zend_interfaces.h
include/php/Zend/zend_interfaces_arginfo.h
include/php/Zend/zend_iterators.h
include/php/Zend/zend_language_parser.h
include/php/Zend/zend_language_scanner.h
include/php/Zend/zend_language_scanner_defs.h
include/php/Zend/zend_lazy_objects.h
include/php/Zend/zend_list.h
include/php/Zend/zend_llist.h
include/php/Zend/zend_long.h
include/php/Zend/zend_map_ptr.h
include/php/Zend/zend_max_execution_timer.h
include/php/Zend/zend_mmap.h
include/php/Zend/zend_modules.h
include/php/Zend/zend_multibyte.h
include/php/Zend/zend_multiply.h
include/php/Zend/zend_object_handlers.h
include/php/Zend/zend_objects.h
include/php/Zend/zend_objects_API.h
include/php/Zend/zend_observer.h
include/php/Zend/zend_operators.h
include/php/Zend/zend_portability.h
include/php/Zend/zend_property_hooks.h
include/php/Zend/zend_ptr_stack.h
include/php/Zend/zend_range_check.h
include/php/Zend/zend_signal.h
include/php/Zend/zend_simd.h
include/php/Zend/zend_smart_str.h
include/php/Zend/zend_smart_str_public.h
include/php/Zend/zend_smart_string.h
include/php/Zend/zend_smart_string_public.h
include/php/Zend/zend_sort.h
include/php/Zend/zend_stack.h
include/php/Zend/zend_stream.h
include/php/Zend/zend_string.h
include/php/Zend/zend_strtod.h
include/php/Zend/zend_strtod_int.h
include/php/Zend/zend_system_id.h
include/php/Zend/zend_type_info.h
include/php/Zend/zend_types.h
include/php/Zend/zend_variables.h
include/php/Zend/zend_verify_type_inference.h
include/php/Zend/zend_virtual_cwd.h
include/php/Zend/zend_vm.h
include/php/Zend/zend_vm_def.h
include/php/Zend/zend_vm_execute.h
include/php/Zend/zend_vm_handlers.h
include/php/Zend/zend_vm_opcodes.h
include/php/Zend/zend_vm_trace_handlers.h
include/php/Zend/zend_vm_trace_lines.h
include/php/Zend/zend_vm_trace_map.h
include/php/Zend/zend_weakrefs.h
include/php/Zend/zend_weakrefs_arginfo.h
include/php/ext/date/lib/timelib.h
include/php/ext/date/lib/timelib_config.h
include/php/ext/date/php_date.h
include/php/ext/hash/php_hash.h
include/php/ext/hash/php_hash_adler32.h
include/php/ext/hash/php_hash_crc32.h
include/php/ext/hash/php_hash_fnv.h
include/php/ext/hash/php_hash_gost.h
include/php/ext/hash/php_hash_haval.h
include/php/ext/hash/php_hash_joaat.h
include/php/ext/hash/php_hash_md.h
include/php/ext/hash/php_hash_murmur.h
include/php/ext/hash/php_hash_ripemd.h
include/php/ext/hash/php_hash_sha.h
include/php/ext/hash/php_hash_sha3.h
include/php/ext/hash/php_hash_snefru.h
include/php/ext/hash/php_hash_tiger.h
include/php/ext/hash/php_hash_whirlpool.h
include/php/ext/hash/php_hash_xxhash.h
include/php/ext/hash/xxhash/xxhash.h
include/php/ext/json/php_json.h
include/php/ext/json/php_json_parser.h
include/php/ext/json/php_json_scanner.h
include/php/ext/lexbor/core/array.h
include/php/ext/lexbor/core/array_obj.h
include/php/ext/lexbor/core/avl.h
include/php/ext/lexbor/core/base.h
include/php/ext/lexbor/core/bst.h
include/php/ext/lexbor/core/bst_map.h
include/php/ext/lexbor/core/conv.h
include/php/ext/lexbor/core/core.h
include/php/ext/lexbor/core/def.h
include/php/ext/lexbor/core/diyfp.h
include/php/ext/lexbor/core/dobject.h
include/php/ext/lexbor/core/dtoa.h
include/php/ext/lexbor/core/fs.h
include/php/ext/lexbor/core/hash.h
include/php/ext/lexbor/core/in.h
include/php/ext/lexbor/core/lexbor.h
include/php/ext/lexbor/core/mem.h
include/php/ext/lexbor/core/mraw.h
include/php/ext/lexbor/core/perf.h
include/php/ext/lexbor/core/plog.h
include/php/ext/lexbor/core/print.h
include/php/ext/lexbor/core/sbst.h
include/php/ext/lexbor/core/serialize.h
include/php/ext/lexbor/core/shs.h
include/php/ext/lexbor/core/str.h
include/php/ext/lexbor/core/strtod.h
include/php/ext/lexbor/core/str_res.h
include/php/ext/lexbor/core/swar.h
include/php/ext/lexbor/core/types.h
include/php/ext/lexbor/core/utils.h
include/php/ext/lexbor/css/at_rule.h
include/php/ext/lexbor/css/at_rule/const.h
include/php/ext/lexbor/css/at_rule/res.h
include/php/ext/lexbor/css/at_rule/state.h
include/php/ext/lexbor/css/base.h
include/php/ext/lexbor/css/css.h
include/php/ext/lexbor/css/declaration.h
include/php/ext/lexbor/css/property.h
include/php/ext/lexbor/css/property/const.h
include/php/ext/lexbor/css/property/res.h
include/php/ext/lexbor/css/property/state.h
include/php/ext/lexbor/css/rule.h
include/php/ext/lexbor/css/selectors/base.h
include/php/ext/lexbor/css/selectors/pseudo.h
include/php/ext/lexbor/css/selectors/pseudo_const.h
include/php/ext/lexbor/css/selectors/pseudo_res.h
include/php/ext/lexbor/css/selectors/pseudo_state.h
include/php/ext/lexbor/css/selectors/selector.h
include/php/ext/lexbor/css/selectors/selectors.h
include/php/ext/lexbor/css/selectors/state.h
include/php/ext/lexbor/css/state.h
include/php/ext/lexbor/css/stylesheet.h
include/php/ext/lexbor/css/syntax/anb.h
include/php/ext/lexbor/css/syntax/base.h
include/php/ext/lexbor/css/syntax/parser.h
include/php/ext/lexbor/css/syntax/res.h
include/php/ext/lexbor/css/syntax/state.h
include/php/ext/lexbor/css/syntax/state_res.h
include/php/ext/lexbor/css/syntax/syntax.h
include/php/ext/lexbor/css/syntax/token.h
include/php/ext/lexbor/css/syntax/token_res.h
include/php/ext/lexbor/css/syntax/tokenizer.h
include/php/ext/lexbor/css/syntax/tokenizer/error.h
include/php/ext/lexbor/css/unit.h
include/php/ext/lexbor/css/unit/const.h
include/php/ext/lexbor/css/unit/res.h
include/php/ext/lexbor/css/value.h
include/php/ext/lexbor/css/value/const.h
include/php/ext/lexbor/css/value/res.h
include/php/ext/lexbor/dom/interfaces/attr.h
include/php/ext/lexbor/dom/interfaces/attr_const.h
include/php/ext/lexbor/dom/interfaces/attr_res.h
include/php/ext/lexbor/dom/interfaces/cdata_section.h
include/php/ext/lexbor/dom/interfaces/character_data.h
include/php/ext/lexbor/dom/interfaces/comment.h
include/php/ext/lexbor/dom/interfaces/document.h
include/php/ext/lexbor/dom/interfaces/document_fragment.h
include/php/ext/lexbor/dom/interfaces/document_type.h
include/php/ext/lexbor/dom/interfaces/element.h
include/php/ext/lexbor/dom/interfaces/event_target.h
include/php/ext/lexbor/dom/interfaces/processing_instruction.h
include/php/ext/lexbor/dom/interfaces/shadow_root.h
include/php/ext/lexbor/dom/interfaces/text.h
include/php/ext/lexbor/encoding/multi.h
include/php/ext/lexbor/encoding/range.h
include/php/ext/lexbor/encoding/single.h
include/php/ext/lexbor/html/encoding.h
include/php/ext/lexbor/html/html.h
include/php/ext/lexbor/html/interface.h
include/php/ext/lexbor/html/interface_res.h
include/php/ext/lexbor/html/interfaces/anchor_element.h
include/php/ext/lexbor/html/interfaces/area_element.h
include/php/ext/lexbor/html/interfaces/audio_element.h
include/php/ext/lexbor/html/interfaces/base_element.h
include/php/ext/lexbor/html/interfaces/body_element.h
include/php/ext/lexbor/html/interfaces/br_element.h
include/php/ext/lexbor/html/interfaces/button_element.h
include/php/ext/lexbor/html/interfaces/canvas_element.h
include/php/ext/lexbor/html/interfaces/d_list_element.h
include/php/ext/lexbor/html/interfaces/data_element.h
include/php/ext/lexbor/html/interfaces/data_list_element.h
include/php/ext/lexbor/html/interfaces/details_element.h
include/php/ext/lexbor/html/interfaces/dialog_element.h
include/php/ext/lexbor/html/interfaces/directory_element.h
include/php/ext/lexbor/html/interfaces/div_element.h
include/php/ext/lexbor/html/interfaces/document.h
include/php/ext/lexbor/html/interfaces/element.h
include/php/ext/lexbor/html/interfaces/embed_element.h
include/php/ext/lexbor/html/interfaces/field_set_element.h
include/php/ext/lexbor/html/interfaces/font_element.h
include/php/ext/lexbor/html/interfaces/form_element.h
include/php/ext/lexbor/html/interfaces/frame_element.h
include/php/ext/lexbor/html/interfaces/frame_set_element.h
include/php/ext/lexbor/html/interfaces/head_element.h
include/php/ext/lexbor/html/interfaces/heading_element.h
include/php/ext/lexbor/html/interfaces/hr_element.h
include/php/ext/lexbor/html/interfaces/html_element.h
include/php/ext/lexbor/html/interfaces/iframe_element.h
include/php/ext/lexbor/html/interfaces/image_element.h
include/php/ext/lexbor/html/interfaces/input_element.h
include/php/ext/lexbor/html/interfaces/label_element.h
include/php/ext/lexbor/html/interfaces/legend_element.h
include/php/ext/lexbor/html/interfaces/li_element.h
include/php/ext/lexbor/html/interfaces/link_element.h
include/php/ext/lexbor/html/interfaces/map_element.h
include/php/ext/lexbor/html/interfaces/marquee_element.h
include/php/ext/lexbor/html/interfaces/media_element.h
include/php/ext/lexbor/html/interfaces/menu_element.h
include/php/ext/lexbor/html/interfaces/meta_element.h
include/php/ext/lexbor/html/interfaces/meter_element.h
include/php/ext/lexbor/html/interfaces/mod_element.h
include/php/ext/lexbor/html/interfaces/o_list_element.h
include/php/ext/lexbor/html/interfaces/object_element.h
include/php/ext/lexbor/html/interfaces/opt_group_element.h
include/php/ext/lexbor/html/interfaces/option_element.h
include/php/ext/lexbor/html/interfaces/output_element.h
include/php/ext/lexbor/html/interfaces/paragraph_element.h
include/php/ext/lexbor/html/interfaces/param_element.h
include/php/ext/lexbor/html/interfaces/picture_element.h
include/php/ext/lexbor/html/interfaces/pre_element.h
include/php/ext/lexbor/html/interfaces/progress_element.h
include/php/ext/lexbor/html/interfaces/quote_element.h
include/php/ext/lexbor/html/interfaces/script_element.h
include/php/ext/lexbor/html/interfaces/select_element.h
include/php/ext/lexbor/html/interfaces/slot_element.h
include/php/ext/lexbor/html/interfaces/source_element.h
include/php/ext/lexbor/html/interfaces/span_element.h
include/php/ext/lexbor/html/interfaces/style_element.h
include/php/ext/lexbor/html/interfaces/table_caption_element.h
include/php/ext/lexbor/html/interfaces/table_cell_element.h
include/php/ext/lexbor/html/interfaces/table_col_element.h
include/php/ext/lexbor/html/interfaces/table_element.h
include/php/ext/lexbor/html/interfaces/table_row_element.h
include/php/ext/lexbor/html/interfaces/table_section_element.h
include/php/ext/lexbor/html/interfaces/template_element.h
include/php/ext/lexbor/html/interfaces/text_area_element.h
include/php/ext/lexbor/html/interfaces/time_element.h
include/php/ext/lexbor/html/interfaces/title_element.h
include/php/ext/lexbor/html/interfaces/track_element.h
include/php/ext/lexbor/html/interfaces/u_list_element.h
include/php/ext/lexbor/html/interfaces/unknown_element.h
include/php/ext/lexbor/html/interfaces/video_element.h
include/php/ext/lexbor/html/interfaces/window.h
include/php/ext/lexbor/html/node.h
include/php/ext/lexbor/html/serialize.h
include/php/ext/lexbor/html/style.h
include/php/ext/lexbor/html/tag.h
include/php/ext/lexbor/html/tag_res.h
include/php/ext/lexbor/html/token.h
include/php/ext/lexbor/html/token_attr.h
include/php/ext/lexbor/html/tokenizer.h
include/php/ext/lexbor/html/tokenizer/error.h
include/php/ext/lexbor/html/tokenizer/res.h
include/php/ext/lexbor/html/tokenizer/state.h
include/php/ext/lexbor/html/tokenizer/state_comment.h
include/php/ext/lexbor/html/tokenizer/state_doctype.h
include/php/ext/lexbor/html/tokenizer/state_rawtext.h
include/php/ext/lexbor/html/tokenizer/state_rcdata.h
include/php/ext/lexbor/html/tokenizer/state_script.h
include/php/ext/lexbor/html/tree/active_formatting.h
include/php/ext/lexbor/html/tree/error.h
include/php/ext/lexbor/html/tree/insertion_mode.h
include/php/ext/lexbor/html/tree/open_elements.h
include/php/ext/lexbor/html/tree/template_insertion.h
include/php/ext/lexbor/html/tree_res.h
include/php/ext/lexbor/ns/base.h
include/php/ext/lexbor/ns/ns.h
include/php/ext/lexbor/ns/res.h
include/php/ext/lexbor/punycode/base.h
include/php/ext/lexbor/punycode/punycode.h
include/php/ext/lexbor/selectors/selectors.h
include/php/ext/lexbor/tag/base.h
include/php/ext/lexbor/tag/res.h
include/php/ext/lexbor/tag/tag.h
include/php/ext/lexbor/unicode/base.h
include/php/ext/lexbor/unicode/idna.h
include/php/ext/lexbor/unicode/res.h
include/php/ext/lexbor/unicode/unicode.h
include/php/ext/lexbor/url/base.h
include/php/ext/lexbor/url/url.h
include/php/ext/lexbor/css/log.h
include/php/ext/lexbor/css/parser.h
include/php/ext/lexbor/dom/base.h
include/php/ext/lexbor/dom/collection.h
include/php/ext/lexbor/dom/dom.h
include/php/ext/lexbor/dom/exception.h
include/php/ext/lexbor/dom/interface.h
include/php/ext/lexbor/dom/interfaces/node.h
include/php/ext/lexbor/encoding/base.h
include/php/ext/lexbor/encoding/const.h
include/php/ext/lexbor/encoding/decode.h
include/php/ext/lexbor/encoding/encode.h
include/php/ext/lexbor/encoding/encoding.h
include/php/ext/lexbor/encoding/res.h
include/php/ext/lexbor/html/base.h
include/php/ext/lexbor/html/parser.h
include/php/ext/lexbor/html/tree.h
include/php/ext/lexbor/ns/const.h
include/php/ext/lexbor/php_lexbor.h
include/php/ext/lexbor/selectors/base.h
include/php/ext/lexbor/tag/const.h
include/php/ext/libxml/php_libxml.h
%%MYSQLND%%include/php/ext/mysqlnd/config-win.h
%%MYSQLND%%include/php/ext/mysqlnd/mysql_float_to_double.h
%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd.h
%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_alloc.h
%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_auth.h
%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_block_alloc.h
%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_charset.h
%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_commands.h
%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_connection.h
%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_debug.h
%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_enum_n_def.h
%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_ext_plugin.h
%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_libmysql_compat.h
%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_plugin.h
%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_portability.h
%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_priv.h
%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_protocol_frame_codec.h
%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_ps.h
%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_read_buffer.h
%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_result.h
%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_result_meta.h
%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_reverse_api.h
%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_statistics.h
%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_structs.h
%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_vio.h
%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_wireprotocol.h
%%MYSQLND%%include/php/ext/mysqlnd/php_mysqlnd.h
%%BUNDLED_PCRE%%include/php/ext/pcre/pcre2lib/config.h
%%BUNDLED_PCRE%%include/php/ext/pcre/pcre2lib/pcre2.h
%%BUNDLED_PCRE%%include/php/ext/pcre/pcre2lib/pcre2_internal.h
%%BUNDLED_PCRE%%include/php/ext/pcre/pcre2lib/pcre2_intmodedep.h
%%BUNDLED_PCRE%%include/php/ext/pcre/pcre2lib/pcre2_jit_neon_inc.h
%%BUNDLED_PCRE%%include/php/ext/pcre/pcre2lib/pcre2_jit_simd_inc.h
%%BUNDLED_PCRE%%include/php/ext/pcre/pcre2lib/pcre2_ucp.h
include/php/ext/pcre/php_pcre.h
include/php/ext/random/php_random.h
include/php/ext/random/php_random_csprng.h
include/php/ext/random/php_random_uint128.h
include/php/ext/spl/php_spl.h
include/php/ext/spl/spl_array.h
include/php/ext/spl/spl_directory.h
include/php/ext/spl/spl_dllist.h
include/php/ext/spl/spl_exceptions.h
include/php/ext/spl/spl_fixedarray.h
include/php/ext/spl/spl_functions.h
include/php/ext/spl/spl_heap.h
include/php/ext/spl/spl_iterators.h
include/php/ext/spl/spl_observer.h
include/php/ext/standard/base64.h
include/php/ext/standard/basic_functions.h
include/php/ext/standard/basic_functions_arginfo.h
include/php/ext/standard/crc32.h
include/php/ext/standard/crc32_x86.h
include/php/ext/standard/credits.h
include/php/ext/standard/credits_ext.h
include/php/ext/standard/credits_sapi.h
include/php/ext/standard/crypt_blowfish.h
include/php/ext/standard/crypt_freesec.h
include/php/ext/standard/css.h
include/php/ext/standard/dir_arginfo.h
include/php/ext/standard/dl.h
include/php/ext/standard/dl_arginfo.h
include/php/ext/standard/exec.h
include/php/ext/standard/file.h
include/php/ext/standard/file_arginfo.h
include/php/ext/standard/flock_compat.h
include/php/ext/standard/fsock.h
include/php/ext/standard/head.h
include/php/ext/standard/html.h
include/php/ext/standard/html_tables.h
include/php/ext/standard/info.h
include/php/ext/standard/md5.h
include/php/ext/standard/pack.h
include/php/ext/standard/pageinfo.h
include/php/ext/standard/password_arginfo.h
include/php/ext/standard/php_array.h
include/php/ext/standard/php_assert.h
include/php/ext/standard/php_browscap.h
include/php/ext/standard/php_crypt.h
include/php/ext/standard/php_crypt_r.h
include/php/ext/standard/php_dir.h
include/php/ext/standard/php_dir_int.h
include/php/ext/standard/php_dns.h
include/php/ext/standard/php_ext_syslog.h
include/php/ext/standard/php_filestat.h
include/php/ext/standard/php_fopen_wrappers.h
include/php/ext/standard/php_http.h
include/php/ext/standard/php_image.h
include/php/ext/standard/php_incomplete_class.h
include/php/ext/standard/php_mail.h
include/php/ext/standard/php_math.h
include/php/ext/standard/php_math_round_mode.h
include/php/ext/standard/php_net.h
include/php/ext/standard/php_password.h
include/php/ext/standard/php_smart_string.h
include/php/ext/standard/php_smart_string_public.h
include/php/ext/standard/php_standard.h
include/php/ext/standard/php_string.h
include/php/ext/standard/php_uuencode.h
include/php/ext/standard/php_var.h
include/php/ext/standard/php_versioning.h
include/php/ext/standard/proc_open.h
include/php/ext/standard/quot_print.h
include/php/ext/standard/scanf.h
include/php/ext/standard/sha1.h
include/php/ext/standard/streamsfuncs.h
include/php/ext/standard/url.h
include/php/ext/standard/url_scanner_ex.h
include/php/ext/standard/user_filters_arginfo.h
include/php/ext/standard/winver.h
include/php/ext/uri/php_lexbor.h
include/php/ext/uri/php_uri.h
include/php/ext/uri/php_uri_common.h
@touch include/php/ext/php_config.h
@rmempty include/php/ext/php_config.h
include/php/main/SAPI.h
include/php/main/build-defs.h
include/php/main/charclass.h
include/php/main/fastcgi.h
include/php/main/fopen_wrappers.h
include/php/main/http_status_codes.h
include/php/main/main_arginfo.h
include/php/main/php.h
include/php/main/php_compat.h
include/php/main/php_config.h
include/php/main/php_content_types.h
include/php/main/php_getopt.h
include/php/main/php_glob.h
include/php/main/php_globals.h
include/php/main/php_ini.h
include/php/main/php_ini_builder.h
include/php/main/php_main.h
include/php/main/php_memory_streams.h
include/php/main/php_network.h
include/php/main/php_odbc_utils.h
include/php/main/php_open_temporary_file.h
include/php/main/php_output.h
include/php/main/php_reentrancy.h
include/php/main/php_scandir.h
include/php/main/php_streams.h
include/php/main/php_syslog.h
include/php/main/php_ticks.h
include/php/main/php_variables.h
include/php/main/php_version.h
include/php/main/rfc1867.h
include/php/main/snprintf.h
include/php/main/spprintf.h
include/php/main/streams/php_stream_context.h
include/php/main/streams/php_stream_filter_api.h
include/php/main/streams/php_stream_glob_wrapper.h
include/php/main/streams/php_stream_mmap.h
include/php/main/streams/php_stream_plain_wrapper.h
include/php/main/streams/php_stream_transport.h
include/php/main/streams/php_stream_userspace.h
include/php/main/streams/php_streams_int.h
include/php/main/streams/userspace_arginfo.h
%%CLI%%include/php/sapi/cli/cli.h
%%EMBED%%include/php/sapi/embed/php_embed.h
%%EMBED%%lib/libphp.so
lib/php/build/Makefile.global
lib/php/build/ax_check_compile_flag.m4
lib/php/build/ax_gcc_func_attribute.m4
lib/php/build/config.guess
lib/php/build/config.sub
lib/php/build/gen_stub.php
lib/php/build/libtool.m4
lib/php/build/ltmain.sh
lib/php/build/php.m4
lib/php/build/php_cxx_compile_stdcxx.m4
lib/php/build/phpize.m4
lib/php/build/pkg.m4
lib/php/build/run-tests.php
lib/php/build/shtool
%%CGI%%share/man/man1/php-cgi.1.gz
share/man/man1/php-config.1.gz
%%CLI%%share/man/man1/php.1.gz
%%PHPDBG%%share/man/man1/phpdbg.1.gz
share/man/man1/phpize.1.gz
%%FPM%%share/man/man8/php-fpm.8.gz
%%FPM%%share/php/fpm/status.html
+3
View File
@@ -0,0 +1,3 @@
%%APACHEMODDIR%%/%%AP_MODULE%%
@postexec %D/sbin/apxs -e -a -n %%AP_NAME%% %f
@preunexec %D/sbin/apxs -e -A -n %%AP_NAME%% %f
+2
View File
@@ -895,6 +895,8 @@
SUBDIR += php83-gmp
SUBDIR += php84-bcmath
SUBDIR += php84-gmp
SUBDIR += php85-bcmath
SUBDIR += php85-gmp
SUBDIR += physcalc
SUBDIR += picosat
SUBDIR += piranha
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= math
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -bcmath
.include "${MASTERDIR}/Makefile"
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= math
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -gmp
.include "${MASTERDIR}/Makefile"
+1
View File
@@ -397,6 +397,7 @@
SUBDIR += php82-calendar
SUBDIR += php83-calendar
SUBDIR += php84-calendar
SUBDIR += php85-calendar
SUBDIR += pinfo
SUBDIR += pipe
SUBDIR += posixtestsuite
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= misc
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -calendar
.include "${MASTERDIR}/Makefile"
+1
View File
@@ -303,6 +303,7 @@
SUBDIR += php82-snmp
SUBDIR += php83-snmp
SUBDIR += php84-snmp
SUBDIR += php85-snmp
SUBDIR += phpfpm_exporter
SUBDIR += phpipam
SUBDIR += ping_exporter
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= net-mgmt
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -snmp
.include "${MASTERDIR}/Makefile"
+3
View File
@@ -1006,6 +1006,9 @@
SUBDIR += php84-ldap
SUBDIR += php84-soap
SUBDIR += php84-sockets
SUBDIR += php85-ldap
SUBDIR += php85-soap
SUBDIR += php85-sockets
SUBDIR += phpldapadmin
SUBDIR += pimcommon
SUBDIR += pimd
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= net
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -ldap
.include "${MASTERDIR}/Makefile"
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= net
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -soap
.include "${MASTERDIR}/Makefile"
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= net
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -sockets
.include "${MASTERDIR}/Makefile"
+2
View File
@@ -838,6 +838,8 @@
SUBDIR += php83-sodium
SUBDIR += php84-filter
SUBDIR += php84-sodium
SUBDIR += php85-filter
SUBDIR += php85-sodium
SUBDIR += picocrypt
SUBDIR += picosha2
SUBDIR += pidgin-encryption
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= security
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -filter
.include "${MASTERDIR}/Makefile"
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= security
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -sodium
.include "${MASTERDIR}/Makefile"
+2
View File
@@ -941,6 +941,8 @@
SUBDIR += php83-posix
SUBDIR += php84-fileinfo
SUBDIR += php84-posix
SUBDIR += php85-fileinfo
SUBDIR += php85-posix
SUBDIR += phybs
SUBDIR += pick
SUBDIR += pidof
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= sysutils
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -fileinfo
.include "${MASTERDIR}/Makefile"
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= sysutils
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -posix
.include "${MASTERDIR}/Makefile"
+8
View File
@@ -1292,6 +1292,14 @@
SUBDIR += php84-xmlreader
SUBDIR += php84-xmlwriter
SUBDIR += php84-xsl
SUBDIR += php85-ctype
SUBDIR += php85-dom
SUBDIR += php85-enchant
SUBDIR += php85-simplexml
SUBDIR += php85-xml
SUBDIR += php85-xmlreader
SUBDIR += php85-xmlwriter
SUBDIR += php85-xsl
SUBDIR += pict
SUBDIR += po4a
SUBDIR += pod2mdoc
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= textproc
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -ctype
.include "${MASTERDIR}/Makefile"
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= textproc
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -dom
.include "${MASTERDIR}/Makefile"
@@ -0,0 +1,11 @@
--- lexbor/selectors-adapted/selectors.c.orig 2025-07-02 12:25:47 UTC
+++ lexbor/selectors-adapted/selectors.c
@@ -13,7 +13,7 @@
#include <Zend/zend_API.h>
#include <php.h>
-#include "ext/dom/lexbor/selectors-adapted/selectors.h"
+#include "selectors.h"
#include "../../namespace_compat.h"
#include "../../domexception.h"
#include "../../php_dom.h"
@@ -0,0 +1,11 @@
--- parentnode/css_selectors.c.orig 2025-07-02 12:24:35 UTC
+++ parentnode/css_selectors.c
@@ -23,7 +23,7 @@
#include "../php_dom.h"
#include "../obj_map.h"
-#include "ext/lexbor/lexbor/css/parser.h"
+#include "lexbor/css/parser.h"
#include "../lexbor/selectors-adapted/selectors.h"
// TODO: optimization idea: cache the parsed selectors in an LRU fashion?
+12
View File
@@ -0,0 +1,12 @@
CATEGORIES= textproc
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -enchant
post-patch:
${REINPLACE_CMD} -e \
's|#include "../spl/spl_exceptions.h"|#include "ext/spl/spl_exceptions.h"|g' \
${WRKSRC}/enchant.c
.include "${MASTERDIR}/Makefile"
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= textproc
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -simplexml
.include "${MASTERDIR}/Makefile"
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= textproc
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -xml
.include "${MASTERDIR}/Makefile"
+13
View File
@@ -0,0 +1,13 @@
--- compat.c.orig 2023-06-06 15:54:29 UTC
+++ compat.c
@@ -14,6 +14,10 @@
+----------------------------------------------------------------------+
*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
#include "php.h"
#if defined(HAVE_LIBXML) && (defined(HAVE_XML) || defined(HAVE_XMLRPC)) && !defined(HAVE_LIBEXPAT)
#include "expat_compat.h"
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= textproc
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -xmlreader
.include "${MASTERDIR}/Makefile"
+7
View File
@@ -0,0 +1,7 @@
CATEGORIES= textproc
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -xmlwriter
.include "${MASTERDIR}/Makefile"
+12
View File
@@ -0,0 +1,12 @@
CATEGORIES= textproc
MASTERDIR= ${.CURDIR}/../../lang/php85
PKGNAMESUFFIX= -xsl
post-patch:
${REINPLACE_CMD} -e \
's|#include "../dom/xml_common.h"|#include "ext/dom/xml_common.h"|g' \
${WRKSRC}/php_xsl.h
.include "${MASTERDIR}/Makefile"

Some files were not shown because too many files have changed in this diff Show More