PHP之环境搭建(php7.4 + php8.1)
之前写过几次,使用lnmp,宝塔,源码编译等方式来进行PHP环境的搭建, 随着接触的越来越多, 这里做一个总结, 常用的搭建方式
1.编译安装
之前写个几次,可以参考之前的
这次记录下多个版本PHP的安装 (php7.4 + php8.1)
1)安装php7.4
安装编译环境
yum -y install gcc gcc-c++ autoconf automake build-essential zlib zlib-devel openssl openssl-devel pcre pcre-devel
a)下载并解压
cd /usr/local/src/
wget https://www.php.net/distributions/php-7.4.32.tar.gz tar -zxvf php-7.4.32.tar.gz
b)编译并安装
cd php-7.4.32/ ./configure --prefix=/usr/local/php74 --with-mysql --with-mysqli --with-pdo_mysql --with-iconv-dir --with-zlib --with-libxml-dir --enable-xml --with-curl --enable-fpm --enable-mbstring --with-gd --with-openssl --with-mhash --enable-sockets --with-xmlrpc --enable-zip --enable-soap --enable-bcmath
make && make install -j 4
c)添加全局变量
vim /etc/bashrc alias php7=/usr/local/php74/bin/php
alias phpfpm7=/usr/local/php74/sbin/php-fpm # 生效
source /etc/bashrc
d)查看加载的配置文件,并设置
php7 -i|grep php.ini cp /usr/local/src/php-7.4.32/php.ini-development /usr/local/php74/lib/php.ini
e)添加nginx配置
server {
listen 8041;
server_name 127.0.0.1;
root /data/www/lx;
access_log /data/log/nginx/8041_access.log main;
error_log /data/log/nginx/8041_error.log warn;
location / {
#try_files $uri $uri/ /index.php?$query_string;
index index.html index.htm;
}
#location ~ .*\.(php|php5)?$ {
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
f)扩展安装
1.进入源码包gd库目录
cd /usr/local/download/php-7.4.11/ext/gd #这里是我的目录,需要改成你自己的目录 2.生成configure
/usr/local/php/bin/phpize
#这里是我的目录,需要改成你自己的目录 3)编译
./configure --with-php-config=/usr/local/php/bin/php-config --with-jpeg-dir=/usr/local/jpeg/ 4)安装
make&&make install 5)添加配置php.ini
extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/gd.so 查看安装的扩展文件:
/usr/local/php/include/php/ext
g)设置开机启动
vim /etc/rc.d/rc.local
添加:
/usr/local/php/sbin/php-fpm
常见问题:
1.FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 127.0.0.1, server: 127.0.0.1, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "127.0.0.1"
原因: 默认PHP配置中的fastcgi_param配置fastcgi_param配置,这个地方默认的是/Scripts$fastcgi_script_name
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
2.权限不足情况, 修改PHP的进程使用的用户
groupadd www useradd -g www -s /sbin/nologin www
vim /usr/local/php74/etc/php-fpm.d/www.conf
user = www
group = www
2)安装PHP8.1
安装依赖
yum -y install wget vim pcre pcre-devel openssl openssl-devel libicu-devel gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel ncurses ncurses-devel curl curl-devel krb5-devel libidn libidn-devel openldap openldap-devel nss_ldap jemalloc-devel cmake boost-devel bison automake libevent libevent-devel gd gd-devel libtool* libmcrypt libmcrypt-devel mcrypt mhash libxslt libxslt-devel readline readline-devel gmp gmp-devel libcurl libcurl-devel openjpeg-devel sqlite-devel
wget https://www.php.net/distributions/php-8.1.11.tar.gz
tar -zxvf php-8.1.11.tar.gz cd php-8.1.11/
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php --enable-mbstring --enable-ftp --enable-gd --enable-gd-jis-conv --enable-mysqlnd --enable-pdo --enable-sockets --enable-fpm --enable-xml --enable-soap --enable-pcntl --enable-cli --with-openssl --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-mysqlnd-compression-support --with-pear --with-zlib --with-iconv --with-curl --enable-bcmath make && make install -j 4 source /etc/bashrc
alias php=/usr/local/php/bin/php
alias phpfpm=/usr/local/php/sbin/php-fpm php -i|grep php.ini cp /usr/local/src/php-8.1.11/php.ini-production php.ini 生产环境
or
cp /usr/local/src/php-8.1.11/php.ini-development php.ini 开发环境 cp php-fpm.conf.default php-fpm.conf
cp php-fpm.d/www.conf.default php-fpm.d/www.conf
#Linux创建相关用户
groupadd www
useradd -g www www
groupadd nginx
useradd -g nginx nginx
# 使用Unix的方式链接
修改配置文件 www.conf
listen = /var/run/php-fpm/php7-fpm.sock user www ;
group www; listen.owner = nginx
listen.group = nginx
listen.mode = 0660
# nginx
location ~ \.php$ {
#fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php-fpm/php7-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
注: php-fpm服务启动使用www用户, Nginx服务启动使用Nginx服务
# 添加启动文件
- cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
- chmod +x /etc/init.d/php-fpm
# 添加权限, 指定配置文件
vim /etc/init.d/php-fpm
php_fpm_INI=${prefix}/etc/php.ini
php_opts="--fpm-config $php_fpm_CONF --pid $php_fpm_PID -c $php_fpm_INI -R"
# 将user group 改成 root
vim /usr/local/php/etc/php-fpm.d/www.conf
user = root
group = root
# 重新加载和重启php-fpm服务
systemctl daemon-reload
systemctl restart php-fpm
php-pm 相关配置项修改
/usr/local/php/etc/php-fpm.conf 配置错误日志:
error_log = /usr/local/php/var/php-fpm.log
配置pid文件:
pid = /usr/local/php/var/run/php-fpm.pid
更多操作
PHP5.33.之前
/usr/local/php/sbin/php-fpm{start|stop|quit|restart|reload|logrotate} --start 启动php的fastcgi进程 --stop 强制终止php的fastcgi进程 --quit 平滑终止php的fastcgi进程 --restart 重启php的fastcgi进程 --reload 重新平滑加载php的php.ini --logrotate 重新启用log文件 而新版本的操作变化了,因为直接操作进程就可以了。下面来看下指令: kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid` INT, TERM 立刻终止 QUIT 平滑终止 USR1 重新打开日志文件 USR2 平滑重载所有worker进程并重新载入配置和二进制模块
参考:
- https://juejin.cn/post/7135978589152870436
- https://www.php.net/manual/zh/install.unix.nginx.php
2.宝塔
一键傻瓜式安装, 提供可视化界面,方便操作与维护
3.lnmp
一键安装包方式安装
4.OneinStack (https://oneinstack.com/)


自动安装
工具目录: ~/oneinstack
1)重置MySQL密码reset_db_root_password.sh执行密码修改
5.docker
PHP之环境搭建(php7.4 + php8.1)的更多相关文章
- LNMP环境搭建(<=PHP7.2)
目录 准备工作 安装wget 安装net-tools 安装vim 配置显示行号 关闭防火墙 安装Nginx 安装依赖 编译安装Nginx 配置环境变量 Systemd管理 安装MySQL 安装依赖 下 ...
- LNMP环境搭建(PHP7.4.0)
目录 准备工作 安装wget 安装net-tools 安装vim 配置显示行号 关闭防火墙 安装Nginx 安装依赖 编译安装Nginx 配置环境变量 Systemd管理 安装MySQL 安装依赖 下 ...
- Windows10搭建PHP7开发环境
原文:Windows10搭建PHP7开发环境 3年前写了一篇<Windows下搭建PHP开发环境>之后就再也没有碰过PHP了,最近新发布了PHP7然后回去看了一下之前写的文章,发现很多配置 ...
- PHP7运行环境搭建(Windows7)
注:本文来源于< PHP7运行环境搭建(Windows7) > php7号称能直追facebook的HHVM,为了体验一把传说中的高性能,我特意在本地电脑上尝试着安装了php7, ...
- CentOS 7 yum nginx MySQL PHP7 简易环境搭建(精)
用centos自带的yum源来安装nginx,mysql和php,超级方便,省去编译的麻烦,省去自己配置的麻烦,还能节省非常多的时间. 我们先把yum源换成国内的阿里云镜像源(当然不换也可以),先备份 ...
- WIN7 环境下搭建 PHP7(64 位)操作步骤
WIN7 环境下搭建 PHP7(64 位)操作步骤 一.安装与配置 Apache 1.下载 Apache下载地址:https://www.apachelounge.com/download/ 2.安装 ...
- lnmp环境搭建(centos6.9+mysql5.7+php7.1+nginx1.10)
安装前准备:CentOS 6.9 64位 最小化安装 yum install -y make gcc gcc-c++ perl zlib-devel libaio libpng libpng-deve ...
- lamp环境搭建(centos6.9+apache2.4+mysql5.7+php7.1)
lamp环境搭建(centos6.9+apache2.4+mysql5.7+php7.1) 安装前准备:CentOS 6.9 64位 最小化安装 yum install -y make gcc gcc ...
- CentOS7.3+MySQL5.7+Apache2.4+PHP7.1+phpMyAdmin4.7+JDK1.8+SVN1.6+Jenkins2.1环境搭建
CentOS7.3+MySQL5.7+Apache2.4+PHP7.1+phpMyAdmin4.7+JDK1.8+SVN1.6+Jenkins2.1环境搭建 1.安装CentOS7.3虚拟机安装说明: ...
- DVWA安装,ALMP环境搭建以及php版本转换
前言 本文记录DVWA(Damn Vulberability Web App)在虚拟机中安装配置,包括ALMP环境的搭建和php版本的转换. 目录 2. ALMP环境搭建 3. php版本切换 一. ...
随机推荐
- 补: Rest 风格请求处理的的内容补充(1)
补: Rest 风格请求处理的的内容补充(1) Rest风格请求:注意事项和细节 客户端是PostMan 可以直接发送Put,delete等方式请求,可不设置Filter 如果哟啊SpringBoot ...
- 鸿蒙应用开发:如何与组件库(Glide)衔接?
Android 发展到现在不仅提供了很多 API,还提供了很多第三方库.这降低了我们开发者的开发难度,提升了开发效率,让应用开发更加的简单高效.众所周知,HarmonyOS 除了提供 16000 ...
- Angular 18+ 高级教程 – Component 组件 の Dependency Injection & NodeInjector
前言 在 Dependency Injection 依赖注入 文章中,我们学习了 50% 的 Angular DI 知识,由于当时还不具备组件知识,所以我们无法完成另外 50% 的学习. 经过了几篇组 ...
- MyBatis——案例——查询-查询详情
查询-查询详情 (根据id获取商品全部信息(即商品对象)) 1.编写Mapper接口方法:Brand selectById(int id); 2.编写SQL ...
- Word、Excel办公书的资源下载
我是清华社编辑,下载资源没有版权问题,可供读者个人学习用,但不允许商用. 微信扫描,清华社网盘,可转自己邮箱下载.安全,无风险. <Word/Excel/PPT 2019商务办公从入门到精通&g ...
- 使用BPF之前和之后生成直方图过程的对比
以bitehist为例: 使用BPF之前: 1.在内核中:开启磁盘IO事件的插桩观测. 2.在内核中,针对每个事件:向perf缓冲区写入一条记录.如果使用了跟踪点技术(推荐方式),记录中会包含关于磁盘 ...
- iOS堆和栈的使用小结
堆和栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除.堆,队列优先,先进先出(FIFO-first in first out):栈,先进后出(FILO-Fir ...
- C++ 第三节课 指针的使用
#include <iostream> using namespace std; void show(){ cout << "全局函数" << ...
- P2540 [NOIP2015 提高组] 斗地主 加强版
简要题意 给你一副手牌,求最少的次数出完所有手牌.(按照它给出的规定出) 题目 分析 因为求最小次数直接贪心很明显是错的,但又直接写不出 \(dp\) 的式子,所以我们只能够爆搜所有情况,但这样明显会 ...
- dotnet core微服务框架Jimu ~ 会员授权微服务
提供授权服务,用户使用会员的用户名和密码获取 token, 带着 token 访问受保护的接口,如浏览和发布新闻. 有 2 个公开的 api: token: 获取 token; GetCurrentM ...