繁体   English   中英

403在PHP mkdir上禁止

[英]403 Forbidden on php mkdir

使用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);

它应该使用从表单中给定的名称在目录“ uploads”中创建一个新目录,然后从文件夹中获取它的值“ folderName”,然后将表单中给定的文件上传到创建的新目录中。 而且它不能在文件夹名称上写希腊字符。 我必须更改使其工作吗?

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

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

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

dr----x--t

代替这个:

drwxrwxr-x

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM