Debian12,Linux 0

    Debian12 php8.4.11 编译安装

    安装编译环境

    sudo apt update
    sudo apt install build-essential autoconf automake libtool libsqlite3-dev pkg-config libjpeg-dev libpng-dev libavif-dev libxml2-dev libbz2-dev libcurl4-gnutls-dev libssl-dev libffi-dev libwebp-dev libonig-dev libzip-dev

    下载软件包并解压,其他版本下载地址PHP: Downloads

    cd /usr/local/src/
    wget https://www.php.net/distributions/php-8.4.11.tar.gz
    tar -zxvf php-8.4.11.tar.gz && cd php-8.4.11

    创建用户组与用户,此用户不可用于登录

    sudo groupadd www && sudo useradd -g www -s /usr/sbin/nologin www

    编译参数说明 非必须执行

    ./configure --help

    输出为

    Fine tuning of the installation directories:
      --bindir=DIR            user executables [EPREFIX/bin]
      --sbindir=DIR           system admin executables [EPREFIX/sbin]
      --libexecdir=DIR        program executables [EPREFIX/libexec]
      --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
      --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
      --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
      --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
      --libdir=DIR            object code libraries [EPREFIX/lib]
      --includedir=DIR        C header files [PREFIX/include]
      --oldincludedir=DIR     C header files for non-gcc [/usr/include]
      --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
      --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
      --infodir=DIR           info documentation [DATAROOTDIR/info]
      --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
      --mandir=DIR            man documentation [DATAROOTDIR/man]
      --docdir=DIR            documentation root [DATAROOTDIR/doc/php]
      --htmldir=DIR           html documentation [DOCDIR]
      --dvidir=DIR            dvi documentation [DOCDIR]
      --pdfdir=DIR            pdf documentation [DOCDIR]
      --psdir=DIR             ps documentation [DOCDIR]
    
    Program names:
      --program-prefix=PREFIX            prepend PREFIX to installed program names
      --program-suffix=SUFFIX            append SUFFIX to installed program names
      --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
    
    System types:
      --build=BUILD     configure for building on BUILD [guessed]
      --host=HOST       cross-compile to build programs to run on HOST [BUILD]
      --target=TARGET   configure for building compilers for TARGET [HOST]
    
    Optional Features and Packages:
      --disable-option-checking  ignore unrecognized --enable/--with options
      --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
      --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
      --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
      --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
      --with-libdir=NAME      Look for libraries in .../NAME rather than .../lib
      --disable-rpath         Disable passing additional runtime library search
                              paths
      --enable-re2c-cgoto     Enable re2c -g flag to optimize conditional jumps
                              using computed goto extension, if supported by the
                              compiler
    
    SAPI modules:
      --with-apxs2[=FILE]     Build shared Apache 2 handler module. FILE is the
                              optional pathname to the Apache apxs tool [apxs]
      --disable-cli           Disable building CLI version of PHP (this forces
                              --without-pear)
      --enable-embed[=TYPE]   Enable building of embedded SAPI library TYPE is
                              either 'shared' or 'static'. [TYPE=shared]
      --enable-fpm            Enable building of the fpm SAPI executable
      --with-fpm-user[=USER]  Set the user for php-fpm to run as. (default:
                              nobody)
      --with-fpm-group[=GRP]  Set the group for php-fpm to run as. For a system
                              user, this should usually be set to match the fpm
                              username (default: nobody)
      --with-fpm-systemd      Activate systemd integration
      --with-fpm-acl          Use POSIX Access Control Lists
      --with-fpm-apparmor     Support AppArmor confinement through libapparmor
      --with-fpm-selinux      Support SELinux policy library
      --enable-fuzzer         Build PHP as Clang fuzzing test module (for
                              developers)
      --enable-litespeed      Build PHP as litespeed module
      --disable-phpdbg        Disable building of phpdbg
      --enable-phpdbg-debug   Build phpdbg in debug mode to enable additional
                              diagnostic output for developing and troubleshooting
                              phpdbg itself
      --enable-phpdbg-readline
                              Enable readline support in phpdbg (depends on static
                              ext/readline)
      --disable-cgi           Disable building CGI version of PHP
      --with-valgrind         Enable Valgrind support
    
    General settings:
      --enable-gcov           Enable GCOV code coverage - FOR DEVELOPERS ONLY!!
      --enable-debug          Compile with debugging symbols
      --enable-debug-assertions
                              Compile with debug assertions even in release mode
      --enable-zts            Enable thread safety
      --enable-rtld-now       Use dlopen with RTLD_NOW instead of RTLD_LAZY
      --with-layout=TYPE      Set how installed files will be laid out. Type can
                              be either PHP or GNU [PHP]
      --with-config-file-path=PATH
                              Set the path in which to look for php.ini
                              [PREFIX/lib]
      --with-config-file-scan-dir=PATH
                              Set the path where to scan for configuration files
      --enable-sigchild       Enable PHP's own SIGCHLD handler
      --enable-libgcc         Enable explicitly linking against libgcc
      --disable-short-tags    Disable the short-form <? start tag by default
      --enable-dmalloc        Enable dmalloc
      --disable-ipv6          Disable IPv6 support
      --enable-dtrace         Enable DTrace support
      --enable-fd-setsize     Set size of descriptor sets
      --enable-werror         Enable -Werror
      --enable-memory-sanitizer
                              Enable memory sanitizer (clang only)
      --enable-address-sanitizer
                              Enable address sanitizer
      --enable-undefined-sanitizer
                              Enable undefined sanitizer
    
    Extensions:
      --with-EXTENSION=[shared[,PATH]]
    
        NOTE: Not all extensions can be built as 'shared'.
    
        Example: --with-foobar=shared,/usr/local/foobar/
    
          o Builds the foobar extension as shared extension.
          o foobar package install prefix is /usr/local/foobar/
    
      --disable-all           Disable all extensions which are enabled by default
      --without-libxml        Build without LIBXML support
      --with-openssl          Include OpenSSL support (requires OpenSSL >= 1.1.1)
      --with-system-ciphers   OPENSSL: Use system default cipher list instead of
                              hardcoded value
      --with-openssl-legacy-provider
                              OPENSSL: Load legacy algorithm provider in addition
                              to default provider
      --with-openssl-argon2   OPENSSL: Enable argon2 password hashing
      --with-external-pcre    Use external library for PCRE support
      --without-pcre-jit      Disable PCRE JIT functionality
      --without-sqlite3       Do not include SQLite3 support.
      --with-zlib             Include ZLIB support (requires zlib library)
      --enable-bcmath         Enable bc style precision math functions
      --with-bz2[=DIR]        Include BZip2 support
      --enable-calendar       Enable support for calendar conversion
      --disable-ctype         Disable ctype functions
      --with-curl             Include cURL support
      --enable-dba            Build DBA with bundled modules. To build shared DBA
                              extension use --enable-dba=shared
      --with-qdbm[=DIR]       DBA: QDBM support
      --with-gdbm[=DIR]       DBA: GDBM support
      --with-ndbm[=DIR]       DBA: NDBM support
      --with-db4[=DIR]        DBA: Oracle Berkeley DB 4.x or 5.x support
      --with-db3[=DIR]        DBA: Oracle Berkeley DB 3.x support
      --with-db2[=DIR]        DBA: Oracle Berkeley DB 2.x support
      --with-db1[=DIR]        DBA: Oracle Berkeley DB 1.x support/emulation
      --with-dbm[=DIR]        DBA: DBM support
      --with-tcadb[=DIR]      DBA: Tokyo Cabinet abstract DB support
      --with-lmdb[=DIR]       DBA: Lightning memory-mapped database support
      --without-cdb[=DIR]     DBA: CDB support (bundled)
      --disable-inifile       DBA: INI support (bundled)
      --disable-flatfile      DBA: FlatFile support (bundled)
      --enable-dl-test        Enable dl_test extension
      --disable-dom           Disable DOM support
      --with-enchant          Include Enchant support
      --enable-exif           Enable EXIF (metadata from images) support
      --with-ffi              Include FFI support
      --disable-fileinfo      Disable fileinfo support
      --disable-filter        Disable input filter support
      --enable-ftp            Enable FTP support
      --with-ftp-ssl          Explicitly enable FTP over SSL support when building
                              without openssl extension or when using phpize. If
                              the openssl extension is enabled at the configure
                              step (--with-openssl), FTP-SSL is enabled implicitly
                              regardless of this option.
      --enable-gd             Include GD support
      --with-external-gd      Use external libgd
      --with-avif             GD: Enable AVIF support (only for bundled libgd)
      --with-webp             GD: Enable WEBP support (only for bundled libgd)
      --with-jpeg             GD: Enable JPEG support (only for bundled libgd)
      --with-xpm              GD: Enable XPM support (only for bundled libgd)
      --with-freetype         GD: Enable FreeType 2 support (only for bundled
                              libgd)
      --enable-gd-jis-conv    GD: Enable JIS-mapped Japanese font support (only
                              for bundled libgd)
      --with-gettext[=DIR]    Include GNU gettext support
      --with-gmp[=DIR]        Include GNU MP support. Use PKG_CONFIG_PATH (or
                              GMP_CFLAGS and GMP_LIBS) environment variables, or
                              alternatively the optional DIR argument to customize
                              where to look for the GNU MP library.
      --with-mhash            Include mhash support
      --without-iconv[=DIR]   Exclude iconv support
      --enable-intl           Enable internationalization support
      --with-ldap[=DIR]       Include LDAP support
      --with-ldap-sasl        LDAP: Build with Cyrus SASL support
      --enable-mbstring       Enable multibyte string support
      --disable-mbregex       MBSTRING: Disable multibyte regex support
      --with-mysqli           Include MySQLi support. The MySQL native driver will
                              be used
      --with-mysql-sock[=SOCKPATH]
                              MySQLi/PDO_MYSQL: Location of the MySQL Unix socket
                              pointer. If unspecified, the default locations are
                              searched
      --with-odbcver[=HEX]    Force support for the passed ODBC version. A hex
                              number is expected, default 0x0350. Use the special
                              value of 0 to prevent an explicit ODBCVER to be
                              defined.
      --with-adabas[=DIR]     Include Adabas D support [/usr/local]
      --with-sapdb[=DIR]      Include SAP DB support [/usr/local]
      --with-solid[=DIR]      Include Solid support [/usr/local/solid]
      --with-ibm-db2[=DIR]    Include IBM DB2 support [/home/db2inst1/sqllib]
      --with-empress[=DIR]    Include Empress support $EMPRESSPATH (Empress
                              Version >= 8.60 required)
      --with-empress-bcs[=DIR]
                              Include Empress Local Access support $EMPRESSPATH
                              (Empress Version >= 8.60 required)
      --with-custom-odbc[=DIR]
                              Include user defined ODBC support. DIR is ODBC
                              install base directory [/usr/local]. Make sure to
                              define CUSTOM_ODBC_LIBS and have some odbc.h in 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"
      --with-iodbc            Include iODBC support
      --with-esoob[=DIR]      Include Easysoft OOB support
                              [/usr/local/easysoft/oob/client]
      --with-unixODBC[=DIR]   Include unixODBC support. Use PKG_CONFIG_PATH (or
                              ODBC_CFLAGS and ODBC_LIBS) environment variables, or
                              alternatively the optional DIR argument to customize
                              where to look for the unixODBC library.
      --with-dbmaker[=DIR]    Include DBMaker support
      --disable-opcache       Disable Zend OPcache support
      --disable-huge-code-pages
                              Disable copying PHP CODE pages into HUGE PAGES
      --disable-opcache-jit   Disable JIT
      --with-capstone         Support opcache JIT disassembly through Capstone
      --enable-pcntl          Enable pcntl support (CLI/CGI only)
      --with-pdo-dblib[=DIR]  PDO: DBLIB-DB support. DIR is the FreeTDS home
                              directory
      --with-pdo-firebird[=DIR]
                              PDO: Firebird support. DIR is the Firebird base
                              install directory [/opt/firebird]
      --with-pdo-mysql[=DIR]  PDO: MySQL support. DIR is the MySQL base directory.
                              If no value or mysqlnd is passed as DIR, the MySQL
                              native driver will be used
      --with-pdo-odbc=flavour,dir
                              PDO: Support for 'flavour' ODBC driver. The
                              'flavour' part determines what driver or driver
                              manager to use; it can be either ibm-db2, iODBC,
                              unixODBC, or generic. The include and lib dirs are
                              looked for under 'dir'. You may attempt to use an
                              otherwise unsupported driver using the 'generic'
                              flavour. The syntax for generic ODBC support is:
                              --with-pdo-odbc=generic,dir,libname,ldflags,cflags.
                              When built as 'shared' the extension filename is
                              always 'pdo_odbc.so'. For unixODBC and iODBC, the
                              'dir' part is ignored and can be omitted, as
                              pkg-config will be searched instead. For ibm-db2, it
                              will search for the DB2 driver at that path.
      --with-pdo-pgsql[=DIR]  PDO: PostgreSQL support. Optional DIR is the
                              PostgreSQL base install directory or the path to
                              pg_config. Also, the PGSQL_CFLAGS and PGSQL_LIBS
                              environment variables can be used instead of the DIR
                              argument to customize the libpq paths.
      --without-pdo-sqlite    PDO: sqlite 3 support.
      --disable-pdo           Disable PHP Data Objects support
      --with-pgsql[=DIR]      Include PostgreSQL support. Optional DIR is the
                              PostgreSQL base install directory or the path to
                              pg_config. Also, the PGSQL_CFLAGS and PGSQL_LIBS
                              environment variables can be used instead of the DIR
                              argument to customize the libpq paths.
      --disable-phar          Disable phar support
      --disable-posix         Disable POSIX-like functions
      --with-libedit          Include libedit readline replacement (CLI/CGI only)
      --with-readline[=DIR]   Include readline support (CLI/CGI only)
      --disable-session       Disable session support
      --with-mm[=DIR]         SESSION: Include mm support for session storage
      --enable-shmop          Enable shmop support
      --disable-simplexml     Disable SimpleXML support
      --with-snmp[=DIR]       Include SNMP support. Use PKG_CONFIG_PATH (or
                              SNMP_CFLAGS and SNMP_LIBS) environment variables, or
                              alternatively the optional DIR argument to customize
                              where to look for the net-snmp-config utility of the
                              NET-SNMP library.
      --enable-soap           Enable SOAP support
      --enable-sockets        Enable sockets support
      --with-sodium           Include sodium support
      --with-external-libcrypt
                              Use external libcrypt or libxcrypt
      --with-password-argon2  Include Argon2 support in password_*
      --enable-sysvmsg        Enable sysvmsg support
      --enable-sysvsem        Enable System V semaphore support
      --enable-sysvshm        Enable the System V shared memory support
      --with-tidy[=DIR]       Include TIDY support
      --disable-tokenizer     Disable tokenizer support
      --disable-xml           Disable XML support
      --with-expat            XML: use Expat library instead of libxml2 in the xml
                              extension
      --disable-xmlreader     Disable XMLReader support
      --disable-xmlwriter     Disable XMLWriter support
      --with-xsl              Build with XSL support
      --enable-zend-test      Enable zend_test extension
      --with-zip              Include Zip read/write support
      --enable-mysqlnd        Enable mysqlnd explicitly, will be done implicitly
                              when required by other extensions
      --with-mysqlnd-ssl      Explicitly enable extended SSL support in the
                              mysqlnd extension when building without openssl
                              extension or when using phpize. If the openssl
                              extension is enabled at the configure step
                              (--with-openssl), extended SSL is enabled implicitly
                              regardless of this option.
      --disable-mysqlnd-compression-support
                              Disable support for the MySQL compressed protocol in
                              mysqlnd
    
    PEAR:
      --with-pear[=DIR]       Install PEAR in DIR [PREFIX/lib/php]
    
    Zend:
      --disable-fiber-asm     Disable the use of boost fiber assembly files
      --disable-gcc-global-regs
                              Disable GCC global register variables
      --disable-zend-signals  Disable Zend signal handling
      --enable-zend-max-execution-timers
                              Enable Zend max execution timers; when building with
                              thread safety (--enable-zts), they are automatically
                              enabled by default based on the system support
    
    Libtool:
      --enable-shared=PKGS    Build shared libraries default=yes
      --enable-static=PKGS    Build static libraries default=yes
      --enable-fast-install=PKGS
                              Optimize for fast installation default=yes
      --with-gnu-ld           Assume the C compiler uses GNU ld default=no
      --disable-libtool-lock  Avoid locking (might break parallel builds)
      --with-pic              Try to use only PIC/non-PIC objects default=use both
      --with-tags=TAGS        Include additional configurations automatic
    
    
    Some influential environment variables:
      PHP_EXTRA_VERSION
                  Extra PHP version label suffix, e.g. '-dev', 'rc1', '-acme'
      PKG_CONFIG  path to pkg-config utility
      PKG_CONFIG_PATH
                  directories to add to pkg-config's search path
      PKG_CONFIG_LIBDIR
                  path overriding pkg-config's built-in search path
      CC          C compiler command
      CFLAGS      C compiler flags
      LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
                  nonstandard directory <lib dir>
      LIBS        libraries to pass to the linker, e.g. -l<library>
      CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
                  you have headers in a nonstandard directory <include dir>
      CPP         C preprocessor
      SYSTEMD_CFLAGS
                  C compiler flags for SYSTEMD, overriding pkg-config
      SYSTEMD_LIBS
                  linker flags for SYSTEMD, overriding pkg-config
      APPARMOR_CFLAGS
                  C compiler flags for APPARMOR, overriding pkg-config
      APPARMOR_LIBS
                  linker flags for APPARMOR, overriding pkg-config
      SELINUX_CFLAGS
                  C compiler flags for SELINUX, overriding pkg-config
      SELINUX_LIBS
                  linker flags for SELINUX, overriding pkg-config
      CXX         C++ compiler command
      CXXFLAGS    C++ compiler flags
      CXXCPP      C++ preprocessor
      VALGRIND_CFLAGS
                  C compiler flags for VALGRIND, overriding pkg-config
      VALGRIND_LIBS
                  linker flags for VALGRIND, overriding pkg-config
      LIBXML_CFLAGS
                  C compiler flags for LIBXML, overriding pkg-config
      LIBXML_LIBS linker flags for LIBXML, overriding pkg-config
      OPENSSL_CFLAGS
                  C compiler flags for OPENSSL, overriding pkg-config
      OPENSSL_LIBS
                  linker flags for OPENSSL, overriding pkg-config
      PCRE2_CFLAGS
                  C compiler flags for PCRE2, overriding pkg-config
      PCRE2_LIBS  linker flags for PCRE2, overriding pkg-config
      SQLITE_CFLAGS
                  C compiler flags for SQLITE, overriding pkg-config
      SQLITE_LIBS linker flags for SQLITE, overriding pkg-config
      ZLIB_CFLAGS C compiler flags for ZLIB, overriding pkg-config
      ZLIB_LIBS   linker flags for ZLIB, overriding pkg-config
      CURL_CFLAGS C compiler flags for CURL, overriding pkg-config
      CURL_LIBS   linker flags for CURL, overriding pkg-config
      CURL_FEATURES
                  value of supported_features for libcurl, overriding pkg-config
      ENCHANT2_CFLAGS
                  C compiler flags for ENCHANT2, overriding pkg-config
      ENCHANT2_LIBS
                  linker flags for ENCHANT2, overriding pkg-config
      ENCHANT_CFLAGS
                  C compiler flags for ENCHANT, overriding pkg-config
      ENCHANT_LIBS
                  linker flags for ENCHANT, overriding pkg-config
      FFI_CFLAGS  C compiler flags for FFI, overriding pkg-config
      FFI_LIBS    linker flags for FFI, overriding pkg-config
      PNG_CFLAGS  C compiler flags for PNG, overriding pkg-config
      PNG_LIBS    linker flags for PNG, overriding pkg-config
      AVIF_CFLAGS C compiler flags for AVIF, overriding pkg-config
      AVIF_LIBS   linker flags for AVIF, overriding pkg-config
      WEBP_CFLAGS C compiler flags for WEBP, overriding pkg-config
      WEBP_LIBS   linker flags for WEBP, overriding pkg-config
      JPEG_CFLAGS C compiler flags for JPEG, overriding pkg-config
      JPEG_LIBS   linker flags for JPEG, overriding pkg-config
      XPM_CFLAGS  C compiler flags for XPM, overriding pkg-config
      XPM_LIBS    linker flags for XPM, overriding pkg-config
      FREETYPE2_CFLAGS
                  C compiler flags for FREETYPE2, overriding pkg-config
      FREETYPE2_LIBS
                  linker flags for FREETYPE2, overriding pkg-config
      GDLIB_CFLAGS
                  C compiler flags for GDLIB, overriding pkg-config
      GDLIB_LIBS  linker flags for GDLIB, overriding pkg-config
      GMP_CFLAGS  C compiler flags for GMP, overriding pkg-config
      GMP_LIBS    linker flags for GMP, overriding pkg-config
      ICU_CFLAGS  C compiler flags for ICU, overriding pkg-config
      ICU_LIBS    linker flags for ICU, overriding pkg-config
      SASL_CFLAGS C compiler flags for SASL, overriding pkg-config
      SASL_LIBS   linker flags for SASL, overriding pkg-config
      ONIG_CFLAGS C compiler flags for ONIG, overriding pkg-config
      ONIG_LIBS   linker flags for ONIG, overriding pkg-config
      ODBC_CFLAGS C compiler flags for ODBC, overriding pkg-config
      ODBC_LIBS   linker flags for ODBC, overriding pkg-config
      CAPSTONE_CFLAGS
                  C compiler flags for CAPSTONE, overriding pkg-config
      CAPSTONE_LIBS
                  linker flags for CAPSTONE, overriding pkg-config
      PDO_ODBC_CFLAGS
                  C compiler flags for PDO_ODBC, overriding pkg-config
      PDO_ODBC_LIBS
                  linker flags for PDO_ODBC, overriding pkg-config
      PGSQL_CFLAGS
                  C compiler flags for PGSQL, overriding pkg-config
      PGSQL_LIBS  linker flags for PGSQL, overriding pkg-config
      EDIT_CFLAGS C compiler flags for EDIT, overriding pkg-config
      EDIT_LIBS   linker flags for EDIT, overriding pkg-config
      SNMP_CFLAGS C compiler flags for SNMP, overriding pkg-config
      SNMP_LIBS   linker flags for SNMP, overriding pkg-config
      LIBSODIUM_CFLAGS
                  C compiler flags for LIBSODIUM, overriding pkg-config
      LIBSODIUM_LIBS
                  linker flags for LIBSODIUM, overriding pkg-config
      ARGON2_CFLAGS
                  C compiler flags for ARGON2, overriding pkg-config
      ARGON2_LIBS linker flags for ARGON2, overriding pkg-config
      EXPAT_CFLAGS
                  C compiler flags for EXPAT, overriding pkg-config
      EXPAT_LIBS  linker flags for EXPAT, overriding pkg-config
      XSL_CFLAGS  C compiler flags for XSL, overriding pkg-config
      XSL_LIBS    linker flags for XSL, overriding pkg-config
      EXSLT_CFLAGS
                  C compiler flags for EXSLT, overriding pkg-config
      EXSLT_LIBS  linker flags for EXSLT, overriding pkg-config
      LIBZIP_CFLAGS
                  C compiler flags for LIBZIP, overriding pkg-config
      LIBZIP_LIBS linker flags for LIBZIP, overriding pkg-config
      EXTENSION_DIR
                  Default directory for dynamically loadable PHP extensions. If
                  left empty, it is determined automatically. Can be overridden
                  using the PHP 'extension_dir' INI directive.
      PHP_UNAME   System information (defaults to the 'uname -a' output)
      PHP_BUILD_SYSTEM
                  The system that PHP was built on (defaults to the 'uname -a'
                  output)
      PHP_BUILD_PROVIDER
                  The PHP build provider information
      PHP_BUILD_COMPILER
                  Information about the compiler used for the PHP build
      PHP_BUILD_ARCH
                  The build architecture
    
    Use these variables to override the choices made by 'configure' or to help
    it to find libraries and programs with nonstandard names/locations.

    设置编译参数

    ./configure --prefix=/usr/local/php-8.4.11 --sysconfdir=/etc/php-8.4.11 --with-config-file-path=/etc/php-8.4.11/php.ini --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-openssl --with-openssl-argon2 --with-zlib --with-bz2 --with-curl --enable-bcmath --enable-gd --with-webp --with-avif --with-jpeg --with-mhash --enable-mbstring --enable-exif --with-ffi --with-zip --enable-sockets --with-pcre-jit --enable-pcntl --with-pdo-pgsql --without-sqlite

    --prefix=/usr/local/php-8.4.11 指定php的安装地址
    --sysconfdir=/etc/php-8.4.11 指定php系统级配置文件安装目录
    --with-config-file-path=/etc/php-8.4.11/php.ini 指定php.ini的精确路径
    --with-fpm-user=www 设置 php-fpm 的运行用户(默认值:nobody)
    --with-fpm-group=www 设置 php-fpm 的运行用户组,应设置为与用户名的用户组一致(默认值:nobody)

    此处的编译参数没有开启Mysql、Sqlite3相关扩展编译
    同时由于 --with-openssl-argon2 argon2算法要求系统openssl版本大于3.2。
    通过 openssl version 可以检查openssl版本,升级方法可参考Debian12 OpenSSL3.5.2 编译安装

    开始编译

    make -$(nproc) && make install

    成功会提示Build Complete

    拷贝配置文件

    sudo mkdir /etc/php-8.4.11
    sudo cp /usr/local/src/php-8.4.11/php.ini-development /etc/php-8.4.11/php.ini
    sudo cp /etc/php-8.4.11/php-fpm.conf.default /etc/php-8.4.11/php-fpm.conf
    sudo cp /etc/php-8.4.11/php-fpm.d/www.conf.default /etc/php-8.4.11/php-fpm.d/www.conf

    设置环境变量

    nano /etc/profile

    在最底部添加

    export PATH=$PATH:/usr/local/php-8.4.11/bin

    Ctrl + X 后输入 Y 保存退出

    source /etc/profile
    php -v

    检查安装是否成功

    创建服务

    nano /usr/lib/systemd/system/php-fpm.service

    输入

    [Unit]
    Description=php-fpm
    After=syslog.target network.target
    
    [Service]
    Type=forking
    ExecStart=/usr/local/php-8.4.11/sbin/php-fpm
    ExecReload=/bin/kill -USR2 $MAINPID
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target

    保存后systemctl daemon-reload
    开启服务并设置开机启动

    systemctl start php-fpm && systemctl enable php-fpm

    检查php.ini文件是否正常载入

    php --ini | grep "Loaded Configuration File"

    如果输出为

    Loaded Configuration File : (none)

    php -i|grep php.ini 查看默认的php.ini设置地址
    可以将原本的php.ini设置软链接到默认地址,也可以直接替换。

    配置php.ini

    curl.cainfo = /etc/ssl/certs/ca-certificates.crt
    
    opcache.enable=1
    opcache.enable_cli=1
    opcache.validate_timestamps=1
    opcache.revalidate_freq=2
    opcache.memory_consumption=128
    opcache.jit_buffer_size=128m
    opcache.jit=1205
    
    openssl.cafile=/etc/ssl/certs/ca-certificates.crt
    openssl.capath=/usr/share/ca-certificates/mozilla/

    参考地址:
    php8.4 编译安装(详细)+ bash脚本 (多linux版本)