Image upload does not work on the server even with full path

Asked

Viewed 913 times

0

Even by placing the full path and folder having 777 permission the image does not go to its destination. safe_mode is marked off and image uploading is enabled in php.ini. It is worth adding that it was working normally on localhost.

Follows the code:

<?php

 //Upload de arquivos
// verifica se foi enviado um arquivo
 if(isset($_FILES['file']['name']) && $_FILES["file"]["error"] == 0)
 {
echo "Você enviou o arquivo: <strong>" . $_FILES['file']['name'] . "</strong><br />";
echo "Este arquivo é do tipo: <strong>" . $_FILES['file']['type'] . "</strong><br />";
    echo "Seu tamanho é: <strong>" . $_FILES['file']['size'] . "</strong>   Bytes<br /><br />";

$arquivo_tmp = $_FILES['file']['tmp_name'];
$nome = $_FILES['file']['name'];

// Pega a extensao
$extensao = strrchr($nome, '.');

// Converte a extensao para mimusculo
$extensao = strtolower($extensao);

// Somente imagens, .jpg;.jpeg;.gif;.png
// Aqui eu enfilero as extesões permitidas e separo por ';'
// Isso server apenas para eu poder pesquisar dentro desta String
if(strstr('.jpg;.jpeg;.gif;.png', $extensao))
{
    // Cria um nome único para esta imagem
    // Evita que duplique as imagens no servidor.
    $novoNome = md5(microtime()) . $extensao;

    // Concatena a pasta com o nome
    $destino = 'http://www.lcjprojetos.com.br/admin/imgsupload/' . $novoNome;

    // tenta mover o arquivo para o destino
    if( @move_uploaded_file( $arquivo_tmp, $destino  ))
    {
        echo "Arquivo salvo com sucesso em : <strong>" . $destino . "</strong><br />";
    }
    else
        echo "Erro ao salvar o arquivo. Aparentemente você não tem permissão de escrita.<br />";
}
else
    echo "Você poderá enviar apenas arquivos jpeg jpg png e gif<br />";
}
   else
  {
   echo "Você não enviou nenhum arquivo!";
  }
  ?>
  • 1

    You must go through the directory using absolute paths, meaning, you cannot use http//:site, you can just back 1 directory ../ or even go back 1 directory and open another subdirectory in that same directory ../outro/, experiment and say whether it worked or not.

  • I got it that way you told me, but putting only one . went to stay . /admin/imgsupload/ . Thanks for the help :)

  • Correction, the paths must be relative, I said absolute which is exactly what you were doing.

1 answer

1

Use relative paths, rather than absolute paths, to traverse folders in the directory.

If you have for example:

-- Root
 - publico
    *uploads
    *admin
     ficheiro_responsavel_pelo_upload.php 
     ...
 - privado
    *layout
    *config

You must go back 1 directory ../ and then advance another ../uploads/.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.