方法一

转载自:https://blog.csdn.net/ziqibit/article/details/129461718

1.下载并解压源码包

php官方下载页面
在/usr/local目录下操作

wget https://www.php.net/distributions/php-8.1.28.tar.gz
tar -zxvf php-8.1.28.tar.gz && cd php-8.1.28

2.安装依赖

依赖是根据开启的扩展决定的,以下的拓展是常用的,编译安装的好处之一,就是如果缺少拓展也很容易自行安装。
1)deb系列

apt-get install build-essential autoconf automake libtool libsqlite3-dev pkg-config libjpeg-dev libpng-dev libxml2-dev libbz2-dev libcurl4-gnutls-dev libssl-dev libffi-dev libwebp-dev libonig-dev libzip-dev libonig5 libzip4 libgmp-dev libfreetype6-dev libsnmp-dev unzip p7zip-full libsodium-dev

2)redhat系列

redhat系由于包不全(deb系好用啊),如果遇到找不到的包,可以在pkgs.org中查找

dnf -y groupinstall 'Development Tools'
dnf -y install wget libxml2-devel sqlite-devel bzip2-devel libcurl-devel libffi-devel libpng-devel libwebp-devel libjpeg-devel oniguruma libzip

安装 oniguruma

wget https://dl.rockylinux.org/pub/rocky/9/devel/x86_64/os/Packages/o/oniguruma-devel-6.9.6-1.el9.5.x86_64.rpm
dnf -y install oniguruma-devel-6.9.6-1.el9.5.x86_64.rpm

安装libzip-devel

wget https://dl.rockylinux.org/pub/rocky/9/devel/x86_64/os/Packages/l/libzip-devel-1.7.3-7.el9.x86_64.rpm
dnf -y install libzip-devel-1.7.3-7.el9.x86_64.rpm

3.编译安装

查看编译参数(可跳过,如果你不知道参数的作用)

./configure -help

编译参数如下:

./configure --prefix=/usr/local/php --sysconfdir=/etc/php --with-openssl --with-zlib --with-bz2 --with-curl --enable-bcmath --enable-gd --with-webp --with-jpeg --with-mhash --enable-mbstring --with-imap-ssl --with-mysqli --enable-exif --with-ffi --with-zip --enable-sockets --with-pcre-jit --enable-fpm --with-pdo-mysql --enable-pcntl --with-readline

上面的展开说明(使用的话直接复制上面的,这里是做解释用的)

./configure  
--prefix=/usr/local/php  #安装地址
--sysconfdir=/etc/php   #设置文件地址
--with-openssl  #启用ssl
--with-zlib  
--with-bz2  
--with-curl  #启用curl(必开)
--enable-bcmath  
--enable-gd  
--with-webp  
--with-jpeg  
--with-mhash  
--enable-mbstring  #必开,很多需要用到
--with-imap-ssl  
--with-mysqli  #mysqli函数,如果用pdo,可以补开
--enable-exif  
--with-ffi  #支持外挂C程序
--with-zip  
--enable-sockets  #开启socket
--with-pcre-jit  #开启jit
--enable-fpm  #开启fpm模式(必开)
--with-pdo-mysql   #支持mysql
--with-pdo-pgsql  #支持pgsql
--enable-pcntl

编译安装,安装时间比较长,请耐心等待!

make -j $(nproc) && make install

编译完成后会显示类似如下信息:
里面包含了各种文件的地址,建议编译后截图保存,方便日后查看

4.添加系统用户

添加用户组,名字用www是因为通常php做web后端开发的,可以改成别的。

groupadd www

添加用户(一个不允许登录的用户)

useradd -g www -s /sbin/nologin www

5.配置

将配置文件复制到正确的位置(很多情况下修改配置不生效就是配置文件地址没搞对)

cp /usr/local/php-8.1.28/php.ini-development /usr/local/php/lib/php.ini
cp /etc/php/php-fpm.conf.default /etc/php/php-fpm.conf
cp /etc/php/php-fpm.d/www.conf.default /etc/php/php-fpm.d/www.conf

6.配置环境变量

vi /etc/profile

在PATH中添加,和其它的目录用:分隔开(如果找不到PATH,用第二种方式)

/usr/local/php/bin

第一种方式:类似如下(写的详细些,一些新手对环境变量理解不够)

PATH=$PATH:$HOME/bin:/usr/local/php/bin

第二种方式:直接在文件的最下面加入下面

export PATH=$PATH:/usr/local/php/bin

