git: 5acc30bdc244 - main - lang/php81: Runtime fix

From: Muhammad Moinur Rahman <bofh_at_FreeBSD.org>
Date: Tue, 05 Dec 2023 17:29:50 UTC
The branch main has been updated by bofh:

URL: https://cgit.FreeBSD.org/ports/commit/?id=5acc30bdc24452e17fff0127122096bda42b1d18

commit 5acc30bdc24452e17fff0127122096bda42b1d18
Author:     Muhammad Moinur Rahman <bofh@FreeBSD.org>
AuthorDate: 2023-12-05 17:20:34 +0000
Commit:     Muhammad Moinur Rahman <bofh@FreeBSD.org>
CommitDate: 2023-12-05 17:29:32 +0000

    lang/php81: Runtime fix
    
    - php modules while build with system pcre fails to run when using
      apache httpd and mod_php. So OPTIONIZE and add as a non-DEFAULT
      option. However to my knowledge and experience I haven't faced this
      with nginx and php-fpm yet. [1]
    - There is another corner case with apache httpd and mod_php when run
      on 13.2-RELEASE or newer specially on versions where ASLR is by default
      turned on. All modules specialy opcache crashes httpd. So add a
      warning message to advise users to move into php-fpm. [2]
    
    Thanks to brnrd@ for the patch. [2]
    
    PR:             275522 [1], 268318 [2]
    Reported by: majo-bugs.freebsd.org@cerny.sk [1], zarychtam@plan-b.pwste.edu.pl [2]
---
 lang/php81/Makefile        | 15 ++++++++++-----
 lang/php81/pkg-message.mod | 15 ++++++++++-----
 lang/php81/pkg-plist       |  7 +++++++
 3 files changed, 27 insertions(+), 10 deletions(-)

diff --git a/lang/php81/Makefile b/lang/php81/Makefile
index fa756234327b..e340f547fbd9 100644
--- a/lang/php81/Makefile
+++ b/lang/php81/Makefile
@@ -1,5 +1,6 @@
 PORTNAME=	php81
 DISTVERSION=	8.1.26
+PORTREVISION=	1
 CATEGORIES?=	lang devel www
 MASTER_SITES=	PHP/distributions
 DISTNAME=	php-${DISTVERSION}
@@ -17,7 +18,6 @@ PHP_VER=	81
 CONFLICTS_INSTALL?=	php[0-9][0-9]${PKGNAMESUFFIX}
 
 .if !defined(PKGNAMESUFFIX)
-BUILD_DEPENDS=	re2c>0:devel/re2c
 LIB_DEPENDS=	libargon2.so:security/libargon2 \
 		libpcre2-8.so:devel/pcre2
 
@@ -28,8 +28,7 @@ CONFIGURE_ARGS+=	--disable-all \
 			--with-layout=GNU \
 			--with-libxml \
 			--with-openssl \
-			--with-password-argon2=${LOCALBASE} \
-			--with-external-pcre=${LOCALBASE}
+			--with-password-argon2=${LOCALBASE}
 
 USES+=		autoreconf:build ssl
 USE_GNOME=	libxml2
@@ -39,8 +38,8 @@ LDFLAGS+=	-L${OPENSSLLIB} -lcrypto -lssl
 LDFLAGS_i386+=	-Wl,-z,notext
 
 OPTIONS_DEFINE+=	CGI CLI DEBUG DTRACE EMBED FPM IPV6 LINKTHR \
-				MYSQLND PHPDBG ZTS
-OPTIONS_DEFAULT=		CGI CLI DTRACE EMBED FPM LINKTHR MYSQLND
+				MYSQLND 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
@@ -63,6 +62,7 @@ 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
 
@@ -82,6 +82,10 @@ FPM_VARS=		PHP_SAPI+=fpm \
 IPV6_CONFIGURE_OFF=	--disable-ipv6
 LINKTHR_LIBS=		-lpthread
 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
@@ -96,6 +100,7 @@ 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.pre.mk>
diff --git a/lang/php81/pkg-message.mod b/lang/php81/pkg-message.mod
index a0c2c87889a7..8ad98d25b4e6 100644
--- a/lang/php81/pkg-message.mod
+++ b/lang/php81/pkg-message.mod
@@ -1,5 +1,15 @@
 ******************************************************************************
 
+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:
@@ -12,8 +22,3 @@ You should add the following to your Apache configuration file:
 </FilesMatch>
 
 ******************************************************************************
-
-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.
-
-******************************************************************************
diff --git a/lang/php81/pkg-plist b/lang/php81/pkg-plist
index 94ef315fa1a8..bf8a092bc4cb 100644
--- a/lang/php81/pkg-plist
+++ b/lang/php81/pkg-plist
@@ -162,6 +162,13 @@ include/php/ext/libxml/php_libxml.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/spl/php_spl.h
 include/php/ext/spl/spl_array.h