Re: COPY и несуществующая директория = 500 Internal Server Error

Maxim Dounin mdounin at mdounin.ru
Sat Dec 28 13:00:43 UTC 2013


Hello!

On Sat, Dec 28, 2013 at 03:20:47PM +0400, Михаил Монашёв wrote:

> Здравствуйте.
> 
> Бага или фича?
> 
> Если  через  WebDAV  копируется  несуществующий  файл  в  существующей
> директории, то выдаётся 404. Но если копируется файл из несуществующей
> директории  в  неё  же,  то  выдаётся 500 - Internal Server Error. Это
> правильное поведение или должно 404 тоже выдаваться?

Если исходный файл/каталог не сущетсвует, то в любом случае должно 
выдаваться 404.

> Пример:
> копируем http://i39.beon.ru/17/74/1467417/47/avatars/4.jpeg
> в  http://i39.beon.ru/17/74/1467417/47/avatars/4.jpeg.tmp
> и получаем: 500 Internal Server Error
> 
> в error_log-е:
> 2013/12/28 11:54:28 [crit] 2845#0: *4749150 open() "/opt2/beon/i39/17/74/1467417/47/avatars/4.jpeg.tmp" failed (2: No such file or directory), client: 89.208.146.210, server: i39.beon.ru, request: "COPY http://i39.beon.ru/17/74/1467417/47/avatars/4.jpeg HTTP/1.1", host: "i39.beon.ru"
> 
> в access.log-e:
> 28/Dec/2013:11:54:28 +0400 500 89.208.146.210 353 i39.beon.ru "COPY http://i39.beon.ru/17/74/1467417/47/avatars/4.jpeg HTTP/1.1" "-" "-" "-" "-" "-" "-" "close"

Должно быть так:

2013/12/28 16:51:35 [error] 33014#0: *1 lstat() "/path/to/foo/bar/bazz" failed (2: No such file or directory), client: 127.0.0.1, server: , request: "COPY /foo/bar/bazz HTTP/1.1", host: "localhost"
127.0.0.1 - - [28/Dec/2013:16:51:35 +0400] "COPY /foo/bar/bazz HTTP/1.1" 404 168 "-" "-"

То, что у тебя сломался open(), намекает на то, что в процессе 
выполнения этого запроса кто-то удалил каталог.

-- 
Maxim Dounin
http://nginx.org/



Подробная информация о списке рассылки nginx-ru