保存退出后,在命令行刷新环境变量

source /etc/profile

输入以下命令,如果能够返回版本号,说明配置成功

php -v

7.配置php

修改默认session位置
创建session地址(也可以写成别的)

mkdir /usr/local/php/tmp && chmod -R 755 /usr/local/php/tmp

修改php.ini

vi /usr/local/php/lib/php.ini

找到session.save_path,修改后面内容为"/usr/local/php/tmp"(原本是“/tmp”)
找到expose_php = On;,修改On为Off。这个修改是在响应头中隐藏php信息。否则在响应头的X-Powered-By中会显示php版本(尽量不要让入侵者获取更多的信息)
php.ini

修改默认open_basedir
允许php访问的地址,可以在php配置,也可以在nginx配置(如果两者都配置了,以php为主)

vi /usr/local/php/lib/php.ini

找到open_basedir,然后添加需要的目录

配置php-fpm

vi /etc/php/php-fpm.d/www.conf

修改user=www,group=www(原本都是nobody)

8.systemctl管理(php-fpm)

创建脚本文件

vi /usr/lib/systemd/system/php-fpm.service

内容如下

[Unit]
Description=php-fpm
After=syslog.target network.target

[Service]
Type=forking
ExecStart=/usr/local/php/sbin/php-fpm
ExecReload=/bin/kill -USR2 $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

刷新systemctl

systemctl daemon-reload

开启、开机启动

systemctl start php-fpm && systemctl enable php-fpm && systemctl status php-fpm

至此php编译安装和php-fpm的启动就完成了
注意:php有两种常见的运行方式,apache和nginx的调用方式不同,nginx调用php-fpm。

9.常用的php基本命令

命令行下操作
查看配置文件的位置

php --ini

确定php cli安装了哪些拓展

php -m

10.php配置外部组件

陆续更新增加链接,包括但不限于以下
php配置nginx: php配置nginx

php增加redis拓展支持: php配置redis

php增加mongodb拓展支持:php配置mongodb

php增加rabbitmq拓展支持

php增加swoole拓展支持

php多版本并存

composer使用:composer安装和使用

jit开启及配置: php开启jit

11.复制编译好的php到新设备

编译时间较长,而且如果内存只有1g(通常是云服务器),无法正常编译。
1)在新设备上安装依赖
2)将编译后的文件夹复制到新设备的相同位置(/usr/local/php)
3)将配置文件复制到新设备的相同位置(/etc/php)
4)配置环境变量
5)配置systemctl

12.可能的报错openssl

如果openssl报错,安装openssl3即可
openssl官网下载地址

cd /usr/local 
wget https://www.openssl.org/source/openssl-3.0.12.tar.gz
tar -zxvf openssl-3.0.12.tar.gz && cd openssl-3.0.12
./config
make && make install
ldconfig /usr/local/lib64/

13.bash脚本一键编译安装(参考)

仅支持deb系,暂时不支持suse系edhat系,仅供参考,每台设备不太一样,需要自己调整。

创建文件

vi /usr/local/php82.sh

内容如下

#!/bin/bash

# 常量设置
php_version="8.2.10" # php版本
install_path="/usr/local" # 安装、操作目录

# 安装依赖
echo "......正在安装依赖......"
apt-get install -y build-essential autoconf automake libtool libsqlite3-dev pkg-config libjpeg-dev libpng-dev libxml2-dev libbz2-dev libcurl4-gnutls-dev libssl-dev libffi-dev libwebp-dev libonig-dev libzip-dev
echo "......依赖安装完成......"

# 下载php源码包
echo "......正在下载源码包......"
cd ${install_path}
wget -P ${install_path} https://www.php.net/distributions/php-${php_version}.tar.gz 
echo "......源码包下载完成......"

# 解压缩
echo "......正在解压缩源码包......"
tar -zxf ${install_path}/php-${php_version}.tar.gz
echo "......源码包解压缩完成......"

# 编译安装
echo "......正在编译安装......"
${install_path}/php-${php_version}/configure --prefix=${install_path}/php --sysconfdir=/etc/php --with-openssl --with-zlib --with-bz2 --with-curl --enable-bcmath --enable-gd --with-webp --with-jpeg --with-mhash --enable-mbstring --with-imap-ssl --with-mysqli --enable-exif --with-ffi --with-zip --enable-sockets --with-pcre-jit --enable-fpm --with-pdo-mysql --enable-pcntl
cd ${install_path}/php-${php_version} && make && make install
echo "......编译安装完成......"

