PHP8.3安装(编译)

1、下载php安装包

# php下载地址
https://www.php.net/downloads.php

2、安装php

# 1、创建php用户wwww
useradd -M -s /sbin/nologin www

# 2、安装依赖包
yum install -y gcc libxml2-devel openssl-devel curl-devel libjpeg-devel libpng-devel libXpm-devel freetype-devel libmcrypt-devel make autoconf ImageMagick-devel libssh2-devel gcc-c++ cyrus-sasl-devel sqlite-devel oniguruma-devel openldap-devel sqlite-devel libcurl-devel

# 3、上传php包,并解压
tar -xf php-8.3.10.tar.gz

# 4、安装php
cd php-8.3.10
## 配置编译参数
CPPFLAGS="-I/usr/include" \
LDFLAGS="-L/usr/lib64 -L/usr/lib64 -lldap -llber" \
./configure \
--prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--with-config-file-scan-dir=/usr/local/php/etc/php.d \
--disable-ipv6 \
--enable-bcmath \
--enable-calendar \
--enable-exif \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--enable-ftp \
--enable-gd \
--with-external-gd \
--with-jpeg \
--with-freetype \
--with-xpm \
--with-webp \
--enable-mbregex \
--enable-mbstring \
--enable-mysqlnd \
--enable-opcache \
--enable-pcntl \
--enable-shmop \
--enable-soap \
--enable-sockets \
--enable-static \
--enable-sysvsem \
--enable-xml \
--with-curl \
--with-gettext \
--with-iconv \
--with-mhash \
--with-mysqli \
--with-pdo-mysql \
--with-pear \
--with-openssl \
--with-zlib \
--with-ldap \
--with-ldap-sasl \
--disable-debug \
--disable-phpdbg
# 编译
make -j $(nproc)
# 安装
make install

3、配置PHP

# 1、配置环境变量
cat >> /etc/profile << EOF
#### php ####
export PATH=$PATH:/usr/local/php/bin
EOF
source /etc/profile

# 2、拷贝配置文件
cp /root/php-8.3.10/php.ini-production /usr/local/php/etc/php.ini
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
cp /usr/local/php/sbin/php-fpm /usr/local/bin/
cp /usr/local/php/bin/php /usr/local/bin/

4、编译遇到的问题

# 找不到 ldap 的依赖库
# 指定/usr/lib64依赖库后仍找不到
configure: error: Cannot find ldap libraries in /usr/lib.
# 解决
## 查看是否存在
ls /usr/lib64 | grep libldap*
## 生成软连接
ln -s /usr/lib64/libldap* /usr/lib/
## 重新编译

5、配置启动文件

# vim /lib/systemd/system/php-fpm.service 
[Unit]
Description=The PHP FastCGI Process Manager
After=network.target

[Service]
Type=simple
PIDFile=/usr/local/php/var/run/php-fpm.pid
ExecStart=/usr/local/php/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID

[Install]
WantedBy=multi-user.target

6、验证PHP

# 创建php info
mkdir -p /var/www/html/
echo "<?php phpinfo();?>" > /var/www/html/index.php

# 配置nginx server部分
    server {
    listen 8001;
    server_name _;
     root /var/www/html/;
     index index.html index.htm index.php;
     location ~ [^/]\.php(/|$) {
         fastcgi_pass 127.0.0.1:9000;
         #fastcgi_pass unix:/dev/shm/php-cgi.sock;
              index index.php;
         fastcgi_index index.php;
         include fastcgi.conf;
         }
}

在这里插入图片描述

7、install.sh

#!/bin/bash

install_php () {

user=www

echo "##### 检测网络 #####"
if ! ping -c1 -W1 www.baidu.com &> /dev/null
then
    echo "网络不可以用, 请检查网络"
    exit 1
fi  

echo "##### 创建php用户 #####"
id $user &> /dev/null

if [ $? -eq 0 ];then
        echo "$user 已存在"
else
        useradd -M -s /sbin/nologin $user &> /dev/null
        echo "$user 创建成功"
fi

# 1.安装依赖
echo "##### 安装依赖 #####"
packages=(gcc libxml2-devel openssl-devel curl-devel libjpeg-devel libpng-devel libXpm-devel freetype-devel libmcrypt-devel make autoconf ImageMagick-devel libssh2-devel gcc-c++ cyrus-sasl-devel sqlite-devel oniguruma-devel openldap-devel sqlite-devel libcurl-devel)

for pkg in $(echo ${packages[*]})
do
    yum install -y ${pkg} >/dev/null 2>&1
    if [ $? -ne 0 ]
    then
       echo "error:install "$pkg"  error,try again."
       exit 2
    fi
done

# 2.下载安装
echo "##### 下载php #####"
# wget https://www.php.net/distributions/php-7.0.33.tar.gz >/dev/null 2>&1
if [ $? -ne 0 ]
then
      echo -e "\033[31m 下载 'php' 失败\033[0m"
      exit 3
fi

tar -xf php-8.3.10.tar.gz
if [ $? -ne 0 ]
then
    echo -e "\033[31m error: tar xvf 'php' failed\033[0m"
    exit 4
fi

echo "##### 安装php #####"
cd php-8.3.10
if [ $? -ne 0 ]
then
    echo -e "\033[31m error:cd 'php' failed\033[0m"
    exit 5
fi

CPPFLAGS="-I/usr/include" \
LDFLAGS="-L/usr/lib64 -L/usr/lib64 -lldap -llber" \
./configure \
--prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--with-config-file-scan-dir=/usr/local/php/etc/php.d \
--disable-ipv6 \
--enable-bcmath \
--enable-calendar \
--enable-exif \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--enable-ftp \
--enable-gd \
--with-external-gd \
--with-jpeg \
--with-freetype \
--with-xpm \
--with-webp \
--enable-mbregex \
--enable-mbstring \
--enable-mysqlnd \
--enable-opcache \
--enable-pcntl \
--enable-shmop \
--enable-soap \
--enable-sockets \
--enable-static \
--enable-sysvsem \
--enable-xml \
--with-curl \
--with-gettext \
--with-iconv \
--with-mhash \
--with-mysqli \
--with-pdo-mysql \
--with-pear \
--with-openssl \
--with-zlib \
--with-ldap \
--with-ldap-sasl \
--disable-debug \
--disable-phpdbg  >> /dev/null 2>> stderr.log

if [ $? -ne 0 ]
then
      echo -e "\033[31m error:./configure 'php' failed\033[0m"
      exit 6
fi

make -j $(nproc)  >> /dev/null 2>> stderr.log
if [ $? -ne 0 ]
then
      echo -e "\033[31m make 'php' failed\033[0m"
      exit 7
fi
make install >/dev/null 2>&1
if [ $? -ne 0 ]
then
      echo -e "\033[31m error:make install 'php' failed\033[0m"
      exit 8
fi
# 3.添加环境变量
echo "##### 配置环境变量 #####"
cat >> /etc/profile << EOF
#### php ####
export PATH=$PATH:/usr/local/php/bin
EOF
source /etc/profile >/dev/null 2>&1
# 4.配置php
cp /root/php-8.3.10/php.ini-production /usr/local/php/etc/php.ini
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
cp /usr/local/php/sbin/php-fpm /usr/local/bin/
cp /usr/local/php/bin/php /usr/local/bin/
}

install_php
  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值