PHP - 在文件夹中创建文件夹

时间:2012-07-25 19:45:53

标签: php mkdir

我很确定我根本没有得到许可。无论如何,谢谢你的答案!我将切换到自托管,所以我知道我有权限!

(我会删除它,但它说我不能b / c有答案)

5 个答案:

答案 0 :(得分:1)

首先,$username的实际价值是多少?你确认它不是空的吗?

处理这样的文件系统可能会导致几个不同的问题。我喜欢进行大量的额外检查,所以如果出现问题,我会更容易知道原因。我也喜欢在可能的情况下处理绝对目录名称,因此我不会遇到相对路径的问题。

$filesDir = '/path/to/files';
if (!file_exists($filesDir) || !is_dir($filesDir)) {
    throw new Exception("Files directory $filesDir does not exist or is not a directory");

} else if (!is_writable($filesDir)) {
    throw new Exception("Files directory $filesDir is not writable");
}

if (empty($username)) {
    throw new Exception("Username is empty!");
}

$userDir = $filesDir . '/' . $username;

if (file_exists($userDir)) {
    // $userDir should be all ready to go; nothing to do.
    // You could put in checks here to make sure it's 
    // really a directory and it's writable, though.

} else if (!mkdir($userDir)) {
    throw new Exception("Creating user dir $userDir failed for unknown reasons.");
}

mkdir()有一些非常有用的选项可用于设置权限并将文件夹设置为多个级别。如果您还没有,请查看PHP's mkdir page

为了安全起见,请确保您的例外不会泄露最终用户的系统路径。当您的代码进入公共服务器时,您可能希望从错误消息中删除文件夹路径。或配置一些内容,以便记录您的异常,但不会在网页上显示。

答案 1 :(得分:0)

这是这种情况的算法。

  1. 检查文件夹是否存在。
  2. 如果文件夹存在,则将文件夹命名为其他内容或向其添加随机数。
  3. 创建新文件夹。

    http://pastebin.com/VefbrzRS

答案 2 :(得分:0)

试试这个。

mkdir ("./files/$username");

答案 3 :(得分:0)

那些文件夹不一样吗? files / Alex和files / Alex /是一样的。你的意思是文件/ $ username和files / $ username / files?你正在做同样的目录两次,所以这是错误

答案 4 :(得分:0)

如果您使用的是Linux或MacO,还有另一个方案,即调用shell的mkdir函数。

看起来像是:

system('mkdir -p yourdir/files/$username')