Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
Tenta debugar dando um "echo $diretorio_img . $imagem"; logo abaixo de cada unlink e verifique se o caminho existe no sistema de arquivos.
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...
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}" );
Provável se seja permissões no servidor ... entra pelo seu FTP e da olhada nas permissões.
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)
Tenta colocar o caminho completo da pasta ex www.meusite.com/pasta/pasta/
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.
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.
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. ;]
Um ponto pra você!
Pois são poucos os que retornam pra agradecer. :natalwink:
Vlw! :)
Tenta assim:
$img_path = "../../anuncios/rio_compras/" . $id_usuario . "/" . $id_anuncio . "/" . $imagem;
if(!file_exists($img_path)) {