Eu continuo recebendo esse erro ao tentar configurar o diretório de upload com o Apache 2.2 e o PHP 5.3 no CentOS.
No php.ini:
upload_tmp_dir = /var/www/html/mysite/tmp_file_upload/
No httpd.conf:
Directory /var/www/html/mysite/tmp_file_upload/>
Options -Indexes
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Directory /var/www/html/mysite/images/>
Options -Indexes
</Directory>
Permissões do diretório CentOS:
drwxrwxr-x 2 root root 4096 Nov 11 10:01 images
drwxr-xr-x 2 root root 4096 Nov 12 04:54 tmp_file_upload
Não importa o que eu faça, continuo recebendo este erro do PHP quando carrego o arquivo:
Aviso: move_uploaded_file (images / robot.jpg): falha ao abrir o fluxo: permissão negada em /var/www/html/mysite/process.php na linha 78
Aviso: move_uploaded_file (): Não é possível mover '/ tmp / phpsKD2Qm' para 'images / robot.jpg' em /var/www/html/mysite/process.php na linha 78
Como você pode ver, nunca foi necessário configurar o arquivo php.ini em relação ao arquivo de upload.
O que eu estou fazendo errado aqui?
php
upload
file-permissions
user63898
fonte
fonte
Respostas:
Isso ocorre porque
images
etmp_file_upload
somente é gravável peloroot
usuário. Para que o upload funcione, precisamos tornar o proprietário dessas pastas igual ao proprietário do processo httpd OU torná-las graváveis globalmente (práticas inadequadas).$ps aux | grep httpd
. A primeira coluna será o proprietário, normalmente seránobody
Altere o proprietário de
images
etmp_file_upload
para se tornarnobody
ou qualquer que seja o proprietário que você encontrou na etapa 1.Chmod
images
etmp_file_upload
agora deve ser gravável pelo proprietário, se necessário [Parece que você já possui isso]. Mencionado na resposta @Dmitry Teplyakov.Para mais detalhes sobre por que esse comportamento ocorreu, consulte o manual http://php.net/manual/en/ini.core.php#ini.upload-tmp-dir , observe que ele também está falando sobre
open_basedir
diretiva.fonte
jacob
mim (como é minha máquina local) e todas as pastas possuem755
ou775
.sudo service httpd restart
depois de alterar as permissões. Em seguida, ele trabalhou :) Em vez de mudar proprietáriochown
eu adicionei meu processo apache a um grupo 'www' e acrescentou estes diretórios para o mesmo grupo 'www' atravéschgrp
Você também pode executar este script para descobrir o proprietário do processo Apache:
<?php echo exec('whoami'); ?>
E então mude o proprietário do diretório de destino para o que você tem. Use o comando:
E então use o comando
para alterar a permissão do diretório de destino.
fonte
<?php echo exec('whoami'); ?>
. Alguem sabe por quê ?exec('whoami')
. Me salvou mais 30 minutos. estava chowning usuário ubuntuwww-data
? normalmenteSe você possui o Mac OS X, acesse a raiz do arquivo ou a pasta do seu site.
Em seguida, clique com o botão direito do mouse, vá para obter informações, vá para o final ( Compartilhamento e Permissões ), abra-o e altere tudo somente leitura para ler e escrever. Certifique-se de abrir o cadeado, vá para o ícone de configuração e escolha Aplicar aos itens incluídos ...
fonte
/private/var/tmp
do meu Mac.Isso funcionou para mim.
Então saia ou reinicie.
Se houver
SELinux
reclamação, tente o seguintefonte
Eu queria adicionar isso às sugestões anteriores. Se você estiver usando uma versão do Linux com o SELinux habilitado, também deverá executar isso em um shell:
Juntamente com conceder ao usuário do servidor da Web permissões por meio de grupo ou alteração do proprietário do diretório.
fonte
restorecon -R -v /path/to/your/directory
provavelmente também precisa ser incluído nisso posteriormente. access.redhat.com/documentation/pt-BR/Red_Hat_Enterprise_Linux/…Alterar permissões para esta pasta
# chmod -R 0755 /var/www/html/mysite/images/
fonte
Tente o seguinte:
abra / etc / apache2 / envvars
substitua
www-data
pelo seuyour_username
substituir com
fonte
Eu me deparei com esse problema relacionado mesmo depois de já ter executado o compositor com êxito. Atualizei o compositor e, ao executar
composer install
ouphp composer.phar install
recebi:Após muita pesquisa, as respostas anteriores sobre alteração de permissões para a pasta funcionaram. Eles são apenas diretórios ligeiramente diferentes agora.
Na minha instalação, no OS X, o arquivo de cache está dentro
/Users/[USER]/.composer/cache
e eu estava tendo problemas porque o arquivo de cache pertencia à raiz. Alterar a propriedade do '.composer' recursivamente para o meu usuário resolveu o problema.Isto é o que eu fiz:
Então eu corri o compositor instalar novamente e pronto!
fonte
Esse problema ocorre quando o usuário apache (www-data) não tem permissão para escrever na pasta. Para resolver esse problema, você precisa colocar o usuário dentro do grupo www-data.
Acabei de fazer isso:
Execute este código php
<?php echo exec('whoami'); ?>
para descobrir o usuário usado pelo apache. Depois, execute os comandos no terminal:Ele retornará algo como isto:
Eu mantive o usuário, mas mudei o grupo para www-data
fonte
A solução é tão fácil. Clique apenas com o botão direito do mouse na pasta IMAGEM (destino), vá para propriedades, clique na guia permissão e altere o acesso de outros para Criar e excluir arquivos .
fonte
Basta alterar a permissão de tmp_file_upload para 755 A seguir está o comando chmod -R 755 tmp_file_upload
fonte
Tente isto
find /var/www/html/mysite/images/ -type f -print0 | xargs -0 chmod -v 664
fonte