PHP Error - Como fazer upload de um arquivo

votos
12

Eu estou tentando escrever alguns PHP para fazer upload de um arquivo para uma pasta no meu servidor Web. Aqui está o que eu tenho:

<?php
    if ( !empty($_FILES['file']['tmp_name']) ) {
        move_uploaded_file($_FILES['file']['tmp_name'], './' . $_FILES['file']['name']);
        header('Location: http://www.mywebsite.com/dump/');
        exit;
    }
?>

<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.1//EN
    http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd>
<html>
    <head>
        <title>Dump Upload</title>
    </head>
    <body>
        <h1>Upload a File</h1>
        <form action=upload.php enctype=multipart/form-data method=post>
            <input type=hidden name=MAX_FILE_SIZE value=1000000000 />
            Select the File:<br /><input type=file name=file /><br />
            <input type=submit value=Upload />
        </form>
    </body>
</html>

Estou ficando estes erros:

Aviso: move_uploaded_file (./ test.txt) [carregado-file-function.move]: failed to open stream: Permissão negada in E: \ inetpub \ vhosts \ mywebsite.com \ httpdocs \ despejo \ upload.php na linha 3

Atenção: move_uploaded_file () [submeteu-function.move-arquivo]: Incapaz de se mover 'C: \ Windows \ Temp \ phpA30E.tmp' a './test.txt' em E: \ inetpub \ vhosts \ mywebsite.com \ httpdocs \ despejo \ upload.php na linha 3

Aviso: Não é possível modificar a informação de encabeçamento - encabeçamentos já enviada pelo (a saída começou em E: \ inetpub \ vhosts \ mywebsite.com \ httpdocs \ despejo \ upload.php: 3) em E: \ inetpub \ vhosts \ mywebsite.com \ httpdocs \ despejar \ upload.php na linha 4

PHP versão 4.4.7 executando o IIS em uma caixa de Windows. Este arquivo / pasta particular tem 777 permissões.

Alguma ideia?

Publicado 06/08/2008 em 17:13
fonte usuário
Em outras línguas...                            


7 respostas

votos
16

AMD

move_uploaded_file($_FILES['file']['tmp_name'], './' . $_FILES['file']['name']);

Não faça isso. $_FILES['file']['name']poderia ser ../../../../boot.iniou qualquer número de coisas ruins. Você nunca deve confiar nesse nome. Você deve renomear o arquivo outra coisa e associar o nome original com o seu nome aleatório. Em um uso mínimo basename($_FILES['file']['name']).

Respondeu 13/12/2008 em 18:17
fonte usuário

votos
7

Como é o Windows, não existe um verdadeiro 777. Se você estiver usando chmod , verifique os comentários relacionados ao Windows.

Verifique se a conta IIS pode acessar (ler, escrever, modificar) estas duas pastas:

E:\inetpub\vhosts\mywebsite.com\httpdocs\dump\
C:\WINDOWS\Temp\
Respondeu 06/08/2008 em 17:16
fonte usuário

votos
3

Tente adicionar um caminho. O código a seguir funciona para mim:

<?php

if ( !empty($_FILES['file']) ) {
    $from = $_FILES['file']['tmp_name'];
    $to = dirname(__FILE__).'/'.$_FILES['file']['name'];

    if( move_uploaded_file($from, $to) ){
        echo 'Success';   
    } else {
        echo 'Failure';   
    }

    header('Location: http://www.mywebsite.com/dump/');
    exit;
}
?>
Respondeu 07/08/2008 em 13:06
fonte usuário

votos
1

Adicione o usuário IIS no grupo persmissions segurança pastas 'despejo', e dar-lhe acesso de leitura / gravação.

Respondeu 03/12/2009 em 05:12
fonte usuário

votos
1

Outra pensar a observar é o separador de diretório, você está usando / em uma caixa de Windows ..

Respondeu 12/02/2009 em 18:14
fonte usuário

votos
1

Atenção: move_uploaded_file () [submeteu-function.move-arquivo]: Incapaz de se mover 'C: \ Windows \ Temp \ phpA30E.tmp' a './people.xml' em E: \ inetpub \ vhosts \ mywebsite.com \ httpdocs \ despejo \ upload.php na linha 3

é a linha importante ele diz que você não pode colocar o arquivo onde quiser e isso normalmente significa um problema de permissões

verificar o processo de execução do aplicativo (normalmente o processo de servidores web para PHP) tem o direito de escrever um arquivo lá.

EDITAR:

pendurar em um pouco I saltou a arma um pouco é o caminho para o arquivo na primeira linha correto?

Respondeu 06/08/2008 em 17:15
fonte usuário

votos
0

Crie uma pasta chamada "imagem" com a permissão pasta 777

<?php
    move_uploaded_file($_FILES['file']['tmp_name'],"image/".$_FILES['file']['name']);
?>
Respondeu 16/11/2012 em 13:51
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more