在PHP中使用通配符使用chmod不会';行不通

在PHP中使用通配符使用chmod不会';行不通,php,chmod,Php,Chmod,看来 chmod(“*.txt”,0660) 不起作用 我知道我可以: chmod文件一个接一个:它可以工作,但我事先不知道所有的名字,所以我不能使用它 使用exec。它可以工作,但我不喜欢它有几个原因(速度,安全性,等等) 使用scandir。它可以工作,但又很慢,我想对于一个简单的操作来说太多了 我真的想直接使用chmod。有可能吗?谢谢。所以您可以使用您提到的scandir执行此操作,是的,文件系统可能非常慢,您可以添加签入,这样您就不会对已处理的文件执行此操作 <?php $fi

看来

chmod(“*.txt”,0660)

不起作用

我知道我可以:

  • chmod文件一个接一个:它可以工作,但我事先不知道所有的名字,所以我不能使用它
  • 使用
    exec
    。它可以工作,但我不喜欢它有几个原因(速度,安全性,等等)
  • 使用
    scandir
    。它可以工作,但又很慢,我想对于一个简单的操作来说太多了

  • 我真的想直接使用chmod。有可能吗?谢谢。

    所以您可以使用您提到的
    scandir
    执行此操作,是的,文件系统可能非常慢,您可以添加签入,这样您就不会对已处理的文件执行此操作

    <?php
    
    $files = scandir('./');
    foreach ($files as $file) {
        // check here so you don't have to do every file again
        if (substr(sprintf('%o', fileperms($file)), -4) === "0660") {
            echo "skipping " . $file; 
            continue;
        }
    
        $extension = pathinfo($file)['extension'];
        if ($extension === 'txt') {
            chmod($file, 0660);
        }
    }
    

    您能否提供更多的上下文来说明为什么要更改文件的权限?您可以在将文件写入文件系统时执行此操作这是一个好主意,起初我认为这可能很难,但。。。是否有一种方法可以创建一个已经具有这些属性的文件,或者我应该稍后对它们进行chmod?实际上,我想知道它为什么被否决,被谁否决。这是一个完全合法的问题,我展示了我知道如何用三种不同的方式来做。如果我问我如何用第四种方法来做,请原谅。我的印象是,我会问一些你不知道答案的问题。我想真的应该有人来芭堤雅和我住在一起。补充了一个我认为会有帮助的答案。所以我相信有人记下了这个问题,因为第一句话是chmod。。。不起作用。但如果没有任何背景,它确实有帮助。也许说你想做什么。e、 g.“我正在尝试迭代特定文件夹中的所有文件并更改权限。我尝试了
    chmod(*.txt),0660);
    但没有成功
    <?php
    
    $files = glob('./*.{txt}', GLOB_BRACE);
    foreach($files as $file) {
        // check here so you don't have to do every file again
        if (substr(sprintf('%o', fileperms($file)), -4) === "0660") {
            echo "skipping " . $file; 
            continue;
        }
    
        $extension = pathinfo($file)['extension'];
        if ($extension === 'txt') {
            chmod($file, 0660);
        }
    }