Linux PHP 编译参数详解(一)

Fast-CGI:

./configure --prefix=/usr/local/php --enable-fastcgi --enable-force-cgi-redirect --with-config-file-path=/etc --with-zlib --with-mysql --with-xml --with-gd --enable-gd-native-ttf --enable-gd-jis-conv --with-freetype-dir --with-jpeg-dir --with-png-dir --enable-mbstring

PHP4-Server:

./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql --with-config-file-path=/etc --with-gd --enable-gd-native-ttf --enable-gd-jis-conv --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --enable-xml --enable-mbstring

PHP4-Max:

./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --mandir=/usr/share/man --with-mysql=/usr/local/mysql --with-config-file-path=/usr/local/php/etc --with-openssl=/usr/local/openssl-0.9.7e --with-gd --enable-gd-native-ttf --enable-gd-jis-conv --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-bz2 --with-inifile --with-hyperwave --enable-xml --enable-track-vars --enable-dba --enable-dbase --enable-filepro --enable-ftp --enable-versioning --enable-memory-limit --enable-calendar --enable-session --enable-sockets --enable-sysmsg --enable-sysvsem --enable-sysvshm --enable-tokenizer --enable-overload --enable-ctype --enable-sigchild --enable-magic-quotes --enable-roxen-zts --enable-fastcgi --enable-dbx --enable-dio --enable-shmop --enable-mbstring

PHP5-Server:

./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-zlib-dir --with-bz2 --with-tiff-dir --with-libxml-dir --with-gd --with-freetype-dir --with-jpeg-dir --with-png-dir --with-ttf --enable-mbstring --with-mysql=/usr/lib/mysql --with-config-file-path=/etc --disable-ipv6 --enable-gd-native-ttf

PHP5-Standard:

./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --mandir=/usr/share/man --with-openssl=/usr/local/openssl-0.9.7e --with-zlib --with-bz2 --with-tiff-dir --with-libxml-dir --enable-dio --enable-ftp --with-gd --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib-dir --with-bz2-dir --with-ttf --enable-mbstring --with-mysql=/usr/local/mysql --with-config-file-path=/usr/local/php/etc --disable-ipv6 --enable-gd-native-ttf

PHP5-Max:

./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --mandir=/usr/share/man --with-openssl=/usr/local/openssl-0.9.7e --with-zlib --with-bz2 --with-tiff-dir --with-libxml-dir --enable-dio --enable-ftp --with-gd --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib-dir --with-bz2-dir --with-ttf --with-inifile --enable-dba --enable-dbase --enable-filepro --enable-versioning --enable-memory-limit --enable-calendar --enable-sockets --enable-sysvsem --enable-sigchild --enable-magic-quotes --enable-roxen-zts --enable-fastcgi --enable-dbx --enable-shmop --enable-mbstring --with-mysql=/usr/local/mysql --with-config-file-path=/usr/local/php/etc --disable-ipv6 --enable-gd-native-ttf

1. 配置参数:

./configure \
--prefix=/usr/local/php5 \
--with-apxs2=/usr/local/httpd2/bin/apxs \
--with-bz2 \
--enable-zip \
--enable-calendar \
--with-mysql=/usr/local/mysql \
--with-pdo-mysql=/usr/local/mysql \
--enable-sqlite-utf8 \
--with-iconv=/usr/local/iconv \
--enable-mbstring \
--with-curl \
--with-snmp \
--with-tidy \
--enable-exif \
--with-gd \
--with-jpeg-dir=/usr \
--with-png-dir=/usr \
--with-zlib-dir=/usr \
--with-xpm-dir=/usr \
--with-ttf=/usr \
--with-freetype-dir=/usr \
--enable-gd-native-ttf \
--with-ming=/usr/local \
--with-xmlrpc \
--enable-soap \
--enable-sockets \
--with-mcrypt \
--with-mhash \
--enable-shmop \
-enable-dba \
--with-gdbm \
--with-db4 \
--with-imap \
--with-imap-ssl \
--with-kerberos \
--with-mcrypt=/usr/local \
--with-mhash=/usr/local \
--enable-pcntl \

