X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> unlink и путь
MetSerp
MetSerp
Topic Starter сообщение 7.11.2011, 21:32; Ответить: MetSerp
Сообщение #1


Суть проблемы, генерирую ссылку и пытаюсь снести файл:
[PHP]
код класса
try {
$query = $this->pdo->query("SELECT `file_name` FROM `tbl_galery` WHERE `deleted`=1") ;
$result = $query->fetchAll();
for ($i=0;$i<count($result[0]);$i++){
unlink($_SERVER['DOCUMENT_ROOT'].'/ui/galery/original/'.$result[$i][0].'.jpg');
unlink($_SERVER['DOCUMENT_ROOT'].'/ui/galery/small/s'.$result[$i][0].'.jpg');
}
дальнейший код класса[/PHP]
строки получаются вида
/home/c/cl80042/public_html/ui/galery/original/451274n.jpg
то что файл существует по адресу /public_html/ui/galery/original/451274n.jpg я уверен.
Но функция падает с предупреждением типа файла нет.
Warning: unlink(/home/c/cl80042/public_html/ui/galery/original/451274n.jpg) [function.unlink]: No such file or directory in /home/c/cl80042/public_html/ui/cp/source/controller.php on line 176

В чем может быть проблема?
Сейф мод - выключен, права на папках выставлял от 700 до 755 - не спасло.
Может есть способ более универсально получить точный путь?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 7.11.2011, 21:54; Ответить: alexdrob
Сообщение #2


(MetSerp @ 8.11.2011, 00:32) *
Может есть способ более универсально получить точный путь?

если путь точный, то что может быть ещё точнее?)
обрати внимание тчо только оригинал не найден, проверь ещё раз что файл там есть и не удаляется, выведи сколько раз повторяется удаление, мб у тебя один файл в нескольких строках записан
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
MetSerp
MetSerp
Topic Starter сообщение 7.11.2011, 22:23; Ответить: MetSerp
Сообщение #3


не, не удаляет оба файла, я просто привел листинг одного варнинга, так как второй идентичен
строк точно по одной
результат sql запроса такой:
file_name имя файла полной фотки
451274n
elit4you_03

как получить более полный путь я хз.
В том и суть, что он не выводит ошибку доступа, или что то подобное, а именно говорит что файл не найден.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
MetSerp
MetSerp
Topic Starter сообщение 7.11.2011, 22:30; Ответить: MetSerp
Сообщение #4


начинаю подохревать что во всем виноват mod_rewrite так как инных способов закосячить путь я не вижу.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Cristian
Cristian
сообщение 7.11.2011, 23:34; Ответить: Cristian
Сообщение #5


Даже если php установлен как модуль apache, mod_rewrite не влияет на обращение к файловой системе напрямую.
А что говорит file_exists на эти файлы?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
MetSerp
MetSerp
Topic Starter сообщение 8.11.2011, 0:20; Ответить: MetSerp
Сообщение #6


[PHP]for ($i=0;$i<count($result[0]);$i++){
if(file_exists($_SERVER['DOCUMENT_ROOT'].'/ui/galery/original/'.$result[$i][0].'.jpg')) unlink($_SERVER['DOCUMENT_ROOT'].'/ui/galery/original/'.$result[$i][0].'.jpg');
if(file_exists($_SERVER['DOCUMENT_ROOT'].'/ui/galery/small/s'.$result[$i][0].'.jpg')) unlink($_SERVER['DOCUMENT_ROOT'].'/ui/galery/small/s'.$result[$i][0].'.jpg');
}[/PHP]
отработал правильно и все снес О_О
Так и не понял в чем была ошибка, так как проверка на существование файла нужна для грамотного кода, но не обязательная для рабочего.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 8.11.2011, 10:38; Ответить: Mulder_hb
Сообщение #7


Если нигде выше больше нет кода удаления, то может быть в базе несколько одинаковых имен файлов? Проверь на какой итерации действительно удаляется файл, а на какой происходит ошибка.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
MetSerp
MetSerp
Topic Starter сообщение 8.11.2011, 11:51; Ответить: MetSerp
Сообщение #8


В базе все правильно, и если сначала проверять файл на существование то все сносит без ошибок и предупреждений.
До сих пор не пойму в чем прикол.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 8.11.2011, 12:52; Ответить: alexdrob
Сообщение #9


(Mulder_hb @ 8.11.2011, 13:38) *
Если нигде выше больше нет кода удаления, то может быть в базе несколько одинаковых имен файлов? Проверь на какой итерации действительно удаляется файл, а на какой происходит ошибка.

вот я то же самое хотел сказать вот этим
(alexdrob @ 8.11.2011, 00:54) *
выведи сколько раз повторяется удаление, мб у тебя один файл в нескольких строках записан

но как то криво выразился :)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZhukV
ZhukV
сообщение 8.11.2011, 19:49; Ответить: ZhukV
Сообщение #10


Мне кажется, что это прикол безопасности UNIX. Раз с таким стыкнулся.
Проверь, действительно ли права на файл (пользователь или група) принадлежат апачу, либо другому серверу (смотря какой у тебя стоит).

Также можно проверить, можешь ли ты писать в файл, если сможешь, то и сможешь удалить.

[PHP]
$file = '/p/a/c.jpg';
if (!file_exists($file)) {
// Error. Not file
}
else if (!is_writable($file)) {
// Error. Not write in file
}
else {
$status = unlink ($file);
}
[/PHP]

Скорее всего нужно смотреть по правам, поскольку, если ты к примеру загрузиш файл через ФТП, или СФТП, то права на файл совсем другие и апач не имеет к ним доступу кроме чтения.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Книга "Веб-райтинг: путь к успеху"
запилил в виде курса
12 grumdas 13645 21.3.2016, 8:47
автор: grumdas


 



RSS Текстовая версия Сейчас: 23.4.2024, 10:17
Дизайн