diff --git a/extra/php-legacy/PKGBUILD b/extra/php-legacy/PKGBUILD new file mode 100644 index 000000000..fab2b6f08 --- /dev/null +++ b/extra/php-legacy/PKGBUILD @@ -0,0 +1,333 @@ +# Maintainer: Pierre Schmitz + +# ALARM: Kevin Mihelich +# - add -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 to CPPFLAGS + +pkgbase=php-legacy +pkgname=('php-legacy' + 'php-legacy-cgi' + 'php-legacy-apache' + 'php-legacy-fpm' + 'php-legacy-embed' + 'php-legacy-phpdbg' + 'php-legacy-dblib' + 'php-legacy-enchant' + 'php-legacy-gd' + 'php-legacy-sodium' + 'php-legacy-odbc' + 'php-legacy-pgsql' + 'php-legacy-pspell' + 'php-legacy-snmp' + 'php-legacy-sqlite' + 'php-legacy-tidy' + 'php-legacy-xsl') +pkgver=8.1.14 +pkgrel=1.1 +arch=('x86_64') +license=('PHP') +url='https://www.php.net/' +makedepends=('apache' 'aspell' 'gdbm' 'enchant' 'gd' 'gmp' 'icu' 'libsodium' 'libxslt' 'libzip' 'net-snmp' + 'postgresql-libs' 'sqlite' 'systemd' 'tidy' 'unixodbc' 'curl' 'libtool' 'postfix' 'freetds' 'pcre2' 'libnsl' + 'oniguruma') +checkdepends=('procps-ng') +options=('debug') +source=("https://php.net/distributions/php-${pkgver}.tar.xz"{,.asc} + 'apache.patch' 'apache.conf' 'php-fpm.patch' 'php-fpm.tmpfiles' 'php.ini.patch' 'php-legacy.patch') +sha256sums=('e16e47a872d58685913ac848ce92ec49f42c1828110c98c65fb6265a08724a1a' + 'SKIP' + '702b163c66c65af92dcad8d79f41bda84bcd5d863235fcf1497c33a86db9e4ca' + '2173046ac22ac50c7a6721306d3f79b2086f66a7a6ff5d8af249a474763197a1' + '632aaa2e87f7d687b0b55a6a89e473d57891fdb0d20eef1b7733dabc02b78ba8' + 'f3236ca866095d5e42e51e3fa600082ccd0afcfb7f1aecbeb286ef9d4f0dd564' + '0d651c14cbd76bf430cd9b0c3b3ebf12fd19bf3ca4a18cb6dc329e0352aabe66' + 'a1859005c9fad835079470e6fb3c0721b9bd024c8f3ae1f34cb082ec41c63194') +validpgpkeys=('F1F692238FBC1666E5A5CCD4199F9DFEF6FFBAFD' + '39B641343D8C104B2B146DC3F9C39DC0B9698544') +_interpreter=${pkgver%.*} + +prepare() { + cd "${srcdir}/php-${pkgver}" + + patch -p0 -i "${srcdir}/apache.patch" + patch -p0 -i "${srcdir}/php-fpm.patch" + patch -p0 -i "${srcdir}/php.ini.patch" + patch -p0 -i "${srcdir}/php-legacy.patch" + autoconf + + # Disable failing tests + rm tests/output/stream_isatty_*.phpt + rm Zend/tests/arginfo_zpp_mismatch*.phpt +} + +build() { + CPPFLAGS+=' -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' + local _phpconfig="--srcdir=../php-${pkgver} \ + --config-cache \ + --prefix=/usr \ + --sbindir=/usr/bin \ + --sysconfdir=/etc/php-legacy \ + --localstatedir=/var \ + --with-layout=GNU \ + --with-config-file-path=/etc/php-legacy \ + --with-config-file-scan-dir=/etc/php-legacy/conf.d \ + --disable-rpath \ + --mandir=/usr/share/man \ + --libdir=/usr/lib/php-legacy \ + --datarootdir=/usr/share/php-legacy \ + --datadir=/usr/share/php-legacy \ + --program-suffix=-legacy \ + --includedir=/usr/include/php-legacy \ + --disable-gcc-global-regs \ + " + + local _phpextensions="\ + --enable-bcmath=shared \ + --enable-calendar=shared \ + --enable-dba=shared \ + --enable-exif=shared \ + --enable-ftp=shared \ + --enable-gd=shared \ + --enable-intl=shared \ + --enable-mbstring \ + --enable-pcntl \ + --enable-shmop=shared \ + --enable-soap=shared \ + --enable-sockets=shared \ + --enable-sysvmsg=shared \ + --enable-sysvsem=shared \ + --enable-sysvshm=shared \ + --with-bz2=shared \ + --with-curl=shared \ + --with-enchant=shared \ + --with-external-gd \ + --with-external-pcre \ + --with-ffi=shared \ + --with-gdbm \ + --with-gettext=shared \ + --with-gmp=shared \ + --with-iconv=shared \ + --with-kerberos \ + --with-ldap=shared \ + --with-ldap-sasl \ + --with-mhash \ + --with-mysql-sock=/run/mysqld/mysqld.sock \ + --with-mysqli=shared,mysqlnd \ + --with-openssl \ + --with-password-argon2 \ + --with-pdo-dblib=shared,/usr \ + --with-pdo-mysql=shared,mysqlnd \ + --with-pdo-odbc=shared,unixODBC,/usr \ + --with-pdo-pgsql=shared \ + --with-pdo-sqlite=shared \ + --with-pgsql=shared \ + --with-pspell=shared \ + --with-readline \ + --with-snmp=shared \ + --with-sodium=shared \ + --with-sqlite3=shared \ + --with-tidy=shared \ + --with-unixODBC=shared \ + --with-xsl=shared \ + --with-zip=shared \ + --with-zlib \ + " + + EXTENSION_DIR=/usr/lib/php-legacy/modules + export EXTENSION_DIR + + mkdir "${srcdir}/build" + cd "${srcdir}/build" + ln -s "../php-${pkgver}/configure" + ./configure ${_phpconfig} \ + --enable-cgi \ + --enable-fpm \ + --with-fpm-systemd \ + --with-fpm-acl \ + --with-fpm-user=http \ + --with-fpm-group=http \ + --enable-embed=shared \ + ${_phpextensions} + make + + # apache + # reuse the previous run; this will save us a lot of time + cp -a "${srcdir}/build" "${srcdir}/build-apache" + cd "${srcdir}/build-apache" + ./configure ${_phpconfig} \ + --with-apxs2 \ + ${_phpextensions} + make + + # phpdbg + cp -a "${srcdir}/build" "${srcdir}/build-phpdbg" + cd "${srcdir}/build-phpdbg" + ./configure ${_phpconfig} \ + --enable-phpdbg \ + ${_phpextensions} + make +} + +check() { + cd "${srcdir}/build" + + # Check if sendmail was configured correctly (FS#47600) + sapi/cli/php -n -r 'echo ini_get("sendmail_path");' | grep -q '/usr/bin/sendmail' + + export REPORT_EXIT_STATUS=1 + export NO_INTERACTION=1 + export SKIP_ONLINE_TESTS=1 + export SKIP_SLOW_TESTS=1 + export TEST_PHP_ARGS="-j$(nproc)" + export TESTS='tests Zend' + + make test +} + +package_php-legacy() { + pkgdesc='A general-purpose scripting language that is especially suited to web development' + depends=('libxml2' 'curl' 'libzip' 'pcre2' 'argon2' 'oniguruma' 'gdbm') + provides=("php-interpreter=${_interpreter}" "php-legacy-intl=${pkgver}") + replaces=('php-legacy-intl') + conflicts=('php-legacy-intl') + backup=('etc/php-legacy/php.ini') + + cd "${srcdir}/build" + make -j1 INSTALL_ROOT="${pkgdir}" install-{modules,cli,build,headers,programs,pharcmd} + install -D -m644 "${srcdir}/php-${pkgver}/php.ini-production" "${pkgdir}/etc/php-legacy/php.ini" + install -d -m755 "${pkgdir}/etc/php-legacy/conf.d/" + + # remove static modules + rm -f "${pkgdir}/usr/lib/php-legacy/modules/"*.a + # remove modules provided by sub packages + rm -f "${pkgdir}/usr/lib/php-legacy/modules/"{enchant,gd,sodium,odbc,pdo_dblib,pdo_odbc,pgsql,pdo_pgsql,pspell,snmp,sqlite3,pdo_sqlite,tidy,xsl}.so + # remove empty directory + rmdir "${pkgdir}/usr/include/php-legacy/php/include" +} + +package_php-legacy-cgi() { + pkgdesc='CGI and FCGI SAPI for PHP' + depends=('php-legacy') + + cd "${srcdir}/build" + make -j1 INSTALL_ROOT="${pkgdir}" install-cgi +} + +package_php-legacy-apache() { + pkgdesc='Apache SAPI for PHP' + depends=('php-legacy' 'apache' 'libnsl') + backup=('etc/httpd/conf/extra/php-legacy_module.conf') + + install -D -m755 "${srcdir}/build-apache/libs/libphp.so" "${pkgdir}/usr/lib/httpd/modules/libphp-legacy.so" + install -D -m644 "${srcdir}/apache.conf" "${pkgdir}/etc/httpd/conf/extra/php-legacy_module.conf" +} + +package_php-legacy-fpm() { + pkgdesc='FastCGI Process Manager for PHP' + depends=('php-legacy' 'systemd') + backup=('etc/php-legacy/php-fpm.conf' 'etc/php-legacy/php-fpm.d/www.conf') + options=('!emptydirs') + + cd "${srcdir}/build" + make -j1 INSTALL_ROOT="${pkgdir}" install-fpm + install -D -m644 sapi/fpm/php-fpm.service "${pkgdir}/usr/lib/systemd/system/php-legacy-fpm.service" + install -D -m644 "${srcdir}/php-fpm.tmpfiles" "${pkgdir}/usr/lib/tmpfiles.d/php-legacy-fpm.conf" +} + +package_php-legacy-embed() { + pkgdesc='Embedded PHP SAPI library' + depends=('php-legacy' 'systemd-libs' 'libnsl' 'libxcrypt') + options=('!emptydirs') + + cd "${srcdir}/build" + make -j1 INSTALL_ROOT="${pkgdir}" PHP_SAPI=embed install-sapi + mv "${pkgdir}/usr/lib/libphp.so" "${pkgdir}/usr/lib/libphp-legacy.so" +} + +package_php-legacy-phpdbg() { + pkgdesc='Interactive PHP debugger' + depends=('php-legacy') + options=('!emptydirs') + + cd "${srcdir}/build-phpdbg" + make -j1 INSTALL_ROOT="${pkgdir}" install-phpdbg +} + +package_php-legacy-dblib() { + pkgdesc='dblib module for PHP' + depends=('php-legacy' 'freetds') + + install -D -m755 "${srcdir}/build/modules/pdo_dblib.so" "${pkgdir}/usr/lib/php-legacy/modules/pdo_dblib.so" +} + +package_php-legacy-enchant() { + pkgdesc='enchant module for PHP' + depends=('php-legacy' 'enchant') + + install -D -m755 "${srcdir}/build/modules/enchant.so" "${pkgdir}/usr/lib/php-legacy/modules/enchant.so" +} + +package_php-legacy-gd() { + pkgdesc='gd module for PHP' + depends=('php-legacy' 'gd') + + install -D -m755 "${srcdir}/build/modules/gd.so" "${pkgdir}/usr/lib/php-legacy/modules/gd.so" +} + +package_php-legacy-sodium() { + pkgdesc='sodium module for PHP' + depends=('php-legacy' 'libsodium') + + install -D -m755 "${srcdir}/build/modules/sodium.so" "${pkgdir}/usr/lib/php-legacy/modules/sodium.so" +} + +package_php-legacy-odbc() { + pkgdesc='ODBC modules for PHP' + depends=('php-legacy' 'unixodbc') + + install -D -m755 "${srcdir}/build/modules/odbc.so" "${pkgdir}/usr/lib/php-legacy/modules/odbc.so" + install -D -m755 "${srcdir}/build/modules/pdo_odbc.so" "${pkgdir}/usr/lib/php-legacy/modules/pdo_odbc.so" +} + +package_php-legacy-pgsql() { + pkgdesc='PostgreSQL modules for PHP' + depends=('php-legacy' 'postgresql-libs') + + install -D -m755 "${srcdir}/build/modules/pgsql.so" "${pkgdir}/usr/lib/php-legacy/modules/pgsql.so" + install -D -m755 "${srcdir}/build/modules/pdo_pgsql.so" "${pkgdir}/usr/lib/php-legacy/modules/pdo_pgsql.so" +} + +package_php-legacy-pspell() { + pkgdesc='pspell module for PHP' + depends=('php-legacy' 'aspell') + + install -D -m755 "${srcdir}/build/modules/pspell.so" "${pkgdir}/usr/lib/php-legacy/modules/pspell.so" +} + +package_php-legacy-snmp() { + pkgdesc='snmp module for PHP' + depends=('php-legacy' 'net-snmp') + + install -D -m755 "${srcdir}/build/modules/snmp.so" "${pkgdir}/usr/lib/php-legacy/modules/snmp.so" +} + +package_php-legacy-sqlite() { + pkgdesc='sqlite module for PHP' + depends=('php-legacy' 'sqlite') + + install -D -m755 "${srcdir}/build/modules/sqlite3.so" "${pkgdir}/usr/lib/php-legacy/modules/sqlite3.so" + install -D -m755 "${srcdir}/build/modules/pdo_sqlite.so" "${pkgdir}/usr/lib/php-legacy/modules/pdo_sqlite.so" +} + +package_php-legacy-tidy() { + pkgdesc='tidy module for PHP' + depends=('php-legacy' 'tidy') + + install -D -m755 "${srcdir}/build/modules/tidy.so" "${pkgdir}/usr/lib/php-legacy/modules/tidy.so" +} + +package_php-legacy-xsl() { + pkgdesc='xsl module for PHP' + depends=('php-legacy' 'libxslt') + + install -D -m755 "${srcdir}/build/modules/xsl.so" "${pkgdir}/usr/lib/php-legacy/modules/xsl.so" +} diff --git a/extra/php-legacy/apache.conf b/extra/php-legacy/apache.conf new file mode 100644 index 000000000..a7840cdd0 --- /dev/null +++ b/extra/php-legacy/apache.conf @@ -0,0 +1,13 @@ +# Required modules: dir_module, php-legacy_module + + + + DirectoryIndex index.php index.html + + SetHandler application/x-httpd-php + + + SetHandler application/x-httpd-php-source + + + diff --git a/extra/php-legacy/apache.patch b/extra/php-legacy/apache.patch new file mode 100644 index 000000000..d46aceef4 --- /dev/null +++ b/extra/php-legacy/apache.patch @@ -0,0 +1,10 @@ +--- sapi/apache2handler/config.m4.orig ++++ sapi/apache2handler/config.m4 +@@ -114,7 +114,6 @@ + PHP_BUILD_THREAD_SAFE + fi + else +- APACHE_THREADED_MPM=`$APXS_HTTPD -V 2>/dev/null | grep 'threaded:.*yes'` + if test -n "$APACHE_THREADED_MPM"; then + PHP_BUILD_THREAD_SAFE + fi diff --git a/extra/php-legacy/generate_patches b/extra/php-legacy/generate_patches new file mode 100755 index 000000000..293bd046d --- /dev/null +++ b/extra/php-legacy/generate_patches @@ -0,0 +1,106 @@ +#!/bin/bash + +. PKGBUILD + +makepkg -o --nodeps --noprepare --skipinteg + +pushd "src/php-${pkgver}" + +sed '/APACHE_THREADED_MPM=/d' -i.orig sapi/apache2handler/config.m4 + +sed 's/.conf.default/.conf/g' -i.orig sapi/fpm/Makefile.frag + +sed \ + -e 's#run/php-fpm.pid#/run/php-fpm-legacy/php-fpm.pid#' \ + -e 's#^;error_log =.*#error_log = syslog#' \ + -i.orig sapi/fpm/php-fpm.conf.in + +sed \ + -e 's#^listen =.*#listen = /run/php-fpm-legacy/php-fpm.sock#' \ + -e 's#^;listen.owner =#listen.owner =#' \ + -e 's#^;listen.group =#listen.group =#' \ + -e 's#^;chdir =.*#;chdir = /srv/http#' \ + -i.orig sapi/fpm/www.conf.in + +sed \ + -e 's#^PIDFile=.*#PIDFile=/run/php-fpm-legacy/php-fpm.pid#' \ + -e 's#^ExecStart=@EXPANDED_SBINDIR@/php-fpm#ExecStart=@EXPANDED_SBINDIR@/php-fpm-legacy#' \ + -i.orig sapi/fpm/php-fpm.service.in + +# available extensions after build +# find /var/lib/archbuild/*-x86_64/*/build/php/src/build/modules -name '*.so' -exec basename {} .so \; | sort -u +availableExtensions=( + bcmath + bz2 + calendar + curl + dba + enchant + exif + ffi + ftp + gd + gettext + gmp + iconv + intl + ldap + mysqli + odbc + opcache + pdo_dblib + pdo_mysql + pdo_odbc + pdo_pgsql + pdo_sqlite + pgsql + pspell + shmop + snmp + soap + sockets + sodium + sqlite3 + sysvmsg + sysvsem + sysvshm + tidy + xsl + zip +) + +extensions='' +for extension in "${availableExtensions[@]}"; do + if [[ $extension == 'curl' ]]; then + extensions+="extension=${extension}\n" + elif [[ $extension == 'opcache' ]]; then + extensions+=";zend_extension=${extension}\n" + elif [[ $extension == 'zip' ]]; then + extensions+="extension=${extension}\n" + else + extensions+=";extension=${extension}\n" + fi +done + +sed \ + -r ":a;N;\$!ba;s/; Notes for Windows environments :\n.+;?extension=\w+\n/${extensions}/g" \ + -i.orig php.ini-production +sed \ + -e 's#^;extension_dir = "\./"$#extension_dir = "/usr/lib/php-legacy/modules/"#g' \ + -i php.ini-production + +diff -u sapi/apache2handler/config.m4.orig sapi/apache2handler/config.m4 | filterdiff --clean --remove-timestamps > ../../apache.patch + +{ + diff -u sapi/fpm/Makefile.frag.orig sapi/fpm/Makefile.frag + diff -u sapi/fpm/php-fpm.conf.in.orig sapi/fpm/php-fpm.conf.in + diff -u sapi/fpm/www.conf.in.orig sapi/fpm/www.conf.in + diff -u sapi/fpm/php-fpm.service.in.orig sapi/fpm/php-fpm.service.in +} | filterdiff --clean --remove-timestamps > ../../php-fpm.patch + +diff -u php.ini-production.orig php.ini-production | filterdiff --clean --remove-timestamps > ../../php.ini.patch + +sed -i.orig 's/ \[php-config\],/ [php-config-legacy],/g' scripts/phpize.m4 +diff -u scripts/phpize.m4.orig scripts/phpize.m4 | filterdiff --clean --remove-timestamps > ../../php-legacy.patch + +popd diff --git a/extra/php-legacy/keys/pgp/39B641343D8C104B2B146DC3F9C39DC0B9698544.asc b/extra/php-legacy/keys/pgp/39B641343D8C104B2B146DC3F9C39DC0B9698544.asc new file mode 100644 index 000000000..18dd95e32 --- /dev/null +++ b/extra/php-legacy/keys/pgp/39B641343D8C104B2B146DC3F9C39DC0B9698544.asc @@ -0,0 +1,52 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +CwkF +=Wi8j +-----END PGP PUBLIC KEY BLOCK----- diff --git a/extra/php-legacy/keys/pgp/F1F692238FBC1666E5A5CCD4199F9DFEF6FFBAFD.asc b/extra/php-legacy/keys/pgp/F1F692238FBC1666E5A5CCD4199F9DFEF6FFBAFD.asc new file mode 100644 index 000000000..2793b4259 --- /dev/null +++ b/extra/php-legacy/keys/pgp/F1F692238FBC1666E5A5CCD4199F9DFEF6FFBAFD.asc @@ -0,0 +1,52 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +qeBTcg== +=pA4h +-----END PGP PUBLIC KEY BLOCK----- diff --git a/extra/php-legacy/php-fpm.patch b/extra/php-legacy/php-fpm.patch new file mode 100644 index 000000000..c5dbce3e4 --- /dev/null +++ b/extra/php-legacy/php-fpm.patch @@ -0,0 +1,76 @@ +--- 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-legacy/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-legacy/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. +@@ -395,7 +395,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,8 +8,8 @@ + + [Service] + Type=@php_fpm_systemd@ +-PIDFile=@EXPANDED_LOCALSTATEDIR@/run/php-fpm.pid +-ExecStart=@EXPANDED_SBINDIR@/php-fpm --nodaemonize --fpm-config @EXPANDED_SYSCONFDIR@/php-fpm.conf ++PIDFile=/run/php-fpm-legacy/php-fpm.pid ++ExecStart=@EXPANDED_SBINDIR@/php-fpm-legacy --nodaemonize --fpm-config @EXPANDED_SYSCONFDIR@/php-fpm.conf + ExecReload=/bin/kill -USR2 $MAINPID + + # Set up a new file system namespace and mounts private /tmp and /var/tmp directories diff --git a/extra/php-legacy/php-fpm.tmpfiles b/extra/php-legacy/php-fpm.tmpfiles new file mode 100644 index 000000000..97bb5d02c --- /dev/null +++ b/extra/php-legacy/php-fpm.tmpfiles @@ -0,0 +1 @@ +d /run/php-fpm-legacy 755 root root diff --git a/extra/php-legacy/php-legacy.patch b/extra/php-legacy/php-legacy.patch new file mode 100644 index 000000000..0a7ba940d --- /dev/null +++ b/extra/php-legacy/php-legacy.patch @@ -0,0 +1,11 @@ +--- scripts/phpize.m4.orig ++++ scripts/phpize.m4 +@@ -51,7 +51,7 @@ + PHP_ARG_WITH([php-config],, + [AS_HELP_STRING([--with-php-config=PATH], + [Path to php-config [php-config]])], +- [php-config], ++ [php-config-legacy], + [no]) + + dnl For BC. diff --git a/extra/php-legacy/php.ini.patch b/extra/php-legacy/php.ini.patch new file mode 100644 index 000000000..5188c11c7 --- /dev/null +++ b/extra/php-legacy/php.ini.patch @@ -0,0 +1,83 @@ +--- php.ini-production.orig ++++ php.ini-production +@@ -760,7 +760,7 @@ + + ; Directory in which the loadable extensions (modules) reside. + ; https://php.net/extension-dir +-;extension_dir = "./" ++extension_dir = "/usr/lib/php-legacy/modules/" + ; On windows: + ;extension_dir = "ext" + +@@ -908,56 +908,43 @@ + ; deprecated in a future PHP major version. So, when it is possible, please + ; move to the new ('extension=) syntax. + ; +-; Notes for Windows environments : +-; +-; - Many DLL files are located in the extensions/ (PHP 4) or ext/ (PHP 5+) +-; extension folders as well as the separate PECL DLL download (PHP 5+). +-; Be sure to appropriately set the extension_dir directive. +-; ++;extension=bcmath + ;extension=bz2 +- +-; The ldap extension must be before curl if OpenSSL 1.0.2 and OpenLDAP is used +-; otherwise it results in segfault when unloading after using SASL. +-; See https://github.com/php/php-src/issues/8620 for more info. +-;extension=ldap +- +-;extension=curl ++;extension=calendar ++extension=curl ++;extension=dba ++;extension=enchant ++;extension=exif + ;extension=ffi + ;extension=ftp +-;extension=fileinfo + ;extension=gd + ;extension=gettext + ;extension=gmp ++;extension=iconv + ;extension=intl +-;extension=imap +-;extension=mbstring +-;extension=exif ; Must be after mbstring as it depends on it ++;extension=ldap + ;extension=mysqli +-;extension=oci8_12c ; Use with Oracle Database 12c Instant Client +-;extension=oci8_19 ; Use with Oracle Database 19 Instant Client + ;extension=odbc +-;extension=openssl +-;extension=pdo_firebird ++;zend_extension=opcache ++;extension=pdo_dblib + ;extension=pdo_mysql +-;extension=pdo_oci + ;extension=pdo_odbc + ;extension=pdo_pgsql + ;extension=pdo_sqlite + ;extension=pgsql ++;extension=pspell + ;extension=shmop +- +-; The MIBS data available in the PHP distribution must be installed. +-; See https://www.php.net/manual/en/snmp.installation.php + ;extension=snmp +- + ;extension=soap + ;extension=sockets + ;extension=sodium + ;extension=sqlite3 ++;extension=sysvmsg ++;extension=sysvsem ++;extension=sysvshm + ;extension=tidy + ;extension=xsl +- +-;zend_extension=opcache ++extension=zip + + ;;;;;;;;;;;;;;;;;;; + ; Module Settings ;