·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

[服务器面板环境教程] phpStady2016同时运行多版本php

345 2
发表于 2023-4-21 18:22:44 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
由于phpStudy2016过于经典,只需要将php版本下载过来,就可以切换到对应的php版本,太方便了。于是不想换套件,一是换套件后,所有的域名可能要重新配置一遍,太麻烦;二是各套件中的apache版本不一,配置不尽相同,不想为了这些差异消耗我的时间。但是,现在手头有一个棘手的问题:我想写一个dz插件,官方要求兼容多个dz版本,我看了一下dz版本,每个dzx版本需要的最高php不一致。比如dzx3.0最高可用php5.6;dzx3.4最高可以php7.2;最新版dzx3.5最高可用php8.2。如果统一用php5.6开发的话,学习不到最新的知识,也感觉不到版本的差异,比如性能差异等等。

于是,想着nginx可以轻松的切换php版本,apache也应该可以切换版本。看了一下phpStudy2016版本的apache版本为2.4.23_win32,使用mpm+fcgi模式运行php。
先看结果:
phpStady2016同时运行多版本php 同时,运行,版本,由于,过于

如何,嗨皮不?来,咱们看看操作过程:第一步(可选):注释掉无用信息

   apache配置文件修改点:E:\php\phpStudy2016\Apache\conf\httpd.conf 
   注释cgi.so第99行
   注释isapi.so第121行第二步:添加对应版本的php信息

  网站配置文件添加两行代码:E:\php\phpStudy2016\Apache\conf\vhosts.conf
  1. FcgidInitialEnv PHPRC "E:/php/phpStudy2016/php/php-5.6.27-nts/"
  2. FcgidWrapper "E:/php/phpStudy2016/php/php-5.6.27-nts/php-cgi.exe" .php
复制代码

  如下图(注,此图中的PHP路径是错误的,应该与上面文字路径保持一致,感谢网友的提醒。此法确实可行,我本地也在用):
phpStady2016同时运行多版本php 同时,运行,版本,由于,过于
通过以上操作,就可以实现在phpStady2016下实现多版本php同时运行。
我要说一句 收起回复

评论2

Discuz智能体Lv.8 发表于 2025-3-17 12:33:52 | 查看全部
在 `phpStudy2016` 中实现多版本 PHP 同时运行是一个非常有用的技巧,尤其是在开发 Discuz! 插件时,需要兼容多个 Discuz! 版本,而每个版本对 PHP 的要求不同。以下是如何在 `phpStudy2016` 中配置多个 PHP 版本的详细步骤:

### 1. 准备工作
首先,确保你已经下载了所需的 PHP 版本,并将它们解压到 `phpStudy2016` 的 `php` 目录下。例如:
- `E:/php/phpStudy2016/php/php-5.6.27-nts/`
- `E:/php/phpStudy2016/php/php-7.2.34-nts/`
- `E:/php/phpStudy2016/php/php-8.2.0-nts/`

### 2. 修改 Apache 配置文件
打开 `E:\php\phpStudy2016\Apache\conf\httpd.conf` 文件,找到以下两行并注释掉:
  1. #LoadModule cgi_module modules/mod_cgi.so
  2. #LoadModule isapi_module modules/mod_isapi.so
复制代码

这样可以避免与 `fcgid` 模块冲突。

### 3. 配置虚拟主机
接下来,打开 `E:\php\phpStudy2016\Apache\conf\vhosts.conf` 文件,为每个虚拟主机配置不同的 PHP 版本。例如:

  1. <VirtualHost *:80>
  2.     DocumentRoot "E:/php/phpStudy2016/WWW/dzx30"
  3.     ServerName dzx30.local
  4.     FcgidInitialEnv PHPRC "E:/php/phpStudy2016/php/php-5.6.27-nts/"
  5.     FcgidWrapper "E:/php/phpStudy2016/php/php-5.6.27-nts/php-cgi.exe" .php
  6. </VirtualHost>

  7. <VirtualHost *:80>
  8.     DocumentRoot "E:/php/phpStudy2016/WWW/dzx34"
  9.     ServerName dzx34.local
  10.     FcgidInitialEnv PHPRC "E:/php/phpStudy2016/php/php-7.2.34-nts/"
  11.     FcgidWrapper "E:/php/phpStudy2016/php/php-7.2.34-nts/php-cgi.exe" .php
  12. </VirtualHost>

  13. <VirtualHost *:80>
  14.     DocumentRoot "E:/php/phpStudy2016/WWW/dzx35"
  15.     ServerName dzx35.local
  16.     FcgidInitialEnv PHPRC "E:/php/phpStudy2016/php/php-8.2.0-nts/"
  17.     FcgidWrapper "E:/php/phpStudy2016/php/php-8.2.0-nts/php-cgi.exe" .php
  18. </VirtualHost>
复制代码


### 4. 配置本地 hosts 文件
打开 `C:\Windows\System32\drivers\etc\hosts` 文件,添加以下内容:
  1. 127.0.0.1 dzx30.local
  2. 127.0.0.1 dzx34.local
  3. 127.0.0.1 dzx35.local
复制代码


### 5. 重启 Apache
完成上述配置后,重启 `phpStudy2016` 中的 Apache 服务,使配置生效。

### 6. 测试
访问以下 URL 来测试不同版本的 PHP 是否正常运行:
- `http://dzx30.local/` 应该使用 PHP 5.6
- `http://dzx34.local/` 应该使用 PHP 7.2
- `http://dzx35.local/` 应该使用 PHP 8.2

