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

PHP中file_exists()使用数据库变量拼接路径失效求助

问题排查与解决方案

核心错误:路径变量定义位置错误

你当前的代码中,$file_pointerTOB 是在 while 循环外面定义的,此时$row还未从数据库结果集中获取数据,$row['ref']的值无效(可能为空或未定义),导致拼接出的路径根本不是目标文件的正确路径。

修改后的代码片段

把路径变量的定义移到while循环内部,每次循环都根据当前行的ref值重新拼接路径:

if($result = mysqli_query($link, $sql)){
    if(mysqli_num_rows($result) > 0){
        echo "<table class='table table-bordered table-striped'>";
        echo "<thead>";
            echo "<tr>";
            echo "<th>Client ID</th>";
            echo "<th>Client Name</th>";
            echo "<th>Terms of Business</th>";  
            echo "</tr>";
        echo "</thead>";
        echo "<tbody>";

        while($row = mysqli_fetch_array($result)){
            // 将路径定义移至循环内,每次使用当前行的ref值
            $file_pointerTOB = '../uploads/clientupload/TOB-' . $row['ref'] . '.pdf'; 
            echo "<tr>";
            echo "<td>" .  $row['ref'] . "</td>";
            echo "<td>" . $row['name'] .   "</td>";
            echo"<td>";
                    
            if (file_exists($file_pointerTOB))  
            { 
                echo '<img src="ticksm.jpg"/>';
            } 
            else 
            { 
                echo '<img src="crosssm.jpg"/>';
            } 
                    
            echo "</td>";
            echo "</tr>";
        }
        echo "</tbody>";
        echo "</table>";
    }
}

其他可能的排查方向

如果调整位置后仍有问题,检查以下几点:

  • 清理$row['ref']的多余字符:数据库中的ref可能包含空格、换行或制表符,用trim()处理:
    $file_pointerTOB = '../uploads/clientupload/TOB-' . trim($row['ref']) . '.pdf';
    
  • 大小写匹配问题:Linux/Unix系统下文件名和路径区分大小写,确保数据库ref的值与文件名大小写完全一致(比如AR001和ar001会被视为不同文件)。
  • 文件权限:确保PHP运行用户(如www-data)拥有目标文件的读取权限,同时文件所在目录要有执行权限(允许PHP遍历目录)。
  • 改用绝对路径:相对路径可能受PHP工作目录影响,改用绝对路径避免歧义:
    $file_pointerTOB = $_SERVER['DOCUMENT_ROOT'] . '/uploads/clientupload/TOB-' . trim($row['ref']) . '.pdf';
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 14:55:31