参考文献:https://blog.youkuaiyun.com/liyyzz33/article/details/87881310
一、安装php依赖组件(包括Nginx依赖,这里加上了我总结的一些其他组件)
yum -y install php-mcrypt libmcrypt-devel libxml2 libxml2-devel curl-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel libxslt libxslt-devel cyrus-sasl-plain cyrus-sasl cyrus-sasl-devel cyrus-sasl-lib m4 autoconf expat-devel apr apr-devel gcc gcc-c++ openssl openssl-devel pcre pcre-devel zlib zlib-devel wget net-tools zip
二、下载并安装PHP安装包
使用wget或从官网地址:http://www.php.net/downloads.php 下载php-7.3.6.tar.gz 安装包
tar -zxvf php-7.3.6.tar.gz
cd php-7.3.6/
三、编译
在编译前,先查看/etc/ld.so.conf 文件中是否有lib库搜索路径,(如果没有,编译php时会抛错:configure: error: off_t undefined; check your library configuration)
more /etc/ld.so.conf
vi /etc/ld.so.conf
没有则在里面加入lib的文件路径后保存
/usr/local/lib64
/usr/local/lib
/usr/lib
/usr/lib64
----保存完毕更新配置
ldconfig –v
安装unixODBC-2.3.0
通过wget方式或从此地址:http://www.unixodbc.org/ 下载安装包,我的安装包放在了root目录下
cd /root/
tar -zxvf unixODBC-2.3.7.tar.gz
cd unixODBC-2.3.7/
./configure
make && make install
安装unixODBC-devel
yum -y install unixODBC-devel
安装libzip-1.3.2
通过wget方式或从此地址:https://libzip.org/download/libzip-1.3.2.tar.gz 下载安装包,我的安装包放在了root目录下
cd /root/
tar –zxvf libzip-1.3.2.tar.gz
cd libzip-1.3.2/
./configure
make && make install
至此,准备工作已完成,现在开始切回PHP安装目录,对php进行编译安装
编译时,我需要与Apache结合,所以编译时需要加入这一行:–with-apxs2=/usr/local/apache2/bin/apxs(下面命令我已经将此行加入,=号后面为Apache路径),我在 Windows 下的Wamp Server里面使用的 odbc_connect 连接到SQL Server 2008 的数据,所以需要加入这两行 --with-unixODBC=/usr/local/unixODBC --with-pdo-odbc=unixODBC,/usr/local/unixODBC ,后面为unixODBC的安装路径
cd /root/php-7.3.6/
以下是配置详情
./configure --prefix=/usr/local/php7 \
--with-config-file-path=/usr/local/php7/etc \
--with-curl \
--with-gd \
--with-gettext \
--with-iconv-dir \
--with-kerberos \
--with-libdir=lib64 \
--with-libxml-dir \
--with-openssl \
--with-pcre-regex \
--with-pdo-sqlite \
--with-pear \
--with-xmlrpc \
--with-xsl \
--with-zlib \
--enable-fpm \
--enable-bcmath \
--enable-libxml \
--enable-inline-optimization \
--enable-mbregex \
--enable-mbstring \
--enable-opcache \
--enable-pcntl \
--enable-shmop \
--enable-soap \
--enable-sockets \
--enable-sysvsem \
--enable-xml \
--enable-zip \
--enable-static \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--disable-debug \
--disable-fileinfo \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-unixODBC=/usr/local \
--with-pdo-odbc=unixODBC,/usr/local
无报错,开始安装(如果还提示:configure: error: off_t undefined; check your library configuration,再更新一次配置即可–ldconfig -v)
make && make install
四、配置PHP
cp /root/php-7.3.6/php.ini-production /usr/local/php7/etc/php.ini
cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf
cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf
cp /root/php-7.3.6/sapi/fpm/php-fpm.service /usr/lib/systemd/system/php-fpm.service
cp /usr/local/php7/bin/php /usr/local/bin/php
----启动服务
systemctl start php-fpm.service
----添加服务到开机启动
systemctl enable php-fpm.service
五、配置Apache支持PHP
更改Apache配置文件支持PHP
vim /usr/local/apache2/conf/httpd.conf
找到加载模块项,将其中php7_module注释(删除前面的 # )打开
LoadModule php7_module modules/libphp7.so
然后在根节点中添加以下配置
<IfModule php7_module>
AddType application/x-httpd-php .php
</IfModule>
----保存并重启Apache服务
systemctl restart httpd
六、验证是否正常使用
编辑php配置文件,我的位置在 /usr/local/php7/etc/php.ini,打开odbc扩展和开启页面显示错误信息
vim /usr/local/php7/etc/php.ini
删除 extension=odbc 和 extension=pdo_odbc 前面的分号(取消注释),并更改display_errors = off
extension=odbc
extension=pdo_odbc
display_errors = Off
查看Apache应用目录位置
more /usr/local/apache2/conf/httpd.conf
找到DocumentRoot节点,其中引号扩起来的目录就是应用目录位置,这个可以更改到你想要的位置,改完重启一下服务就可以生效,我的目录为/usr/local/apache2/htdocs,所以我在这个目录下新建一个index.php的测试文件
vim /usr/local/apache2/htdocs/index.php
–添加内容并保存
<?php phpinfo();?>
在浏览器中输入 IP 地址进行访问
我用http://10.102.7.169/index.php这个带文件名的地址去访问,是因为Apache有默认页面配置,如果我直接用 IP 地址访问,会访问到HTML页面,而不是刚写的PHP页面,从而达不到测试的效果。
这个默认配置也可以在httpd.conf配置文件中的节点中去修改,从左往右的顺序,修改完成重启一下服务即可