我在laravel资源控制器中有一个非常基本的更新控制器功能。正常更新数据库中的标题,正文等(数据更新没有问题)。
问题在于图像。我的每个项目的图像目录都遵循一个类似于基于项目标题的命名约定的slug。我构建了更新功能,以便在标题更改时重命名目录和图像。我建造它的时候工作正常,但它突然停了下来。目录重命名,但文件不重命名。以下是控制器的相关摘录:
$count = 0;
$slug = Input::get('title');
$prefix = Str::slug($slug);
$oldPrefix = $project->imagesprefix;
$path = public_path().'/img/projects/';
$directory = $path . $prefix;
rename($path.$oldPrefix, $directory);
//dumped directory here and it's definitely set
$files = preg_grep('~\.(jpg)$~', scandir($directory));
//dumped $files here and the array is definitely set
foreach($files as $file){
rename($directory.'/'.$file, $directory.'/'.$prefix.'-'.$count.'.jpg');
++$count;
}
rename($directory.'/thumbnails/'.$oldprefix.'-thumb.jpg', $directory.'/thumbnails/'.prefix.'-thumb.jpg');
今天下午进行测试时,所有这些工作都很顺利。现在它更新数据库,重命名目录文件夹但无法重命名文件。我已经在循环之前转储了两个$ files和$目录,并且它们都被设置了。
答案 0 :(得分:0)
如果文件重命名失败,那么这通常与权限相关。