一、编译安装纯净 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 则说明安装成功:
其他扩展的安装方法和上述步骤基本一致。