在我的 Laravel 项目中,我有一个用于上传和删除文件的表单。我在配置/文件系统中创建一个磁盘:
'upload' => [
'driver' => 'local',
'root' => public_path(),
'url' => env('APP_URL'),
'visibility' => 'public',
],
这里上传文件工作正常,但是当我想从公共文件夹中删除它们时,文件不存在:
$img_path = public_path( $this->directory . '/' . $this->getFliename());
$img_path = str_replace( "/",'\\', $img_path); // checked with it & without it
// $img_path= "C:\Users\Me\Desktop\final\public\upload\users\1\5bc722d2b7c05.jpg"
dump(File::exists($img_path)); // it always return false
// and then which one
File::delete($img_path);
Storage::disk('upload')->delete($img_path);
为什么这个文件不存在,哪个删除文件是正确的?
当我使用路线时,它变得更加复杂???
// testing ...
Route::get('/test', function (){
File::delete('C:\Users\Me\Desktop\final\public\upload\users\1\5bc722d2b7c05.jpg');
});
该文件可能存在于文件系统中,但运行 PHP 的 Web 用户可能没有读取、更新或删除该文件的权限。
在 linux 或 mac 系统上,您通常希望将文件的所有权授予 Web 用户,并将文件权限设置为 664,将文件夹权限设置为 775。
644 和 755 也应该可以工作,并为您提供稍微严格的权限。
如果上述方法失败,请尝试 777 进行调试,但不要在生产中这样做,因为这是一个严重的安全问题。
我不确定它是如何在 Windows 上完成的,但希望这能让你走上正确的道路。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句