weman-admin 目录问题, 请大咖帮忙,一直没有解决!!

siwei

我面临的问题比这个复杂,数据库截图

显示是这样的/app/admin/upload/files/20240317/65f6644586a4.txt,实际上目录是\webman\plugin\admin\public\upload\files\20240317.txt。
截图

    public function ce(): Response
{
    $rootPath = \Webman\Config::get('root_path');
    // 构造数据库文件的绝对路径
    $files = 'app/admin/upload/files/20240317/65f6644586a4.txt';
    $filePath = $rootPath . $files;
    // 尝试读取文件内容,忽略换行符并将空行跳过

    // $lines_array = file($filePath, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
    // $lines_array = is_file($filePath) ? file($filePath, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) : [];
    return json(['code' => 0, 'msg' => 'ok','data' =>$filePath]);
    // return json(['code' => 0, 'msg' => 'ok','data' =>$lines_array]);
}

可以正确输出:{"code":0,"msg":"ok","data":"app\/admin\/upload\/files\/20240317\/65f6644586a4.txt"}
但是,通过file() 代码如下:

public function ce(): Response
{
    $rootPath = \Webman\Config::get('root_path');
    // 构造数据库文件的绝对路径
    $files = 'app/admin/upload/files/20240317/65f6644586a4.txt';
    $filePath = $rootPath . $files;
    // 尝试读取文件内容,忽略换行符并将空行跳过

    $lines_array = file($filePath, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
    // $lines_array = is_file($filePath) ? file($filePath, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) : [];
    // return json(['code' => 0, 'msg' => 'ok','data' =>$filePath]);
    return json(['code' => 0, 'msg' => 'ok','data' =>$lines_array]);
}

却不能正确输出,错误为:ErrorException: file(app/admin/upload/files/20240317/65f6644586a4.txt): Failed to open stream: No such file or directory in
请问各位大咖,为什么?

是否 plugin/admin/public/upload/files/20240317/**** 这样的目录被Route禁止了。就不能读取了

214 2 0
2个回答

nitron

绝对路径和相对路径的问题,file not found所以$line_array未定义

  • siwei 2024-03-23

    是否 plugin/admin/public/upload/files/20240317/**** 这样的目录被Route禁止了。就不能读取了

  • siwei 2024-03-23

    fgcms 图片上传,基本没有处理,就能够显示,上传txt,处理就不行

walkor

app/admin/upload/files/20240317/65f6644586a4.txt 是网络路径,只能通过url访问,不能通过磁盘访问。
磁盘路径为 base_path('plugin/admin/upload/files/20240317/65f6644586a4.txt');

Route只影响url访问,不影响磁盘访问。

webman里不要用相对路径,用绝对路径。

🔝