tcpdump -XvvennSs 0 -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854

sudo tcpdump tcp port 80 -n -s 0 -X -i eth0

0x4745 为"GET"前两个字母"GE"

0x4854 为"HTTP"前两个字母"HT"

说明: 通常情况下:一个正常的TCP连接,都会有三个阶段:1、TCP三次握手;2、数据传送;3、TCP四次挥手

里面的几个概念:

SYN: (同步序列编号,Synchronize Sequence Numbers)
ACK: (确认编号,Acknowledgement Number)
FIN: (结束标志,FINish)
TCP三次握手(创建 OPEN)
客户端发起一个和服务创建TCP链接的请求,这里是SYN(J)
服务端接受到客户端的创建请求后,返回两个信息: SYN(K) + ACK(J+1)
客户端在接受到服务端的ACK信息校验成功后(J与J+1),返回一个信息:ACK(K+1)
服务端这时接受到客户端的ACK信息校验成功后(K与K+1),不再返回信息,后面进入数据通讯阶段
数据通讯
客户端/服务端 read/write数据包
TCP四次握手(关闭 finish)
客户端发起关闭请求,发送一个信息:FIN(M)
服务端接受到信息后,首先返回ACK(M+1),表明自己已经收到消息。
服务端在准备好关闭之前,最后发送给客户端一个 FIN(N)消息,询问客户端是否准备好关闭了
客户端接受到服务端发送的消息后,返回一个确认信息: ACK(N+1)
最后,服务端和客户端在双方都得到确认时,各自关闭或者回收对应的TCP链接。
详细的状态说明(以及linux相关参数调整)
SYN_SEND
客户端尝试链接服务端,通过open方法。也就是TCP三次握手中的第1步之后,注意是客户端状态
sysctl -w net.ipv4.tcp_syn_retries = 2 ,做为客户端可以设置SYN包的重试次数,默认5次(大约180s)引用校长的话:仅仅重试2次,现代网络够了
SYN_RECEIVED
服务接受创建请求的SYN后,也就是TCP三次握手中的第2步,发送ACK数据包之前
注意是服务端状态,一般15个左右正常,如果很大,怀疑遭受SYN_FLOOD攻击
sysctl -w net.ipv4.tcp_max_syn_backlog=4096 , 设置该状态的等待队列数,默认1024,调大后可适当防止syn-flood,可参见man 7 tcp
sysctl -w net.ipv4.tcp_syncookies=1 , 打开syncookie,在syn backlog队列不足的时候,提供一种机制临时将syn链接换出
sysctl -w net.ipv4.tcp_synack_retries = 2 ,做为服务端返回ACK包的重试次数,默认5次(大约180s)引用校长的话:仅仅重试2次,现代网络够了
ESTABLISHED
客户端接受到服务端的ACK包后的状态,服务端在发出ACK在一定时间后即为ESTABLISHED
sysctl -w net.ipv4.tcp_keepalive_time = 1200 ,默认为7200秒(2小时),系统针对空闲链接会进行心跳检查,如果超过net.ipv4.tcp_keepalive_probes * net.ipv4.tcp_keepalive_intvl = 默认11分,终止对应的tcp链接,可适当调整心跳检查频率
目前线上的监控 waring:600 , critial : 800
FIN_WAIT1
主动关闭的一方,在发出FIN请求之后,也就是在TCP四次握手的第1步
CLOSE_WAIT
被动关闭的一方,在接受到客户端的FIN后,也就是在TCP四次握手的第2步
FIN_WAIT2
主动关闭的一方,在接受到被动关闭一方的ACK后,也就是TCP四次握手的第2步
sysctl -w net.ipv4.tcp_fin_timeout=30, 可以设定被动关闭方返回FIN后的超时时间,有效回收链接,避免syn-flood.
LASK_ACK
被动关闭的一方,在发送ACK后一段时间后(确保客户端已收到),再发起一个FIN请求。也就是TCP四次握手的第3步
TIME_WAIT
主动关闭的一方,在收到被动关闭的FIN包后,发送ACK。也就是TCP四次握手的第4步
sysctl -w net.ipv4.tcp_tw_recycle = 1 , 打开快速回收TIME_WAIT,Enabling this option is not recommended since this causes problems when working with NAT (Network Address Translation)
sysctl -w net.ipv4.tcp_tw_reuse =1, 快速回收并重用TIME_WAIT的链接, 貌似和tw_recycle有冲突,不能重用就回收?
net.ipv4.tcp_max_tw_buckets: 处于time_wait状态的最多链接数,默认为180000.

