Fopen do PHP falha - não tem permissão para abrir arquivo no modo de gravação


1

Eu tenho um servidor Apache 2.17 em execução no Fedora 13. Eu quero poder criar um arquivo em um diretório.

Eu não posso fazer isso. Sempre que tento abrir um arquivo com php para escrever fopen (, 'w'), ele diz que não tenho permissão para fazer isso.

Então, verifiquei o arquivo httpd.conf em / etc / httpd / conf /. Diz apache de usuário, apache de grupo. Então mudei a propriedade (chown -R apache: apache. *) De todo o meu diretório / www para apache: apache. Também corro chmod -R 777 *

Além de saber o quanto isso é terrivelmente perigoso, ele ainda me dá o mesmo erro, mesmo que eu permita a gravação em público!


Você literalmente usou apache: apache?
Calvin Froedge

2
Existem mensagens do SELinux em / var / log / messages ou /var/log/audit/audit.log indicando que o SELinux está bloqueando isso?
DerfK 30/01

Além disso, verifique se o modo seguro php está em
Calvin Froedge

1. o / var / www e todos os arquivos nos subdiretórios pertencem ao usuário apache, apache do grupo, verifiquei novamente. 2. SELinux foi realmente a chave! Eu o desativei temporariamente, e tudo parecia correr como deveria. Não há mais necessidade de 777. Obrigado!
George

Como o PHP está sendo executado? CGI, DSO, SuPHP, etc? Isso determinará o usuário real que o PHP executa, o que nem sempre é o mesmo que o próprio servidor Apache.
Garrett

Respostas:


1

Verifique seu log de erros, ele mostrará o problema. Eu acho que tudo se resume a uma destas quatro coisas:
- PHP safe_mode está ativado para o domínio. O log de erros deixará isso claro.
- Restrições PHP open_basedir estão em vigor. Novamente, o log de erros deixará isso claro.
- Você possui a raiz do documento incorreta
- Um diretório pai possui permissões permitidas.

Além disso, altere essas permissões o mais rápido possível. Se você estiver usando o PHP como um módulo apache, se o seu site for comprometido, o invasor poderá escrever scripts PHP personalizados e executá-los à vontade pelo navegador.

Se você estiver usando FC13 e ter acl habilitado, considere usar um setfacl vez de chmod -R 777 - é um pouco mais seguro (somente especificado para determinados usuários) e mais fácil de desfazer:
setfacl -R -m user:apache:rwx /path/to/webroot
setfacl -d -R -m user:apache:rwx /path/to/webroot.


De fato, depois de executar a configuração do SELinux e as configurações de usuário e grupo do apache, a redução do chmod para o mínimo era iminente.
George
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.