我面临的问题比这个复杂,数据库
显示是这样的/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]);
}
是否 plugin/admin/public/upload/files/20240317/**** 这样的目录被Route禁止了。就不能读取了
绝对路径和相对路径的问题,file not found所以$line_array未定义
是否 plugin/admin/public/upload/files/20240317/**** 这样的目录被Route禁止了。就不能读取了
fgcms 图片上传,基本没有处理,就能够显示,上传txt,处理就不行
app/admin/upload/files/20240317/65f6644586a4.txt
是网络路径,只能通过url访问,不能通过磁盘访问。磁盘路径为
base_path('plugin/admin/upload/files/20240317/65f6644586a4.txt');
Route只影响url访问,不影响磁盘访问。
webman里不要用相对路径,用绝对路径。
谢谢