PHP 和创建目录

PHP and Creating Directories

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

我有一个类似于 Facebook 的社交网站。当用户注册时,我的 PHP 脚本会创建一个以他的用户名命名的目录,并为该用户创建一个名为 "photos".

的自定义子目录

"photos" 目录不会在有人注册时创建。我假设这是因为实际的服务器首先没有创建实际的用户名目录。

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

当有人注册时,我 运行 这段代码,后面的 if 语句没有成功创建照片文件夹,所以我在编辑将作为照片放入照片的内容时,随时检查这两个语句检查文件夹是否存在。

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

你可以做一个快速目录'exists'这样检查

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

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

其中 $images_dir = path/directory/user/$用户名

目录已创建 sequentially/synchronously 因此,一旦第一个 mkdir() 的执行完成,文件夹应该存在并具有指定的权限集。

如前所述 here mkdir()

Returns TRUE on success or FALSE on failure.

Emits an E_WARNING level error if the directory already exists.

Emits an E_WARNING level error if the relevant permissions prevent creating the directory.

所以你可以去:

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() returns false - 检查日志或处理错误。