php编译参数详解

./configure \
--prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--enable-inline-optimization \
--disable-debug \
--disable-rpath \
--enable-shared \
--enable-opcache \
--enable-fpm \
--with-mysql=/usr/local/mysql \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--with-pdo-mysql=/usr/local/mysql \
--with-gettext \
--enable-mbstring \
--with-iconv \
--with-mcrypt \
--with-mhash \
--with-openssl \
--enable-bcmath \
--enable-soap \
--with-libxml-dir \
--enable-pcntl \
--enable-shmop \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-sockets \
--with-curl \
--with-zlib \
--enable-zip \
--with-bz2 \
--with-gd \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir

其他php编译参数可以很短

./configure --prefix=/usr/local/php --enable-fpm (适合nginx平台)

./configure --prefix=/usr/local/php --with-apxs2=/usr/sbin/apxs (适合apache平台)

PS:--prefix指定安装目录,这个不管编译安装什么软件都通用!

这两个平台由于使用php的方式不同,所以编译参数不同,本文主要以nginx平台为主。

下图是最小化编译安装php的info信息:

php参数详解_php

虽然是最小化安装的php,但是默认还是会安装一下php模块

[root@oldboy ~]# /application/php/bin/php -m
[PHP Modules]
Core
ctype
date
dom
ereg
fileinfo
filter
hash
iconv
json
libxml
pcre
PDO
pdo_sqlite
Phar
posix
Reflection
session
SimpleXML
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
[Zend Modules]

只是很多时候,我们的php项目会用到其他很多其他的模块,

例如discuz论坛:

php参数详解_php_02

从环境检测的要求来看,我们需要在编译php的时候,增加--with-curl启用curl模块和--with-gd 启动GD模块,discuz还需要连接数据库,所以还得增加--with-mysql=mysqlnd

例如phpmyadmin:

php参数详解_php_03

从官方文档可以看出,需要的php模块有session,hash,ctype,json,mbstring,zip,gd2,openssl,xml,libxml,curl等,其中session,hash,ctype,json,xml,libxml最小化安装的php就有,不用额外指定编译参数

例如:zabbix

php参数详解_php_04

总结:php的模块,就像qq游戏大厅里的游戏,可以随意的添加,但是建议,php编译参数,不要盲目的去指定一大堆用不上的参数,满足项目需要即可!只要是程序都可能有bug,有漏洞,最小化原则,可以减少被攻击的风险!