0

使用 mkdir 函数执行 php 脚本时出现 403 Forbidden 页面。

这是 mkdir 代码:

mkdir('uploads/'.$upload_folder.'/', 777)

我试过775、666权限,但是什么都没有。在我想存储图像、mp3 和视频的目录中。谁能帮我?

更新 1

这是整个脚本:

$folderStr = $_REQUEST['folderName'];

//create SEO firndly directory name
$upload_folder =    preg_replace("'\s+'", '-', $folderStr);

// The place the files will be uploaded to (currently a 'files' directory).
$upload_path = 'uploads/'.$upload_folder.'/';

//Check whether folder exists or create with the name supplied
if(is_dir($upload_folder))
echo 'directory exists';
else
mkdir('uploads/'.$upload_folder.'/', 777);

它应该在“上传”文件夹中创建一个新目录,其名称从我从那里获得的带有值“文件夹名称”的表单中给出,并将表单中给出的文件上传到创建的新目录中。它也不能在文件夹名称上写希腊字符。我必须改变什么才能让它工作?

4

1 回答 1

0

您需要在所需模式前面加一个零,例如

mkdir('uploads/'.$upload_folder.'/', 0777)

如果您使用“777”,您将获得如下奇怪的权限:

dr----x--t

而不是这个:

drwxrwxr-x

原因(来自PHP chmod文档): “请注意,模式不会自动假定为八进制值,因此为了确保预期的操作,您需要在模式前加上零 (0)。”

我可以确认这仍然发生在 PHP 7.0.3 中,尽管对整数处理进行了相关更改:“以前,包含无效数字的八进制文字被静默截断(0128 被视为 012)。现在,无效的八进制文字将导致解析错误。”

然而 0777 无论如何都是默认值,它提供了最广泛的访问权限,因此您不需要指定它,除非您想设置任何以后的参数(例如,通常将第三个选项设置为true以启用递归目录的创建很有用,而不是在父级不存在时创建错误。)

于 2016-02-17T14:51:08.110 回答