我有一个laravel资源控制器中的更新控制器功能,它非常基本。正常更新数据库中的标题,正文等(数据更新没有问题)。文件重命名不再起作用
问题出在图像上。我的每个项目的图像目录都遵循一个基于项目标题的命名约定。我构建了更新函数,以便在标题更改后重命名目录和图像。我一建立它就能正常工作,但它突然停止。该目录重命名,但文件没有。这里是控制器的相关代码片段:
$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和$ directory,并且它们都被设置了。
你检查过文件权限吗? 'ls -l' – Alupotha
就是这样。我可以坐在那面一年,甚至没有想到它。每次重命名目录后,你是否必须重置权限?我曾创建了一个0777,我认为它将保持不变。 –