PHP纯离线搭建(php 8.1.7)

news2024/9/21 10:27:33

要离线从零安装 PHP 8.1.7,需要准备好 PHP 的源代码以及所有相关的依赖包。以下是步骤:

步骤概览
在联网系统上下载 PHP 8.1.7 源代码和所有依赖包。
将这些文件传输到离线系统。
安装所需的依赖包。
编译并安装 PHP 8.1.7。
配置 PHP 和 Web 服务器。

  1. 在联网系统上下载 PHP 8.1.7 和依赖库
    步骤 1: 下载 PHP 8.1.7 源代码
    在联网的系统上,首先下载 PHP 8.1.7 源代码:

wget https://www.php.net/distributions/php-8.1.7.tar.gz (或者浏览器直接输入该地址下载)
步骤 2: 下载依赖包
要编译 PHP,需要安装必要的编译工具和依赖包。可以使用包管理工具下载这些包。

对于 Ubuntu/Debian 系统
安装编译 PHP 所需的依赖包:

sudo apt-get install build-essential autoconf bison re2c libxml2-dev libsqlite3-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libxpm-dev libfreetype6-dev libmcrypt-dev libssl-dev pkg-config
要离线下载这些包,可以使用以下命令在联网机器上下载依赖包:

apt-get download <package_name>
例如:

apt-get download build-essential autoconf bison re2c libxml2-dev libsqlite3-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libxpm-dev libfreetype6-dev libssl-dev pkg-config
对于 CentOS/RHEL 系统
下载 CentOS 或 RHEL 上所需的依赖包:

sudo yum groupinstall “Development Tools”
sudo yum install libxml2-devel bzip2-devel curl-devel libpng-devel libjpeg-devel freetype-devel openssl-devel sqlite-devel oniguruma-devel
可以使用 yumdownloader 下载这些包:

yumdownloader <package_name>
步骤 3: 打包下载的文件
将 PHP 源代码和所有依赖包打包:

tar -czvf php8.1.7_offline_install.tar.gz php-8.1.7.tar.gz <dependency_files>
2. 将文件传输到离线系统
将打包的文件传输到离线系统,可以使用 USB 或 scp 等工具。

scp php8.1.7_offline_install.tar.gz user@offline_server:/path/to/destination
3. 在离线系统上安装依赖包
步骤 1: 解压文件
在离线系统上,首先解压传输过来的打包文件:

tar -xzvf php8.1.7_offline_install.tar.gz
步骤 2: 安装依赖包
对于 Ubuntu/Debian 系统

sudo dpkg -i *.deb
对于 CentOS/RHEL 系统

sudo rpm -i *.rpm
4. 编译和安装 PHP 8.1.7
步骤 1: 解压 PHP 源代码

tar -xzvf php-8.1.7.tar.gz
cd php-8.1.7
步骤 2: 配置编译选项
根据需要配置 PHP 编译选项。以下是常见的编译选项:

./configure --prefix=/usr/local/php8
–with-config-file-path=/usr/local/php8
–with-config-file-scan-dir=/usr/local/php8/conf.d
–enable-mbstring
–enable-intl
–with-openssl
–with-zlib
–enable-pcntl
–enable-sockets
–enable-soap
–with-curl
–enable-fpm
–with-mysqli
–with-pdo-mysql
–with-zlib
–enable-bcmath
–enable-ftp
–with-gd
–enable-gd
–with-jpeg
–with-freetype
步骤 3: 编译和安装 PHP
编译 PHP:

make
安装 PHP:

sudo make install
步骤 4: 配置 PHP
拷贝 PHP 配置文件模板:

cp php.ini-production /usr/local/php8/php.ini
编辑 php.ini,根据需要修改配置:

sudo nano /usr/local/php8/php.ini
5. 配置 Web 服务器
配置 Nginx 和 PHP-FPM
启动 PHP-FPM:

/usr/local/php8/sbin/php-fpm
修改 Nginx 配置,使其使用 PHP-FPM,编辑 /etc/nginx/nginx.conf 或虚拟主机配置文件:
nginx
location ~ .php$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME d o c u m e n t r o o t document_root documentrootfastcgi_script_name;
}
重启 Nginx:

sudo systemctl restart nginx
配置 Apache 和 PHP
确保已安装 Apache,并安装 libapache2-mod-php8.1。

sudo apt-get install apache2 libapache2-mod-php8.1
重启 Apache:

sudo systemctl restart apache2
6. 测试 PHP 安装
创建测试 PHP 文件:

sudo nano /var/www/html/info.php
内容如下:

