linux手动编译php源码

准备

下载源码:https://www.php.net/downloads

php-7.4.20

开始

  1. 解压

    tar -zxvf xxx.tar.gz
    unzip -v xxx.zip -d php-7.4.20-src
  1. 配置源码

    ./configure --prefix=/home/php-7.4 --with-pdo-mysql=/home/mysql-5.7 --with-openssl --enable-pcntl --enable-mbstring --with-gd --with-pear --with-mysqli=/home/mysql-5.7 --enable-sockets --with-curl --enable-fpm --enable-ftp

    配置项说明在附录讲。

  2. 编译

    make && make install

    编译后的二进制文件会放在你配置的--prefix目录下,如果没有配置--prefix详看附录配置说明

  3. 查看配置文件目录

    php --ini

可能问题

ubuntu

apt-get install libssl-dev -y
apt-get install libsqlite3-dev -y
apt-get install libonig-dev -y
apt-get install make -y
apt-get install build-essential -y

centos

yum install libxml2-devel -y
yum install openssl-devel -y
yum install libsqlite3x-devel -y
yum install oniguruma-devel -y
yum install gcc -y
yum install gcc-c++ -y

附录

  1. configure参数说明,查看更多配置:./configure --help

    • –prefix=/xx/xx:文件安装的位置,默认是/usr/local
      • –with-mysqli[=FILE]:mysqli驱动支持,FILE是mysql_config的路径,就是mysql的安装目录。如果没有值或者mysqlnd被传递为file, MySQL本地驱动程序将被使用。
    • –with-pdo-mysql[=DIR]:启用PDO_MySQL驱动。DIR是MySQL的安装目录,用来获取mysql_config。如果没有值或mysqlnd被传递为DIR, MySQL本地驱动程序将被使用
    • –enable-debug:编译时加入调试符号。
    • –with-layout=TYPE:设置被安装文件的布局。TYPE 是 PHP(默认)或 GNU。
    • –with-pear=DIR:在 DIR(默认为 PREFIX/lib/php)中安装 PEAR。
    • –without-pear:不安装 PEAR。
    • –enable-sigchild:使用 PHP 自带的 SIGCHLD 处理器。
    • –disable-rpath:禁用在搜索路径中传递其他运行库。
    • –enable-libgcc:启用 libgcc 的精确链接。
    • –enable-php-streams:包含试验性的 PHP 流。不要使用此选项,除非是要测试代码!
    • –with-zlib-dir[=DIR]:定义 zlib 的安装目录。
      • –with-tsrm-pthreads:使用 POSIX 线程(默认)。
      • –enable-shared[=PKGS]:编译共享库 [default=yes]。
    • –enable-static[=PKGS]:编译静态库 [default=yes]。
      • –enable-fast-install[=PKGS]:为快速安装优化 [default=yes]。
      • –with-gnu-ld:假设 C 编译器使用 GNU ld [default=no]。
    • –disable-libtool-lock:避免锁死(可能破坏并联的编译)。
      • –with-pic:尝试仅使用 PIC/非 PIC 对象 [default=use both]。
      • –enable-memory-limit:编译内存限制支持功能。(自PHP 5.2.1开始不可用,默认enable)
    • –disable-url-fopen-wrapper:禁用 URL 形式的 fopen 封装协议。该协议允许通过 HTTP 或者 FTP 访问文件。 (自PHP5.2.5开始不可用)
      • –enable-versioning:仅导出必须的符号。查看 INSTALL 文件以获得更多信息。
      • –enable-maintainer-mode:对偶然安装一下的情形启用此选项,使得不检查编译规则和依赖关系。
    • –with-config-file-path=PATH:设置 php.ini 的搜索路径。默认为 PREFIX/lib。
      • –enable-safe-mode:默认启用安全模式。警告:本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除
      • –with-exec-dir[=DIR]:在安全模式时仅允许在 DIR 目录中执行。默认目录为 /usr/local/php/bin。警告:本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除 **。
    • –enable-magic-quotes:默认启用 magic quotes。警告:本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除
      • –disable-short-tags:默认禁用短形式的开始标签 <? 。
      • –enable-zend-multibyte:在词法与语法分析时允许多字节编码被执行。如果在编译 PHP 时使用了这个选项,就能够在 declare 结构中使用 encoding 指令。警告:本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除
    • –with-libdir:指定Uxin系统库文件目录用于构建 PHP。 对于64位系统, 需要指定 lib64 目录,比如 --with-libdir=lib64
      • –with-apxs[=FILE]:编译共享的 Apache 模块。FILE 是可选的 Apache apxs 工具的路径,默认指向 apxs。请确认指定的 apxs 已经安装在服务器中,并且它不是 Apache 源码包中的那个 apxs。
      • –with-apache[=DIR]:编译静态 Apache 模块。DIR 是 Apache 编译目录的顶层,默认为 /usr/local/apache。
    • –with-mod_charset:启用 mod_charset 的转换表(俄文的 Apache 使用)。
      • –with-apxs2[=FILE]:编译共享的 Apache 2.0 模块。FILE 是可选的 Apache apxs 工具的路径,默认指向 apxs。
      • –disable-cli:禁止编译 PHP 的 CLI 版本(使用它将同时强制使用 –without-pear 选项)。更多信息请参阅 PHP 的命令行模式
    • –enable-phpdbg:启用 phpdbg 调试 SAPI 模块支持,PHP 5.6.x 以后的版本有效。
      • –enable-embed[=TYPE]:启用编译嵌入的 SAPI 库。TYPE 或者为 shared 或者为 static,默认为 shared
      • –with-servlet[=DIR]:包含 servlet 支持。DIR 是 JSDK 的安装目录。此 SAPI 要求 java 扩展必须作为共享模块编译到 PHP 中。
    • –disable-cgi:禁止编译 CGI 版本的 PHP。PHP 5.3.0 起,这个选项会启用 FastCGI,而在以前,必须使用 --enable-fastcgi 启用 FastCGI。
      • –enable-force-cgi-redirect:启用内部服务器重定向的安全检测。如果在 Apache 下使用 CGI 版本的 PHP,请启用该选项。PHP 5.3.0 起,默认有效并不再存在。要禁用此功能,需要在 INI 配置文件中将 cgi.force_redirect 设为 0
      • –enable-discard-path:如果启用该选项,PHP CGI 目录可以安全的放在 web 目录树的外面,人们无法避开 .htaccess 的安全限制。PHP 5.3.0 起,默认禁用并不在存在。要启用此功能,需要设置 cgi-redirect INI 指令为 1
    • –enable-fastcgi:如果启用,CGI 模块将被编译为支持 FastCGI。PHP 5.3.0 起,此参数不再存在,并使用 --enable-cgi 替代。
      • –disable-path-info-check:如果该选项被禁用,例如 /info.php/test?a=b 形式的路径将不能工作。更多信息请参考 » Apache 手册。从 PHP 5.3.0 起,此选项默认开启并且不再使用。如果想禁用此特性,需要在 INI 配置中将 cgi.fix_pathinfo 设置成 0

linux手动编译php源码
http://blog.icy8.cn/posts/48473/
作者
icy8
发布于
2021年6月18日
许可协议