我很确定我根本没有得到许可。无论如何,谢谢你的答案!我将切换到自托管,所以我知道我有权限!
(我会删除它,但它说我不能b / c有答案)
答案 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)
这是这种情况的算法。
创建新文件夹。
答案 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')