我正在尝试删除一个文件(如果我的导入命令失败,我创建的临时文件),它位于storage/framework/cache/
下。
我尝试使用unlink
,但我总是收到错误Text file busy
(因为我搜索了,因为文件正在使用中显示此错误)。
我也试过File::delete($fullpath)
但也没有工作(没有错误,但文件没有删除)
问题是,如果我检查文件是否存在,它总是正确的(我也手动检查,文件就在那里)
我在这里做了什么:
$lockfilePath = $this->lockFilePath($uri);// if i display this line, I get /var/www/html/project/storage/framework/cache/filename.lock
if (!file_exists($lockfilePath)) {
throw new RuntimeException("$uri was not locked. Lockfile not found.");
}
\File::delete($lockfilePath); // I tried also unlink($lockfilePath);
我正在使用Homestead和Laravel 5.1(PHP 5.6版)。
答案 0 :(得分:0)
请尝试以下代码:
在课程开始前使用“文件”课程,例如use File;
$lockfilePath = $this->lockFilePath($uri);
if (File::exists($lockfilePath)) {
unlink($lockfilePath);
} else {
return "file not present";
}
注意:确保您的项目对要删除的文件具有读写权限,运行以下代码以提供读写权限。
chmod -R 777 /var/www
(-R使其递归)
答案 1 :(得分:0)
解决问题的最佳方法是使用unlink($filepath)
,但在此之前,您需要搜索文件的打开位置并使用fclose($handle)
答案 2 :(得分:0)
经过一番搜索,我发现了这个
假设您的文件位于此路径 storage / app / public / images
控制器
.... other logic code
if( Storage::disk('local')->exists('public/images/'.$file->file_system_path))
Storage::disk('local')->delete('public/images/'.$file->file_system_path);
这两个方法均返回布尔值。
重要提示!
php artisan storage:link
/config/filesystem.php
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
答案 3 :(得分:-1)
如何生成文件?
创建文件后是否关闭文件?
fclose($file)
您也可以尝试在关闭文件之后和取消链接之前强制进行垃圾收集:
gc_collect_cycles();
答案 4 :(得分:-2)
确保关闭文件但未使用它
同时尝试Storage::delete($filepath)
并确保您有权删除该文件,因为它位于 laravel storage