You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP计算目录空间转MB后无法输出结果,求问题排查

嘿,我帮你找出代码里的几个新手坑啦!

先看你代码里的关键错误:

  1. 赋值运算符搞反了
    你写的$totalSpace / 1048576 == $newValue;是比较操作(双等号==是用来判断两边是否相等的),而不是把计算结果存到$newValue里。正确的赋值得用单等号=:

    $newValue = $totalSpace / 1048576;
    
  2. 变量可能未定义
    你的$newValue只有在$totalSpace > 1048576的时候才会被赋值,但如果目录空间小于1MB,$newValue就根本没被创建,这时候执行echo $newValue就会直接报错,触发后面的die。

  3. echo ... or die的逻辑不对
    echo本身几乎不会失败,这里的die其实是因为$newValue未定义导致的报错,不是echo出问题了。


修复后的完整代码

<?php
$totalSpace = disk_total_space("./") or die("Error DFS");
echo "原始字节数:" . $totalSpace . "<br>";

// 不管空间大小都先转换,避免变量未定义
$newValue = $totalSpace / 1048576;
// 可以给结果保留两位小数,看起来更友好
$newValue = round($newValue, 2);

echo "转换为MB:" . $newValue . " MB";
?>

额外小提示

如果想区分小于1MB的情况,也可以加个判断,但一定要保证$newValue始终有值:

if ($totalSpace > 1048576) {
    $newValue = round($totalSpace / 1048576, 2) . " MB";
} else {
    $newValue = $totalSpace . " 字节";
}
echo $newValue;

另外,1048576是二进制的1MB(10241024,也就是常说的MiB),如果是按十进制的MB(10001000)来算,就换成1000000就行,看你需求啦。

内容的提问来源于stack exchange,提问作者anon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:36:45