游乐游手机版
首页/编程语言/文章详情

PHP5与PHP7安装教程 详解双版本环境搭建步骤

时间:2026-05-08 08:14
安装PHP5需下载源码包,解压后配置编译参数,包括Apache集成、MySQL支持等。过程中可能遇到依赖缺失错误,需安装相应开发包。配置成功后编译安装,并将配置文件复制到指定目录。PHP7安装流程类似,但配置参数略有调整。安装后需在Apache配置中管理模块加载,通过注释不同版本的模块行来切换PHP版本。

一、PHP5安装详细教程

php5的程序如何安装在php7,PHP5及PHP7的安装

要在服务器上安装PHP5,首先需要从其官方网站www.php.net获取源代码包。尽管PHP已推出更高版本,但PHP 5.6系列因其稳定性和广泛的兼容性,仍然是许多项目部署的主流选择。

开始安装前,请切换到常用的源码存放目录:

cd /usr/local/src

使用wget工具下载PHP 5.6.32的源码压缩包:

wget https://cn2.php.net/distributions/php-5.6.32.tar.bz2

下载完成后,解压该文件:

tar -jxvf php-5.6.32.tar.bz2

解压后进入生成的源码目录:

cd php-5.6.32/

接下来是关键步骤——编译配置。运行configure脚本并指定一系列参数,以启用对Apache、MySQL、图像处理等核心功能的支持:

./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-config-file-path=/usr/local/php/etc/ --with-mysql=/usr/local/mysql --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-libxml-dir --with-gd --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif

配置过程中常会遇到依赖缺失的错误。例如,第一个常见错误是:

错误1configure: error: freetype-config not found
解决方案
在CentOS/RHEL系统上安装开发包:yum install freetype-devel
在Debian/Ubuntu系统上安装:apt-get install libfreetype6-dev

解决后,可能还会遇到第二个错误:

错误2configure: error: mcrypt.h not found. Please reinstall libmcrypt.
解决方案
对于CentOS系统,安装相应库:yum install libmcrypt libmcrypt-devel

依赖问题解决后,建议先验证配置是否成功完成:

echo $?
如果命令返回值为0,表示配置成功,可以进入编译阶段。

执行编译和安装命令:

make & make install

