Linux 6 下编译安装 PHP 5.6实例详解

Linux 6 下编译安装 PHP 5.6实例详解

PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP以其开发源代码,免费,快捷,跨平台,高效,面向对象,强大的动态图像创建等功能深受广大开发者的喜爱。本文描述基于CentOS 6.7下编译安装PHP 5.6.9,同样也适用于CentOS 7下安装。

一、相关依赖包安装

?

1、演示环境

 

 

# more /etc/redhat-release

CentOS release 6.7 (Final)

 

2、扩展支持(mcrypt、mhash扩展和libevent)

如果想让编译的php支持mcrypt、mhash扩展和libevent,需要安装以下包

    libmcrypt

    libmcrypt-devel

    mhash

    mhash-devel

 

说明:

mcrypt扩展库可以实现加密解密功能,就是既能将明文加密,也可以密文还原。

mhash是基于离散数学原理的不可逆向的php加密方式扩展库,其在默认情况下不开启。

mhash的可以用于创建校验数值,消息摘要,消息认证码,以及无需原文的关键信息保存(如密码)等。

 

centos源不能安装libmcrypt-devel,由于版权的原因没有自带mcrypt的包

可以使用第三方源,这样还可以使用yum来安装

安装第三方yum源

    # wget http://www.atomicorp.com/installers/atomic

    # sh ./atomic

使用yum命令安装

    # yum install php-mcrypt libmcrypt libmcrypt-devel mhash mhash-devel

 

3、libevent相关包

可以根据需要安装libevent,系统一般会自带libevent,但版本有些低。因此可以升级安装如下两个rpm包。

    # yum install libevent libevent-devel

 

说明:

libevent是一个异步事件通知库文件,其API提供了在某文件描述上发生某事件时或其超时时执行回调函数的机制

它主要用来替换事件驱动的网络服务器上的event loop机制。

目前来说, libevent支持/dev/poll、kqueue、select、poll、epoll及Solaris的event ports。

 

4、支持xml的相关包

支持xml的rpm包

bzip2 是一个基于Burrows-Wheeler 变换的无损压缩软件能够高效的完成文件数据的压缩

libcurl主要功能就是用不同的协议连接和沟通不同的服务器,也就是相当封装了的sockPHP

libcurl允许你用不同的协议连接和沟通不同的服务器

    # yum install libxml2 libxml2-devel bzip2-devel libcurl-devel

 

5、图形相关的rpm包

通常对应的错误提示:JIS-mapped Japanese font support in GD

    # yum install libjpeg-devel libpng-devel freetype-devel

二、编译安装php-5.6.9

?

首先下载源码包至本地目录,下载位置http://mirrors.sohu.com/php/

# pwd

  /usr/local/src

# tar -xf php-5.6.9.tar.gz

# cd ..

# ~ln -sv ./src/php-5.6.9 php~  ###说明:考虑编译后的简洁,此命令移除@20160729

# cd php/

# ./configure \       ###说明:编译的内容被调整@20160729

--prefix=/usr/local/php \

--with-config-file-path=/usr/local/php/etc \

--enable-inline-optimization \

--disable-debug \

--disable-rpath \

--enable-shared \

--enable-opcache \

--enable-fpm \

--with-mysql=/usr/local/mysql \

--with-mysqli=/usr/local/mysql/bin/mysql_config \

--with-pdo-mysql=/usr/local/mysql \

--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-gd \

--with-freetype-dir \

--with-jpeg-dir \

--with-png-dir

 

###有关编译配置项的详细描述:https://segmentfault.com/a/1190000002717262

# make && make install

