Linux下PHP编译安装与扩展安装

一、编译安装纯净 PHP

php 下载地址:http://php.net/downloads.php

1.1 PHP 运行方式

1)Module 方式

把 php 作为 Apache 的一个子模块来运行,当通过 web 访问 php 文件时,Apache 就会调用 php_module 来解析 php 代码。

需要在编译 PHP 执行 configure 时加入参数 --with-apxs2=/usr/local/httpd/bin/apxs

2)FastCGI + PHP-FPM(+ PHP-CGI)方式

CGI:是 Web Server 与 Web Application 之间数据交换的一种协议。

FastCGI:同 CGI,是一种通信协议,但比 CGI 在效率上做了一些优化。同样,SCGI 协议与 FastCGI 类似。

PHP-CGI:是 PHP (Web Application)对 Web Server 提供的 CGI 协议的接口程序。

PHP-FPM:是 PHP(Web Application)对 Web Server 提供的 FastCGI 协议的接口程序,用来调度 php-cgi 进程。

3)参考

《CGI、FastCGI和PHP-FPM关系图解》:http://www.php.cn/php-weizijiaocheng-392861.html

《FastCgi与PHP-fpm之间是个什么样的关系》:https://segmentfault.com/q/1010000000256516

1.2 安装包 libxml2 和 libxml2-devel

yum install libxml2 libxml2-devel

1.3 安装 PHP(Module 方式)

./configure --prefix=/usr/local/php7.2.6 --with-apxs2=/usr/local/httpd/bin/apxs
make && make install

make 编译时如果报错:  gcc: Internal error: Killed (program cc1) 

出现这个问题的主要原因是服务器内存太低,先停用内存占用大的程序,然后重新执行 configure 和 make,并在 configure 后面增加参数: --disable-fileinfo 

1.4 Apache 添加 php 解析

成功安装 php 后,查看 httpd.conf,它会自动加入一行配置:

LoadModule php7_module        modules/libphp7.so

告知 Apache 将特定的扩展名解析成 PHP:

# 不推荐:AddType application/x-httpd-php .php

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

最后重启 httpd 服务。

1.5 php.ini 配置文件

通过 phpinfo() 可以查看到 PHP 的配置文件路径:

复制 PHP 源码目录提供的配置模板到该目录下:

cp ~/downloads/php-7.2.6/php.ini-production /usr/local/php7.2.6/lib/php.ini

也可以在编译 PHP 时指定 php.ini 配置文件路径:

-with-config-file-path=/etc/php.ini

二、添加 PDO_Mysql 扩展

2.1 编译安装扩展

进入 PHP源码目录/ext/pdo_mysql,执行: phpize 

执行 phpize 如果报错:Cannot find autoconf

说明服务器中缺少 autoconf 工具,可以使用 yum 安装:

yum install autoconf

phpize 会自动生成一个 configure 脚本,执行时需要指定 php-config 脚本和 mysql 的安装路径:

./configure --with-php-config=/usr/local/php7.2.6/bin/php-config --with-pdo-mysql=/usr/local/mysql

最后执行编译安装:

make && make install

默认会安装在 /usr/local/php7.2.6/lib/php/extensions/no-debug-non-zts/20170718/pdo-mysql_so:

可以手动修改 php-config 脚本设置扩展安装位置:

2.2 添加配置

在 php.ini 配置文件中加入 pdo-mysql 扩展,必须输入扩展全路径:

extension=/usr/local/php7.2.6/lib/php/extensions/no-debug-non-zts-20170718/pdo_mysql.so

也可以修改 php.ini 配置中 extension_dir 属性设置默认扩展读取路径:

最后查看 phpinfo(),如果出现 pdo-mysql 则说明安装成功:

 其他扩展的安装方法和上述步骤基本一致。

posted @ 2018-06-12 15:48  Azure沫  阅读(453)  评论(0编辑  收藏  举报