php编译安装(详细)+ bash脚本(多linux版本)
方法一
转载自: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
- 动态创建子进程:
pm=dynamic - 最大子进程数:
pm.max_children=100(默认5)
每开启一个php-fpm进程要占用近20M左右的内存,假设服务器内存为2G - 初始进程数:
pm.start_servers=40(默认2) - 最小空闲进程数:
pm.min_spare_servers=20(默认1) - 最大空闲进程数:
pm.max_spare_servers = 60(默认3) - 最大多少次请求后子进程重生:
pm.max_requests=10240
有效降低内存消耗
php-fpm进程和线程:
- php-fpm是阻塞的单线程模型,php-fpm的每个进程只开启一个线程,一个线程同时只能服务一个请求。
- 服务进程内存使用统计:
ps aux |grep php-fpm | awk '{mem+=$6}END{print mem}'
进程状态监控:
-
php配置:
pm.status_path=/phpstatus
pkill -USR2 php-fpm 重载 -
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 -
进程状态信息
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扩展安装
-
下载源码https://github.com/krakjoe/apcu
-
编译
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
-
在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=
-
相关插件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,或者仅在需要调试时临时启用它。
-
安装依赖:编译 Xdebug 之前,需要确保你的系统上安装了 PHP 开发包和必要的库。例如,在 Debian 或 Ubuntu 系统上,你可能需要安装以下依赖:
sudo apt-get install php-dev php-pear php-zmq3-dev
-
下载 Xdebug:从 Xdebug 的官方网站下载源码包。你可以从 Xdebug 的官方网站 下载最新的源码包。
-
解压源码包:使用
tar
命令解压下载的源码包:tar -xzvf xdebug-x.y.z.tgz
-
编译 Xdebug:进入解压后的目录,并使用
phpize
命令准备编译环境,然后使用./configure
命令进行配置,最后使用make
命令进行编译:cd xdebug-x.y.z phpize ./configure make
-
安装扩展:编译完成后,使用
make install
命令安装 Xdebug 扩展:sudo make install
-
配置 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
-
重启 PHP:为了使配置生效,需要重启 PHP 服务。根据你的服务器配置,重启命令可能有所不同。例如,如果你使用的是 PHP-FPM,可以使用以下命令:
sudo service php-fpm restart
-
验证安装:重启 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安装
需要先安装好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
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。