如何创建具有权限的文件,然后更改权限

时间:2013-10-22 07:49:18

标签: php file permissions phpunit file-permissions

我认为文件所有者存在问题。但我不知道应该如何更改代码。

我的功能:

public static function createFile($fileName, $mode = 0777 ){
        if (! is_string( $fileName ) || empty( $fileName )) {
            throw new Exception( "File name must be a string and can not be empty", 923050 );
        }

        $touchResult = touch( $fileName );

        if (! $touchResult) {
            throw new Exception( "Error occurs while touch method was executed", 923052 );
        }

        if (! is_int( $mode ) || $mode > 511) {
            throw new Exception( 'invalid mode value', 923051 );
        } else {
            $chmodResult = chmod( $fileName, $mode );

            if (! $chmodResult) {
                throw new Exception("Error occurs while chmod method was executed", 923052);
            }
        }
    }

测试

public function testCreateFile(){
        $fileToCreate = __DIR__ . "/../../../../../logs/new.txt";

        //Delete file if exist
        if (file_exists( $fileToCreate )) {
            FileHandler::delete( $fileToCreate );
        }

        //Create file. Default mode 0777
        FileHandler::createFile( $fileToCreate );
        $this->assertFileExists( $fileToCreate );

        $filePermisson = substr( sprintf( '%o', fileperms( $fileToCreate ) ), - 4 );
        $this->assertEquals("0777", $filePermisson);

        //Change permission of existing file
        FileHandler::createFile($fileToCreate, 0775);
        $filePermisson = substr( sprintf( '%o', fileperms( $fileToCreate ) ), - 4 );
        $this->assertEquals("0775", $filePermisson);

    }

错误:

  

有1次失败:

     

1)FileHandlerTest :: testCreateFile声明'0777'失败   匹配预期'0775'。

1 个答案:

答案 0 :(得分:1)

clearstatcache();之前运行fileperms();功能以清除缓存