• PHP:CentOS Linux环境下源码安装PHP


    系统环境

    cat /etc/redhat-release
    CentOS Linux release 7.5.1804 (Core)
    
    • 1
    • 2

    查看可用版本

    https://www.php.net/releases/

    预先安装必要的依赖

    yum install -y \
    wget \
    gcc \
    gcc-c++ \
    autoconf \
    automake \
    libtool \
    make \
    libxml2 \
    libxml2-devel \
    openssl \
    openssl-devel \
    sqlite-devel
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    1、下载解压

    wget https://www.php.net/distributions/php-8.0.24.tar.gz && \
    tar -zxvf php-8.0.24.tar.gz  && \
    cd php-8.0.24
    
    • 1
    • 2
    • 3

    2、设置安装参数

    我们可能会安装多个PHP版本,所以提前规划好安装目录

    例如:

    所有的PHP解释器都安装到一个PHP目录下,按照版本取划分目录

    /usr/local/php/8.0.24
    /usr/local/php/7.1.0
    
    • 1
    • 2

    configure

    # 可查看帮助
    ./configure --help
    
    • 1
    • 2

    配置

    ./configure --prefix=/usr/local/php/8.0.24 \
    --with-config-file-path=/usr/local/php/8.0.24/etc \
    --enable-fpm \
    --with-fpm-user=www \
    --with-fpm-group=www \
    --enable-mysqlnd \
    --with-mysqli=mysqlnd \
    --with-pdo-mysql=mysqlnd \
    --enable-mysqlnd-compression-support \
    --with-zlib \
    --enable-xml \
    --disable-rpath \
    --enable-bcmath \
    --enable-shmop \
    --enable-sysvsem \
    --with-curl \
    --enable-mbregex \
    --enable-mbstring \
    --enable-intl \
    --enable-ftp \
    --enable-gd-jis-conv \
    --with-openssl \
    --with-mhash \
    --enable-pcntl \
    --enable-sockets \
    --enable-soap \
    --with-gettext \
    --enable-fileinfo \
    --enable-opcache \
    --with-pear \
    --with-ldap=shared \
    --without-gdbm
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    安装

    # 执行安装
    make && make install
    
    # 测试
    make test
    
    • 1
    • 2
    • 3
    • 4
    • 5

    创建快捷方式

    # 创建软链接
    ln -s /usr/local/php/8.0.24/bin/php /usr/local/bin/php8
    
    # 测试
    php8 -v
    PHP 8.0.24 (cli) (built: Nov  4 2022 14:13:22) ( NTS )
    Copyright (c) The PHP Group
    Zend Engine v4.0.24, Copyright (c) Zend Technologies
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    修改配置文件

    # 源码包 php-8.0.24
    cp php.ini-production /usr/local/php/8.0.24/etc
    
    cd /usr/local/php/8.0.24/etc
    cp php.ini-production php.ini
    
    cd /usr/local/php/8.0.24/etc
    cp php-fpm.conf.default php-fpm.conf
    
    cd /usr/local/php/8.0.24/etc/php-fpm.d
    cp www.conf.default www.conf
    
    # 修改www.conf文件 
    # 监听方式为sock
    ;listen = 127.0.0.1:9000
    listen = php-cgi.sock
    
    listen.owner = www
    listen.group = www
    listen.mode = 0666
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    开机自启

    # 源码包 php-8.0.24/sapi/fpm
    cp php-fpm.service /usr/lib/systemd/system/php-fpm-8.0.24.service
    
    # 启动服务
    systemctl enable supervisord
    
    # 验证一下是否为开机启动
    systemctl is-enabled supervisord 
    
    systemctl start supervisord
    
    systemctl status supervisord
    
    systemctl stop supervisord
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    Nginx 部署 Laravel

    server {
        listen 80;
        listen [::]:80;
    
        server_name example.com;
        root /srv/example.com/public;
    
        add_header X-Frame-Options "SAMEORIGIN";
        add_header X-Content-Type-Options "nosniff";
    
        index index.php;
    
        charset utf-8;
    
        location / {
            try_files $uri $uri/ /index.php?$query_string;
        }
    
        location = /favicon.ico { access_log off; log_not_found off; }
        location = /robots.txt  { access_log off; log_not_found off; }
    
        error_page 404 /index.php;
    
        location ~ \.php$ {
            fastcgi_pass unix:/usr/local/php/8.0.24/php-fpm.sock;
            fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
            include fastcgi_params;
        }
    
        location ~ /\.(?!well-known).* {
            deny all;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    需要给 php-fpm.sock 访问权限

    chown www:www /usr/local/php/8.0.24/php-fpm.sock
    
    • 1

    报错及解决

    报错1

    configure: error: Cannot find ldap libraries in /usr/lib
    
    • 1
    cp -frp /usr/lib64/libldap* /usr/lib/
    
    • 1

    报错2

    make: *** [ext/fileinfo/libmagic/apprentice.lo] Error 1
    
    • 1
    --disable-fileinfo
    
    • 1

    或者

    内存不够使用,可以先使用交换分区来解决

    dd if=/dev/zero of=/swapfile bs=64M count=16
    mkswap /swapfile
    swapon /swapfile
    
    • 1
    • 2
    • 3

    安装完成后取消

    swapoff /swapfile
    rm /swapfile
    
    • 1
    • 2

    参考

  • 相关阅读:
    Linux安装node
    栈的介绍以及使用数组模拟栈的入栈和出栈
    鸿蒙Harmony应用开发—ArkTS声明式开发(组件可见区域变化事件)
    迁移学习笔记4:ACML-Sinno Jialin Pan
    WANLSHOP 直播短视频种草多用户电商系统源码自营+多商户+多终端(H5+小程序+APP)
    剑指offer(C++)-JZ31:栈的压入、弹出序列(数据结构-队列 & 栈)
    pg数据库实现 根据两个表某一个字段一样,去更新另一个字段的sql 语句
    0基础和小Q学前端---css之布局定位(1)---float布局
    【机器学习】梯度下降法与牛顿法【Ⅱ】牛顿法与修正牛顿法
    阿里云企业邮箱的替代方案有哪些?
  • 原文地址:https://blog.csdn.net/mouday/article/details/127692249