说明:

--prefix=/usr/local/php //指定 php 安装目录 
--with-apxs2=/usr/local/apache/bin/apxs //整合apache,apxs功能是使用mod_so中的LoadModule指令,加载指定模块到 apache,要求 apache 要打开SO模块
--with-config-file-path=/usr/local/php/etc //指定php.ini位置
--with-MySQL=/usr/local/mysql //mysql安装目录,对mysql的支持
--with-mysqli=/usr/local/mysql/bin/mysql_config //mysqli扩展技术不仅可以调用MySQL的存储过程、处理MySQL事务,而且还可以使访问数据库工作变得更加稳定。 
--enable-safe-mode 打开安全模式 
--enable-ftp 打开ftp的支持 
--enable-zip 打开对zip的支持 
--with-bz2 打开对bz2文件的支持 
--with-jpeg-dir 打开对jpeg图片的支持 
--with-png-dir 打开对png图片的支持 
--with-freetype-dir 打开对freetype字体库的支持 
--without-iconv 关闭iconv函数,各种字符集间的转换 
--with-libXML-dir 打开libxml2库的支持 
--with-XMLrpc 打开xml-rpc的c语言 
--with-zlib-dir 打开zlib库的支持 
--with-gd 打开gd库的支持 
--enable-gd-native-ttf 支持TrueType字符串函数库 
--with-curl 打开curl浏览工具的支持 
--with-curlwrappers 运用curl工具打开url流 
--with-ttf 打开freetype1.*的支持,可以不加了 
--with-xsl 打开XSLT 文件支持,扩展了libXML2库 ,需要libxslt软件 
--with-gettext 打开gnu 的gettext 支持,编码库用到 
--with-pear 打开pear命令的支持,PHP扩展用的 
--enable-calendar 打开日历扩展功能 
--enable-mbstring 多字节,字符串的支持 
--enable-bcmath 打开图片大小调整,用到zabbix监控的时候用到了这个模块
--enable-sockets 打开 sockets 支持
--enable-exif 图片的元数据支持 
--enable-magic-quotes 魔术引用的支持 
--disable-rpath 关闭额外的运行库文件 
--disable-debug 关闭调试模式 
--with-mime-magic=/usr/share/file/magic.mime 魔术头文件位置

CGI方式安装才用的参数:

--enable-fpm //打上PHP-fpm 补丁后才有这个参数,CGI方式安装的启动程序
--enable-fastCGI //支持fastcgi方式启动PHP
--enable-force-CGI-redirect //重定向方式启动PHP
--with-ncurses //支持ncurses 屏幕绘制以及基于文本终端的图形互动功能的动态库
--enable-pcntl //freeTDS需要用到的,可能是链接mssql 才用到
--with-mcrypt //mcrypt算法的扩展
--with-mhash //mhash算法的扩展
以上函数库需要安装
--with-gmp 应该是支持一种规范
--enable-inline-optimization 优化线程
--with-openssl //openssl的支持,加密传输时用到的
--enable-dbase //建立DBA 作为共享模块
--with-pcre-dir=/usr/local/bin/pcre-config //perl的正则库案安装位置
--disable-dmalloc
--with-gdbm //dba的gdbm支持
--enable-sigchild
--enable-sysvsem
--enable-sysvshm
--enable-zend-multibyte //支持zend的多字节
--enable-mbregex
--enable-wddx
--enable-shmop
--enable-soap

1>指定了--with-apxs2=/usr/local/apache/bin/apxs以后,就不要再激活--enable-fpm和--enable-fastCGI,apxs是以php module的模式加载PHP的。

2>Mysql在编译了Mysql开发library以后,可以不用指定mysql的路径。

3>PHP编译存在基础的依赖的关系,编译PHP首先需要安装XML扩展,因为php5核心默认打开了XML的支持,其他的基础库,相应需要:

4>GD -> zlib, Png, Jpg, 如果需要支持其他,仍需要根据实际情况编译扩展库,ttf库需要freetype库的支持。

