前几天阿里云送了张50元的代金券,眼看就要到期了,就随手买一个月的低配阿里云,今天闲来无事,准备装个php 7试试,
首先下载源文件,但是github实在是太慢了,只能去php的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的老路,造成版本割裂。