相关说明
主动关闭方在接收到被动关闭方的FIN请求后,发送成功给对方一个ACK后,将自己的状态由FIN_WAIT2修改为TIME_WAIT,而必须 再等2倍的MSL(Maximum Segment Lifetime,MSL是一个数据报在internetwork中能存在的时间)时间之后双方才能把状态 都改为CLOSED以关闭连接。目前RHEL里保持TIME_WAIT状态的时间为60秒
keepAlive策略可以有效的避免进行三次握手和四次关闭的动作
其他网络重要参数
net.ipv4.tcp_rmem 参数
默认值: min=4096 default=87380 max=4194304
net.ipv4.tcp_wmem 参数
默认值: min=4096 default=16384 max=4194304
tcpdump
tcpdump是Linux系统自带的抓包工具,主要通过命令行的方式,比较适合在线上服务器进行抓包操作,如果是windows或者ubuntu完全可 以选择一些图形化的工具,ubuntu比较推荐用wireshark,安装方式很简单sudo apt一下即可。

命令行格式:
tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] -F 文件名 [ -r 文件名] -s snaplen [ -w 文件名 ] [表达式 ]

常用的参数:
-l    使标准输出变为缓冲行形式;
-n    不把网络地址转换成名字;

-c    在收到指定的包的数目后,tcpdump就会停止;
-i    指定监听的网络接口;(如果没有指定可能在默认网卡上监听,需要指定绑定了特定IP的网卡)
-w    直接将包写入文件中,并不分析和打印出来;
-s 指定记录package的大小,常见 -s 0 ,代表最大值65535,一半linux传输最小单元MTU为1500,足够了

-X 直接输出package data数据,默认不设置,只能通过-w指定文件进行输出

常用表达式:
关于类型的关键字,主要包括host,net,port
传输方向的关键字,主要包括src , dst ,dst or src, dst and src
协议的关键字,主要包括fddi,ip ,arp,rarp,tcp,udp等类型
逻辑运算,取非运算是 'not ' '! ', 与运算是'and','&&';或运算 是'or' ,'||'
其他重要的关键字如下:gateway, broadcast,less,greater
实际例子:

  1. http数据包抓取 (直接在终端输出package data)
tcpdump tcp port 80 -n -X -s 0 指定80端口进行输出
  1. 抓取http包数据指定文件进行输出package
tcpdump tcp port 80 -n -s 0 -w /tmp/tcp.cap

对应的/tmp/tcp.cap基本靠肉眼已经能看一下信息,比如http Header , content信息等

  1. 结合管道流
tcpdump tcp port 80 -n -s 0 -X -l | grep xxxx

这样可以实时对数据包进行字符串匹配过滤

  1. mod_proxy反向代理抓包
    线上服务器apache+jetty,通过apache mod_proxy进行一个反向代理,80 apache端口, 7001 jetty端口

apache端口数据抓包: tcpdump tcp port 80 -n -s 0 -X -i eth0   注意:指定eth0网络接口

jetty端口数据抓包: tcpdump tcp port 7001 -n -s 0 -X -i lo 注意:指定Loopback网络接口

  1. 只监控特定的ip主机
  2. tcp host 10.16.2.85 and port 2100 -s 0 -X 

需要使用tcp表达式的组合,这里是host指示只监听该ip