5>--enable-magic-quotes,是一个极其不推荐的参数,当然,如果你需要PHP为你做这些底下的工作,实际上他也没有很彻底的解决问题。

6>-with-openssl,需要openssl库。

mysqli是MySQL团队提供的MySQL驱动,具有很多实用的功能和典型特征。不过他不是MySQL于PHP平台最好的选择,PDO被证实,是一个简易、高并发性,而且易于创建和回收的标准接口。不过PDO也经历了5.3以前的内存溢出的问题,在5.3以后,在读取Oracle的LOB资源时,若不对内存进行限制,仍会内存溢出。

如果是产品模式,好像pear、shmop、ftp等,都不推荐使用,他们要做的事情,用C/C++,用Java,甚至其他脚本语言,都有很好很快速的选择,无需局限于使用PHP去实现。不熟悉的类库和不常用的库,也不推荐使用。magic-quote、session.auto_start、PHP服务器信息、PHP报错信息等在编译完成后,应该第一时间关闭,避免暴露服务器信息。

PHP对应的Web Server模式,Module、fastcgi、fpm只需要一种即可,服务器不是你的试验田。fastcgi可以选择Nginx和lighttpd,其实Nginx也是使用lighttpd的spwan-fcgi进行fcgi进程管理的。fpm是使用PHP自身去管理多进程,有点类似一个后端代理。无论什么模式,在发布产品服务器,都应该做进程和线程调优,做足够多的压力测试,找出最好的进程数组合。

选好一种PHP OPCode cache的扩展,这个也是很重要的,linux 2.6核心下,fcgi下,xcache有较好的实践经验,其他的在并发数增加以后,性能衰减严重。

如果真的想体验,宁可编译多几个PHP版本,也不要针对一个版本的PHP集合各种扩展,适应各种环境,这会让把你自己逼进窘境的。

-with-bz2 \ 打开对bz2文件的支持。
--enable-zip \ 打开对zip的支持。
--enable-calendar \ 打开日历扩展。
--with-mysql=/usr/local/mysql \ mysql的支持
--with-pdo-mysql=/usr/local/mysql \ pdo的mysql支持。
--enable-sqlite-utf8 \ 使sqllite支持utf-8
--with-iconv=/usr/local/iconv \ 支持iconv
--enable-mbstring \ 支持mbstring
--with-curl \
--with-snmp \
--with-tidy \
--enable-exif \
--with-gd \
--with-jpeg-dir=/usr \
--with-png-dir=/usr \
--with-zlib-dir=/usr \
--with-xpm-dir=/usr \
--with-ttf=/usr \
--with-freetype-dir=/usr \
--enable-gd-native-ttf \
--with-ming=/usr/local \
--with-xmlrpc \
--enable-soap \
--enable-sockets \
--with-mcrypt \
--with-mhash \
--enable-shmop \
-enable-dba \
--with-gdbm \
--with-db4 \
--with-imap \
--with-imap-ssl \
--with-kerberos \
--with-mcrypt=/usr/local \
--with-mhash=/usr/local \
--enable-pcntl \

需要单独安装的扩展:

1. gd库。
2. ming的扩展。
3. mhash和mcrypt的扩展。

详细选项上,除了上述的安装简介外,也可以在编译时加入其它的选项。

apache模块

语法: --with-apache=DIR

说明: 用本选项可以让 PHP 以apache的模块方式使用,DIR 的字符串可以是 /usr/local/apache 或其它安装apache的目录

范例: --with-apache=/var/lib/apache

fhttpd 服务器模块

语法: --with-fhttpd=DIR

说明: 若使用 fttpd 服务器,可以使用本指令编译 PHP。用模块的方式配合 fttpd 服务器,可以有较好的效率。

Adabas D 数据

语法: --with-adabas=DIR

说明: 数据库系统为 Adabas D 数据库时需要加本选项。关于 Adabas D 数据库的细节,可以参考 http://www.adabas.com。

范例: --with-adabas=/usr/local/adabasd

