一个神奇的PHP框架:Phalcon 之编译安装
前言
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
一个神奇的PHP框架:Phalcon 之编译安装的更多相关文章
- 一个神奇的PHP框架:Phalcon 之初识
前言 公司的APP响应速度比较慢,公司大神决定使用C语言编写的PHP框架Phalcon 代替原来的框架,响应速度有比较大的提升.以前只是听说过,没有深入的了解过.即然工作中有用到,便花点时间了解了下, ...
- 深度学习框架Caffe的编译安装
深度学习框架caffe特点,富有表达性.快速.模块化.下面介绍caffe如何在Ubuntu上编译安装. 1. 前提条件 安装依赖的软件包: CUDA 用来使用GPU模式计算. 建议使用 7.0 以上最 ...
- DMLC深度机器学习框架MXNet的编译安装
这篇文章将介绍MXNet的编译安装. MXNet的编译安装分为两步: 首先,从C++源码编译共享库(libmxnet.so for linux,libmxnet.dylib for osx,libmx ...
- Phalcon框架的编译安装 内存不足的解决办法
对症解决 有两种解决方法,一种是提升ECS系统内存.但是却要真金白银跟阿里云去购买的.另一种,则是手动创建swap交换文件.下面来介绍第二种方法. 第一步:首先确定系统是否已经开启swap交换分区: ...
- ubuntu16.04编译安装mysql-boost-5.7.21并编译成php扩展测试与使用
我之前的文章已经改造了自定义MVC框架中的工具类(验证码,图片上传,图像处理,分类)4个类,接下来,就要改造模型类,模型类肯定要连接数据库,由于我的Ubuntu Linux是裸装的php(目前只编译了 ...
- linux源码编译安装OpenCV
为了尽可能保证OpenCV的特性,使用OpenCV源码编译安装在linux上.先从安装其依赖项开始,以ubuntu 14.04.X为例讲解在Linux上源码编译安装OpenCV,其他linux版本可以 ...
- linux源代码编译安装OpenCV
为了尽可能保证OpenCV的特性,使用OpenCV源代码编译安装在linux上.先从安装其依赖项開始,以ubuntu 14.04.X为例解说在Linux上源代码编译安装OpenCV,其它linux版本 ...
- 缺少libtool依赖导致编译安装失败
今天安装一个测试数据库的过程中,编译安装rlwrap工具时出错. 如下. [root@DB1 rlwrap-0.37]# ./configure checking build system type. ...
- Linux 从源码编译安装 Nginx
Nginx 是一个高性能的 HTTP 和 反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器.Nginx 编译安装比较简单,难点在于配置.下面是 Nignx 0.8.54 编译安装和简 ...
随机推荐
- 湖南集训day4
难度:☆☆☆☆☆☆☆ 题解: 有个定理,另sum(x)表示小于等于x的数中与x互质的数的和 sum(x)=φ(x)*x/2 最后可知f(x)=x (f(1)=2) 当然打表能知道. 然后就转 ...
- Akka源码分析-Router
akak中还有一个比较重要的概念,那就是Router(路由).路由的概念,相信大家都不陌生,在akka中,它就是其他actors的一个代理,会把消息按照路由规则,分发给指定的actor.我一般喜欢把R ...
- Java初级进阶中高级工程师必备技能
很多人学了javase以为自己学的已经很OK了,但是其实javase里边有很多的知识点是你不知道的,不管你找的是哪里的javase的视频,大多数是不会讲这些东西,而这些东西你平时业务又不会主动去接触, ...
- SpringBoot2.0整合SpringSecurity实现自定义表单登录
我们知道企业级权限框架一般有Shiro,Shiro虽然强大,但是却不属于Spring成员之一,接下来我们说说SpringSecurity这款强大的安全框架.费话不多说,直接上干货. pom文件引入以下 ...
- python自动化学习笔记3-集合、函数、模块
文件操作 上次学习到文件的读写,为了高效的读写文件,我们可以用循环的方式,一行一行的进行读写操作,打开文件的方法是open的方法,打开文件执行完后还要进行关闭操作. 一般的文件流操作都包含缓冲机制,w ...
- Codeforces 455D 分块+链表
题意: 给定一个长度为 N 的序列两种操作1 l r 将[l,r]的数向右循环移位 2 l r 询问[l,r]内有多少个数等于 k其中 N,Q≤105,ai≤N 强制在线 思路: 1. 每块用一个链表 ...
- [Luogu 1052] noip 05 过河
[Luogu 1052] noip 05 过河 题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都是 ...
- java中使用String的replace方法替换html模板保存文件
在我们的D盘下有这样一个html模板,现在我们要做的就是解析news.template文件,从数据库中提取数据将数据添加到指定的模板位置上 <head> <title>{tit ...
- [ SCOI 2005 ] 最大子矩阵
\(\\\) \(Description\) 给出一个\(N\times M\)的有权矩阵,选出其中\(K\)个互不重叠的子矩阵,使得这\(K\)个子矩阵的权值和最大. \(N\in [1,100]\ ...
- Android studio & SDK的国内有效站点。
SDK.TOOLS的国内有效镜像节点: mirrors.zzu.edu.cn/android/repository/ 网上的地址只写了mirrors.zzu.edu.cn,有误,需要补齐后面的子目录才 ...