小技巧:

  1. 可结合tcpdump(命令) + wireshark(图形化)
    操作: 

在服务器上进行tcpdump -w /tmp/tcp.cap 指定输出外部文件
scp /tmp/tcp.cap 拷贝文件到你本地
wireshark &  启动wireshark
通过 File -> Open  打开拷贝下来的文件,这样就可以利用进行数据包分析了
剩下来的事就非常方便了

常用
----- 将抓包的数据保存到文件

tcpdump -i lo port 80 -w filename

----- 当然,也可以打印到终端,然后处理数据

tcpdump -i lo port 80 -nn -X -q
tcpdump -i any -s 0 -l -w - dst port 80 | strings | grep -iE 'select|update'

能重启的情况,修改redis.conf

save ""
#save 900 1
#save 300 10
#save 60 10000
appendonly no      //启用日志追加持久化方式
#appendfsync always //每次收到写命令就立即强制写入磁盘,最慢的,但是保证完全的持久化,不推荐使用
#appendfsync everysec //每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中,推荐
#appendfsync no //完全依赖操作系统,性能最好,持久化没保证

服务器正在运行的情况

config set save ""
config set appendonly no

# 允许内网 
iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -j ACCEPT 
# 禁止其它 
iptables -A INPUT -p tcp --dport 22 -j DROP

MySQL的sql_mode合理设置
sql_mode是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入。在生产环境必须将这个值设置为严格模式,所以开发、测试环境的数据库也必须要设置,这样在开发测试阶段就可以发现问题

sql_mode常用值如下:
ONLY_FULL_GROUP_BY:
对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中

NO_AUTO_VALUE_ON_ZERO:
该值影响自增长列的插入。默认设置下,插入0或NULL代表生成下一个自增长值。如果用户 希望插入的值为0,而该列又是自增长的,那么这个选项就有用了。

STRICT_TRANS_TABLES:
在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制
NO_ZERO_IN_DATE:
在严格模式下,不允许日期和月份为零

NO_ZERO_DATE:
设置该值,mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告。

ERROR_FOR_DIVISION_BY_ZERO:
在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。如 果未给出该模式,那么数据被零除时MySQL返回NULL

NO_AUTO_CREATE_USER:
禁止GRANT创建密码为空的用户

NO_ENGINE_SUBSTITUTION:
如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常

PIPES_AS_CONCAT:
将"||"视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样的,也和字符串的拼接函数Concat相类似

ANSI_QUOTES:
启用ANSI_QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符

ORACLE的sql_mode设置等同:PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, NO_TABLE_OPTIONS, NO_FIELD_OPTIONS, NO_AUTO_CREATE_USER.

如果使用mysql,为了继续保留大家使用oracle的习惯,可以对mysql的sql_mode设置如下:

在my.cnf添加如下配置
[mysqld]
sql_mode='ONLY_FULL_GROUP_BY,NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,
ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,PIPES_AS_CONCAT,ANSI_QUOTES'

参考:http://dev.mysql.com/doc/refman/5.5/en/server-sql-mode.html

SAPI modules(PHP SAPI接口模块的选项):
大部分与apache、nginx等web服务有关



