前几天阿里云送了张50元的代金券,眼看就要到期了,就随手买一个月的低配阿里云,今天闲来无事,准备装个php 7试试,

首先下载源文件,但是github实在是太慢了,只能去php的git下,估计阿里云做了镜像,下周速度飞快,几秒钟就下完了。

下周地址为

git@git.php.net:/php-src.git

https://git.php.net/repository/php-src.git

完了进入文件夹,然后执行

 ./buildconf

有很多库需要安装,一个个装实在太麻烦,从网上找了个依赖库

yum install -y gcc gcc-c++  make zlib zlib-devel pcre pcre-devel  libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers

然后执行

./configure   --prefix=/usr/local/php   --sysconfdir=/usr/local/php/etc   --with-config-file-scan-dir=/usr/local/php/etc   --enable-fpm   --with-fpm-user=vagrant   --with-fpm-group=nogroup   --enable-mbstring   --enable-sockets   --enable-pcntl   --with-mysql=mysqlnd   --with-mysqli=mysqlnd   --with-pdo-mysql=mysqlnd   --enable-sysvshm   --enable-shmop   --enable-mysqlnd   --with-jpeg-dir   --with-freetype-dir   --with-png-dir   --with-zlib-dir   --with-gd   --with-openssl-dir   --enable-opcache 

再make安装,不过悲剧的是,我的内存只有512,直接报错了,错误如下

virtual memory exhausted: Cannot allocate memory

执行

free -m 

发现交换区为0,只能先添加交换区,过程此处不表,可以网上搜索下,完了继续执行make,

此时又报错了

make: *** [ext/fileinfo/libmagic/apprentice.lo] Error 1

因为我内存太小了,所以需要在前面的./configure 后面多加一个option 

--disable-fileinfo

继续编译

漫长的等待,终于编译完了,

然后软连接把执行程序链到默认目录

ln -s /usr/local/php/bin/php /usr/bin/php

在安装目录下有两个php的配置项,php.ini-development和php.ini-production,一个是开发环境用的,一个线上环境用的,改名php.ini并移到/usr/local/php/etc目录。

执行

php -v

结果如下

PHP 7.0.0-dev (cli) (built: Feb  6 2015 14:27:52) 
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0-dev, Copyright (c) 1998-2015 Zend Technologies

安装后发现除了源码里带的扩展,其他的都不能用了,估计是内部的zend api改变了,导致了不兼容,这样的话麻烦大了,知名的扩展估计还可能会有人做适配,不知名的扩展就不好说了,不知道php会不会走python的老路,造成版本割裂。