注意:有时在./configure后直接运行make可能会遇到类似 libtool: link: `ext/date/php_date.lo' is not a valid libtool object 的报错。此时,执行make clean清除之前的编译文件,然后重新运行make即可解决此问题。

安装完成后,可以检查PHP的安装目录:

ls /usr/local/php/

所有可执行文件位于/bin目录下,查看其占用空间:

du -sh /usr/local/php/bin/

PHP与Apache协同工作的核心在于libphp5.so模块文件,它通常被安装在Apache的模块目录:/usr/local/apache/modules/libphp5.so。即使后续删除了PHP主目录,只要此模块文件存在,Apache仍能正常解析PHP 5.6脚本。

要查看已编译安装的PHP模块列表,运行:

/usr/local/php/bin/php -m

最后,配置PHP环境。将生产环境适用的配置文件模板复制到预设的配置目录:

cp php.ini-production /usr/local/php/etc/php.ini

此目录路径由编译时的--with-config-file-path参数指定。复制后,可以使用以下命令查看完整的PHP配置信息,其中包含配置文件的加载路径:

/usr/local/php/bin/php -i | less
复制前该目录为空,命令无法显示配置;复制后即可查看所有详细的PHP运行配置。

二、PHP7安装与版本切换指南

完成PHP5安装后,我们继续讲解PHP7的安装步骤。两者流程基本相似,但在配置参数和细节上存在重要区别。

首先,同样进入源码目录:

cd /usr/local/src

下载PHP 7.1.6的源码包:

wget https://cn2.php.net/distributions/php-7.1.6.tar.bz2

解压下载的文件:

tar -jxvf php-7.1.6.tar.bz2

进入解压后的PHP7源码目录:

cd php-7.1.6

执行编译配置。请注意,安装前缀和配置路径已改为php7,且部分参数有所调整(例如PHP7已移除了旧的--with-mysql选项):

./configure --prefix=/usr/local/php7 --with-apxs2=/usr/local/apache/bin/apxs --with-config-file-path=/usr/local/php7/etc --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif

配置成功后,进行编译和安装:

make & make install

安装完成后,您的Apache服务器可能同时加载了PHP5和PHP7两个模块。通过以下命令可以查看Apache当前加载的所有模块:

/usr/local/apache/bin/apachectl -M

在输出列表中,您可能会看到php5_modulephp7_module。Apache实际使用哪个版本来解析PHP脚本,完全取决于其配置文件。

因此,需要编辑Apache的主配置文件:

vim /usr/local/apache/conf/httpd.conf

在文件中查找包含php5.sophp7.soLoadModule指令。要禁用某个PHP版本,只需在该行前添加#号注释掉它。Apache将仅使用未被注释的PHP模块,从而实现PHP5与PHP7版本在同一服务器环境下的灵活切换与管理。

来源:https://blog.csdn.net/weixin_34785304/article/details/116153308
上一篇解决yum安装php时php53-common与php-common冲突问题 下一篇while循环结合字节缓冲区实现大视频文件流边读边写技巧
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
PyTorch中使用多维索引张量对高维张量批量索引的正确方法
编程语言 · 2026-07-03

PyTorch中使用多维索引张量对高维张量批量索引的正确方法

本文深入讲解如何在 PyTorch 中利用形状为 [b, k] 的索引张量 B,对形状为 [b, m, n] 的高维张量 A 执行高效批量索引,最终得到 [b, k, n] 的输出。核心思路在于合理扩展索引维度并配合 torch gather 实现精准的逐行抽取。 很多人处理高维张量的批量索引时都会

Go中...操作符解包切片传递可变参数函数
编程语言 · 2026-07-03

Go中...操作符解包切片传递可变参数函数

在 Go 语言中,` ` 运算符放在切片变量后面(如 `slice `)的作用是将该切片“展开”为多个独立参数,专门用于调用那些接受可变参数(` T`)的函数,例如 `append` 或 `fmt Println`。这是一种类型安全的语法糖,并非省略号或通配符,能够帮助开发者更简洁地处理

macOS与WSL2下PHP多版本切换失效问题排查与修复指南
编程语言 · 2026-07-03

macOS与WSL2下PHP多版本切换失效问题排查与修复指南

本文深入分析在 macOS 或 WSL2(Ubuntu)开发环境中,通过 Homebrew 管理 PHP 多版本时,php -v 始终显示旧版本(如 php@5 6)的深层原因,并给出系统性解决方案,覆盖 PATH 冲突、符号链接逻辑、Shell 初始化配置、系统残留配置等关键环节。 遇到这种情况的

PHP JSON解析深层嵌套对象属性访问失败的解决方法
编程语言 · 2026-07-03

PHP JSON解析深层嵌套对象属性访问失败的解决方法

使用 json_decode() 解析 API 返回的 JSON 数据时,经常遇到某个子属性无法正常获取,始终返回 NULL —— 这是许多 PHP 开发者都曾碰到过的棘手问题。通常并非数据丢失,而是对象嵌套层级比预期更深,导致访问路径不正确。 举例来说,你看到返回的 JSON 里有一个 appea

nnU-Net v2预处理卡死问题的成因分析与实用解决指南
编程语言 · 2026-07-03

nnU-Net v2预处理卡死问题的成因分析与实用解决指南

> 使用 nnUNetv2_plan_and_preprocess 处理大规模数据集(例如 704 例样本)时,程序常因多进程加载导致死锁而停滞。核心原因在于默认并发数过高引发资源竞争或 I O 阻塞,适当降低并发数即可稳定完成全量预处理。 你在使用 `nnunetv2_plan_and_prepr