--with-aolserver=DIR    AOLserver的安装路径
--with-apxs=FILE        编译出apache1.x版本的共享模块所存放的路径
--with-apache=DIR       编译出apache1.x版本的模块,这里设定为apache软件根目录
--enable-mod-charset    启用apache的mod_charset(俄文apache用的)
--with-apxs2filter=FILE 编译apache2.0的共享过滤模块,这里设定为apache apxs工具的路径
--with-apxs2=FILE       编译共享apache2.0处理程序的模块,这里设定为apache apxs工具的路径
--with-apache-hooks=FILE共享的apache1.0的钩子模块,这里设定为apache apxs工具的路径
--with-apache-hooks-static=DIR 这里设定为apache apxs工具的路径
--disable-cli           禁用命令行模式(php-cli)
--with-continuity=DIR   编译php为连续服务模块。参数为安装Continuity Server的根目录
--enable-embed=TYPE     建立内嵌的SAPI库。参数为shared、static
--enable-fpm            开启fpm模式(nginx等服务用的)
--with-fpm-user=USER    fpm运行的用户,默认为nobody
--with-fpm-group=GRP    fpm运行的组,默认为nobody
--with-fpm-systemd      激活系统集成功能,开启后fpm可以上报给系统一些信息
--with-fpm-acl          使用POSIX 访问控制列表,5.6.5版本起有效
--with-isapi=DIR        为Zeus web服务器建立ISAPI模块
--with-litespeed        编译PHP为litespeed模块
--with-milter=DIR       编译PHP为Milter应用程序
--with-nsapi=DIR        为Netscape/iPlanet/Sun Web服务器编译PHP为NSAPI模块
--enable-phpdbg         编译开启phpdbg调试器
--enable-phpdbg-debug   编译phpdbg调试器为debug模式
--with-phttpd=DIR       编译PHP为phttpd模块
--with-pi3web=DIR       编译PHP为pi3web模块
--with-roxen=DIR        编译PHP为roxen模块
--enable-roxen-zts      编译PHP为roxen模块,线程安全
--with-thttpd=SRCDIR    编译PHP为thttpd模块
--with-tux=MODULEDIR    编译PHP为tux模块
--with-webjames=SRCDIR  编译PHP为webjames模块
--disable-cgi           禁用cgi

General settings(综合设置):

--enable-gcov           开启gcov支持(测试代码覆盖率功能,)
--enable-debug          Compile with debugging symbols
--with-layout=TYPE      Set how installed files will be laid out.  Type can
                        be either PHP or GNU [PHP]
--with-config-file-path=PATH php.ini文件位置[PREFIX/lib]
--with-config-file-scan-dir=PATH 扫描配置文件的路径
--enable-sigchild       使用PHP自带的SIGCHLD处理器
--enable-libgcc         启用libgcc的精确链接
--disable-short-tags    默认禁用短形式的<?作为php代码的开始标记
--enable-dmalloc        启用dmalloc(dmalloc是Linux C编程侦测记忆体溢出工具)
--disable-ipv6          关闭ipv6支持
--enable-dtrace         开启DTrace(动态跟踪)支持
--enable-fd-setsize     设置描述集的大小

Extensions(扩展):


