O triste problema de permissão do PHP do Joe (LAMP) [closed]

1

Como muitos servidores PHP estão por aí, você pensaria que haveria mais guias sobre este tópico.

Joe começa como o feliz proprietário de um novo PC do Ubuntu.

Joe gosta do Ubuntu em seu café. Joe quer construir um site usando PHP. Centenas e centenas de bibliotecas do Joe apt-get tentando configurar o Apache, PHP e MySQL. Joe finalmente recebe a configuração do PHP, já que o nascer do sol derruba o pobre Joe.

Joe acorda com o PHP funcionando. Joe começa a escrever código. Joe recebe erros que o PHP não pode criar arquivos.

Isso incomoda Joe.

Joe ingenuamente CHMOD é o diretório / var / www para 0777. PHP funciona e Joe é feliz. Vários minutos depois, Joe tem o mesmo problema quando o PHP tenta gravar outro arquivo.

Joe percebe que isso é ruim.

Joe descobre chown e um grupo conhecido como www-data. Joe inverte seu CHMOD e chowns o / var / www para www-data. No entanto, o PHP ainda não funciona. PHP é ninguém .

Joe volta a trabalhar para o McDonalds, percebendo que não há esperança de escrever código PHP.

    
por Xeoncross 22.02.2010 / 21:18

3 respostas

1

A menos que seu processo PHP esteja no negócio de criar todos os arquivos que residem em / var / www, chown'ing / var / www para www-data é uma má idéia. Estou apostando que Joe já criou uma estrutura de diretórios em / var / www, e seu processo PHP está tentando gravar em um desses diretórios pertencentes a alguém diferente de www-data. Você deve apenas chown www-data os diretórios que você precisa escrever para - os outros são melhor deixar de propriedade como algo que o servidor web não pode gravar.

    
por 22.02.2010 / 21:32
2

Nicholas vê a consulta de Joe e sugere, talvez, criar um diretório separado para o qual o PHP possa escrever. Ele observa que, se Joe não pretende que o Apache forneça arquivos diretamente a partir dele, esse diretório não deve estar em nenhum lugar em que o Apache sirva.

Ele também observa que nas distribuições baseadas no Debian - como o Ubuntu - o Apache (e portanto o PHP) quase sempre roda como www-data, e sugere que algo estranho está acontecendo em algum lugar se o PHP rodando sob o apache não puder gravar em diretórios graváveis por esse grupo .

Relendo, Nicholas também sugere que a pasta que Joe deseja escrever pertença ao grupo www-data (chgrp www-data $ folder) e então gravável por esse grupo, pois ele pensa que PHP está rodando, é possivelmente um membro do www-data em vez de ser executado como esse usuário.

Nicholas observa que o processo de instalar o PHP no Ubuntu sob o Apache não deve ser muito mais complicado do que "apt-get install apache2 libapache2-mod-php5 php5 php5-mysql" e depois "sudo a2enmod php5", e que se Joe teve que estragar mais do que isso, é possível que algo esteja fundamentalmente errado que está estragando tudo o que o PHP está rodando.

Nicholas observa que alguns desses posts soam mais condescendentes do que o estritamente necessário e acusa o formato de terceira pessoa herdado.

    
por 22.02.2010 / 22:13
0

Joe sabe em qual diretório o script PHP está tentando gravar? Esse diretório precisa de permissões de www-data para escrever.

    
por 22.02.2010 / 21:23