废话&准备工作
PHP/Perl/Python网页编程语言:作为三种开发动态网页的编程语言,负责解释动态网页文件,并提供web应用程序的开发和运行环境。其中PHP是一种被广泛应用的开放源代码的多用途脚本语言,它可以嵌入到HTML中,尤其适合于web应用开发。
本次操作需要提前准备的有:
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的很多模块都没有启用,参考。
撰写评论