我很确定我根本没有权限。无论如何,谢谢您的回答!我将切换到自托管,所以我知道我有权限!
(我会删除它,但它说我不能 b/c 有答案)
首先,实际值是$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 页面。
为了安全起见,请确保您的异常不会向最终用户泄露系统路径。当您的代码进入公共服务器时,您可能希望从错误消息中删除文件夹路径。或者配置一些东西,以便记录您的异常但不显示在网页上。
这是这种场景的算法。
创建新文件夹。
尝试这个。
mkdir ("./files/$username");
不是同一个文件夹吗?files/Alex 和 files/Alex/ 是一样的。你的意思是 files/$username 和 files/$username/files 吗?你做了两次相同的目录所以这是错误
如果您使用的是 Linux 或 MacO,还有另一种情况,即调用 shell 的 mkdir 函数。
它看起来像:
system('mkdir -p yourdir/files/$username')