dBase 资料表

语法: --with-dbase

说明: 只要加本选项,不用其它的参数或函数库,PHP 就会让系统有存取 dBase 资料表的功能。

filePro 数据库

语法: --with-filepro

说明: 不用指定数据库路径及其它函数库等,可以读取 filePro 数据库 (唯读)。

mSQL 数据库

语法: --with-msql=DIR

说明: 提供存取 mSQL 数据库。更多的细节请参考 mSQL 的网站 http://www.hughes.com.au。

范例: --with-msql=/usr/local/Hughes

MySQL 数据库

语法: --with-mysql=DIR

说明: 提供存取 MySQL 数据库。更多的细节请参考 MySQL 的网站 http://www.tcx.se。

范例: --with-mysql=/usr/local/mysql

iODBC 数据库装置

语法: --with-iodbc=DIR

说明: 提供 ODBC 数据库装置,用来存取后端数据库。更多的细节请参考 iODBC 的网站 http://www.iodbc.org。

范例: --with-iodbc=/usr/local/iodbc

OpenLink ODBC 数据库装置

语法: --with-openlink=DIR

说明: 使用 OpenLink ODBC 数据库装置,用来存取后端数据库。更多的细节请参考 OpenLink ODBC 的网站 http://www.openlinksw.com。

范例: --with-openlink=/usr/local/openlink

Oracle 数据库

语法: --with-oracle=DIR

说 明: 使用 Oracle 数据库。Oracle 的版本要在 7.3 版以上。您也可以在 PHP 程序中使用环境变量 ORACLE_HOME 来指定 Oracle 的路径。更多有关 Oracle 的信息请参考 Oracle 的网站 http://www.oracle.com。

范例: --with-oracle=/export/app/oracle/product/7.3.2

PostgreSQL 数据库

语法: --with-pgsql=DIR

说 明: 使用 PostgreSQL 数据库。更多有关 PostgreSQL 的信息请参考 PostgreSQL 的网站 http://www.postgreSQL.org 或台湾的 Mirror 站 http://postgresql.ccit.edu.tw。

范例: --with-pgsql=/usr/local/pgsql

Solid 数据库

语法: --with-solid=DIR

说明: 使用 Solid 数据库。更多有关 Solid 的信息请参考 Solid 的网站 http://www.solidtech.com。

范例: --with-solid=/usr/local/solid

Sybase 数据库

语法: --with-sybase=DIR

说明: 使用 Sybase 数据库。更多有关 Sybase 的信息请参考 Sybase 的网站 http://www.sybase.com。

范例: --with-sybase=/home/sybase

Sybase-CT 数据库

语法: --with-sybase-ct=DIR

说明: 使用 Sybase-CT 数据库。

范例: --with-sybase-ct=/home/sybase

Velocis 数据库

语法: --with-velocis=DIR

说明: 使用 Velocis 数据库。有关 Velocis 数据库的进一步资料请参考 Raima 公司的网站 http://www.raima.com。

范例: --with-velocis=/usr/local/velocis

自订 ODBC 数据库驱动程序

语法: --with-custom-odbc=DIR

说明: 使用自订的 ODBC 函数库。当然,在使用本方式时要指定 CUSTOM_ODBC_LIBS 及 CFLAGS 变量。例如在 QNX 机器上使用 Sybase SQL Anywhere 时可能要配置系统环境变量 CFLAGS=-DODBC_QNX、LDFLAGS=-lunix 及 CUSTOM_ODBC_LIBS="-ldblib -lodbc",并要在 PHP 配置加入 --with-custom-odbc=/usr/lib/sqlany50

范例: --with-custom-odbc=/usr/local/odbc

不使用 ODBC 数据库驱动程序

语法: --disable-unified-odbc

说 明: 使用本选项将使所有的 ODBC 数据库驱动程序不作用。本选项不用指定路径,而受本选项影响的选项有 --with-iodbc、--with-solid、--with-adabas、--with-velocis 及 --with-custom-odbc。

LDAP 目录协议

语法: --with-ldap=DIR

