# 前言

之前都是用集成环境或者 docker 安装 php 环境
没有正儿八经的在 linux 下安装 php
这里记录下安装过程

# 参考文章

  • https://blog.csdn.net/weixin_29599245/article/details/115125747

# 安装过程

# 下载解压源码包

根据个人需要下载版本

wget https://www.php.net/distributions/php-7.1.33.tar.gz
tar -xzvf php-7.1.33.tar.gz

# 安装所需环境

php 时安装需要一些工具包、拓展等
下面列出了一些可能用到的
安装成功后 默认路径在 /usr/include

yum install -y gcc gcc-c++ make zlib zlib-devel pcre pcre-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers

也可以安装通过源码包手动安装
指定安装路径
比如安装 freetype-2.10.1

#下载 解压 freetype-2.10.1
cd freetype-2.10.1
./configure --prefix=/usr/local/freetype
make && make install

# php 安装位置配置以及启用拓展

--prefix=/usr/local/php 指定我的 php 安装配置
根据个人情况修改自己的安装路径
根据需要,启用拓展,有些开启就行,有些拓展需要指定安装路径
注:启用 gd 拓展,需要开启 freetype 等,不然图片验证码不可用

#进入安装路径
cd php-7.1.33
#配置启用拓展
./configure --prefix=/usr/local/php --exec-prefix=/usr/local/php --with-mysqli --with-pdo-mysql --with-gd --bindir=/usr/local/php/bin --sbindir=/usr/local/php/sbin --includedir=/usr/local/php/include --libdir=/usr/local/php/lib/php --mandir=/usr/local/php/php/man --with-config-file-path=/usr/local/php/etc --with-openssl --enable-mbstring --enable-fpm --enable-bcmath --enable-pcntl --enable-zip  --with-freetype-dir=/usr/include/freetype2/freetype --with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include --with-curl=/usr/include --with-zlib-dir=/usr/include
#编译并安装
make && make install

踩坑
通过 yum install -y freetype freetype-devel 安装的 freetype php 配置如下
--with-freetype-dir=/usr/include/freetype2/freetype

手动安装拓展 php 配置如下
--with-freetype-dir=/usr/local/freetype

configure error: zlib not find
--with-zlib=/usr/include 时没找到 zlib
改成了,可以了,5
--with-zlib-dir=/usr/include

关于 zip
php7.4 开始 捆绑的 libzip 已被移除,编译时使用 --with-zip
之前的 php 版本可用 --enable-zip 开启 zip

# 配置 PHP 使用

  • 拷贝配置文件
#拷贝 php 配置文件
cp php.ini-production /usr/local/php/etc/php.ini
#拷贝 php-fpm 服务并赋予执行权限
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
# 拷贝 php-fpm 进程服务的配置文件和扩展配置文件
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
  • 配置环境变量
# 配置安装目录 (可选)
vi /usr/local/php/etc/php-fpm.conf
# php-fpm.conf 最后一行,include 的路径要对应于自己的安装目录 shift + g 跳最后一行 ,gg 第一行
include=/usr/local/php/etc/php-fpm.d/*.conf
# 设置 php 环境变量
vi /etc/profile.d/php.sh
export PATH=$PATH:/usr/local/php/bin/:/usr/local/php/sbin/
# 生效环境变量
source /etc/profile.d/php.sh
# 测试成功
php -v
  • 启动 php-fpm
#启动 php-fpm
service php-fpm start
# 设置 php-fpm 开机启动
chkconfig php-fpm on

# nginx 和 php

确保启动 PHP 和 NGINX 的用户和用户组一致,这样可避免一些访问权限问题
php 的配置文件 /usr/local/php/etc/php-fpm.d/www.conf 的 user、group 修改为和 nginx 相同的用户和用户组
nginx 的 nginx.conf 中的 use 使用的用户,一般在该配置文件头