###以下为安装完毕之后的提示信息

    Installing shared extensions:

     /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/

    Installing PHP CLI binary:   /usr/local/php/bin/

    Installing PHP CLI man page:  /usr/local/php/php/man/man1/

    Installing PHP FPM binary:   /usr/local/php/sbin/

    Installing PHP FPM config:   /usr/local/php/etc/

    Installing PHP FPM man page:  /usr/local/php/php/man/man8/

    Installing PHP FPM status page:  /usr/local/php/php/php/fpm/

    Installing PHP CGI binary:   /usr/local/php/bin/

    Installing PHP CGI man page:  /usr/local/php/php/man/man1/

    Installing build environment: /usr/local/php/lib/php/build/

    Installing header files:    /usr/local/php/include/php/

    Installing helper programs:  /usr/local/php/bin/

     program: phpize

     program: php-config

    Installing man pages:     /usr/local/php/php/man/man1/

     page: phpize.1    ### Author : Leshami

     page: php-config.1  ### Blog  : http://blog.csdn.net/leshami

    Installing PEAR environment:   /usr/local/php/lib/php/

    [PEAR] Archive_Tar  - installed: 1.3.12

    [PEAR] Console_Getopt - installed: 1.3.1

    [PEAR] Structures_Graph- installed: 1.0.4

    [PEAR] XML_Util    - installed: 1.2.3

    [PEAR] PEAR      - installed: 1.9.5

    Wrote PEAR system config file at: /usr/local/php/etc/pear.conf

    You may want to add: /usr/local/php/lib/php to your php.ini include_path

    /usr/local/php/build/shtool install -c ext/phar/phar.phar /usr/local/php/bin

    ln -s -f /usr/local/php/bin/phar.phar /usr/local/php/bin/phar

    Installing PDO headers:     /usr/local/php/include/php/ext/pdo/

 

###php配置

    php.ini是php运行核心配置文件

    php-fpm.conf是php-fpm进程服务的配置文件

 

# cp php.ini-production /usr/local/php/etc/php.ini

# 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

 

###fpm测试php配置

# /usr/local/php/sbin/php-fpm -t

[23-May-2016 20:03:52] NOTICE:

configuration file /usr/local/php/etc/php-fpm.conf test is successful

 

# chkconfig --add php-fpm

# chkconfig php-fpm on

# service php-fpm start

    Starting php-fpm done

# ps -ef|grep php

    root 45690 1 0 20:07 ? 00:00:00 php-fpm: master process(/usr/local/php/etc/php-fpm.conf)                                 

    nobody 45691 45690 0 20:07 ?   00:00:00 php-fpm: pool www                                                     

    nobody 45692 45690 0 20:07 ?   00:00:00 php-fpm: pool www                                                     

    root  45694  3441 0 20:07 pts/4 00:00:00 grep php

 

# netstat -nltp|grep 9000

    tcp 0  0 127.0.0.1:9000  0.0.0.0:*  LISTEN  45690/php-fpm 

三、配置apache访问PHP

?

###开启以下模块

# vim /etc/httpd24/httpd.conf   ###注意此处,我这里是单独编译安装的httpd2.4版本,所以路径有所不同

    LoadModule proxy_module modeles/mod_proxy.so

    LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

 

    AddType application/x-httpd-php .php 

    AddType application/x-httpd-php-source .phps

 

    ProxyRequests Off   ###关闭正向代理,开启下行的反向代理

    ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/usr/local/apache/htdocs/$1

 

# service httpd24 restart

    Stopping httpd24:       [ OK ]

    Starting httpd24:       [ OK ]

四、验证PHP

?

###编写一个php页面测试

# echo "

> <html>

> <h1>This is a php test page.</h1>

> <?php

> phpinfo();

> ?>

> </html>">>/usr/local/apache/htdocs/index.php

 

###测试PHP

# curl -I http://localhost:90/index.php

HTTP/1.1 200 OK

Date: Fri, 15 Jul 2016 03:16:50 GMT

Server: Apache/2.4.9 (Unix)

X-Powered-By: PHP/5.6.9

Content-Type: text/html; charset=UTF-8

五、对于本机未安装mysql数据库的情形(补充@20160718)

?

PHP5.3以上版本,为了链接MySQL数据库,可以指定mysqlnd,这样在本机就不需要先安装MySQL或MySQL开发包。

mysqlnd从php 5.3开始可用,可以编译时绑定到它(而不用和具体的MySQL客户端库绑定形成依赖)。

