【问题标题】:PHP and Creating DirectoriesPHP 和创建目录
【发布时间】:2015-06-22 02:27:47
【问题描述】:

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

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

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

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

当有人注册时,我运行此代码,后一个 if 语句未成功创建照片文件夹,因此我在编辑照片中的内容时检查这两个语句以检查文件夹是否存在.

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

【问题讨论】:

  • 可以,但您需要共享一些代码才能获得帮助
  • 我编辑了一些代码,看起来微不足道,所以最初没有考虑添加它。

标签: php html ftp directory server


【解决方案1】:

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

如上所述heremkdir()

成功时返回 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 - 检查日志或处理错误。

【讨论】:

    【解决方案2】:

    您可以像这样快速检查目录是否存在

       function check($images_dir) {
            if($handle = opendir($images_dir)) {
                // directory exists do your thing
    
                   closedir($handle);
                } else {
                 // create directory
               }                
            }
    

    其中$images_dir = 路径/目录/用户/$用户名

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-28
      • 2013-03-15
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多