PHP常用编译参数中文说明
编译PHP常用的参数的解释
--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#用来指定php3.ini或php4.ini的路径 --with-MySQL=/usr/local/mysql#mysql安装目录,对mysql的支持 --with-mysqli=/usr/local/mysql/bin/mysql_config#mysqli扩展技术不仅可以调用MySQL的存储过程、处理MySQL事务,而且还可以使访问数据库工作变得更加稳定。 --with-mysql-sock=/tmp/mysql.sock#指定mysql套接字文件位置 --enable-safe-mode#打开安全模式,默认值是打开的 --disable-short-tags #配置本选项后,PHP的程序就不能使用短的标记,一定要用的长标记 --with-exec-dir=DIR #PHP执行路径(有时为了系统的安全性考虑,会指定PHP程序一定要在哪个目录执行) --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-sqlite-utf8 #使sqllite支持utf-8 --enable-bcmath#打开图片大小调整,用到zabbix监控的时候用到了这个模块 --enable-sockets#打开sockets支持 --enable-exif#图片的元数据支持 --enable-magic-quotes#魔术引用的支持 --disable-rpath#关闭额外的运行库文件 --disable-debug#关闭调试模式 --enable-debug #本选项一般不会使用,除非在开发PHP程序时比较有用。它可以显示额外的错误信息 --with-ldap=DIR #若要使用目录协议(LightweightDirectoryAccessProtocol,LDAP)则必须要打开本选项。有关LDAP的细节,可以参考RFC文件的RFC1777及RFC1778 --with-mime-magic=/usr/share/file/magic.mime#魔术头文件位置 --with-apache=DIR #用本选项可以让PHP以apache的模块方式使用,DIR的字符串可以是/usr/local/apache或其它安装apache的目录 --with-custom-odbc=DIR #使用自订的ODBC函数库。当然,在使用本方式时要指定CUSTOM_ODBC_LIBS及CFLAGS变量。例如在QNX机器上使用SybaseSQLAnywhere时可能要配置系统环境变量CFLAGS=-DODBC_QNX、LDFLAGS=-lunix及CUSTOM_ODBC_LIBS="-ldblib-lodbc",并要在PHP配置加入--with-custom-odbc=/usr/lib/sqlany50 --with-oracle=DIR #使用Oracle数据库。Oracle的版本要在7.3版以上。您也可以在PHP程序中使用环境变量ORACLE_HOME来指定Oracle的路径。更多有关Oracle的信息请参考Oracle的网站http://www.oracle.com --with-sybase=DIR #使用Sybase数据库。更多有关Sybase的信息请参考Sybase的网站http://www.sybase.com --with-sybase-ct=DIR #使用Sybase-CT数据库
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.gd库。
2.ming的扩展。
3.mhash和mcrypt的扩展
1>指定了--with-apxs2=/usr/local/apache/bin/apxs以后,就不要再激活--enable-fpm和--enable-fastCGI,apxs是以phpmodule的模式加载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对应的WebServer模式,Module、fastcgi、fpm只需要一种即可,服务器不是你的试验田。fastcgi可以选择Nginx和lighttpd,其实Nginx也是使用lighttpd的spwan-fcgi进行fcgi进程管理的。fpm是使用PHP自身去管理多进程,有点类似一个后端代理。无论什么模式,在发布产品服务器,都应该做进程和线程调优,做足够多的性能及压力方面的测试,找出最好的进程数组合。
选好一种PHPOPCodecache的扩展,这个也是很重要的,linux2.6核心下,fcgi下,xcache有较好的实践经验,其他的在并发数增加以后,性能衰减严重。如果真的想体验,宁可编译多几个PHP版本,也不要针对一个版本的PHP集合各种扩展,适应各种环境,这会让把你自己逼进窘境的。