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 に答える