编程@IT·互联网我用 Linux

搭建博客(三)编译安装PHP 5.6.30

2017-05-21  本文已影响170人  浮婴

一、下载安装包

PHP官方下载页面右键另复制链接。

终端切换到/usr/loca/src/目录下。

执行wget http://hk1.php.net/get/php-5.6.30.tar.bz2/from/this/mirror下载。

下载后src目录下多了一个mirror的文件,这个其实就是刚才下载的PHP的安装包了,根据刚才页面上显示的内容,这个应该是一个.bz2结尾的压缩包。

mv mirror php-5.6.30.tar.bz2  # 改名。
tar jxf php-5.6.30.tar.bz2  # 解压
cd php-5.6.30  # 进入目录,准备编译安装

二、安装之前的准备

在安装PHP之前,先把PHP的一些依赖的库安装上。

yum -y install gd zlib zlib-devel openssl openssl-devel libxml2 libxml2-devel libjpeg libjpeg-devel libpng libpng-devel

各种库的作用:

  • gd:不用多说,PHP的GD库。
  • zlib zlib-devel:在上一篇编译安装Nginx的时候就已经说过,这是一个解压压缩用到的依赖,并且已经安装过,这里可以不安装。
  • openssl openssl-devel:openssl是为网络通信提供安全及数据完整性的一种安全协议,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议。
  • libxml2 libxml2-devel:对xml进行操作需要这个库提供的函数。
  • libjpeg libjpeg-devel libpng libpng-devel:都是进行图片处理的所需要的库。

其实也没有几个库,除了GD库以外,都是安装一个基本库,然后安装PHP的时候还需要读取其头文件等信息,所以在基本库的后面加上-devel

三、配置环境并安装

./configure --prefix=/usr/local/web/php \
--with-gd \
--enable-gd-native-ttf \
--enable-mysqlnd \
--with-mysql=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-openssl \
--enable-mbstring \
--enable-fpm

参数说明:

  • 支持GD库及一些字体、支持MySQL连接和PDO连接、支持openssl、开启mbstring扩展。
  • 最后一句比较重要:让PHP作为一个独立进程运行(9000端口),在apache环境下,PHP是作为其下的一个模块运行。

如下所示环境配置成功了。

配置环境

make && make install编译安装

四、启动PHP进程

PHP安装完毕后,在/usr/local/web/php/sbin/下存放着php-fpm,运行。

大概意思是说:

  • 无法打开/usr/local/web/php/etc/php-fpm.conf这个文件,不存在。
  • 加载这个文件失败。
  • FPM初始化失败。

究其原因,就是没有/usr/local/web/php/etc/php-fpm.conf这个文件,当然也无法加载,FPM启动 需要读取这个配置文件,所以启动失败。

OK,进入到/usr/local/web/php/etc/这个目录下查看。

果然没有php-fpm.conf这个文件啊,不过有一个默认的php-fmp.conf.default

为了保险起见,把这个默认的文件复制一份并改名为php-fpm.conf解决。

重新启动php-fpm并查看进程。


五、整合Nginx和PHP

到目前为止,Nginx与PHP都已安装完毕,但并不能正常工作。

工作流程

当用户的访问请求到达我的服务器80端口,被Nginx监听到,但Nginx无法解析.php文件,所以需要在配置里添加上规则。

如果遇到以.php结尾的文件,可以直接在本机找到9000端口的进程php-fpm告诉它这个.php脚本的所在位置并交由PHP去解析,解析完毕后,再将结果返回给Nginx,Nginx再返回给用户

简书不支持Markdown的sequence只好截图了

修改Nginx配置

vim /usr/local/web/nginx/conf/nginx.conf打开Nginx的配置文件。

65gg跳转到65行。

将注释打开,将69行的/scripts替换为$DOCUMENT_ROOT并保存、重启Nginx。


正确加载php.ini配置文件

至此,Nginx和PHP的整合工作已经做好了,去html目录下编写一个测试脚本index.php,输出phpinfo()

如上图所示,在/usr/local/web/php/lib目录下加载php.ini配置文件并没有成功。

切换到这个目录下前来查看,发现只有一个php文件夹,并没有php.ini配置文件。

/usr/local/src/php-5.6.30/目录下,有php.ini-developmentphp.ini-production,前者是开发时用的配置,报错等级低,有什么报什么,后者相反。

执行cp php.ini-production /usr/local/web/php/lib/php.ini复制一份配置文件到/usr/local/web/php/lib/目录下,重启PHP。

再次访问,已可以看到正确加载了php.ini配置文件。

上一篇下一篇

猜你喜欢

热点阅读