centos7 o apache não pode gravar em um arquivo que possui

1

Eu instalei o httpd e o php em um novo centos7 e coloquei alguns arquivos em / var / www / html incluindo um script de instalação que eu escrevi. Este script precisa gravar em um arquivo de configuração no diretório / var / www / html. Eu criei um arquivo de configuração vazio e chowned para apache: apache. No entanto, tentar fopen este arquivo com acesso de gravação sempre dá o erro:

fopen(/var/www/html/config-local.php): failed to open stream: Permission denied

Ao fazer pesquisas, eu li esta frase: "para alcançar um arquivo, TODOS os diretórios pai devem ser legíveis." Então eu verifiquei e eles são. /, / var, / var / www e / var / www / html são todos legíveis por todos.

Então, o que está acontecendo aqui? Parece que o usuário do apache é algum tipo de usuário especialmente restrito, pois testar o mesmo cenário com um usuário padrão funciona bem.

    
por jpro 30.06.2017 / 04:19

1 resposta

0

É provável que seja um problema de permissões do SELinux. /var/log/audit/audit.log deve ser capaz de confirmar.

O contexto do SELinux provavelmente é system_u:object_r:httpd_sys_content_t:s0 , mas deve ser system_u:object_r:httpd_sys_rw_content_t:s0 . Isso pode ser alterado com chcon .

Eu também não estou otimista sobre ter um arquivo de configuração dentro do DocumentRoot do seu servidor web. Eu poderia estar enganado, já que você não forneceu detalhes suficientes, mas esse seria o caso se você não alterasse os padrões.

    
por 30.06.2017 / 05:04