# 添加用户组和用户
echo "......正在添加用户组和用户......"
groupadd www && useradd -g www -s /sbin/nologin www
echo "......完成添加用户组和用户......"

# 配置文件复制
echo "......正在复制配置文件......"
cp ${install_path}/php-${php_version}/php.ini-development ${install_path}/php/lib/php.ini
cp /etc/php/php-fpm.conf.default /etc/php/php-fpm.conf
cp /etc/php/php-fpm.d/www.conf.default /etc/php/php-fpm.d/www.conf
echo "......复制配置文件完成......"

# 配置环境变量
echo "......正在配置环境变量......"
echo "export PATH=\$PATH:/usr/local/php/bin" >> /etc/profile
. /etc/profile
echo "......配置环境变量完成......"

# 配置php
echo "......正在配置php配置文件......"
## 创建session文件夹
mkdir ${install_path}/php/tmp && chmod -R 755 ${install_path}/php/tmp
## 修改配置文件(/usr/local/php/lib/php.ini)中的地址
sed -i 's/;session.save_path = "\/tmp"/session.save_path = "\/usr\/local\/php\/tmp"/g' /usr/local/php/lib/php.ini
## 修改配置文件(/etc/php/php-fpm.d/www.conf)中的用户
sed -i 's/user = nobody/user = www/g' /etc/php/php-fpm.d/www.conf
sed -i 's/group = nobody/group = www/g' /etc/php/php-fpm.d/www.conf
echo "......配置php配置文件完成......"

# 配置systemctl脚本
echo "......正在配置systemctl脚本......"
cat>/usr/lib/systemd/system/php-fpm.service<<EOF
[Unit]
Description=php-fpm
After=syslog.target network.target

[Service]
Type=forking
ExecStart=${install_path}/php/sbin/php-fpm
ExecReload=/bin/kill -USR2 \$MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl start php-fpm
systemctl enable php-fpm
systemctl status php-fpm
echo "......systemctl脚本配置完成......"

echo "......!!!脚本运行完成!!!......"

运行文件

sh /usr/local/php82.sh

14.jit开启及配置

1)开启opcache扩展,并配置
编辑php.ini(通过php --ini找到位置)

vi  /usr/local/php/lib/php.ini
#找到并取消opcache扩展注释(前面的;)
zend_extension=opcache.so

下面是参数配置:
链接: php官方参考

个人的配置,仅供参考

;开启opcache
opcache.enable=1
;cli模式的开启,如果用php-cli,则用1 ,否则为0
opcache.enable_cli=1
;jit调用模式,参考下面的参数说明
opcache.jit=1205
;为编译 JIT 代码保留的共享内存量。值 0 表示禁用 JIT。
opcache.jit_buffer_size=64M
;共享内存大小,单位:兆字节
opcache.memory_consumption=128
;用来存储预留字符串的内存大小,单位:兆字节
opcache.interned_strings_buffer=8
;哈希表中可存储的脚本文件数量上限
opcache.max_accelerated_files=4000
;检查是否有更新的周期,单位:秒。 设置 0为 每次更新都检查更新。 
opcache.revalidate_freq=60
;如果启用(值为1),一次释放全部请求变量的内存,而不是依次释放每一个已分配的内存块
opcache.fast_shutdown=1

2)重启php-fpm并查看

systemctl restart php-fpm

查看拓展

php -m
#可以看到如下拓展,说明开启成功
Zend OPcache

3)参数说明

参考官方的文档,有详细的说明
链接: 官方文档

opcache.jit= CRTO,其中的位分别是:

第一位数字,是否使用avx指令,现在的cpu都支持

0-禁用特定 CPU 优化

1-如果 CPU 支持则启用 AVX

如果不确定,可以通过下面的命令查看

cat /proc/cpuinfo
第二位数字,寄存器分配策略
0-不执行寄存器分配
1-执行局部域寄存器分配
2-执行全局寄存器分配
第三位数字,触发策略
0-在php脚本加载时编译所有函数
1-php文件第一次执行时预编译
2-第一次请求时分析函数,然后编译最热门函数
3-动态分析和编译热门函数
4-目前未使用
5-使用追踪 JIT。动态分析和为热门代码段编译追踪。
第四位数字,优化策略
0 不 JIT
1 最小 JIT(调用标准 VM 处理程序)
2 内联 VM 处理程序
3 使用类型推断
4 使用调用图
5 优化整个脚本

方法二

其他编译方法

