From 501aec607960bf9a1227d440e425662b35172a5c Mon Sep 17 00:00:00 2001 From: Silvan Calarco Date: Sat, 6 Jan 2024 09:58:50 +0100 Subject: [PATCH] update to 7.4.23 added php-fpm [release 7.4.23-1mamba;Mon Aug 30 2021] --- php-7.4.23-php-fpm.patch | 74 +++++++++++++ php-fpm.tmpfiles | 1 + php.spec | 229 +++++++++++++++++++++++++++------------ 3 files changed, 233 insertions(+), 71 deletions(-) create mode 100644 php-7.4.23-php-fpm.patch create mode 100644 php-fpm.tmpfiles diff --git a/php-7.4.23-php-fpm.patch b/php-7.4.23-php-fpm.patch new file mode 100644 index 0000000..4aa71ce --- /dev/null +++ b/php-7.4.23-php-fpm.patch @@ -0,0 +1,74 @@ +--- sapi/fpm/Makefile.frag.orig ++++ sapi/fpm/Makefile.frag +@@ -15,8 +15,8 @@ + else \ + echo "Installing PHP FPM defconfig: $(INSTALL_ROOT)$(sysconfdir)/" && \ + $(mkinstalldirs) $(INSTALL_ROOT)$(sysconfdir)/php-fpm.d; \ +- $(INSTALL_DATA) sapi/fpm/php-fpm.conf $(INSTALL_ROOT)$(sysconfdir)/php-fpm.conf.default; \ +- $(INSTALL_DATA) sapi/fpm/www.conf $(INSTALL_ROOT)$(sysconfdir)/php-fpm.d/www.conf.default; \ ++ $(INSTALL_DATA) sapi/fpm/php-fpm.conf $(INSTALL_ROOT)$(sysconfdir)/php-fpm.conf; \ ++ $(INSTALL_DATA) sapi/fpm/www.conf $(INSTALL_ROOT)$(sysconfdir)/php-fpm.d/www.conf; \ + fi + + @echo "Installing PHP FPM man page: $(INSTALL_ROOT)$(mandir)/man8/" +--- sapi/fpm/php-fpm.conf.in.orig ++++ sapi/fpm/php-fpm.conf.in +@@ -14,14 +14,14 @@ + ; Pid file + ; Note: the default prefix is @EXPANDED_LOCALSTATEDIR@ + ; Default Value: none +-;pid = run/php-fpm.pid ++;pid = /run/php-fpm/php-fpm.pid + + ; Error log file + ; If it's set to "syslog", log is sent to syslogd instead of being written + ; into a local file. + ; Note: the default prefix is @EXPANDED_LOCALSTATEDIR@ + ; Default Value: log/php-fpm.log +-;error_log = log/php-fpm.log ++error_log = syslog + + ; syslog_facility is used to specify what type of program is logging the + ; message. This lets syslogd specify that messages from different facilities +--- sapi/fpm/www.conf.in.orig ++++ sapi/fpm/www.conf.in +@@ -33,7 +33,7 @@ + ; (IPv6 and IPv4-mapped) on a specific port; + ; '/path/to/unix/socket' - to listen on a unix socket. + ; Note: This value is mandatory. +-listen = 127.0.0.1:9000 ++listen = /run/php-fpm/php-fpm.sock + + ; Set listen(2) backlog. + ; Default Value: 511 (-1 on FreeBSD and OpenBSD) +@@ -45,8 +45,8 @@ + ; and group can be specified either by name or by their numeric IDs. + ; Default Values: user and group are set as the running user + ; mode is set to 0660 +-;listen.owner = @php_fpm_user@ +-;listen.group = @php_fpm_group@ ++listen.owner = @php_fpm_user@ ++listen.group = @php_fpm_group@ + ;listen.mode = 0660 + ; When POSIX Access Control Lists are supported you can set them using + ; these options, value is a comma separated list of user/group names. +@@ -387,7 +387,7 @@ + ; Chdir to this directory at the start. + ; Note: relative path can be used. + ; Default Value: current directory or / when chroot +-;chdir = /var/www ++;chdir = /srv/http + + ; Redirect worker stdout and stderr into main error log. If not set, stdout and + ; stderr will be redirected to /dev/null according to FastCGI specs. +--- sapi/fpm/php-fpm.service.in.orig ++++ sapi/fpm/php-fpm.service.in +@@ -8,7 +8,7 @@ + + [Service] + Type=@php_fpm_systemd@ +-PIDFile=@EXPANDED_LOCALSTATEDIR@/run/php-fpm.pid ++PIDFile=/run/php-fpm/php-fpm.pid + ExecStart=@EXPANDED_SBINDIR@/php-fpm --nodaemonize --fpm-config @EXPANDED_SYSCONFDIR@/php-fpm.conf + ExecReload=/bin/kill -USR2 $MAINPID + diff --git a/php-fpm.tmpfiles b/php-fpm.tmpfiles new file mode 100644 index 0000000..801e74f --- /dev/null +++ b/php-fpm.tmpfiles @@ -0,0 +1 @@ +d /run/php-fpm 755 root root diff --git a/php.spec b/php.spec index 6aae9ef..b61dd93 100644 --- a/php.spec +++ b/php.spec @@ -6,16 +6,17 @@ %define with_hardening_patch 0 Name: php -Version: 7.4.15 -Release: 2mamba +Version: 7.4.23 +Release: 1mamba Summary: The PHP HTML-embedded scripting language Group: Applications/Development Vendor: openmamba Distribution: openmamba Packager: Silvan Calarco -URL: http://www.php.net/ +URL: https://www.php.net/ Source0: http://it2.php.net/distributions/php-%{version}.tar.xz Source1: php-httpd-conf +Source2: php-fpm.tmpfiles Patch0: http://www.hardened-php.net/hardening-patch-%{hardeningp_phpver}-%{hardeningp_ver}.patch.gz Patch1: %{name}-5.0.5-phpbuilddir.patch Patch2: %{name}-5.2.5-phpize_dir.patch @@ -23,13 +24,18 @@ Patch3: %{name}-5.2.9-db47.patch Patch4: %{name}-5.2.11-BID_36555.patch Patch5: %{name}-5.3.13-apache-2.4.patch Patch6: php-7.4.6-mariadb-10.4.13.patch +Patch7: php-7.4.23-php-fpm.patch License: PHP License ## AUTOBUILDREQ-BEGIN +#libdl.so.2()(64bit): /usr/lib64/libdl.so: file not owned by any package +#librt.so.1()(64bit): /usr/lib64/librt.so: file not owned by any package BuildRequires: glibc-devel BuildRequires: libX11-devel BuildRequires: libXau-devel BuildRequires: libXdmcp-devel BuildRequires: libXpm-devel +BuildRequires: libacl-devel +BuildRequires: libattr-devel BuildRequires: libbrotli-devel BuildRequires: libbsd-devel BuildRequires: libbzip2-devel @@ -71,6 +77,7 @@ BuildRequires: libsasl2-devel BuildRequires: libsqlite-devel BuildRequires: libssh2-devel BuildRequires: libstdc++6-devel +BuildRequires: libsystemd-devel BuildRequires: libtiff-devel BuildRequires: libunistring-devel BuildRequires: libwebp-devel @@ -113,6 +120,18 @@ Included here is the source for the PHP extensions. Instead of recompiling the whole PHP binary to add support for, say, Oracle, install this package and use the new self-contained extensions support. For more information, read the file SELF-CONTAINED-EXTENSIONS. +%package fpm +Summary: FastCGI Process Manager for PHP +Group: System/Servers +Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release} +Requires: systemd + +%description fpm +PHP is an HTML-embeddable scripting language. +PHP offers built-in database integration for several commercial and non-commercial database management systems, so writing a database-enabled script with PHP is fairly simple. +The most common use of PHP coding is probably as a replacement for CGI scripts. +This package contains the FastCGI Process Manager for PHP. + %package imap Summary: PHP IMAP extension Group: System/Servers @@ -143,7 +162,7 @@ Group: System/Servers Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release} Requires: %{name}-pdo = %{?epoch:%epoch:}%{version}-%{release} -%description -n php-mysql +%description mysql PHP is an HTML-embeddable scripting language. PHP offers built-in database integration for several commercial and non-commercial database management systems, so writing a database-enabled script with PHP is fairly simple. The most common use of PHP coding is probably as a replacement for CGI scripts. @@ -155,7 +174,7 @@ Summary: PHP MySQLi extension Group: System/Servers Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release} -%description -n php-mysqli +%description mysqli PHP is an HTML-embeddable scripting language. PHP offers built-in database integration for several commercial and non-commercial database management systems, so writing a database-enabled script with PHP is fairly simple. The most common use of PHP coding is probably as a replacement for CGI scripts. @@ -278,14 +297,14 @@ This package adds PHP support to the Apache Web Server. %debug_package %prep -%setup -q -#-D -T -#:<< _EOF +%setup -q -D -T +:<< _EOF %if %with_hardening_patch %patch0 -p1 -b .hardening %endif %patch1 -p1 -b .phpbuilddir #%patch6 -p1 +%patch7 -p0 # phpize dir sed -i "s|@libdir@\`/build|@libdir@\`/php/build|" scripts/phpize.in @@ -295,24 +314,21 @@ cp Zend/LICENSE Zend/ZEND_LICENSE cp TSRM/LICENSE TSRM_LICENSE #cp ext/gd/libgd/README gd_README -# remove unneded packages -#rm -f HTML_Template_IT-*.tar Net_UserAgent_Detect-*.tar -#popd - %build -#:<< _EOF -EXTENSION_DIR=%{_libdir}/php/extensions; export EXTENSION_DIR +:<< _EOF + +EXTENSION_DIR=%{_libdir}/php/extensions +export EXTENSION_DIR # Required to set default INCLUDE_PATH with %{_libdir}/php PEAR_INSTALLDIR="%{_libdir}/php"; export PEAR_INSTALLDIR -%configure \ + +_phpconfig="\ --sysconfdir=%{_sysconfdir}/php \ --with-libdir=%{_lib} \ --disable-debug \ --disable-rpath \ --with-pic \ --enable-sockets \ - --with-apxs2=%{_bindir}/apxs \ - --enable-shared \ --with-config-file-path=%{_sysconfdir}/php \ --with-config-file-scan-dir=%{_sysconfdir}/php/php.d \ --with-openssl=shared,%{_prefix} \ @@ -347,18 +363,54 @@ PEAR_INSTALLDIR="%{_libdir}/php"; export PEAR_INSTALLDIR --enable-intl \ --enable-gd \ --with-external-gd +" + +# FPM +mkdir build-fpm +cd build-fpm +ln -s ../configure . +%configure \ + ${_phpconfig} \ + --enable-cgi \ + --enable-fpm \ + --with-fpm-systemd \ + --with-fpm-acl \ + --with-fpm-user=nobody \ + --with-fpm-group=nobody \ + --enable-embed=shared %make +cd .. + +# Apache +# reuse the previous run; this will save us a lot of time +cp -a build-fpm build-apache +_EOF +cd build-apache + +%ifarch arm aarch64 +# Trick does not work on arm/aarch64 +make clean +%endif + +%configure \ + ${_phpconfig} \ + --with-apxs2=%{_bindir}/apxs + +%make +cd .. %install [ "%{buildroot}" != / ] && rm -rf "%{buildroot}" -# fake httpd.conf for apxs -install -D %{S:1} %{buildroot}%{_sysconfdir}/httpd/httpd.conf +make install -C build-fpm INSTALL_ROOT=%{buildroot}/ -make install INSTALL_ROOT=%{buildroot}/ +# Remove installed libphp7.so when no apxr is specified +rm -f %{buildroot}%{_prefix}/lib/libphp%{MAJver}.so -rm -f %{buildroot}%{_sysconfdir}/httpd/httpd.conf* +# PHP-fpm systemd files +install -D -m644 build-fpm/sapi/fpm/php-fpm.service %{buildroot}%{_unitdir}/php-fpm.service +install -D -m644 %{SOURCE2} %{buildroot}%{_tmpfilesdir}/php-fpm.conf install -D php.ini-production %{buildroot}%{_sysconfdir}/php/php.ini sed -i "\ @@ -366,15 +418,6 @@ s|\(extension_dir = \).*|\1%{_libdir}/php/extensions| s|\(;extension=\)php_\(.*\)dll|\1\2so|g;s|w32api.so|odbc.so|" \ %{buildroot}%{_sysconfdir}/php/php.ini -# create php.conf file for httpd -install -d %{buildroot}%{_sysconfdir}/httpd/httpd.d -cat > %{buildroot}%{_sysconfdir}/httpd/httpd.d/php.conf << _EOF - - SetHandler application/x-httpd-php - -DirectoryIndex index.php -_EOF - install -m 755 -d %{buildroot}%{_sysconfdir}/php/php.d install -m 755 -d %{buildroot}%{_localstatedir}/lib/php install -m 700 -d %{buildroot}%{_localstatedir}/lib/php/session @@ -392,9 +435,21 @@ EOF EOF done -# workaround +# workaround for Phar ln -sf %{_bindir}/phar.phar %{buildroot}%{_bindir}/phar +# Apache +install -d -m755 b%{buildroot}%{_libdir}/apache +install -D -m755 build-apache/libs/libphp7.so %{buildroot}%{_libdir}/apache/libphp%{MAJver}.so +install -d %{buildroot}%{_sysconfdir}/httpd/httpd.d +cat > %{buildroot}%{_sysconfdir}/httpd/httpd.d/php.conf << _EOF + + SetHandler application/x-httpd-php + +DirectoryIndex index.php +_EOF + +# # split out the PDO modules cat files.pdo_mysql >> files.mysql cat files.pdo_odbc >> files.odbc @@ -411,6 +466,22 @@ rm -f %{buildroot}/.lock %clean [ "%{buildroot}" != / ] && rm -rf "%{buildroot}" +%pre +%tmpfiles_create_package php-fpm %{SOURCE2} +: + +%preun fpm +%systemd_preun php-fpm +: + +%post fpm +%systemd_post php-fpm +: + +%postun fpm +%systemd_postun_with_restart php-fpm +: + %post -n apache-mod_php if [ $1 -ge 1 ]; then # delete PHP type definition in httpd.conf, it is now in httpd.d/php.conf @@ -423,7 +494,7 @@ if [ $1 -ge 1 ]; then service httpd condrestart fi -exit 0 +: %preun -n apache-mod_php if [ $1 -eq 0 ]; then @@ -433,7 +504,7 @@ if [ $1 -eq 0 ]; then sed -i "s|\(DirectoryIndex .*\)index.php\(.*\)|\1\2|" /etc/httpd/httpd.conf service httpd condrestart fi -exit 0 +: %files %defattr(-,root,root) @@ -459,7 +530,7 @@ exit 0 %doc LICENSE Zend/ZEND_LICENSE TSRM_LICENSE %doc php.ini-development php.ini-production -%files -n php-devel +%files devel %defattr(-,root,root) %{_bindir}/php-config %{_bindir}/phpize @@ -469,48 +540,64 @@ exit 0 %{_mandir}/man1/phpize.1* %doc CODING_STANDARDS.md EXTENSIONS README.md NEWS +%files fpm +%defattr(-,root,root) +%config(noreplace) %{_sysconfdir}/php/php-fpm.conf +%dir %{_sysconfdir}/php/php-fpm.d +%config(noreplace) %{_sysconfdir}/php/php-fpm.d/www.conf +%{_sbindir}/php-fpm +%{_tmpfilesdir}/php-fpm.conf +%{_unitdir}/php-fpm.service +%dir %{_datadir}/fpm +%{_datadir}/fpm/status.html +%{_mandir}/man8/php-fpm.8* + +%files imap -f files.imap +%defattr(-,root,root) + +%files ldap -f files.ldap +%defattr(-,root,root) + +%files mysql -f files.mysql +%defattr(-,root,root) + +%files mysqli -f files.mysqli +%defattr(-,root,root) + +%files odbc -f files.odbc +%defattr(-,root,root) + +%files opcache -f files.opcache +%defattr(-,root,root) + +%files openssl -f files.openssl +%defattr(-,root,root) + +%files pdo -f files.pdo +%defattr(-,root,root) + +%files pgsql -f files.pgsql +%defattr(-,root,root) + +%files sqlite -f files.sqlite3 +%defattr(-,root,root) + +%files xsl -f files.xsl +%defattr(-,root,root) + +%files zip -f files.zip +%defattr(-,root,root) + %files -n apache-mod_php %defattr(-,root,root) -%{_libdir}/apache/libphp7.so +%{_libdir}/apache/libphp%{MAJver}.so %config(noreplace) %{_sysconfdir}/httpd/httpd.d/php.conf -%files -n php-imap -f files.imap -%defattr(-,root,root) - -%files -n php-ldap -f files.ldap -%defattr(-,root,root) - -%files -n php-mysql -f files.mysql -%defattr(-,root,root) - -%files -n php-mysqli -f files.mysqli -%defattr(-,root,root) - -%files -n php-odbc -f files.odbc -%defattr(-,root,root) - -%files -n php-opcache -f files.opcache -%defattr(-,root,root) - -%files -n php-openssl -f files.openssl -%defattr(-,root,root) - -%files -n php-pdo -f files.pdo -%defattr(-,root,root) - -%files -n php-pgsql -f files.pgsql -%defattr(-,root,root) - -%files -n php-sqlite -f files.sqlite3 -%defattr(-,root,root) - -%files -n php-xsl -f files.xsl -%defattr(-,root,root) - -%files -n php-zip -f files.zip -%defattr(-,root,root) - %changelog +* Mon Aug 30 2021 Silvan Calarco 7.4.23-1mamba +- update to 7.4.23 +- added php-fpm + * Thu Apr 08 2021 Silvan Calarco 7.4.15-2mamba - rebuilt with --with-zip=shared to fix ZipArchive support