Skip to content

szepeviktor/php-chmod

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PHP chmod

Packagist Version Packagist Downloads CI status Contributors Forks Stargazers Issues MIT License

php-chmod is a PHP library for easily changing the permissions recursively.

Versions & Dependencies

Version PHP Documentation
^1.0 ^7.4 current

Requirements

  • PHP >= 7.4
  • php-extension ext-mbstring

Installation

Run composer require MathiasReker/php-chmod

Examples

Dry run:

<?php

use MathiasReker\PhpChmod\Scanner;

require __DIR__ . '/vendor/autoload.php';

$result = (new Scanner())
    ->setDefaultFileMode(0644)
    ->setDefaultDirectoryMode(0755)
    ->setExcludedFileModes([0400, 0444, 0640])
    ->setExcludedDirectoryModes([0750])
    ->scan([__DIR__])
    ->dryRun();

var_dump($result); // string[]

Fix:

<?php

use MathiasReker\PhpChmod\Scanner;

require __DIR__ . '/vendor/autoload.php';

(new Scanner())
    ->setDefaultFileMode(0644)
    ->setDefaultDirectoryMode(0755)
    ->setExcludedFileModes([0400, 0444, 0640])
    ->setExcludedDirectoryModes([0750])
    ->scan([__DIR__])
    ->fix();

Documentation

$result = new Scanner();

setDefaultFileMode sets the default file permission:

$result->setDefaultFileMode(0644);

setDefaultDirectoryMode sets the default directory permission:

$result->setDefaultDirectoryMode(0755);

setExcludedFileModes sets the allowed permissions for files. Files with these permissions will be skipped:

$result->setExcludedFileModes([0400, 0444, 0640]);

setExcludedDirectoryModes sets the allowed permissions for directories. Directories with these permissions will be skipped:

$result->setExcludedDirectoryModes([0750]);

setExcludedNames exclude files by a custom pattern. Glob and RegEx are supported:

$result->setExcludedNames(['*.rb', '*.py']);

setNames includes files by a custom pattern and exclude any other files. Glob and RegEx are supported:

$result->setNames(['*.php']);

setExcludedPaths excludes a list of file/directory paths:

$result->setExcludedPaths(['first/dir', 'other/dir']);

scan finds all the concerned files/directories:

$result->scan([__DIR__]);

setConcernedPaths sets concerned files manually. This is useful if you want to use a custom scanner:

$result->setConcernedPaths($paths);

dryRun returns an array of concerned files/directories:

$result->dryRun();

fix changes the concerned file/directory permissions to the default permission:

$result->fix();

Roadmap

See the open issues for a complete list of proposed features (and known issues).

Contributing

If you have a suggestion to improve this, please fork the repo and create a pull request. You can also open an issue with the tag "enhancement". Finally, don't forget to give the project a star! Thanks again!

License

It is distributed under the MIT License. See LICENSE for more information.

About

php-chmod is a PHP library for easily changing permissions recursively.

Resources

License

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%