php

<?php phpinfo(); ?>

打开浏览器,访问 http://your_server_ip/info.php,确认 PHP 8.1.7 已成功安装。
总结
在联网系统上下载 PHP 源代码和依赖包。
将所有文件传输到离线系统。
安装依赖包,编译并安装 PHP 8.1.7。
配置 PHP 和 Web 服务器(Nginx 或 Apache)。

您说:
进行 ./configure 时报了no package ‘oniguruma’ found

在进行 PHP 编译时,oniguruma 是用于支持多字节正则表达式(用于 mbstring 扩展)的库。如果编译时提示没有找到 oniguruma,需要手动安装这个库。

解决方法:

  1. 下载并安装 oniguruma 库
    因为是离线安装,所以需要在有网络的机器上下载 oniguruma 源代码或包,之后再将其安装到目标系统中。

步骤 1: 下载 oniguruma 源代码
在有网络的机器上,下载 oniguruma 的源代码。oniguruma 的源代码托管在 GitHub 上:

wget https://github.com/kkos/oniguruma/releases/download/v6.9.7/onig-6.9.7.tar.gz
将下载的压缩包传输到目标离线系统。

步骤 2: 在离线系统上解压并编译 oniguruma
解压下载的文件:

tar -xzvf onig-6.9.7.tar.gz
cd onig-6.9.7
编译并安装 oniguruma:

./configure
make
sudo make install
步骤 3: 确认 oniguruma 安装成功
执行以下命令,确认 oniguruma 库已成功安装:

pkg-config --modversion oniguruma
如果输出了版本号,例如 6.9.7,说明 oniguruma 安装成功。

  1. 编译 PHP 时重新指定 oniguruma
    在 PHP 的编译过程中,确保指定了正确的路径来找到 oniguruma。可以通过以下命令再次配置 PHP:

./configure --with-onig=/usr/local
如果安装路径不同,可以替换 /usr/local 为 oniguruma 实际安装的路径。

总结
下载并编译 oniguruma 库。
安装完成后,重新运行 ./configure 配置 PHP,并确保指定了 oniguruma 的路径。

您说:
fail to load configuration file ‘/usr/local/php/etc/php-fpm.conf’
回答:
如果在启动 PHP-FPM 时遇到 “fail to load configuration file ‘/usr/local/php/etc/php-fpm.conf’” 错误,通常是因为配置文件路径不正确或配置文件丢失。下面是解决这个问题的步骤:

步骤 1: 确认 php-fpm.conf 文件路径
确保 php-fpm.conf 文件存在于指定路径 /usr/local/php/etc/ 中。

ls -l /usr/local/php/etc/php-fpm.conf
如果文件不存在或路径不对,需要重新检查或创建配置文件。

步骤 2: 创建 php-fpm.conf 配置文件
如果配置文件丢失,可以从 PHP 的源代码中复制默认配置文件,或者从其他 PHP 安装中获取默认配置文件。可以使用以下命令来创建一个基本的 php-fpm.conf 配置文件:

sudo cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
如果 /usr/local/php/etc/php-fpm.conf.default 文件不存在,可以从 PHP 源代码目录中复制:

cp /path/to/php-8.1.7/php-fpm.conf /usr/local/php/etc/php-fpm.conf
步骤 3: 确保配置文件的正确性
打开配置文件并检查是否存在错误:

sudo nano /usr/local/php/etc/php-fpm.conf
确保配置文件中的路径、权限和其他设置都正确。以下是一个简单的配置示例:

ini
复制代码
[global]
error_log = /usr/local/php/var/log/php-fpm.log
pid = /usr/local/php/var/run/php-fpm.pid

[www]
user = www-data
group = www-data
listen = /usr/local/php/var/run/php-fpm.sock
listen.mode = 0660
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
步骤 4: 检查配置目录权限
确保 PHP-FPM 配置目录 /usr/local/php/etc/ 和其他相关目录具有正确的权限和所有权:

sudo chown -R root:root /usr/local/php/etc
sudo chmod -R 755 /usr/local/php/etc
步骤 5: 检查 PHP-FPM 是否可以启动
尝试手动启动 PHP-FPM 并查看输出中的错误信息:

/usr/local/php/sbin/php-fpm -t
这会检查配置文件的语法错误。如果一切正常,你应该看到类似于 “configuration file /usr/local/php/etc/php-fpm.conf test is successful” 的消息。

然后可以尝试启动 PHP-FPM 服务:

/usr/local/php/sbin/php-fpm
步骤 6: 查看日志文件
如果仍然遇到问题,可以查看 PHP-FPM 的日志文件以获取更多信息:

