【脚本】提取phpstudy网站对应的PHP版本

需求背景

项目本地开发是时一直用的是 PHPStudy,不能像宝塔一样能直接查看每个项目的 PHP 版本。经过研究用 PHP 写了一个脚本,用来读取网站对应的PHP版本。

image-20251025145658848

image-20251025145614743

原理分析

  • PHP 版本与 FastCGI 端口的映射关系保存在 D:\phpstudy\COM\xp.ini

  • 项目的配置文件保存在 D:\phpstudy\Extensions\Nginx1.15.11\conf\vhosts

  • 项目的配置文件中记录有使用的 fastcgi 端口,结合映射关系即可获取项目所用 PHP 版本

关键文件

D:\phpstudy\COM\xp.ini 文件内容

image-20251025151621965

D:\phpstudy\Extensions\Nginx1.15.11\conf\vhosts 中某个项目的配置文件

image-20251025151551045

代码脚本

创建文件 phpstduy.php,保存以下代码:

<?php
$xpIni   = 'D:/phpstudy/COM/xp.ini';
$vhostDir= 'D:/phpstudy/Extensions/Nginx1.15.11/conf/vhosts';

/* 1. 端口=>版本映射 */
$portVer = [];
foreach (file($xpIni, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) as $l) {
    if (preg_match('/xp\.cn_cgi(\d{4})=.*php([\d\.]+)nts/', $l, $m)) {
        $portVer[$m[1]] = $m[2];
    }
}
/* 2. 遍历 conf */
foreach (glob("$vhostDir/*.conf") as $file) {
    $content = file_get_contents($file);
    if (preg_match('/fastcgi_pass\s+127\.0\.0\.1:(\d{4})/', $content, $m) && preg_match('/^\s*server_name\s+([^;]+);/m', $content, $m2)) {
        $port = $m[1];
        $ver  = $portVer[$port] ?? '未知';
        $serverName = trim($m2[1] ?? '');
        echo $serverName . "\t" . $ver . "\n";
    }
}
?>

运行结果

命令行中执行:php phpstduy.php ,即可查看每个项目对应的PHP版本

image-20251025153132051

优化建议

  • 把运行结果存入数组,结合html页面,部署为站点,美化查看效果。
  • vhosts 目录下的配置文件里可能出现多个 server_name 注意特殊处理
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值