Laravel文件无法删除

时间:2018-03-13 12:46:52

标签: php laravel laravel-5.1

我正在尝试删除一个文件(如果我的导入命令失败,我创建的临时文件),它位于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版)。

5 个答案:

答案 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