PHP mkdir()、chmod() 和 Windows

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/739891/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-15 12:17:34  来源:igfitidea点击:

PHP mkdir(), chmod() and Windows

phpwindowsdirectorychmod

提问by Johnno

I am using the PHP function mkdir($path, 0777) to create a new directory on an Apache server (running on Windows).

我正在使用 PHP 函数 mkdir($path, 0777) 在 Apache 服务器(在 Windows 上运行)上创建一个新目录。

When I create this and view the folders, Windows has set the dir as read only. Is there a way of changing this without using exec() to cacls.exe? The PHP documentation states that chmod() doesn't work on Windows but doesn't say anything about a replacement method.

当我创建它并查看文件夹时,Windows 已将目录设置为只读。有没有办法在不使用 exec() 到 cacls.exe 的情况下改变它?PHP 文档指出 chmod() 在 Windows 上不起作用,但没有说明替换方法。

Google seems to be a little unhelpful on this one.

谷歌似乎对这一点没有帮助。

EDIT: After several minutes talking to administrators at my two-bit educational institution, it seems that their test PHP server for students is being run off of a USB drive. I have a feeling that this will have something to do with it slaps head

编辑:在与我的两位教育机构的管理员交谈几分钟后,他们的学生测试 PHP 服务器似乎正在运行 USB 驱动器。我有一种感觉,这将与它拍脑袋有关

采纳答案by Johnno

The following:

下列:

<?php
mkdir( "foo" )
?>

(note no mode specified) works for me on Win2K - it creates a folder with no attributes set.

(注意没有指定模式)在 Win2K 上对我有用——它创建了一个没有设置属性的文件夹。

Edit:Just had a thought - could it be something to do with permissions? Try running the above code from the command line & see what happens:

编辑:只是有一个想法 - 可能与权限有关吗?尝试从命令行运行上面的代码,看看会发生什么:

C:> c:\php\pgp.exe
    <?php
    mkdir( "foo" )
    ?>
    ^Z

回答by Deniz Dogan

According to the PHP documentation, the mode parameter is completely ignored on Windows (but defaults to 0777, so you wouldn't have to specify it anyhow). Try not specifying the mode at all and see what happens. Maybe it messes something up?

根据 PHP 文档,在 Windows 上完全忽略 mode 参数(但默认为 0777,因此无论如何您都不必指定它)。尝试根本不指定模式,看看会发生什么。也许它搞砸了什么?

回答by Mirza Zeeshan BAig

i am using in php and cakephp for windows as mkdir(" my dir name ",0777,true); it is working fine for me.

我在 windows 的 php 和 cakephp 中使用 mkdir(" my dir name ",0777,true); 它对我来说很好用。