我在Laravel 5.1中有一个项目
我有产品图片。
我想在删除数据库中的产品时删除图片文件。
我的图片根
img/product
我有图片版本
public function getVersions()
{
return [
'large' => '/large',
'medium' => '/medium',
'small' => '/small',
'thumbnail' => '/thumbnail',
'root' => ''
];
}
我的产品图片根
$productImageRoot = public_path('img/product/'.$product_id);
我想了解以安全的方式删除所有图片的最佳做法是什么。
以下是我删除产品所有图片的代码。
/**
* @desc Ürün resimlerini ve resimlerin bulunduğu klasörleri siler.
* @param $product_id
* @return bool
* @throws \Exception
*/
public function deleteAllPictureFiles($product_id)
{
/**
* Resim türlerinin klasör yollarını çekiyoruz.
*/
$folderPaths = $this->getVersions();
$productImageRoot = public_path('img/product/'.$product_id);
$pictures = (new ProductPicture)->getAllPicturesOfProduct($product_id);
try
{
/**
* Resim yolu yazılabilir ise...
*/
foreach($pictures as $picture)
{
/**
* Tüm resimleri siliyoruz.
*/
foreach($folderPaths as $folderPath)
{
unlink($productImageRoot.$folderPath.'/'.$picture->picture);
}
}
/**
* Tüm klasörleri siliyoruz.
*/
foreach($folderPaths as $folderPath)
{
rmdir($productImageRoot.$folderPath);
}
return TRUE;
}
catch(\Exception $e)
{
/**
* Resim yolu yazılamaz ise hata dönderiyoruz.
*/
throw new \Exception(trans('product.is_not_writable'));
}
此代码导致路径不可写的错误。
现在这是我不确切知道的话题。我想学习文件和文件夹的chmod选项。在删除期间我该怎么办?删除文件最安全的方法是什么?我不想使用chmod 777.我知道它不安全。
答案 0 :(得分:0)
您可以使用Laravel删除更容易的目录。
File::deleteDirectory('img/product/'.$product_id);
你也是对的,不要使用777.755应该可行。如果755不起作用,但是777,则该组可能是错误的,您可以使用chown -R youruser:yourgroup yourlaravelfolder
进行修复。您的用户和群组最有可能是相同的。
请确保在尝试任何此操作之前进行备份。