sudo tail -f /usr/local/php/var/log/php-fpm.log
总结
确认 php-fpm.conf 文件存在于 /usr/local/php/etc/。
如果文件丢失,创建一个新的配置文件。
检查配置文件的路径、权限和设置是否正确。
使用 php-fpm -t 命令检查配置文件的语法。
启动 PHP-FPM 服务并查看日志文件以获取更多信息。
按照这些步骤,应该能够解决 “fail to load configuration file” 的问题。

问题
nothing matches the include pattern ‘/usr/local/php/etc/php-fpm.d/.conf’ from ‘/usr/local/php/etc/php-fpm.conf’
ChatGPT 说:
ChatGPT
如果在启动 PHP-FPM 时遇到错误 “nothing matches the include pattern '/usr/local/php/etc/php-fpm.d/
.conf’ from ‘/usr/local/php/etc/php-fpm.conf’”,这表明 php-fpm.conf 文件中指定的包含目录或文件模式没有匹配到任何文件。这个问题通常发生在以下几种情况下:

/usr/local/php/etc/php-fpm.d/ 目录不存在。
/usr/local/php/etc/php-fpm.d/ 目录存在但没有配置文件。
配置文件的路径或文件模式在 php-fpm.conf 中错误。
解决步骤
步骤 1: 确认目录存在
首先,确保 /usr/local/php/etc/php-fpm.d/ 目录存在:

ls -ld /usr/local/php/etc/php-fpm.d/
如果目录不存在,可以创建它:

sudo mkdir -p /usr/local/php/etc/php-fpm.d/
步骤 2: 确认目录下的配置文件
如果目录存在,但没有配置文件,需要添加至少一个配置文件。通常,这些文件是为不同的池配置文件。例如:

sudo nano /usr/local/php/etc/php-fpm.d/www.conf
可以用以下内容作为基本示例配置:

ini

[www]
user = www-data
group = www-data
listen = /usr/local/php/var/run/php-fpm.sock
listen.mode = 0660
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
步骤 3: 检查 php-fpm.conf 中的 include 指令
确保 php-fpm.conf 文件中的 include 指令指定了正确的目录和文件模式:

ini

