WordPress no LinuxMint: Não é possível criar diretório (ou gravar arquivo)

0

Eu corro Linux Mint, com Apache2, PHP e MySQL. Eu tenho módulos ativados para o Apache para que os usuários ' public_html possam ser usados e que scripts PHP possam ser executados a partir deles. Eu instalei o WordPress no meu public_html (ou seja, ~/public_html/wordpress ), mas não funcionou totalmente.

Quando tentei alterar a imagem de plano de fundo ou a imagem de cabeçalho, recebi uma mensagem de erro informando que um diretório (ano / mês ou mês / ano) - no qual os uploads são armazenados - não pôde ser criado.

Obviamente, meu servidor web não tem permissão para criar diretórios - e provavelmente não para criar arquivos - em public_html ou seus subdiretórios (como alguns diretórios em ~/public_html/wordpress ).

Por isso estou querendo saber quais são minhas opções aqui. Existe algum módulo devo adicionar ou algum arquivo de configuração devo corrigir, para que o servidor web pode escrever? Ou devo, talvez, alterar o proprietário e / ou grupo de public_html - e seus subdiretórios (existe uma maneira de garantir que os subdiretórios pertençam ao mesmo proprietário / grupo)? ... obviamente sem me impedir de fazer alterações na minha página da web. Sugestões, conselhos e boas práticas são muito bem-vindos.

Eu sei que provavelmente teria menos problemas se eu instalasse o WordPress como root em /var/www , mas preferiria evitar essa solução.

    
por Baard Kopperud 08.08.2013 / 11:44

1 resposta

1

Obviously my web server doesn't have permission to create directories - and probably not to create files - in public_html or its subdirectories (like some directories under ~/public_html/wordpress).

Isso é muito provável que seja o problema. No entanto, você não precisa se trancar para fora do diretório: há muitas opções que permitem manter os arquivos nesse diretório e permitir que o servidor da Web grave nele:

  1. Coloque-se no grupo www-data : sudo gpasswd -a $(whoami) www-data e altere o grupo do diretório public_html: sudo chown -R $(whoami):www-data ~/public_html . Dessa forma, você e o servidor da Web compartilharão esse diretório.

  2. Usando o sticky bit: isso permitirá que o servidor da Web grave arquivos no diretório enquanto carrega o grupo da pasta, permitindo que você ainda acesse o diretório de uploads como seu usuário: chmod g+rws,o+rwx ~/public_html/wordpress/wp-content .

  3. Use as ACLs para especificar permissões avançadas para permitir que o servidor grave no diretório: setfacl -m u:www-data:rwx ~/public_html/wordpress/wp-content . Se você seguir esse caminho, eu recomendo ler o manual para as ACLs, pois elas são muito poderosas e há muitas coisas que você pode fazer com eles.

Aviso

Note, entretanto, que nenhuma das soluções acima é realmente adequada para um ambiente de produção, já que todas permitirão que qualquer usuário no servidor que tenha permissão para executar o código PHP também tenha permissões de servidor web e, portanto, possa excluir arquivos maliciosos. seu diretório de uploads. Certifique-se de apenas tornar o diretório de uploads gravável, e também certifique-se de colocar um .htaccess que proíbe qualquer execução de código do diretório de uploads. Para servidores de produção, recomendo rodar o PHP como usuário do sistema do usuário usando suexec, php-fpm ou qualquer outra forma de executar o código PHP fora do servidor web.

    
por 31.07.2015 / 06:33