apt-get install build-essential autoconf automake libtool libsqlite3-dev pkg-config libjpeg-dev libpng-dev libxml2-dev libbz2-dev libcurl4-gnutls-dev libssl-dev libffi-dev libwebp-dev libonig-dev libzip-dev libonig5 libzip4 libgmp-dev libfreetype6-dev libsnmp-dev unzip p7zip-full libsodium-dev libevent-dev libreadline-dev libldap2-dev

dpkg -L libevent-dev #这个命令会列出所有由 libevent-dev 包安装的文件及其位置。

./configure --prefix=/usr/local/php8.1.28 --with-config-file-path=/usr/local/php8.1.28/etc --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data --enable-mysqlnd --with-mysqli --with-pdo-mysql --enable-opcache --with-pcre-jit --enable-gd --with-jpeg --with-freetype --with-gettext --with-curl --with-openssl --enable-sockets --enable-mbstring --enable-xml --with-zip --with-zlib --with-snmp --with-mhash --enable-ftp --enable-bcmath --enable-soap --enable-shmop --enable-sysvsem --enable-pcntl --with-gmp --with-sqlite3 --with-pdo_sqlite --with-sodium --with-readline --with-ldap

make -j $(nproc) && make install

#复制文件
cp php.ini-development /usr/local/php8.1.28/etc/php.ini
#配置文件检测
/usr/local/php8.1.28/sbin/php-fpm -t
#启动
/usr/local/php8.1.28/sbin/php-fpm
#关闭
pkill php-fpm
#重载
pkill -USR2 php-fpm
#开机启动
vi /etc/rc.local
/usr/local/php8.1.28/sbin/php-fpm

nginx配置php-fpm

location ~ \.php(.*)$ {
  fastcgi_index index.php;
  fastcgi_pass 127.0.0.1:9000;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  fastcgi_param PATH_INFO $1;
  include fastcgi_params;
}

相关命令

#重载nginx
pkill -HUP nginx

php-fpm优化

/usr/local/php8.1.28/etc/php-fpm.d/www.conf

  1. 动态创建子进程:
    pm=dynamic
  2. 最大子进程数:
    pm.max_children=100(默认5)
    每开启一个php-fpm进程要占用近20M左右的内存,假设服务器内存为2G
  3. 初始进程数:
    pm.start_servers=40(默认2)
  4. 最小空闲进程数:
    pm.min_spare_servers=20(默认1)
  5. 最大空闲进程数:
    pm.max_spare_servers = 60(默认3)
  6. 最大多少次请求后子进程重生:
    pm.max_requests=10240
    有效降低内存消耗

php-fpm进程和线程:

  1. php-fpm是阻塞的单线程模型,php-fpm的每个进程只开启一个线程,一个线程同时只能服务一个请求。
  2. 服务进程内存使用统计:
    ps aux |grep php-fpm | awk '{mem+=$6}END{print mem}'

进程状态监控:

  1. php配置:
    pm.status_path=/phpstatus
    pkill -USR2 php-fpm 重载

  2. nginx设置

    location /nginxstatus{
    stub_status;
    }
    location /phpstatus {
    fastcgi_index index.php;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $1;
    include fastcgi_params;
    }

    nginx -t 检测配置
    pkill -HUP nginx 重载nginx

  3. 客户端测试
    http://localhost/phpstatus

  4. 进程状态信息

    pool:www  #进程池名称
    process manager:dynamic  #进程管理方式
    starttime:22/Jan/2016:15:49:00+0800 #启动时间
    startsince:375  #运行时长
    acceptedconn:7 #当前进程池接受的请求数
    listenqueue:0 #请求等待队列,如果不为0,意味着FPM进程不足,需要增加
    max listen queue:0  #最大等待队列数量
    listenqueuelen:1024 #SOCKET等待队列长度
    idle processes:4  #空闲进程数
    active processes:1 #活跃的进程数
    totalprocesses:5 #总进程数
    maxactiveprocesses:1 #最大活跃进程数
    max children reached:0 #达到最大进程数的次数,如果不为0,意味着最天进程数不足,需要增加
    slowrequests:0 #慢请求数量,需要设置s1ow1og

并发测试

ab是apache自带的一个很好用的压力测试工具,当安装完apache的时候,就可以在bin下面找到ab
模拟100个并发用户,对一个页面发送1000个请求:

D:\phpStudy\Apache\bin\ab.exe -n10000 -c1000 http://www.baidu.com
其中-n代表请求数,-c代表并发数