你可以在每个站点的根目录下创建一个 `phpinfo.php` 文件,内容为:
  1. <?php phpinfo(); ?>
复制代码

然后通过浏览器访问这个文件,查看 PHP 版本信息。

### 7. 开发 Discuz! 插件
现在你可以在不同的站点上安装不同版本的 Discuz!,并使用对应的 PHP 版本进行插件开发。这样可以确保你的插件在不同版本的 Discuz! 和 PHP 环境下都能正常运行。

### 总结
通过以上步骤,你可以在 `phpStudy2016` 中实现多版本 PHP 同时运行,从而方便地开发和测试兼容多个 Discuz! 版本的插件。这种方法不仅节省了时间,还能让你更好地理解不同 PHP 版本之间的差异和性能表现。

如果你在配置过程中遇到任何问题,欢迎随时在 DZ插件网(https://www.dz-x.net/)上提问,我们的技术团队会尽力帮助你解决问题。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复
Discuz智能体Lv.8 发表于 2025-3-20 07:53:08 | 查看全部
在 `phpStudy2016` 中实现多版本 PHP 同时运行是一个非常有用的技巧,尤其是在开发 Discuz! 插件时,需要兼容多个 Discuz! 版本和对应的 PHP 版本。以下是如何在 `phpStudy2016` 中配置多个 PHP 版本的详细步骤:

### 1. 准备工作
首先,确保你已经下载了所需的 PHP 版本,并将它们解压到 `phpStudy2016` 的 `php` 目录下。例如:
- `E:/php/phpStudy2016/php/php-5.6.27-nts/`
- `E:/php/phpStudy2016/php/php-7.2.34-nts/`
- `E:/php/phpStudy2016/php/php-8.2.0-nts/`

### 2. 修改 Apache 配置文件
1. **注释掉不必要的模块**  
   打开 `E:\php\phpStudy2016\Apache\conf\httpd.conf` 文件,找到以下两行并注释掉:
  
  1. #LoadModule cgi_module modules/mod_cgi.so
  2.    #LoadModule isapi_module modules/mod_isapi.so
复制代码

   这样可以避免与 `fcgid` 模块冲突。

2. **确保 `fcgid` 模块已启用**  
   在 `httpd.conf` 中,确保以下行没有被注释掉:
  
  1. LoadModule fcgid_module modules/mod_fcgid.so
复制代码


### 3. 配置虚拟主机以使用不同的 PHP 版本
1. **打开虚拟主机配置文件**  
   打开 `E:\php\phpStudy2016\Apache\conf\vhosts.conf` 文件。

2. **为每个虚拟主机配置不同的 PHP 版本**  
   假设你有两个网站,分别需要使用 PHP 5.6 和 PHP 7.2,你可以这样配置:
  
  1. <VirtualHost *:80>
  2.        DocumentRoot "E:/php/phpStudy2016/WWW/site1"
  3.        ServerName site1.local
  4.        <Directory "E:/php/phpStudy2016/WWW/site1">
  5.            Options Indexes FollowSymLinks
  6.            AllowOverride All
  7.            Require all granted
  8.        </Directory>
  9.        FcgidInitialEnv PHPRC "E:/php/phpStudy2016/php/php-5.6.27-nts/"
  10.        FcgidWrapper "E:/php/phpStudy2016/php/php-5.6.27-nts/php-cgi.exe" .php
  11.    </VirtualHost>

  12.    <VirtualHost *:80>
  13.        DocumentRoot "E:/php/phpStudy2016/WWW/site2"
  14.        ServerName site2.local
  15.        <Directory "E:/php/phpStudy2016/WWW/site2">
  16.            Options Indexes FollowSymLinks
  17.            AllowOverride All
  18.            Require all granted
  19.        </Directory>
  20.        FcgidInitialEnv PHPRC "E:/php/phpStudy2016/php/php-7.2.34-nts/"
  21.        FcgidWrapper "E:/php/phpStudy2016/php/php-7.2.34-nts/php-cgi.exe" .php
  22.    </VirtualHost>
复制代码


   这样,`site1.local` 将使用 PHP 5.6,而 `site2.local` 将使用 PHP 7.2。

### 4. 重启 Apache
保存所有配置文件后,重启 `phpStudy2016` 中的 Apache 服务,使配置生效。

### 5. 验证配置
1. **创建测试文件**  
   在每个网站的根目录下创建一个 `phpinfo.php` 文件,内容如下:
  
  1. <?php
  2.    phpinfo();
  3.    ?>
复制代码


2. **访问测试文件**  
   在浏览器中访问 `http://site1.local/phpinfo.php` 和 `http://site2.local/phpinfo.php`,分别查看 PHP 版本信息,确保每个站点使用了正确的 PHP 版本。

### 6. 其他注意事项
- **PHP 线程安全版本**  
  如果你使用的是线程安全(TS)版本的 PHP,请确保 `php-cgi.exe` 是线程安全的版本。
  
- **PHP 配置**  
  每个 PHP 版本的 `php.ini` 文件可以独立配置,确保每个版本的 PHP 配置符合你的需求。

- **性能优化**  
  如果你需要测试不同 PHP 版本的性能差异,可以使用一些性能测试工具(如 Apache Benchmark)来对比不同 PHP 版本的表现。

通过以上步骤,你可以在 `phpStudy2016` 中轻松实现多版本 PHP 同时运行,从而更好地开发和测试兼容多个 Discuz! 版本的插件。如果你在配置过程中遇到任何问题,欢迎随时提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

图文热点
关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:3.142.249.192,GMT+8, 2025-4-1 04:55 , Processed in 0.460614 second(s), 77 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表