Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

paladino_php

Unlink não funciona

Recommended Posts

Meus caros poderiam me ajudar a analisar o porque desse código não deletar a imagem do meu diretório ?

 

 

/* Pra ficar melhor para entender */
$linha_img = mysql_fetch_object($run_img);
$imagem    = $linha_img->descricao;
$sql_del     = mysql_query("DELETE FROM rio_img_anuncios WHERE id = $id_imagem;;");
 
 
/* Forma 1 - Não funciona  */
$diretorio_img = '../../anuncios/rio_compras/' . $id_usuario . '/' . $id_anuncio . '/$imagem';
unlink($diretorio_img);
 
/* Forma 2 - Não funciona  */

$diretorio = '../../anuncios/rio_compras/' . $id_usuario . '/' . $id_anuncio . '/';
unlink("$diretorio_img . $imagem");
 
/* Forma 3 - Não funciona  */

$diretorio = '../../anuncios/rio_compras/' . $id_usuario . '/' . $id_anuncio;
unlink("$diretorio_img . $imagem");
 

 
/* Forma 4 - Não funciona  */


$diretorio = '../../anuncios/rio_compras/' . $id_usuario . '/' . $id_anuncio;
unlink($diretorio_img . $imagem);
 
 
/* Forma 5 - Não funciona */

$diretorio = '../../anuncios/rio_compras/' . $id_usuario . '/' . $id_anuncio . '/';
unlink($diretorio_img . $imagem);



 

/* Forma 6 - [cansado] - Não funciona */

unlink(dirname(dirname(dirname(__FILE__))).'img/anuncios/rio_compras/' . $id_usuario . '/' . $id_anuncio . '/' . $imagem);

 

 

Acredito ter tentado todas as formas possíveis!! Se tiverem mais manda ai :v

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta debugar dando um "echo $diretorio_img . $imagem"; logo abaixo de cada unlink e verifique se o caminho existe no sistema de arquivos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existe Osmar, fiz um teste com o exemplo do Paulo e o diretório e a imagem estão lá. Tava pensando que poderia ser as permissões do servidor mas nem em produção funciona...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não retorna nenhum mensagem de erro? Experimente usar o var_dump para ver se retorna algo:

 

var_dump( unlink( $img_path ) );

Experimente também usar o caminho absoluto na função unlink, para validar se o problema não é no path. Por exemplo:

unlink( "/Applications/MAMP/htdocs/project/{$img_path}" );

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dei uma olhada nas permissões e estavam erradas, setei pra 0777, porém ainda assim não está excluindo. Estou usando essa função para teste, ela retorna o else:

 

$img_path = "../../img/anuncios/rio_compras/$id_usuario/$id_anuncio/$imagem";
if( unlink ( $img_path ) )
{
echo $img_path;
}
else echo 'Não excluiu';
Esse var_dump retorna: bool(false)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, a melhor maneira de resolver isto é habilitando todos os erros do PHP e ver qual a mensagem de erro que ele vai te retornar. Com certeza ele vai te retornar uma neste caso, a não ser que esteja manipulando os erros de alguma maneira ou usando um arroba antes do unlink(), que acredito não ser o caso.

 

Então, experimente forçar o PHP a apresentar os erros:

error_reporting(E_ALL);
ini_set( 'display_errors','1');

E aproveite e debugue esse trecho também:

var_dump( is_file( $img_path ) );

 

Se retornar FALSE, é porque o arquivo não existe ou o caminho até ele está errado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

1. ative os logs de erros e warnings

 

2. utilize sempre paths absolutos

 

3. verifique se o ambiente no qual executa possui a constante BASE_DIR ativada.

Geralmente em server compartilhado é ativado o BASE_DIR ou algo do tipo.

 

4. certifque-se se o path para o arquivo realmente está certo.

dependendo do sistema operacional, a nomenclatura do file system é case sensitive.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu galera, vocês são demais. Estava errando aqui hinom -> utilize sempre paths absolutos. Setei o caminho correto, pelo diretório, e funcionou. Obrigado a todos que tiraram um tempo pra dar sua opinião. ;]

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.