PHP7介绍
PHP(外文名:PHP Hypertext Preprocessor,中文名:“超文本预处理器”)https://secure.php.net 是一种通用开源脚本语言。
PHP语法吸收了C语言、Java和Perl的特点,易于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快的效果。
PHP7特性
-
改进的性能 - PHPNG代码合并在PHP7中,这是比 PHP5快两倍;
-
降低内存消耗 - 优化后PHP7使用较少的资源;
-
标量类型声明 - 现在,参数和返回值类型可以被强制执行;
-
一致性的64位支持 - 64位架构机器持续支持;
-
改进异常层次结构 - 异常层次结构得到改善;
-
许多致命错误转换成异常 - 异常的范围增大覆盖为许多致命的错误转化异常;
-
安全随机数发生器 - 加入新的安全随机数生成器的API;
-
已过时的API和扩展删除 - 不同的旧的和不支持的应用程序和扩展,从最新的版本中删除;
-
null合并运算符(??)的新空合并运算符被加入;
-
返回和标量类型声明支持返回类型和参数类型也被加入;
-
增加了对匿名匿名类的支持;
-
零成本声明支持零成本加入断言。
PHP7使用新的 Zend Engine 3.0 提高应用程序性能两倍,比PHP5.6 低了 50% 的内存消耗。 它可以服务于更多的并发用户,无需任何额外的硬件。考虑到当今的工作量 PHP7设计并重构。
PHP7安装
1. 安装必要的编译环境
yum install -y apr* autoconf automake cmake libmcrypt-devel mhash-devel libxslt-devel bison bzip2 bzip2* cloog-ppl cpp curl curl-devel e2fsprogs e2fsprogs-devel fontconfig fontconfig-devel freetype freetype* freetype-devel gcc gcc-c++ gtk+-devel gd gettext gettext-devel glibc glibc-devel glib2 glib2-devel kernel kernel-headers keyutils keyutils-libs-devel krb5 krb5-devel libcom_err-devel libpng libpng-devel libjpeg* libsepol-devel libselinux-devel libstdc++-devel libtool* libgomp libxml2 libxml2-devel libXpm* libxml* libtiff libtiff* make mpfr ncurses* ntp openssl openssl-devel patch pcre-devel perl php-common php-gd policycoreutils telnet t1lib t1lib* nasm nasm* wget zlib zlib-devel libidn libidn-devel
yum install -y compat*
2. 安装需要的组件
Yasm
Yasm http://yasm.tortall.net 是一个完全重写的NASM汇编。目前,它支持x86和AMD64指令集。接受NASM和GNU汇编器(gas)语法,产出二进制, ELF32 , ELF64 , COFF , Mach - O的( 32和64 ) , RDOFF2 ,的Win32和Win64对象的格式,并生成STABS 调试信息的来源,DWARF 2 ,CodeView 8格式。
cd /usr/local/src
wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar zxvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure
make
make install
mcrypt
mcrypt https://sourceforge.net/projects/mcrypt/files/Libmcrypt 是php里面重要的加密支持扩展库,linux环境下该库在默认情况下不开启。window环境下,PHP>=5.3,默认开启mcrypt扩展。
cd /usr/local/src
wget https://jaist.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz
tar zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure
make
make install
libvpx
libvpx http://www.loongnix.org/cgit/libvpx 是php里面提供视频解码编码的扩转库。目前支持VP8编解码器、VP9编解码器等。
cd /usr/local/src
wget https://github.com/webmproject/libvpx/archive/v1.7.0/libvpx-1.7.0.tar.gz
tar zxvf libvpx-1.7.0.tar.gz
cd libvpx-1.7.0
./configure --prefix=/usr/local/libvpx --enable-shared --enable-vp9
make
make install
TIFF
TIFF http://www.libtiff.org 该软件为标签图像文件格式(TIFF)提供支持,TIFF是一种广泛使用的存储图像数据的格式。TIFF规范的最新版本以多种不同的格式在网上发布,也有许多技术说明(TTN)。php中主要用于tiff文件处理。
cd /usr/local/src
wget http://download.osgeo.org/libtiff/tiff-4.0.6.tar.gz
tar zxvf tiff-4.0.6.tar.gz
cd tiff-4.0.6
./configure --prefix=/usr/local/tiff --enable-shared
make
make install
libpng
libpng http://www.libpng.org/pub/png/libpng.html 是一款C语言编写的比较底层的读写PNG文件的跨平台的库。借助它,你可以轻松读写PNG文件的每一行像素。因为PNG文件是经过压缩而且格式复杂的图形文件(有的PNG文件甚至像GIF文件一样带动画效果)而且PNG可以是带透明通道的真彩色图像、不带透明通道的真彩色图像、索引颜色、灰度颜色等各种格式,如果大家都自己写程序分析PNG文件就会显得很麻烦、很累。因此,通过使用libpng你就能直接使用现成的函数、程序来读写PNG文件了。
cd /usr/local/src
wget ftp://ftp-osl.osuosl.org/pub/libpng/src/libpng16/libpng-1.6.34.tar.gz
tar zxvf libpng-1.6.25.tar.gz
cd libpng-1.6.25
./configure --prefix=/usr/local/libpng --enable-shared
make
make install
FreeType
FreeType https://www.freetype.org 库是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,包括TrueType, OpenType, Type1, CID, CFF, Windows FON/FNT, X11 PCF等。
cd /usr/local/src
wget http://ftp.twaren.net/Unix/NonGNU/freetype/freetype-2.7.tar.gz
tar zxvf freetype-2.7.tar.gz
cd freetype-2.7
./configure --prefix=/usr/local/freetype --enable-shared
make
make install
JPEG
JPEG https://jpeg.org 是Joint Photographic Experts Group(联合图像专家小组)的缩写,是第一个国际图像压缩标准。JPEG图像压缩算法能够在提供良好的压缩性能的同时,具有比较好的重建质量,被广泛应用于图像、视频处理领域。人们日常碰到的“.jpeg”、‘’.jpg“等指代的是图像数据经压缩编码后在媒体上的封存形式,不能与JPEG压缩标准混为一谈。
cd /usr/local/src
wget http://www.ijg.org/files/jpegsrc.v9c.tar.gz
tar zxvf jpegsrc.v9b.tar.gz
cd jpeg-9b
./configure --prefix=/usr/local/jpeg --enable-shared
make
make install
libGD
libGD http://libgd.github.io 是一个开源的图像处理库,支持 PNG/JPEG/GIF以及其他格式的图像。GD一般被用来创建图表、图形、缩略图以及其他图像相关的处理操作。
cd /usr/local/src
wget https://bitbucket.org/libgd/gd-libgd/downloads/libgd-2.1.1.tar.gz
tar zxvf libgd-2.1.1.tar.gz
cd libgd-2.1.1
./configure --prefix=/usr/local/libgd --enable-shared --with-jpeg=/usr/local/jpeg --with-png=/usr/local/libpng --with-freetype=/usr/local/freetype --with-fontconfig=/usr/local/freetype --with-xpm=/usr/ --with-tiff=/usr/local/tiff
make
make install
说明:如果libgd编译失败,可以先跳过,直接使用系统默认的2.1.0版本,在编译php的时候把参数--with-gd=/usr/local/libgd修改为--with-gd即可。
T1LIB
T1LIB http://www.t1lib.org 是由Rainer Menzner开发的开源库,并在GNU通用公共图书馆许可证下分发。T1LIB是用C编程语言编写的,程序员可以很容易地从Adobe(TM)1型字体生成/光栅化位图。T1LIB基于X11光栅化器的代码,它由IBM捐赠给X11项目。
cd /usr/local/src
wget http://pkgs.fedoraproject.org/repo/pkgs/t1lib/t1lib-5.1.2.tar.gz/a5629b56b93134377718009df1435f3c/t1lib-5.1.2.tar.gz
tar zxvf t1lib-5.1.2.tar.gz
cd t1lib-5.1.2
./configure --prefix=/usr/local/t1lib --enable-shared
make without_doc
make install
3. 安装PHP7
注意:如果系统是64位,请执行以下命令,否则安装php会出错。
cp -frp /usr/lib64/libltdl.so* /usr/lib/
cp -frp /usr/lib64/libXpm.so* /usr/lib/
编译安装PHP7
cd /usr/local/src
wget http://cn.php.net/distributions/php-7.1.19.tar.gz
tar -zvxf php-7.1.19.tar.gz
cd php-7.1.19
export LD_LIBRARY_PATH=/usr/local/libgd/lib
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mysql-sock=/tmp/mysql.sock --with-pdo-mysql=/usr/local/mysql --with-gd=/usr/local/libgd --with-png-dir=/usr/local/libpng --with-jpeg-dir=/usr/local/jpeg --with-freetype-dir=/usr/local/freetype --with-xpm-dir=/usr/lib64 --with-zlib-dir=/usr/local/zlib --with-iconv --enable-libxml --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-opcache --enable-mbregex --enable-fpm --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-mcrypt --with-curl --enable-ctype --enable-mysqlnd
make
make install
配置PHP
cp php.ini-production /usr/local/php/etc/php.ini # 复制php配置文件到安装目录
rm -rf /etc/php.ini # 删除系统自带配置文件
ln -s /usr/local/php/etc/php.ini /etc/php.ini # 添加软链接到 /etc目录
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf # 拷贝模板文件为php-fpm配置文件
ln -s /usr/local/php/etc/php-fpm.conf /etc/php-fpm.conf # 添加软连接到 /etc目录
vi /usr/local/php/etc/php-fpm.conf # 编辑
pid = run/php-fpm.pid # 取消前面的分号
:wq! # 保存退出
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
vi /usr/local/php/etc/php-fpm.d/www.conf # 编辑
user = www # 设置php-fpm运行账号为www
group = www # 设置php-fpm运行组为www
# 设置 php-fpm开机启动
cp /usr/local/src/php-7.1.19/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm # 拷贝php-fpm到启动目录
chmod +x /etc/rc.d/init.d/php-fpm # 添加执行权限
chkconfig php-fpm on # 设置开机启动
编辑PHP配置文件
vi /usr/local/php/etc/php.ini # 编辑配置文件
# 修改:disable_functions
# 列出PHP可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用。
disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd, posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname
date.timezone = PRC # 设置时区
expose_php = Off # 禁止显示php版本的信息
short_open_tag = ON # 支持php短标签
opcache.enable=1 # php支持opcode缓存
# 找到:;opcache.enable_cli=1 # php支持opcode缓存,改为0
opcache.enable_cli = 0
# 在最后一行添加:
zend_extension=opcache.so # 开启opcode缓存功能
:wq! #保存退出
配置Nginx支持PHP
# 配置user,必须与/usr/local/php/etc/php-fpm.conf中的user,group配置相同
vi /usr/local/nginx/conf/nginx.conf
user www www; # 首行user去掉注释,修改Nginx运行组,否则php运行出错
index index.html index.htm index.php; # 添加index.php
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 取消FastCGI server部分location的注释,注意fastcgi_param行的参数,改为$document_root$fastcgi_script_name,或者使用绝对路径
/etc/init.d/nginx restart # 重启nginx
service php-fpm start # 启动php-fpm
测试环境
cd /usr/local/nginx/html/ # 进入nginx默认网站根目录
rm -rf /usr/local/nginx/html/* # 删除默认测试页
vi index.php # 新建index.php文件
<?php phpinfo(); ?>
:wq! #保存退出
chown www:www -R /usr/local/nginx/html # 设置目录所有者
chmod 700 -R /usr/local/nginx/html # 设置目录权限
网友评论