include=/usr/local/php/etc/php-fpm.d/*.conf
检查该行是否拼写正确,并且指向了存在的目录和文件。

步骤 4: 测试配置文件
在修复目录和文件后,可以用以下命令测试 PHP-FPM 配置是否有效:

bash

/usr/local/php/sbin/php-fpm -t
步骤 5: 重新启动 PHP-FPM
如果配置文件和目录正确,尝试重新启动 PHP-FPM:

bash

/usr/local/php/sbin/php-fpm
步骤 6: 查看日志
如果仍然遇到问题,可以查看 PHP-FPM 的日志文件获取更多错误信息:

sudo tail -f /usr/local/php/var/log/php-fpm.log
总结
确保 /usr/local/php/etc/php-fpm.d/ 目录存在,如果不存在,则创建它。
在目录中添加至少一个配置文件,例如 www.conf。
检查 php-fpm.conf 中的 include 指令 是否正确指定了存在的目录和文件模式。
使用 php-fpm -t 命令测试配置,然后重新启动 PHP-FPM。
按照这些步骤操作后,应该能够解决 “nothing matches the include pattern” 的问题。

cannot get pid from group ‘nobody’
错误 “cannot get pid from group ‘nobody’” 通常发生在 PHP-FPM 启动时,表示 PHP-FPM 尝试使用名为 nobody 的用户或组,但系统中没有找到这个用户或组。这个问题通常与 PHP-FPM 的配置文件有关,特别是配置文件中的用户和组设置。

解决步骤
步骤 1: 确认 nobody 用户和组存在
首先,确认系统中是否存在 nobody 用户和组:

getent passwd nobody
getent group nobody
如果这些命令没有返回任何信息,说明系统中没有 nobody 用户和组。

步骤 2: 创建 nobody 用户和组
如果 nobody 用户和组不存在,你可以创建它们:

创建 nobody 组:

sudo groupadd nobody
创建 nobody 用户:

sudo useradd -r -g nobody nobody
其中 -r 选项表示创建一个系统用户。

步骤 3: 检查 PHP-FPM 配置文件
检查 PHP-FPM 配置文件 /usr/local/php/etc/php-fpm.conf 或池配置文件 /usr/local/php/etc/php-fpm.d/www.conf,确认 user 和 group 设置是否正确。例如:

ini
user = nobody
group = nobody
如果你的系统中没有 nobody 用户或组,可以将这些设置更改为系统中存在的用户和组。例如,可以使用 www-data 或 apache 用户和组(这取决于你的系统和 Web 服务器设置):

ini
user = www-data
group = www-data
步骤 4: 确保 PHP-FPM 配置文件的权限
确保 PHP-FPM 配置文件和相关目录的权限正确:

bash
sudo chown -R root:root /usr/local/php/etc/
sudo chmod -R 755 /usr/local/php/etc/
步骤 5: 测试和重启 PHP-FPM
在修改配置文件后,使用以下命令测试 PHP-FPM 配置文件:

/usr/local/php/sbin/php-fpm -t
如果配置测试通过,重新启动 PHP-FPM:

/usr/local/php/sbin/php-fpm
步骤 6: 查看日志文件
如果问题仍然存在,查看 PHP-FPM 的日志文件以获取更多信息:

sudo tail -f /usr/local/php/var/log/php-fpm.log
总结
确认 nobody 用户和组存在,如果不存在则创建它们。
检查并更新 PHP-FPM 配置文件 中的 user 和 group 设置。
确保配置文件和目录权限正确。
测试配置文件 并 重新启动 PHP-FPM。
查看日志文件 获取更多信息。
通过这些步骤,你应该能够解决 “cannot get pid from group ‘nobody’” 的问题。(或者使用存在的组,配置到user和group)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2152059.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaWeb纯小白笔记02:Tomcat的使用:发布项目的三种方式、配置虚拟主机、配置用户名和密码

通过Tomcat进行发布项目的目的是为了提供项目的访问能力&#xff1a;Tomcat作为Web服务器&#xff0c;能够处理HTTP请求和响应&#xff0c;将项目的内容提供给用户进行访问和使用。 一.Tomcat发布项目的三种方式&#xff1a; 第一种&#xff1a;直接在Tomcat文件夹里的webapp…

数学建模 第一讲 - 概论

一、什么是数学模型 一个栗子 例 1.1 一只装满水的圆柱型桶&#xff0c;底半径为 1米&#xff0c;高为 2米&#xff0c;底部有一直径为 0.1 米的洞。问桶流空要多少时间? 数学模型是对于一个特定的对象为了一个特定目标&#xff0c;根据事物的内在规律&#xff0c;作出一些必…

防止用户过于轻松采集网页内容的方法

面对AI&#xff0c;所有禁止采集网页内容的功能都是徒劳&#xff0c;最不济截图后采集文字总简单了吧&#xff1f;能做的就是增加一点点人工采集的难度。 以下总结一下 一、注册用户 必须注册才能浏览全部内容&#xff0c;那么这样就可以针对用户控制其浏览次数&#xff0c;浏…

ActiveMQ、RabbitMQ 和 Kafka 在 Spring Boot 中的实战

在现代的微服务架构和分布式系统中&#xff0c;消息队列 是一种常见的异步通信工具。消息队列允许应用程序之间通过 生产者-消费者模型 进行松耦合、异步交互。在 Spring Boot 中&#xff0c;我们可以通过简单的配置来集成不同的消息队列系统&#xff0c;包括 ActiveMQ、Rabbit…

多层感知机paddle

多层感知机——paddle部分 本文部分为paddle框架以及部分理论分析&#xff0c;torch框架对应代码可见多层感知机 import paddle print("paddle version:",paddle.__version__)paddle version: 2.6.1多层感知机&#xff08;MLP&#xff0c;也称为神经网络&#xff0…

QEMU:模拟 ARM 大端字节序运行环境

文章目录 1. 前言2. ARM 大小端模拟测试2.1 裸机模拟测试2.1.1 大端模拟测试2.1.2 小端模拟测试 2.2 用户空间模拟测试2.2.1 大端模拟测试2.2.2 小端模拟测试 2.3 结论 3. 参考链接 1. 前言 限于作者能力水平&#xff0c;本文可能存在谬误&#xff0c;因此而给读者带来的损失&…

leetcode刷题3

文章目录 前言回文数1️⃣ 转成字符串2️⃣ 求出倒序数再比对 正则表达式匹配[hard]1️⃣ 动态规划 盛最多水的容器1️⃣ 遍历分类2️⃣ 双指针贪心 最长公共前缀1️⃣ 遍历&#xff08;zip解包&#xff09; 三数之和1️⃣ 双指针递归 最接近的三数之和1️⃣ 迭代一次双指针 电…

携手阿里云CEN:共创SD-WAN融合广域网

在9月19日举行的阿里云云栖大会上&#xff0c;犀思云作为SD-WAN领域的杰出代表及阿里云的SD-WAN重要合作伙伴&#xff0c;携手阿里云共同推出了创新的企业上云方案——Fusion WAN智连阿里云解决方案。这一创新方案不仅彰显了犀思云在SD-WAN技术领域的深厚积累&#xff0c;更体现…

前端web端项目运行的时候没有ip访问地址

我们发现 没有netWork 的地址 导致 团队内其他同学无法打开我们的地址 进行访问 在page.json 中的运行 指令中 添加 --host 记得加上空格 这样我们就可以看到这个地址了 团队其他同学 就可以访问我们这个地址了

Resnet50网络——口腔癌病变识别

一 数据准备 1.导入数据 import matplotlib.pyplot as plt import tensorflow as tf import warnings as w w.filterwarnings(ignore) # 支持中文 plt.rcParams[font.sans-serif] [SimHei] # 用来正常显示中文标签 plt.rcParams[axes.unicode_minus] False # 用来正常显示负…

2024华为杯研究生数学建模竞赛(研赛)选题建议+初步分析

难度&#xff1a;DE<C<F&#xff0c;开放度&#xff1a;CDE>F。 华为专项的题目&#xff08;A、B题&#xff09;暂不进行选题分析&#xff0c;不太建议大多数同学选择&#xff0c;对自己专业技能有很大自信的可以选择华为专项的题目。后续会直接更新A、B题思路&#…

计算机网络传输层---课后综合题

线路&#xff1a;TCP报文下放到物理层传输。 TCP报文段中&#xff0c;“序号”长度为32bit&#xff0c;为了让序列号不会循环&#xff0c;则最多能传输2^32B的数据&#xff0c;则最多能传输&#xff1a;2^32/1500B个报文 结果&#xff1a; 吞吐率一个周期内传输的数据/周期时间…

2024/9/19、20 数学20题

极大线性无关组&#xff1a;

基于C#+SQL Server2005(WinForm)图书管理系统

图书管理系统 一、 首先把数据库脚本贴出来(数据库名为library) USE [library] GO /****** Object: Table [dbo].[books] Script Date: 06/12/2016 11:27:12 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[books]([bNum] [nvarchar](10…

Arthas sysprop(查看和修改JVM的系统属性)

文章目录 二、命令列表2.1 jvm相关命令2.1.4 sysprop&#xff08;查看和修改JVM的系统属性&#xff09;举例1&#xff1a;sysprop 查看所有系统属性举例2&#xff1a;sysprop java.version 查看单个属性&#xff0c;支持通过tab补全 二、命令列表 2.1 jvm相关命令 2.1.4 sysp…

STL-常用算法 遍历/查找/排序/拷贝和替换/算数生成/集合算法

STL常用算法 常用的遍历算法 for_each #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; #include<vector> #include<algorithm>void myPrint(int v) {cout << v << " "; }class MyPrint { public:void op…

React学习笔记(三)——React 组件通讯

1. 组件通讯-概念 了解组件通讯的意义 大致步骤&#xff1a; 知道组件的特点知道组件通讯意义 具体内容&#xff1a; 组件的特点 组件是独立且封闭的单元&#xff0c;默认情况下&#xff0c;只能使用组件自己的数据在组件化过程中&#xff0c;通常会将一个完整的功能拆分成多…

cesium.js 入门到精通(5-2)

在cesium 的配置中 有一些参数 可以配置地图的显示 显示出 水的动态显示 山的效果 相当于一些动画显示的效果 var viewer new Cesium.Viewer("cesiumContainer", {infoBox: false,terrainProvider: await Cesium.createWorldTerrainAsync({requestWaterMask: tru…

【计算机网络】计算机网络基础二

&#x1f351;个人主页&#xff1a;Jupiter. &#x1f680; 所属专栏&#xff1a;Linux从入门到进阶 欢迎大家点赞收藏评论&#x1f60a; 目录 以太网的通信原理令牌环网的通信原理网络传输基本流程 数据包封装和分用 网络传输流程图 局域网通信&#xff08;同一个网段内的两台…

PY+MySQL(等先完成mysql的学习)

第一章&#xff1a;准备工作&#xff08;重点关于mysql&#xff09; win安装 下载&#xff1a; 网址&#xff1a;MySQL :: Download MySQL Community Server版本&#xff1a;我的是8.0&#xff0c;但是建议5.7 下载&#xff1a;安装&#xff0c;因为是zip文件所以直接解压就好了…