PHP mkdir()、chmod() 和 Windows

4
我正在使用PHP函数mkdir($path, 0777)在运行在Windows上的Apache服务器上创建一个新目录。
当我创建这个目录并查看文件夹时,Windows将该目录设置为只读。有没有一种方法可以在不使用exec()调用cacls.exe的情况下更改此设置?PHP文档说明chmod()在Windows上不起作用,但没有提到替代方法。
谷歌似乎对此不太有帮助。
编辑:在与我所在的教育机构管理员交谈了几分钟后,他们似乎是在一个USB驱动器上运行学生的测试PHP服务器。我感觉这可能与此有关。

请注意,chmod在Windows上不起作用,因为Windows使用与Linux不同的权限方法。 - Shard
是的,我正在寻找一种在Windows上复制chmod()功能的方法 :) - Johnno
3个回答

2
以下内容:
<?php
mkdir( "foo" )
?>

在Win2K上,未指定模式的情况下对我有效 - 它会创建一个没有设置属性的文件夹。

编辑:刚想到一个问题 - 这可能与权限有关吗?尝试从命令行运行上述代码,看看会发生什么:

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

我使用WinXP,但它对我没用。它创建了一个名为foo的目录,但只读标签被选中(并且也变灰了!) - Johnno
另外,我正在一个Apache/2.2.0 (Win32)服务器上测试PHP版本5.2.4。不幸的是,我无法更改它们中的任何一个。 - Johnno
我正在使用5.2.3版本,很抱歉我无法提供更多帮助。我进行了一些谷歌搜索,但没有找到关于这个问题的提及 - chmod()有问题,但mkdir()没有。 - anon
该目录像往常一样创建,但只读标签仍然被灰掉并打上了勾。我可以轻松地去取消勾选,但这是为了在用户注册时创建文件夹,否则我会花费整整一天的时间! - Johnno

2

我正在使用PHP和CakePHP在Windows上进行开发,使用mkdir(" my dir name ",0777,true)命令创建目录,这个命令对我来说运行得很好。


0777是Windows标准,无法分配其他不同的值。 - David

1
根据PHP文档,Windows系统完全忽略模式参数(但默认为0777,因此您无需指定它)。尝试不指定模式,看看会发生什么。也许会出现一些问题?

无论是否带参数,它都不会比现在更糟糕,因此行为是相同的。 - David

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接