1241天 Edwiin

还好有你,再见如初。

CentOS7环境中源码编译安装PHP_5.6.23

发布于 14天前 / 95 次围观 / 0 条评论 / Linux / Edwiin

废话&准备工作

PHP/Perl/Python网页编程语言:作为三种开发动态网页编程语言,负责解释动态网页文件,并提供web应用程序的开发和运行环境。其中PHP是一种被广泛应用的开放源代码的多用途脚本语言,它可以嵌入到HTML中,尤其适合于web应用开发。

本文某些配置项与https://www.edwiin.cn/post-163.html相呼应,参考学习。

本次操作需要提前准备的有:

1、能正常联网的centos7虚拟机服务器

2、php-5.6.23.tar.gz

下载地址:https://www.php.net/distributions/php-5.6.23.tar.gz

PHP所有版本官方页面:https://www.php.net/releases/

3、提前把php编译包放到自己的指定目录,比如我是/data目录下,或者有嫌麻烦的可以直接wget上面的下载地址。

解压命令是:tar zvxf php-5.6.23.tar.gz

4、yum安装依赖软件

yum install gcc bison bison-devel zlib-devel libmcrypt-devel mcrypt mhash-devel openssl-devel libxml2-devel libcurl-devel bzip2-devel readline-devel libedit-devel sqlite-devel jemalloc jemalloc-devel -y
yum -y install libjpeg-devel
yum install -y libpng libpng-devel
yum install -y freetype-devel
yum install -y epel-release
yum install -y libmcrypt-devel 

5、跟着敲...

正文开始

添加一个名为www的用户组,并且不给他登陆权限:

groupadd www
useradd -g www -s /sbin/nologin www

进入解压好的php目录:cd /data/php-5.6.23

开始编译:

./configure --prefix=/usr/local/php --with-apxs2=/app/httpd24/bin/apxs --with-config-file-path=/usr/local/php/etc --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-opcache --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-gettext --enable-mbstring --with-iconv --with-mcrypt --with-mhash --with-openssl --enable-bcmath --enable-soap --with-libxml-dir --enable-pcntl --enable-shmop --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-sockets --with-curl --with-zlib --enable-zip --with-bz2 --with-readline

刷屏完了是这样的:

这里有一条:--with-apxs2=/app/httpd24/bin/apxs

这句话是指定的Apache的安装地址,很重要,它的作用就是生成libphp5.so,不安装则访问.php文件将会变成下载

如果不安装其他的那些扩展,那么上面的编译可以简化成下面这条:

./configure --with-apxs2=/app/httpd24/bin/apxs --with-mysql

下面是上面的注解:(可略过)

""" 安装路径 """
--prefix=/usr/local/php \
""" php.ini 配置文件路径 """
--with-apxs2=/usr/local/apache24/bin/apxs \
""" 促使生成libphp5.so """
--with-config-file-path=/usr/local/php56/etc \
""" 优化选项 """
--enable-inline-optimization \
--disable-debug \
--disable-rpath \
--enable-shared \
""" 启用 opcache,默认为 ZendOptimizer+(ZendOpcache) """
--enable-opcache \
""" FPM """
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
""" MySQL """
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
""" 国际化与字符编码支持 """
--with-gettext \
--enable-mbstring \
--with-iconv \
""" 加密扩展 """
--with-mcrypt \
--with-mhash \
--with-openssl \
""" 数学扩展 """
--enable-bcmath \
""" Web 服务,soap 依赖 libxml """
--enable-soap \
--with-libxml-dir \
""" 进程,信号及内存 """
--enable-pcntl \
--enable-shmop \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
""" socket & curl """
--enable-sockets \
--with-curl \
""" 压缩与归档 """
--with-zlib \
--enable-zip \
--with-bz2 \
""" GNU Readline 命令快捷键绑定 """
--with-readline

编译完了就开始安装:

make && make install

PHP配置文件放到指定位置:

cp php.ini-development /usr/local/php/etc/php.ini

报错的话检查是否在php解压的目录下,默认情况下是不会退出的哈。

配置php-fpm 服务

cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf #把配置文件复制到位
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm  #给权限

什么是php-fpm,来看一段废话:

PHP-FPM(FastCGI Process Manager:FastCGI进程管理器)是一个PHPFastCGI管理器,对于PHP 5.3.3之前的php来说,是一个补丁包,旨在将FastCGI进程管理整合进PHP包中。如果你使用的是PHP5.3.3之前的PHP的话,就必须将它patch到你的PHP代码中,在编译安装PHP后才可以使用。

php-fpm添加成系统服务和开机启动,然后启动php-fpm服务

chkconfig --add php-fpm
chkconfig php-fpm on 
service php-fpm start

添加环境变量:

vi /etc/profile #编辑这个文件
PATH=$PATH:/usr/local/php/bin
export PATH
输入以上俩行之后保存退出
source /etc/profile #立即生效

现在输入php -v就可以看到如下图的效果:

最后

修改Apache配置文件,使之与php关联:

vi /app/httpd24/conf/httpd.conf

  1、在LoadModule后面添加:LoadModule php5_module modules/libphp5.so //不添加则访问.php文件将会变成下载
  2、在DirectoryIndex后面添加:index.php
  3、在AddType application/x-gzip .gz .tgz下面添加:AddType application/x-httpd-php .php //.php前面有一个空格

名师讲解

啥是libphp5.so?这个就是linux平台的动态链接库文件,他的功能是将 php源代码 翻译成 .html静态网页代码

<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>

这一段是遇到以php结尾的文件,交给httpd进程的php模块去处理,然后才会找到libphp5.so这个库去解析(翻译)

我们访问index.php时,这个http请求首先是被apache进程接收的,然后根据httpd.conf配置文件,将.php结尾的文件交给php模块处理,将.html文件直接就由apache处理了。

或者,你也想将 .php,.php2,.php3,.php4,.php5,.php6,以及 .phtml 文件都当做 PHP 来运行,我们无需额外的设置,仅需按照下面这样来:

<FilesMatch "\.ph(p[2-6]?|tml)$">
SetHandler application/x-httpd-php
</FilesMatch>

\.ph(p[2-6]?|tml)$是正则表达式。

 

疑问解答

1、怎么才能知道我到底安装成功PHP了没?

答:Apache通过/app/httpd24/htdocs/目录新建一个后戳名为.php的文件,内容为:<?php phpinfo(); ?>,然后浏览器访问对应地址即可,显示如下图类型即成功:

2、其他版本PHP可以使用这篇文章的方法吗?

答:大概应该也许可能是通用的,试试就知道。

3、php官方安装文档:https://www.php.net/manual/zh/install.unix.apache2.php,这是一种最简便的安装,php的很多模块都没有启用,参考。