Метод PUT, проблема

young

Новичок
Метод PUT, проблема

Приложение шлет на сервер метод PUT
В логи apache попадает такое:

192.168.14.4 - - [18/Sep/2003:10:46:50 +0300] "PUT /test/cool.xls HTTP/1.1" 500 342

cool.xls - отрабатывает как php скрипт
По методу GET он отрабатывает чудесно
А по методу PUT - нет

слово PUT - в httpd.conf - не встречается вообще, в следствии чего я предполагаю то PUT разрешен.

В чем может быть проблема?!
 

young

Новичок
Это я и сам знаю, как ее лечить?!

а пару строчек из кода?
Вот код
PHP:
switch ($_SERVER["REQUEST_METHOD"]) {
	case "GET": {
		Header("Content-type: application/vnd.ms-excel");
		$fp = fopen("./1.xls", "r");
		fpassthru($fp);
	} break;
}
$cmd = 'echo "'.$_SERVER["REQUEST_METHOD"].'" >> /tmp/alog';
`$cmd`;
В файлик /tmp/alog падает только GET
 

Crazy

Developer
Поправь меня, если я ошибаюсь, но в твой запрос должен не ЗАПУСКАТЬ указанный скрипт, а ЗАМЕНЯТЬ его. Ты действительно этого хочешь?

Я пытаюсь поднять WebDav
Как именно?
 

young

Новичок
Меня навреное сбил с толку прммер из мана

PHP:
<?php
/* PUT data comes in on the stdin stream */
$putdata = fopen("php://stdin","r");

/* Open a file for writting */
$fp = fopen("myputfile.ext","w");

/* Read the data 1kb at a time
   and write to the file */
while ($data = fread($putdata,1024))
  fwrite($fp,$data);

/* Close the streams */
fclose($fp);
fclose($putdata);
?>
Клиент шлет такие запросы

192.168.14.4 - - [18/Sep/2003:11:44:21 +0300] "PROPFIND /test HTTP/1.1" 207 6735
192.168.14.4 - - [18/Sep/2003:11:44:24 +0300] "PROPFIND /test HTTP/1.1" 207 6735
192.168.14.4 - - [18/Sep/2003:11:44:24 +0300] "PROPFIND /test HTTP/1.1" 207 6735
192.168.14.4 - - [18/Sep/2003:11:44:24 +0300] "PROPFIND /test HTTP/1.1" 207 326
192.168.14.4 - - [18/Sep/2003:11:44:24 +0300] "LOCK /test/c1.xls HTTP/1.1" 500 338
192.168.14.4 - - [18/Sep/2003:11:44:24 +0300] "PUT /test/c1.xls HTTP/1.1" 500 342

А я хочу что бы c1.xls был скриптом и отработал их

Но уже сомневаюсь в своей истинности
 

Profic

just Profic (PHP5 BetaTeam)
Сбил причем полностью %)
Вот кусок из мана
PHP provides support for the HTTP PUT method used by clients such as Netscape Composer and W3C Amaya. PUT requests are much simpler than a file upload and they look something like this:
Код:
PUT /path/filename.html HTTP/1.1
This would normally mean that the remote client would like to save the content that follows as: /path/filename.html in your web tree. It is obviously not a good idea for Apache or PHP to automatically let everybody overwrite any files in your web tree. So, to handle such a request you have to first tell your web server that you want a certain PHP script to handle the request. In Apache you do this with the Script directive. It can be placed almost anywhere in your Apache configuration file. A common place is inside a <Directory> block or perhaps inside a <Virtualhost> block. A line like this would do the trick:
Код:
Script PUT /put.php
This tells Apache to send all PUT requests for URIs that match the context in which you put this line to the put.php script. This assumes, of course, that you have PHP enabled for the .php extension and PHP is active.
 

young

Новичок
На самом деле решение есть :)
Надо сделать скрипт mycool и слать на него как на папку

PUT /mycool/my.file HTTP/1.1

И с путом все будет хрошо

Но вот никак не могу подделать
PROPFIND /mycool HTTP/1.1
 

young

Новичок
О!!!! Кайф!!!

Я подделал все обращения, я корректно обрабатываю PROPFIND, OPTION, LOCK и прочее как для папки так и для файлв (ясно что и тех и тех не существует), все клиенты все понимают на ура, кроме одного

test2 - это php скрипт
Можно ли что бы на

192.168.14.4 - - [18/Sep/2003:13:12:39 +0300] "PUT /test/1.xls HTTP/1.1" 204 0


Он выполнился?!!!!!!
 

Profic

just Profic (PHP5 BetaTeam)
young, мой пост видел?
Скорее всего таким же образом решается и вопрос насчет PROPFIND, т.е.
Script PROPFIND /propfind.php
 
Сверху