很多站长朋友们都不太清楚phpmkdir-1,今天小编就来给大家整理phpmkdir-1,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 php中mkdir()函数的权限问题分析 2、 Php新手,请教使用mkdir创建文件夹为什么不能马上使用呢 3、 php mkdir创建文件错误 4、 为什么PHP没有mkdir等方法的执行权限 5、 php的mkdir怎么才可以在windows下创建中文目录 - PHP进阶讨论 php中mkdir()函数的权限问题分析问题描述:
使用以下php代码创建了一个目录,期望目录的权限是0777,实际结果是0755
mkdir('./aa/',0777);
分析与测试结果:
1.mkdir()函数指定的目录权限只能小于等于系统umask设定的默认权限。
如linux默认的umask一般0022,
即创建目录的默认权限是0755,
所以这时php
mkdir('./aa/',0777)
得到目录的权限是0755.
xw@xw-X201:~/Desktop/dd/aa$
umask
0022
xw@xw-X201:~/Desktop/dd/aa$
php
-r
"mkdir('./xw/',0777);"
xw@xw-X201:~/Desktop/dd/aa$
php
-r
"mkdir('./xw1/',0755);"
xw@xw-X201:~/Desktop/dd/aa$
php
-r
"mkdir('./xw2/',0747);"
xw@xw-X201:~/Desktop/dd/aa$
ll
总用量
20
drwxrwxrwx
5
xw
xw
4096
2012-06-01
11:58
./
drwxr-xr-x
6
xw
xw
4096
2012-06-01
11:26
drwxr-xr-x
2
xw
xw
4096
2012-06-01
11:57
xw/
drwxr-xr-x
2
xw
xw
4096
2012-06-01
11:58
xw1/
drwxr--r-x
2
xw
xw
4096
2012-06-01
11:58
xw2/
把系统默认权限改为777,mkdir()可以指定更大权限了
xw@xw-X201:~/Desktop/dd/aa$
umask
000
xw@xw-X201:~/Desktop/dd/aa$
php
-r
"mkdir('./xw2/',0777);"
xw@xw-X201:~/Desktop/dd/aa$
ll
总用量
12
drwxrwxrwx
3
xw
xw
4096
2012-06-01
12:08
./
drwxr-xr-x
6
xw
xw
4096
2012-06-01
11:26
drwxrwxrwx
2
xw
xw
4096
2012-06-01
12:08
xw2/
2.chmod()函数不受系统umask影响,可以设置比系统默认权限大的权限。
xw@xw-X201:~/Desktop/dd/aa$
umask
0022
xw@xw-X201:~/Desktop/dd/aa$
php
-r
"mkdir('./xw1/',0777);"
xw@xw-X201:~/Desktop/dd/aa$
php
-r
"mkdir('./xw2/');"
xw@xw-X201:~/Desktop/dd/aa$
php
-r
"mkdir('./xw3/');chmod('./xw3/',0777);"
xw@xw-X201:~/Desktop/dd/aa$
ll
总用量
20
drwxrwxrwx
5
xw
xw
4096
2012-06-01
12:12
./
drwxr-xr-x
6
xw
xw
4096
2012-06-01
11:26
drwxr-xr-x
2
xw
xw
4096
2012-06-01
12:11
xw1/
drwxr-xr-x
2
xw
xw
4096
2012-06-01
12:11
xw2/
drwxrwxrwx
2
xw
xw
4096
2012-06-01
12:12
xw3/
3.系统的mkdir命令可以设置大于默认值的权限。
xw@xw-X201:~/Desktop/dd/aa$
umask
0022
xw@xw-X201:~/Desktop/dd/aa$
mkdir
-m0777
xw
xw@xw-X201:~/Desktop/dd/aa$
ll
总用量
12
drwxrwxrwx
3
xw
xw
4096
2012-06-01
12:18
./
drwxr-xr-x
6
xw
xw
4096
2012-06-01
11:26
drwxrwxrwx
2
xw
xw
4096
2012-06-01
12:18
xw/
总结:
php若要创建一个有读写权限的目录,最好使用以下代码,不要直接使用mkdir函数指定权限,以避免系统umask的影响
mkdir('./xw/');
chmod('./xw/',0777);
Php新手,请教使用mkdir创建文件夹为什么不能马上使用呢mkdir($path,0777); 不能同时建两级目录.
把你的这一行,换成:
$i = 0;
while (!@mkdir($path, 0777)) {
if (is_dir($path)) break;
$i ++;
if (@mkdir($path . str_repeat("/..", $i), 0777)) $i = 0;
}
这样的试试.
php mkdir创建文件错误你加几行代码
检测文件名是否已经存在
如果存在就不再新建了
这样就可以了
-----------
建议你学习下mkdir的用法
定义和用法
mkdir() 函数创建目录。
若成功,则返回 true,否则返回 false。
语法
mkdir(path,mode,recursive,context)
参数
描述
path 必需。规定要创建的目录的名称。
mode 必需。规定权限。默认是 0777。
recursive 必需。规定是否设置递归模式。
context 必需。规定文件句柄的环境。Context 是可修改流的行为的一套选项。
说明
mkdir() 尝试新建一个由 path 指定的目录。
默认的 mode 是 0777,意味着最大可能的访问权。
为什么PHP没有mkdir等方法的执行权限1、当前运行php的用户,没有在目标目录使用mkdir的权限;
2、目标目录的上一级目录不存在,可用 mkdir("/path/to/my/dir", 0700, true);递归建立;
3、php.ini中禁用了mkdir函数,检查disable_function设置;
4、php处于安全模式,目录超过限制目录,检查opendir设置;
php的mkdir怎么才可以在windows下创建中文目录 - PHP进阶讨论这里有两种情况,通常我们的PHP脚本文件要么是Unicode(utf8)或者是ANSI(gbk)。gbk兼容gb2312。
如果是Unicode编码(utf8),代码里的中文和系统是两种不同的编码,与系统打交道时,如创建中文名称的文件、文件夹等,需要转换编码。
如果是ANSI编码(gbk、gb2312),代码里的中文和系统是系统的编码,不需要转换编码。
//
1、php脚本文件是Unicode编码,系统是中文系统
$dirname="temp/中文目录";
//
通过iconv进行编码转换即可
if(mkdir(iconv('utf-8',
'gbk',
$dirname)))
echo
"创建成功";
else
echo
"创建失败";
//
2、php脚本文件是ANSI编码,系统是中文系统
$dirname="temp/中文目录";
//
不需要转换编码
if(mkdir($dirname))
echo
"创建成功";
else
echo
"创建失败";请选择合适的代码片段进行测试,如果你是utf8的话,就选择代码里的第一部分。
关于phpmkdir-1的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。