PHP和创建目录

时间:2015-04-15 22:16:32

标签: php html ftp directory server

快速提问。我将从一个例子开始。

我有一个类似Facebook的社交网站。当用户注册我的PHP脚本时,会创建一个以其用户名命名的目录,并为该用户创建一个名为“photos”的自定义子目录。

当有人注册时,永远不会创建“照片”目录。我认为这是因为实际的服务器首先没有创建实际的用户名目录。

我的解决方案是,无论何时我需要在我的网站上为用户执行照片功能,我应该检查该文件夹是否存在,如果没有创建它,哪个工作正常。这是标准程序吗?或者在运行检查时是否有更好的方法同时创建多个目录。

当有人注册时,我运行此代码,而后者if语句无法成功创建照片文件夹,所以我在编辑照片时会检查这两个语句,以检查文件夹是否存在

if (!file_exists("user/$username")) {
    mkdir("user/$username", 0755);
}
if (!file_exists("user/$username/photos"))
{
    mkdir("user/$username/photos", 0755);
}

2 个答案:

答案 0 :(得分:1)

目录是按顺序/同步创建的,因此一旦第一个mkdir()的执行完成,文件夹应该在那里并带有指示的权限集。

如上所述here mkdir()

  

成功时返回TRUE,失败时返回FALSE。

  

如果目录已存在,则发出E_WARNING级别错误。

     

如果相关权限阻止,则发出E_WARNING级别错误   创建目录。

所以你可以去:

if (!file_exists("user/$username")) {
    if(mkdir("user/$username", 0755))
    {
        //directory created
        if (!file_exists("user/$u/photos"))
        {
            mkdir("user/$username/photos", 0755);
        }
    }
    else
    {
        //directory not created
    }
}

如果mkdir()返回false - 请检查日志或处理错误。

答案 1 :(得分:0)

你可以做一个快速的目录'存在'像这样检查

   function check($images_dir) {
        if($handle = opendir($images_dir)) {
            // directory exists do your thing

               closedir($handle);
            } else {
             // create directory
           }                
        }

其中$images_dir = path / directory / user / $ username