说明: 若要使用目录协议 (Lightweight Directory Access Protocol, LDAP) 则必须要打开本选项。有关 LDAP 的细节,可以参考 RFC 文件的 RFC1777 及 RFC1778。

范例: --with-ldap=/usr/local/ldap.

mcrypt 编码函数库

语法: --with-mcrypt=DIR

说明: 当安装了 mcrypt 函数库后,可在编译 PHP 时加入本选项,让程序可以使用编解码功能。

范例: --with-mcrypt=/usr/local/include

Sys V 信号

语法: --enable-sysvsem

说明: 要使用 SysV 的信号 (semaphores) 机制,则要打开本选项。

XML 支持

语法: --with-xml

说明: 打开本选项可以支持 James Clark‘s 写的 XML 解析程序库。

维护模式

语法: --enable-maintainer-mode

说明: 本选项一般不会打开,除非是 PHP 开发人员比较有用。

正则表达式程序库

语法: --with-system-regex

说明: 若您需要额外的正则表达式功能,可以加入本选项。

PHP 配置文件

语法: --with-config-file-path=DIR

说明: 用来指定 php3.ini 或 php4.ini 的路径,供 PHP 初始化时使用。

范例: --with-config-file-path=/usr/local/lib

PHP 执行路径

语法: --with-exec-dir=DIR

说明: 有时为了系统的安全性考虑,会指定 PHP 程序一定要在哪个目录执行。

范例: --with-exec-dir=/usr/local/bin

调试模式

语法: --enable-debug

说明: 本选项一般不会使用,除非在开发 PHP 程序时比较有用。它可以显示额外的错误信息。

安全模式

语法: --enable-safe-mode

说明: 默认值是打开的,可以对系统安全提供比较多的保护。

变量追踪

语法: --enable-track-vars

说明: 让 PHP 能 追踪 HTTP_GET_VARS、HTTP_POST_VARS 及 HTTP_COOKIE_VARS 三个变量,一般是打开的。

自动加引入字符

语法: --enable-magic-quotes

说明: 可让程序在执行时自动加入反斜线的引入字符。

打开调试器

语法: --enable-debugger

说明: 打开内建的 PHP 调试器。目前本功能还在实验阶段,尚未成熟。

取消路径 (discard path)

语法: --enable-discard-path

说明: 打开这个选项,用户就不能透过浏览器读取 .htaccess 等和系统安全相关的文件。

高精确度数学函数

语法: --enable-bcmath

说明: 打开高精确度函数。必须要先安装本函数库,本选项方有效。

强制 CGI 重定向

语法: --enable-force-cgi-redirect

范 例: 若使用 CGI VERSION 模式来执行 PHP 的设,打开本选项会增加安全性。例如用户读 http://my.host/cgi-bin/php/secret/doc.html 遇到比较了解 PHP 系统的黑客级用户可能会自已输入以下网址 http://my.host/secret/doc.html 来读取相关信息。若 PHP 和 Apache 编译在一起,让 PHP 变成 Apache 的一部份,则不需要加入本选项。

不使用短的标记

语法: --disable-short-tags

说明: 配置本选项后,PHP 的程序就不能使用短的标记,一定要用的长标记。

引入远端档宁

语法: --enable-url-includes

说明: 配置本选项可让 PHP 程序可以引入 (include) 远端的 HTTP 或 FTP 服务器中的文件。

关闭语法效果

语法: --disable-syntax-hl

说明: 使用本选项会关闭 PHP 语法的彩色效果。

函数库路径

语法: CPPFLAGS=-IDIR 及 LDFLAGS=-LDIR

说明: 若 PHP 在安全或编译所需的函数库在值得的路径,需要加入本选项,LDFLAGS 表示函数库的路径,CPPFLAGS 表示标头文件的路径。

范例: LDFLAGS=-L/my/lib/dir CPPFLAGS=-I/my/include/dir ./configure

时间: 2024-11-03 19:30:13

Linux PHP 编译参数详解(一)的相关文章

Linux PHP 编译参数详解(二)

