1.mkdir($path,$mode,$recursive,$context)用法
1.第一个参数,路径,绝对路径和相对路径都可以,常常用相对路径,因为方便代码迁移.
2.第二个参数,由四位八进制数组成,第一位通常是0,跟特殊权限有关,可以不用太在意。需要注意的有两点:
第一,0777代表着最高权限,但实际创建的目录可能权限是775,这个文件权限屏蔽值有关,意思就是你的权限被削减了;
比如文件权限屏蔽值为0022,则创建目录最终权限为:0777-0022=0755;
你可以umask命令查看你的权限屏蔽值,了解更多Goole\百度。
第二,这个参数,最好不要以字符串方式填充,如‘0777’,因为这会被当成十进制数,然后新创建的目录就会出现一些奇怪的权限如:dr----x--t
3.第三个参数,就是要不要递归创建,默认是false。举个栗子吧:/照片/年/月
如果你要创建的目录是月,/照片/年 目录已经存在,$recursive=true 或者 $recursive=false都无所谓。
但是如果仅仅是 /照片 目录存在,你要创建的是 /照片/年/月 两级目录,注意,这时候如果不设置$recursive=true的话则会创建失败。
我之前上传图片的时候,保存的是相对路径。比如在前台:
<?php
namespace frontend\FileController;
class FileController extends Controller
{
public function actionIndex()
{
//if(mkdir('upload',0777,true))
if(mkdir('./upload',0777,true)) echo "创建成功";
else echo "创建失败";
exit(0);
}
}
?>
你会发现创建的目录是@frontend/web/upload,也就是说mkdir是把@frontend/web当成起点去创建文件夹的。
百度了一圈,没有找到特别满意的答案,大意就是这是默认设置把文件夹设置在@frontend/web下。
所以在视图文件里读取图片的时候我用的是:"upload/....../0000011111.png",用绝对地址读取不出图片。