*/*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:
+6
-2
@@ -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}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= archivers
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -bz2
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -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;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+}
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= archivers
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -zip
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= archivers
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -zlib
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -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);
|
||||
@@ -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
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= converters
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -iconv
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= converters
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -mbstring
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -633,6 +633,18 @@
|
||||
SUBDIR += php84-pdo_sqlite
|
||||
SUBDIR += php84-pgsql
|
||||
SUBDIR += php84-sqlite3
|
||||
SUBDIR += php85-dba
|
||||
SUBDIR += php85-mysqli
|
||||
SUBDIR += php85-odbc
|
||||
SUBDIR += php85-pdo
|
||||
SUBDIR += php85-pdo_dblib
|
||||
SUBDIR += php85-pdo_firebird
|
||||
SUBDIR += php85-pdo_mysql
|
||||
SUBDIR += php85-pdo_odbc
|
||||
SUBDIR += php85-pdo_pgsql
|
||||
SUBDIR += php85-pdo_sqlite
|
||||
SUBDIR += php85-pgsql
|
||||
SUBDIR += php85-sqlite3
|
||||
SUBDIR += phpliteadmin
|
||||
SUBDIR += phpminiadmin
|
||||
SUBDIR += phpmyadmin
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= databases
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -dba
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -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
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= databases
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -mysqli
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -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], [
|
||||
@@ -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 = ¶m->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 = ¶m->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;
|
||||
+}
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= databases
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -pdo_dblib
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -0,0 +1,9 @@
|
||||
CATEGORIES= databases
|
||||
|
||||
PORTREVISION= 0
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -pdo_firebird
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -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;
|
||||
+}
|
||||
+
|
||||
+}
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= databases
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -pdo_odbc
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -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;
|
||||
+}
|
||||
+
|
||||
+}
|
||||
@@ -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;
|
||||
+}
|
||||
+
|
||||
+}
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= databases
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -pgsql
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= databases
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -sqlite3
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -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
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= devel
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -ffi
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= devel
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -gettext
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= devel
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -intl
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= devel
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -pcntl
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= devel
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -readline
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= devel
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -shmop
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= devel
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -sysvmsg
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= devel
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -sysvsem
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= devel
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -sysvshm
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= devel
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -tokenizer
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -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
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= ftp
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -curl
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= ftp
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -ftp
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -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
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= graphics
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -exif
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= graphics
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -gd
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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}
|
||||
|
||||
@@ -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>
|
||||
@@ -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.
|
||||
@@ -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>
|
||||
@@ -0,0 +1,3 @@
|
||||
TIMESTAMP = 1751455337
|
||||
SHA256 (php-8.5.0alpha1.tar.gz) = ab8c5f2d559c41b711190e0850b981bfea0bda34f7129cd77567b35266a01b50
|
||||
SIZE (php-8.5.0alpha1.tar.gz) = 23014352
|
||||
@@ -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) \
|
||||
@@ -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
|
||||
@@ -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"
|
||||
@@ -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
|
||||
@@ -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.
|
||||
@@ -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>
|
||||
|
||||
******************************************************************************
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= math
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -bcmath
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= math
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -gmp
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -397,6 +397,7 @@
|
||||
SUBDIR += php82-calendar
|
||||
SUBDIR += php83-calendar
|
||||
SUBDIR += php84-calendar
|
||||
SUBDIR += php85-calendar
|
||||
SUBDIR += pinfo
|
||||
SUBDIR += pipe
|
||||
SUBDIR += posixtestsuite
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= misc
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -calendar
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -303,6 +303,7 @@
|
||||
SUBDIR += php82-snmp
|
||||
SUBDIR += php83-snmp
|
||||
SUBDIR += php84-snmp
|
||||
SUBDIR += php85-snmp
|
||||
SUBDIR += phpfpm_exporter
|
||||
SUBDIR += phpipam
|
||||
SUBDIR += ping_exporter
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= net-mgmt
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -snmp
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -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
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= net
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -ldap
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= net
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -soap
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= net
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -sockets
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -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
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= security
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -filter
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= security
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -sodium
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -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
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= sysutils
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -fileinfo
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= sysutils
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -posix
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -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
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= textproc
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -ctype
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -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?
|
||||
@@ -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"
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= textproc
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -simplexml
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= textproc
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -xml
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -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"
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= textproc
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -xmlreader
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -0,0 +1,7 @@
|
||||
CATEGORIES= textproc
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../../lang/php85
|
||||
|
||||
PKGNAMESUFFIX= -xmlwriter
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -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
Reference in New Issue
Block a user