对于喜欢玩开源软件的童鞋么,都喜欢自己编译安装程序,本文说明下如何编译安装php的详细参数. 示例: ./configure \ --prefix=/usr/local/php --with-zlib --disable-rpath \ --enable-sysvsem --with-curl --with-curlwrappers --enable-mbregex --enable-fpm \ --enable-mbstring --enable-zip --enable-soap --wit

Linux下nginx编译安装教程和编译参数详解

这篇文章主要介绍了Linux下nginx编译安装教程和编译参数详解,需要的朋友可以参考下 一.必要软件准备1.安装pcre 为了支持rewrite功能,我们需要安装pcre 复制代码代码如下: # yum install pcre* //如过你已经装了,请跳过这一步 2.安装openssl 需要ssl的支持,如果不需要ssl支持,请跳过这一步 复制代码代码如下: # yum install openssl* 3.gzip 类库安装 复制代码代码如下: yum install zlib zlib-

Monitorix监控Linux主机图文详解

Monitorix监控Linux主机图文详解 Monitorix简介 Monitorix 是一款自由开源的轻巧型系统监视工具.使用 Monitorix你可以随时掌控 CPU 负载及温度.内存占用.活动进程.磁盘使用及温度.网络设备流量.网络服务等全方位的系统信息.Monitorix 需要 Apache Web 服务器来显示这些系统信息图表.所以它特别适合在 Linux 服务器上面使用. 下面是我安装的步骤 1.安装的环境和需要的rpm包 我是在CentOS 6.4下面安装的CentOS 5可以使

LINUX 信号概念详解

LINUX 信号概念详解 我们运行如下命令,可看到Linux支持的信号列表: # kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD 18) SIGCONT 19) SIGSTOP

linux FTP配置详解

一.vsftpd说明: LINUX下实现FTP服务的软件很多,最常见的有vsftpd,Wu-ftpd和Proftp等.Red Hat Enterprise Linux中默认安装的是vsftpd. 访问FTP服务器时需要经过验证,只有经过了FTP服务器的相关验证,用户才能访问和传输文件.vsftpd提供了3种ftp登录形式:  (1)anonymous(匿名帐号) 使用anonymous是应用广泛的一种FTP服务器.如果用户在FTP服务器上没有帐号,那么用户可以以anonymous为用户名,以自己

Linux磁盘阵列技术详解(二)--raid 1创建

我在Linux磁盘阵列技术详解(一)里已经详细介绍了几种RAID磁盘阵列方式,原理以及创建raid 0 的详细步骤.那么这篇文档就着重讲解如何创建raid 1的技术: 步骤如下: ① 分区 同样我们还是以一块硬盘的不同分区为例,实际工作中应该是不同的硬盘才对. 具体分区步骤不再赘述! 分区后结果如下图所示: ② 创建raid 1 mdadm -C -v /dev/md1 -l 1 -n 2 -x 1 /dev/sdc1 /dev/sdc2 /dev/sdc3 或者 mdadm -C -v /de

linux rm 命令详解及使用方法实战【初级】

rm:删除命令 前言: windows中的删除命令大家都不陌生,linux中的删除命令和windows中有一个共同特点,那就是危险,前两篇linux mkdir 命令详解及使用方法实战[初级]中我们就提到了rm命令,现在我们来详细介绍一下linux中删除文件和目录的命令, rm命令,rm是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除.对于链接文件,只是删除了链接,原有文件均保持不变. 名称 rm - remove files o

Linux netstat命令详解

Linux netstat命令详解 简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等. 输出信息含义 执行netstat后,其输出结果为 Active Internet connections (w/o servers)Proto Recv-Q Send-Q Local Address Foreign Address State

linux sort 命令详解

原文:http://www.cnblogs.com/51linux/archive/2012/05/23/2515299.html linux sort 命令详解 sort是在Linux里非常常用的一个命令,管排序的,集中精力,五分钟搞定sort,现在开始! 1 sort的工作原理 sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出. [[email protected] programming]$ cat seq.txtba