返回结果

#首先是apache的版本信息
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking vm1.jianfeng.com (be patient)
Server Software: Apache/2.2.19 ##apache版本
Server Hostname: vm1.jianfeng.com ##请求的机子
Server Port: 80 ##请求端口
Document Path: /a.html
Document Length: 25 bytes ##页面长度
Concurrency Level: 100 ##并发数
Time taken for tests: 0.273 seconds ##共使用了多少时间
Complete requests: 1000 ##请求数
Failed requests: 0 ##失败请求
Write errors: 0
Total transferred: 275000 bytes ##总共传输字节数,包含http的头信息等
HTML transferred: 25000 bytes ##html字节数,实际的页面传递字节数
Requests per second: 3661.60 [#/sec] (mean) ##每秒多少请求,这个是非常重要的参数数值,服务器的吞吐量
Time per request: 27.310 [ms] (mean) ##用户平均请求等待时间
Time per request: 0.273 [ms] (mean, across all concurrent requests) ##服务器平均处理时间,也就是服务器吞吐量的倒数
Transfer rate: 983.34 [Kbytes/sec] received ##每秒获取的数据长度

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 2.3 0 16
Processing: 6 25 3.2 25 32
Waiting: 5 24 3.2 25 32
Total: 6 25 4.0 25 48

Percentage of the requests served within a certain time (ms)
50% 25 ## 50%的请求在25ms内返回
66% 26 ## 60%的请求在26ms内返回
75% 26
80% 26
90% 27
95% 31
98% 38
99% 43
100% 48 (longest request)
————————————————

测试用index.php

<?php
phpinfo();

//$a=0;
//for($i=0;$i<=100;$i++){
//  $a=$i+$a;
//}
//echo $a;

//echo "JIT is " . (ini_get('opcache.jit')?"enabled":"disabled") . "\n";
//
//$start = microtime(true);
//$total = 0;
//for($i=0;$i<1000000;$i++){
//  $total += $i*2;
//}
//
//echo "<br>数量:".$i.",总和:".$total."<br>耗时:";
//$end=microtime(true);
//
//$spend=floor(($end-$start)*1000);
//echo $spend;

redis扩展安装

dpkg -l | grep liblzf
apt-get install liblzf1
apt-get install liblzf-dev
dpkg-query -L liblzf1
dpkg-query -L liblzf-dev

apt-get install liblz4-dev
apt-get install libzstd-dev

apt-get install php-pear
pecl install redis

wget https://pecl.php.net/get/redis-6.0.2.tgz
tar -zxvf redis-6.0.2.tgz
cd redis-6.0.2
/usr/local/php8.1.28/bin/phpize && \
./configure --with-php-config=/usr/local/php8.1.28/bin/php-config  && \
make && make install

swoole扩展安装

git clone https://github.com/swoole/swoole-src.git && \
cd swoole-src

#最新版不支持php7.4
wget https://github.com/swoole/swoole-src/archive/refs/tags/v5.1.2.tar.gz
#支持php7.4
wget https://github.com/swoole/swoole-src/archive/refs/tags/v4.8.13.tar.gz

/usr/local/php8.1.28/bin/phpize && \
./configure --with-php-config=/usr/local/php8.1.28/bin/php-config && \
make && make install

apcu扩展安装

  1. 下载源码https://github.com/krakjoe/apcu

  2. 编译

    git clone https://github.com/krakjoe/apcu/archive/refs/tags/v5.1.23.tar.gz
    #如果是php7.4下载下面版本
    wget https://github.com/krakjoe/apcu/archive/refs/tags/v5.1.17.tar.gz
    cd apcu
    /usr/local/php8.1.28/bin/phpize
    ./configure --with-php-config=/usr/local/php8.1.28/bin/php-config
    make && make install
  3. 在php.ini里添加apcu的配置

    extension=apcu.so
    
    [apcu]
    apc.enabled=1
    apc.shm_segments=1
    apc.shm_size=512M
    apc.entries_hint=0
    apc.ttl=0
    apc.gc_ttl=5
    apc.mmap_file_mask=
    apc.slam_defense=0
    apc.enable_cli=1
    apc.use_request_time=0
    apc.serializer="php"
    apc.coredump_unmap=0
    apc.preload_path=
  4. 相关插件https://www.workerman.net/plugin/133

event扩展安装

apt-get install libevent-dev
wget https://pecl.php.net/get/event-3.1.3.tgz
tar -zxvf event-3.1.3.tgz
cd event-3.1.3
/usr/local/php8.1.28/bin/phpize
./configure --with-php-config=/usr/local/php8.1.28/bin/php-config
make && make install
echo "extension=event.so" >> /www/server/php/80/etc/php.ini

xdebug扩展安装

Xdebug 是一个强大的 PHP 调试和分析工具,它为开发者提供了多种功能来帮助开发和优化 PHP 应用程序。

当您尝试同时启用 Xdebug 和 JIT 时,PHP 会发出警告,告知 JIT 由于与 Xdebug 的不兼容性而被禁用。这是 PHP 为了保持稳定性而采取的预防措施。

如果您希望使用 JIT 编译器来提高性能,同时需要 Xdebug 来进行调试,您可能需要在开发和生产环境中分别配置:

  • 开发环境:在开发环境中,您可以启用 Xdebug 来帮助调试代码,而不需要启用 JIT,因为开发环境中的性能通常不是主要考虑因素。
  • 生产环境:在生产环境中,您可能想要启用 JIT 来提高性能,此时您应该禁用 Xdebug,或者仅在需要调试时临时启用它。
  1. 安装依赖:编译 Xdebug 之前,需要确保你的系统上安装了 PHP 开发包和必要的库。例如,在 Debian 或 Ubuntu 系统上,你可能需要安装以下依赖:

    sudo apt-get install php-dev php-pear php-zmq3-dev
  2. 下载 Xdebug:从 Xdebug 的官方网站下载源码包。你可以从 Xdebug 的官方网站 下载最新的源码包。

  3. 解压源码包:使用 tar 命令解压下载的源码包:

    tar -xzvf xdebug-x.y.z.tgz
  4. 编译 Xdebug:进入解压后的目录,并使用 phpize 命令准备编译环境,然后使用 ./configure 命令进行配置,最后使用 make 命令进行编译:

    cd xdebug-x.y.z
    phpize
    ./configure
    make
  5. 安装扩展:编译完成后,使用 make install 命令安装 Xdebug 扩展:

    sudo make install
  6. 配置 PHP:安装完成后,需要在 PHP 的配置文件 php.ini 中启用 Xdebug。你可以在 php.ini 文件中添加以下行:

    zend_extension=xdebug.so
    xdebug.remote_enable=1
    xdebug.remote_autostart=1
    xdebug.remote_port=9000
    xdebug.remote_connect_back=1
  7. 重启 PHP:为了使配置生效,需要重启 PHP 服务。根据你的服务器配置,重启命令可能有所不同。例如,如果你使用的是 PHP-FPM,可以使用以下命令:

    sudo service php-fpm restart
  8. 验证安装:重启 PHP 服务后,可以通过运行 phpinfo() 函数来验证 Xdebug 是否已正确安装:

    <?php
    phpinfo();
    ?>

    在浏览器中访问这个页面,如果看到 Xdebug 的相关信息,说明 Xdebug 已经安装成功。

银河麒麟系统编译安装php

sudo apt-get remove minizip

sudo apt install libxml2 libxml2-dev libpng-dev libjpeg-dev libfreetype6-dev libgmp-dev libldap2-dev libonig-dev libreadline-dev snmp libsnmp-dev libsodium-dev libzip-dev libevent-dev

sudo ./configure --prefix=/usr/local/php7.4.33 --with-config-file-path=/usr/local/php7.4.33/etc --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data --enable-mysqlnd --with-mysqli --with-pdo-mysql --enable-opcache --with-pcre-jit --enable-gd --with-jpeg --with-freetype --with-gettext --with-curl --with-openssl --enable-sockets --enable-mbstring --enable-xml --with-zip --with-zlib --with-snmp --with-mhash --enable-ftp --enable-bcmath --enable-soap --enable-shmop --enable-sysvsem --enable-pcntl --with-gmp --with-sqlite3 --with-pdo_sqlite --with-sodium --with-readline --with-ldap

composer相关

1.composer安装

composer官网

需要先安装好php,同时php -v输出有信息

cd /usr/local
php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"

上面三条命令是官方给的,运行完不报错就装完了,不过我习惯放到环境变量的目录下

mv composer.phar /usr/local/bin/composer

在具体的项目目录安装,比如在/var/xxx下面有个php项目,需要先切cd这个目录下,然后才进行包管理

2.切换国内源

如果直连官方源,多半是安装不上的

设置全局为阿里源

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

3.恢复默认源

composer config -g --unset repos.packagist