0

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

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

4

5 回答 5

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 的 mkdir 页面。

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

于 2012-07-25T20:05:15.373 回答
0

这是这种场景的算法。

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

    http://pastebin.com/VefbrzRS

于 2012-07-25T19:58:32.103 回答
0

尝试这个。

mkdir ("./files/$username");
于 2012-07-25T20:00:08.013 回答
0

不是同一个文件夹吗?files/Alex 和 files/Alex/ 是一样的。你的意思是 files/$username 和 files/$username/files 吗?你做了两次相同的目录所以这是错误

于 2012-07-25T20:00:23.317 回答
0

如果您使用的是 Linux 或 MacO,还有另一种情况,即调用 shell 的 mkdir 函数。

它看起来像:

system('mkdir -p yourdir/files/$username')
于 2012-07-25T20:04:54.910 回答