前言

CentOS7下升级PHP到最新版本以及编译安装phalcon框架,看相关文档无数遍,自己尝试编译安装之后才理解的更深,编译步骤以及碰到的问题做个简单的记录

php-7.0.11编译安装

1.下载php-7.0.11源码

http://php.net/downloads.php#v7.0.11

2.依赖开发包

yum install gcc gcc-c++ libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel curl curl-devel openssl openssl-devel

3.编译安装

$YOUR_PHP_SRC_DIR/configure --prefix=/usr/local/php-7.0.11 --with-config-file-path=/usr/local/php-7.0.11/etc --enable-fpm --with-pdo-mysql=mysqlnd --enable-mysqlnd --with-mysqli=mysqlnd --with-openssl --with-mcrypt --with-gd --with-freetype-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --enable-exif --enable-mbstring --enable-pcntl --with-curl --enable-sockets --enable-soap --enable-ftp --with-zlib --enable-zip --with-bz2

4.生产环境常用php编译配置
./configure
--prefix=/u01/server/php-7.1.0
--with-config-file-path=/u01/server/php-7.1.0/etc
--enable-fpm
--disable-cgi
--with-fpm-user=daemon
--with-fpm-group=daemon
--enable-mbstring
--enable-soap
--enable-bcmath
--enable-ftp
--with-xmlrpc
--with-zlib
--with-bz2=/usr/local
--with-curl
--enable-exif
--with-openssl
--enable-calendar
--enable-ctype
--enable-pcntl
--enable-session
--enable-zip
--enable-sockets
--with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd
--with-sqlite3
--enable-phar
--with-iconv-dir=/u01/server/common
--with-gettext
--enable-intl
--with-icu-dir=/u01/server/common
--with-mcrypt=/u01/server/common
--with-gd
--with-png-dir=/u01/server/common
--with-jpeg-dir=/u01/server/common
--with-freetype-dir=/u01/server/common
--with-xpm-dir=/u01/server/common/libxpm-3.5.5

phalcon编译安装

1.下载最新phalcon源码

git clone git://github.com/phalcon/cphalcon.git

2.编译安装

cd cphalcon/build
./install

3.加上配置(php.ini)

extension=phalcon.so

4.重启php-fpm

service php-fpm restart

问题

1.GCC编译器报错(内存不够用)

cc: internal compiler error: Killed (program cc1)
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://bugzilla.redhat.com/bugzilla> for instructions.
make: *** [phalcon.lo] Error 1

后记

1.使用phalcon文档里高级编译方法,编译之后的文件会很大,将近20几兆
2.使用phalcon文档里通用编译方法,编译之后文件只有5M左右
3.使用通用编译方法,命令自动搜索路径需要显示指定需要编译PHP版本php-config,phpize这2个命令的路径
4.cphalcon/build/install安装脚本会自动根据系统环境以及安装的PHP版本编译
5.编译的时间比较长>_<
6.编译时需要足够可用的内存>=2G
7.编译php时,官方建议使用mysqlnd驱动

8.解决phalcon高级编译可执行文件很大的问题

export CC="gcc"
export CFLAGS="-O2 -Wall -fvisibility=hidden -flto -DZEPHIR_RELEASE=1"

9.使用php自带的gd库时,需要带上--with-bz2,可能依赖这个库

参考资料

【1】phalcon仓库
https://github.com/phalcon/cphalcon
【2】gcc: Internal error: Killed (program cc1) while compiling PHP
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=48796

最新文章

  1. Java BigDecimal和double
  2. 【转】Flume日志收集
  3. [转]PROC简单使用用例--VC连接ORACLE
  4. [转]Oracle学习笔记——权限管理
  5. MFC 总体理解
  6. redis数据类型:Strings
  7. Oracle 正则 一行转多行
  8. IOS开发-UI学习-UIFont,字体设置及批量创建控件
  9. Excel 数据导入(OleDb)
  10. Magicodes.Admin.Core开源框架总体介绍
  11. 2017ICPC/广西邀请赛1001(水)HDU6181
  12. stats.go
  13. logback日志框架的简单使用
  14. LeetCode 简单等级
  15. 分布式事务Hmily TCC源码--学习整合
  16. Android 获取SD路径,存储空间大小的方法
  17. poj3723_Conscription
  18. 全面了解Ngnix的主要应用的场景
  19. Oracle11g温习-第二十章:数据装载 sql loader
  20. Nginx基于TCP的负载均衡的配置例子

热门文章

  1. 湖南集训Day1
  2. [Swift通天遁地]五、高级扩展-(1)快速检测设备属性:版本、类型、屏幕尺寸
  3. 微信小程序压缩图片并上传到服务器(拿去即用)
  4. git配置用户信息
  5. JavaScript--确认(confirm 消息对话框)
  6. 【转】DOS与linux的断行字符
  7. Google广告屏蔽插件adBlock
  8. Android 6.0 如何添加完整的系统服务(app-framework-kernel)
  9. android shape stroke只绘制一边或者某几边
  10. jsp%不能解析