从PHP 5.4开始,对于未明确指定--with-mysql的情形,mysql本地驱动将会被安装。

可以参考如下配置:

 

./configure        \ ###修改@20160729

  ..........       \ ###参数同上,仅仅是mysql相关参数值设置为mysqlnd

--with-mysql       \ ###相当于该参数值为mysqlnd

--with-mysqli       \ ###相当于该参数值为mysqlnd

--with-pdo-mysql     \ ###相当于该参数值为mysqlnd

 

有关mysqlnd可以参考:

http://php.net/manual/zh/mysqli.overview.php#mysqli.overview.mysqlnd

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

原文链接:http://blog.csdn.net/leshami/article/details/51916175

原创文章,作者:OAMCH,如若转载,请注明出处:http://www.wangzhanshi.com/n/8431.html

(0)
OAMCH的头像OAMCH
上一篇 2025年1月1日 16:35:41
下一篇 2025年1月1日 16:35:49

相关推荐

  • Linux/Unix关于时间和时间戳的命令行

    在日常开发中,长期是在从事后端服务器开发,也避免不了会经常和时间打交道,例如: 玩家的首次登录时间玩家的最后登录时间活动的开启时间和结束时间 而这些时间在程序中的表示就是用一个数字…

    2025年1月1日
  • FOXHIS西软系统sybase提示通知空间不足处理方法

    各位酒店的电脑房经理有没有经历过在如下图这样的错误?有时候酒店的维护费没有到位或者时间急迫的时候我们需要自己的操作,操作步骤如下文所述。 1. 第一步我们需要用sybase权限登录…

    2025年1月1日
  • Linux下查看控制环境变量的方法

    查看环境变量 查看某一环境变量:比如我们需要查看HOME这个环境变量,我们可以在shell下直接输入echo $HOME,我们可以把所有的环境变量和环境变量的值都打印出来 打印环境…

    Linux 2025年1月1日
  • Linux两台服务器之间复制文件及免密码登录的方法

    有时候搭建集群机器是,需要在多台机器中间相互拷贝文件,一种方式是同事sftp拷贝到本机,再分别拷贝到其他服务器上。这里介绍一种直接在两台服务器之间拷贝文件且去掉繁琐的登陆操作的方法…

    Linux 2025年1月1日
  • linux ss命令详解

    ss 是 socket statistics 的缩写。ss 命令可以用来获取 socket 统计信息,它显示的内容和 netstat 类似。但 ss 的优势在于它能够显示更多更详细…

    2025年1月1日
  • linux 磁盘转移空间的方法

    如何将一个盘的空间转移到另一个盘中,因为会经常遇到这种情况,在/home目录下磁盘很大,但/root少得可怜,如何把/home的空间转移到/root中呢?下文教你实战。 fedor…

    Linux 2025年1月1日
  • linux之普通用户与root用户之间切换方法

    如下所示: 以上就是小编为大家带来的linux之普通用户与root用户之间切换方法全部内容了,希望大家多多支持~

    2025年1月1日
  • Linux网络DNS域名如何解析服务

    一、DNS概述 1.DNS系统的作用 正向解析:根据域名查找对应的IP地址 反向解析:根据IP地址查找对应的域名 DNS使用端口:DNS服务器使用TCP和UDP的53端口,TCP的…

    2024年12月17日
  • Linux系统中的软连接管理详解

    软连接的基本概念 软连接是一种特殊类型的文件,它包含指向另一个文件或目录的路径。与硬链接不同,软连接可以跨文件系统,也可以指向不存在的目标文件。软连接的优势在于其灵活性和便捷性,可…

    Linux 2024年12月17日
  • 适用于 Linux 的优秀网页浏览器

    没有所谓的完美的网页浏览器。这完全取决于你喜欢什么以及你用它来做什么。 但对于 Linux 上的网页浏览器,你有哪些最佳选择呢? 在这篇文章中,我试图给出你在 Ubuntu 和其他…

    2025年1月1日

发表回复

登录后才能评论