PHP mkdir-为什么这是一个无效参数?
我想尝试创建以日期和当前时间命名的目录。我知道我可以使用php time()函数,但这对我来说很难理解。为什么我不能创建一个名为06-11-2014 11:37:04左右的目录?当我尝试使用此格式时,php mkdir函数给了我一个无效参数 php代码PHP mkdir-为什么这是一个无效参数?,php,date,mkdir,Php,Date,Mkdir,我想尝试创建以日期和当前时间命名的目录。我知道我可以使用php time()函数,但这对我来说很难理解。为什么我不能创建一个名为06-11-2014 11:37:04左右的目录?当我尝试使用此格式时,php mkdir函数给了我一个无效参数 php代码 <?php $newdate = date("m-d-Y H:i:s"); mkdir($newdate, 0755, true); ?> 您有: mkdir($newdate, 077, true); 但它应该是: mkd
<?php
$newdate = date("m-d-Y H:i:s");
mkdir($newdate, 0755, true);
?>
您有:
mkdir($newdate, 077, true);
但它应该是:
mkdir($newdate, 0777, true);
但也就是说,777
权限是一种安全风险。您最好使用775
或755
:
mkdir($newdate, 0755, true);
777
权限的问题在于,它意味着任何有权访问您的系统的人都可以100%读取、写入或执行该目录中的任何内容。这只是打开了一扇大门,如果你被黑客攻击,你可能会感到头疼,甚至是像你自己输入错误路径那样的不经意的头痛&清除你本不应该清除的数据
文件和目录权限不应仅向世界上拥有777
的任何人开放
编辑:原始海报表示,即使使用了正确的权限,他们仍然遇到问题。我唯一的建议是更改以下代码:
$newdate = date("m-d-Y H:i:s");
mkdir($newdate, 0777, true);
为此:
$newdate = date("m-d-Y_H-i-s");
mkdir($newdate, 0755, true);
我认为问题在于,如果文件或目录名中有
:
,在某些系统(如Mac OS X)上可能会阻塞。此外,我在日期和时间之间加了一个下划线()。日期中的冒号弄乱了它。您最好使用以下格式:
$newdate = date("m-d-Y H_i_s");
由于077
使用0777
;您忘记了一个7
。更好的方法是,使用0755
这样更安全。@Fred ii-Hm使用0777或0755时运气不好,仍然得到无效参数。大多数文件系统不允许在文件或目录名中使用冒号。我在这方面运气不好,但我现在肯定会使用0755。还有其他想法吗?杰克,这是我使用“评论”的另一个原因就是这样,文件命名不允许我在目录名中使用冒号。就是这样!我会在可能的时候接受你的回答。我的文件系统不允许在目录标题中使用冒号。这是由于linux文件命名约定。旁注:我的(托管)服务器是linux,使用冒号对我来说很好。一定是它的设置方式,我无法控制。@wheatfiries我的回答也指出了:
问题。但我相信这是MacOSX上的一个问题&可能是其他BSD变体。我刚刚试着在Ubuntu(Debian)上用冒号创建一个基于日期的目录,效果非常好。也许我现在需要研究GNU或文件系统的差异?@wheatfiries我认为这也是一件好事,因为根据经验,如果我在服务器上创建一个包含冒号的文件,然后尝试将其上载到我的计算机(基于Windows),Windows会给我一个错误。在使用文件命名约定时,我很少使用或从未使用的字符是连字符、空格和冒号,但在代码中是单独使用的。干杯