0

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

我的功能:

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”匹配失败。

4

1 回答 1

1

在清除缓存之前运行clearstatcache();函数fileperms();

于 2013-10-22T08:37:05.317 回答