--disable-all           关闭默认为启用的所有扩展功能
--with-regex=TYPE       正则表达式库类型。选项:system|php(默认) 警告:如果你不知道这是干嘛的就别动这个选项了!
--disable-libxml        禁用LIBXML支持
--with-libxml-dir=DIR   LIBXML安装目录
--with-openssl=DIR      启用openssl支持 (OpenSSL版本号必须大于等于 0.9.6)
--with-kerberos=DIR     OPENSSL: 包含kerberos支持
--with-system-ciphers   OPENSSL: 用系统自带的密码清单(cipher list)去替代硬编码(hard coded)
--with-pcre-regex=DIR   引用pear兼容的正则表达式库
--without-sqlite3=DIR   不开启sqlite3支持
--with-zlib=DIR         开启ZLIB支持 (ZLIB版本号必须大于等于 1.0.9)
--with-zlib-dir=<DIR>   ZLIB的安装路径
--enable-bcmath         启用bcmatch(公元前风格精度数学)
--with-bz2=DIR          开启BZip2
--enable-calendar       启用日历转换支持
--disable-ctype         禁用ctype功能
--with-curl=DIR         启用cURL支持
--enable-dba            构架捆绑模块的DBA。要建立扩展的共享模块使用--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
--without-cdb=DIR       DBA: CDB support (bundled)(捆绑方式)
--disable-inifile       DBA: INI support (bundled)(捆绑方式)
--disable-flatfile      DBA: FlatFile support (bundled)(捆绑方式)
--disable-dom           禁用DOM支持
--with-libxml-dir=DIR   DOM: 启用libxml2并指定其安装目录
--with-enchant=DIR      启用 enchant 支持.GNU Aspell 版本号必须高于 1.1.3
--enable-exif           启用EXIF支持(从图片中获取元数据)
--disable-fileinfo      关闭fileinfo支持
--disable-filter        关闭 input filter 支持
--with-pcre-dir         FILTER: pcre install prefix
--enable-ftp            开启ftp支持
--with-openssl-dir=DIR  FTP: openssl install prefix
--with-gd=DIR           开启GD图像处理库
--with-vpx-dir=DIR      GD: 指定libvpx的安装目录
--with-jpeg-dir=DIR     GD: 指定libjpeg的安装目录
--with-png-dir=DIR      GD: 指定libpng的安装目录
--with-zlib-dir=DIR     GD: 指定libz的安装目录
--with-xpm-dir=DIR      GD: 指定libXpm的安装目录
--with-freetype-dir=DIR GD: 指定FreeType2的安装目录
--with-t1lib=DIR        GD: 指定T1lib支持
--enable-gd-native-ttf  GD: 启用TureType字符功能
--enable-gd-jis-conv    GD: 启用JIS-mapped日语字体支持
--with-gettext=DIR      包含GNU gettext支持
--with-gmp=DIR          启用GNU MP支持
--with-mhash=DIR        指定mhash的目录
--disable-hash          禁用hash支持
--without-iconv=DIR     禁用iconv支持
--with-imap=DIR         包含IMAP支持。指定c-client安装目录
--with-kerberos=DIR     IMAP: 启用kerberos支持并指定其目录
--with-imap-ssl=DIR     IMAP: 启用ssl支持并指定openssl目录
--with-interbase=DIR    启用interbase支持并指定其目录
--enable-intl           开启国际化支持(internationalization)
--with-icu-dir=DIR      Specify where ICU libraries and headers can be found
--disable-json          关闭json支持
--with-ldap=DIR         开启 LDAP 支持
--with-ldap-sasl=DIR    LDAP: 开启 Cyrus SASL 支持
--enable-mbstring       启用多字节字符串的支持
--disable-mbregex       MBSTRING: 禁用多字节正则表达式的支持
--disable-mbregex-backtrack MBSTRING: 禁用多字节正则表达式回溯检查
--with-libmbfl=DIR      MBSTRING: 使用外部的libmbfl并制定其目录
--with-onig=DIR         MBSTRING: 使用外部的onig并制定其目录
--with-mcrypt=DIR       包含mcrypt支持
--with-mssql=DIR        包含MSSQL-DB支持,并指定FreeTDS软件目录
--with-mysql-sock=SOCKPATH 定位mysql的unix 套接字指针。如果未指定,则按默认位置搜索。
--with-zlib-dir=DIR     MySQL: 设置zlib的安装目录
--with-mysqli=FILE      包含MySQLi支持。参数为mysql_config的位置
--enable-embedded-mysqli MYSQLi: 启用embedded支持。
--with-oci8=DIR         包含Oracle支持。如果使用Oracle客户端安装则使用--with-oci8=instantclient,/path/to/oic/lib
--with-odbcver=HEX      Force support for the passed ODBC version. A hex number is expected, default 0x0300.
                           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-ODBCRouter=DIR   Include ODBCRouter.com support /usr
--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-birdstep=DIR     Include Birdstep support /usr/local/birdstep
--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. f.e. 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=DIR        Include iODBC support /usr/local
--with-esoob=DIR        Include Easysoft OOB support /usr/local/easysoft/oob/client
--with-unixODBC=DIR     Include unixODBC support /usr/local
--with-dbmaker=DIR      Include DBMaker support
--enable-opcache        Enable Zend OPcache support
--enable-pcntl          Enable pcntl support (CLI/CGI only)
--disable-pdo           Disable PHP Data Objects support
--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-zlib-dir=DIR     PDO_MySQL: Set the path to libz install prefix
--with-pdo-oci=DIR      PDO: Oracle OCI support. DIR defaults to \$ORACLE_HOME.
                        Use --with-pdo-oci=instantclient,prefix,version
                        for an Oracle Instant Client SDK.
                        For example on Linux with 11.2 RPMs use:
                          --with-pdo-oci=instantclient,/usr,11.2
                        With 10.2 RPMs use:
                          --with-pdo-oci=instantclient,/usr,10.2.0.4
