Resumo : neste tutorial, você aprenderá como lidar com permissões de arquivos PHP , incluindo verificação e alteração de permissões de arquivos.
As permissões de arquivo especificam o que um usuário pode fazer com um arquivo, por exemplo, lê-lo, gravá-lo ou executá-lo. Observe que o PHP concede automaticamente as permissões apropriadas nos bastidores.
Por exemplo, se você criar um novo arquivo para gravação, o PHP concederá automaticamente as permissões de leitura e gravação.
PHP fornece algumas funções úteis para verificar e alterar as permissões de arquivo.
Verificando permissões de arquivo
PHP tem três funções úteis que verificam as permissões dos arquivos:
is_readable()
a função retornatrue
se o arquivo existe e é legível; caso contrário, ele retornafalse
.is_writable()
a função retornatrue
se o arquivo existir e for gravável; caso contrário, ele retornafalse
.is_executable()
a função retornatrue
se o arquivo existe e é executável; caso contrário, ele retornafalse
.
Vejamos o seguinte exemplo:
<?php
$filename = 'readme.txt';
$functions = [
'is_readable',
'is_writable',
'is_executable'
];
foreach ($functions as $f) {
echo $f($filename) ? 'The file ' . $filename . $f : '';
}
Linguagem de código: HTML, XML ( xml )
Além dessas funções, o PHP também oferece a fileperms()
função que retorna um número inteiro, que representa as permissões definidas em um determinado arquivo. Por exemplo:
<?php
$permissions = fileperms('readme.txt');
echo substr(sprintf('%o', $permissions), -4); //0666
Linguagem de código: HTML, XML ( xml )
Alterando permissões de arquivo
Para alterar a permissão ou modo do arquivo, você usa a chmod()
função:
chmod ( string $filename , int $permissions ) : bool
Linguagem de código: PHP ( php )
A chmod()
função possui dois parâmetros:
$filename
é o arquivo cujas permissões você deseja alterar.- O parâmetro $permissions consiste em três componentes de número octal que especificam restrições de acesso para o proprietário, o grupo de usuários no qual o proprietário está e todos os demais nesta sequência.
A chmod()
função retorna true
em caso de sucesso ou false
falha.
O argumento de permissões é representado por um número octal que contém três dígitos:
- O primeiro dígito especifica o que o proprietário do arquivo pode ler, gravar ou executar no arquivo.
- O segundo dígito especifica em que grupo de usuários no qual o proprietário está pode ler, gravar ou executar o arquivo.
- O terceiro dígito especifica o que todos os outros podem ler, escrever ou executar no arquivo.
A tabela a seguir ilustra o valor de cada dígito que representa a permissão de acesso para usuários específicos (proprietário, grupo de usuários ou todos os outros):
Valor | Permissão |
---|---|
0 | não consegue ler, escrever ou executar |
1 | só pode executar |
2 | só posso escrever |
3 | pode escrever e executar |
4 | só consigo ler |
5 | pode ler e executar |
6 | sabe ler e escrever |
7 | pode ler, escrever e executar |
O exemplo a seguir define permissão para que o único proprietário possa ler e gravar um arquivo, apenas todos os outros possam ler o arquivo:
<?php
$filename = './readme.txt';
chmod($filename, 0644);
Linguagem de código: HTML, XML ( xml )
Observe que colocamos 0
antes 644
para instruir o PHP a tratá-lo como um número octal.
Resumo
- Use
is_readable()
,is_writable()
,is_executable()
para verificar se um arquivo existe e é legível, gravável e executável. - Use a
chmod()
função para definir permissões para um arquivo.