【问题标题】:mkdir() won't create directoriesmkdir() 不会创建目录
【发布时间】:2013-09-23 02:48:22
【问题描述】:

我正在尝试创建目录以更好地组织文件。前端是一个表单,用户将在其中输入标题、内容和区域(下拉菜单)。当用户提交表单时,数据将被带到一个名为 save.php 的文件中并进行处理。以下是 save.php 文件中的代码。实际上,这样做的主要目标是生成一个 html 文件,然后将这些 html 文件按区域组织到文件夹中。我无法使 mkdir() 工作。始终打印出消息“已创建目录”,但没有创建实际文件夹。你认为我的代码有什么问题?我想要发生的是,当用户单击“提交”按钮时,将创建具有区域名称的文件夹。请帮忙?或者有什么建议或其他方法来解决这个问题?

$ad_title = $_POST['title'];
$ad_content = $_POST['content-ads']; 
$ad_region = $_POST['region']; 

if (!is_dir("uploads/"$ad_region)) {
        // dir doesn't exist, make it
        mkdir("uploads/".$ad_region);
        echo "directory created!";
    }
    else {
        echo "directory already exist!";
    }

编辑: 我不知道这是否重要,但我的 save.php 文件和 uploads 文件夹 上面的代码保存在本地目录中

localhost/system/modules/new

当我重新定位save.php文件和目录中的uploads文件夹

localhost/system/

现在一切似乎都在工作。但我希望它在 localhost/system/modules/new 目录中工作,以便更好地组织。对此有什么帮助吗?

【问题讨论】:

    标签: php mkdir


    【解决方案1】:

    尝试给它绝对路径..

    你在 is_dir 中也少了一个点; 应该是!is_dir("uploads/" . $ad_region

    【讨论】:

    • 绝对路径是什么意思?是的,点实际上在我的代码中,我只是忘了把它放在这里。
    【解决方案2】:

    您在检查目录是否存在时缺少连接句点

    if (!is_dir("uploads/"$ad_region)) {if (!is_dir("uploads/" . $ad_region)) {

    加上对mkdir(path, permission, recursive) 的权限,可以避免以后的麻烦;

    【讨论】:

    • 我已经在我的代码中包含了句号和权限,我只是忘了把它放在这里。还是不行。
    【解决方案3】:

    通常,当没有在 Web 应用程序中创建目录时,您正在处理权限问题。

    确保运行 Web 服务的用户(如果是 Linux,通常是“apache”或“www-data”)被允许在您尝试创建目录的位置创建目录。

    【讨论】:

    • 是的,我已经检查过了,并且允许创建目录。但是,它仍然不会创建。
    • 如果您将文件 (save.php) 和目录 (uploads) 移动到另一个目录并且它“突然”起作用,您要么处理权限问题,要么处理mk_dir 函数不正确。因此,'user1169875' 很可能通过“绝对路径”问题为您指明了正确的方向。如果不是这种情况,您可能需要确保不需要“递归”参数。要检查是否允许您在目录中写入,您可以执行以下命令 'sudo -u touch testFile'.