--with-pdo-odbc=flavour,dir
                        PDO: Support for 'flavour' ODBC driver.
            include and lib dirs are looked for under 'dir'.

            'flavour' can be one of:  ibm-db2, iODBC, unixODBC, generic
            If ',dir' part is omitted, default for the flavour
            you have selected will be used. e.g.:

              --with-pdo-odbc=unixODBC

            will check for unixODBC under /usr/local. 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
--with-pdo-pgsql=DIR    PDO: PostgreSQL support.  DIR is the PostgreSQL base
                        install directory or the path to pg_config
--without-pdo-sqlite=DIR
                        PDO: sqlite 3 support.  DIR is the sqlite base
                        install directory BUNDLED
--with-pgsql=DIR        Include PostgreSQL support.  DIR is the PostgreSQL
                        base install directory or the path to pg_config
--disable-phar          Disable phar support
--disable-posix         Disable POSIX-like functions
--with-pspell=DIR       Include PSPELL support.
                        GNU Aspell version 0.50.0 or higher required
--with-libedit=DIR      Include libedit readline replacement (CLI/CGI only)
--with-readline=DIR     Include readline support (CLI/CGI only)
--with-recode=DIR       Include recode support
--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-libxml-dir=DIR   SimpleXML: libxml2 install prefix
--with-snmp=DIR         Include SNMP support
--with-openssl-dir=DIR  SNMP: openssl install prefix
--enable-soap           Enable SOAP support
--with-libxml-dir=DIR   SOAP: libxml2 install prefix
--enable-sockets        Enable sockets support
--with-sybase-ct=DIR    Include Sybase-CT support.  DIR is the Sybase home
                        directory /home/sybase
--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
--enable-wddx           Enable WDDX support
--with-libxml-dir=DIR   WDDX: libxml2 install prefix
--with-libexpat-dir=DIR WDDX: libexpat dir for XMLRPC-EPI (deprecated)
--disable-xml           Disable XML support
--with-libxml-dir=DIR   XML: libxml2 install prefix
--with-libexpat-dir=DIR XML: libexpat install prefix (deprecated)
--disable-xmlreader     Disable XMLReader support
--with-libxml-dir=DIR   XMLReader: libxml2 install prefix
--with-xmlrpc=DIR       Include XMLRPC-EPI support
--with-libxml-dir=DIR   XMLRPC-EPI: libxml2 install prefix
--with-libexpat-dir=DIR XMLRPC-EPI: libexpat dir for XMLRPC-EPI (deprecated)
--with-iconv-dir=DIR    XMLRPC-EPI: iconv dir for XMLRPC-EPI
--disable-xmlwriter     Disable XMLWriter support
--with-libxml-dir=DIR   XMLWriter: libxml2 install prefix
--with-xsl=DIR          Include XSL support.  DIR is the libxslt base
                        install directory (libxslt >= 1.1.0 required)
--enable-zip            Include Zip read/write support
--with-zlib-dir=DIR     ZIP: Set the path to libz install prefix
--with-pcre-dir         ZIP: pcre install prefix
--with-libzip=DIR       ZIP: use libzip
--enable-mysqlnd        Enable mysqlnd explicitly, will be done implicitly
                        when required by other extensions
--disable-mysqlnd-compression-support
                        Disable support for the MySQL compressed protocol in mysqlnd
--with-zlib-dir=DIR     mysqlnd: Set the path to libz install prefix