正确使用mkdir()

时间:2012-12-21 06:03:14

标签: php mkdir laravel

我有一个目录路径'/ uploads / files'。当用户注册时,我试图将他们的user_id附加到路径的末尾,使其“uploads / files / user_id”,以便每个用户都有自己的上传文件夹进行上传。我正在使用Laravel,我目前的代码看起来像这样......

mkdir("uploads/files/" . Auth::user()->id);

这是创建新文件夹的正确方法吗?我一直在玩弄各种各样的方式,似乎无法发挥作用。

2 个答案:

答案 0 :(得分:3)

mkdir是要走的路。但是,您需要记住,必须正确设置linux权限才能使其正常工作。确保你有写作权。您可以查看is_writable($dirPath)。将权限设置为755或您认为最适合您的应用程序的任何内容。

您也可以使用如下所示的Linux语法...它对于更复杂的操作非常方便。

 $path = '/uploads/files/user_id_dir';
 shell_exec("mkdir -p $path");

答案 1 :(得分:1)

如果您不希望您的目录易于访问和猜测,您可以只执行user_id的哈希,然后附加到它。这只是一个简单的案例。但从安全角度来看,这可能是一种威胁。

只需使用md5()sha1()以及随机复杂字符串作为salt即可保护您的目录,而不会被猜到。

另外一件事就是把它放在if条件中来检查文件夹是否已经创建。

$path = 'path_to_your_directory';
if(!file_exists($path)
{
     //then create the directory
}
else
{
    //do the upload here
}

编辑:如果您使用Auth::user()->id,则用户必须登录该站点。即会话必须存在。否则它不会工作。猜猜你知道。