PDA

Просмотр полной версии : Apache



Anonymous
18.09.2005, 19:47
Как настроить Apache на Upload?

Lord of rings
18.09.2005, 19:57
А можно как-то поподробнее вопрос изложить???

Anonymous
18.09.2005, 20:10
Ну вот стоит на одном компе Apache. С другого компа хотят положить на комп, где он стоит, файлик) Чего и где надо написать, что бы он работал не только в одну сторону(только скачать)?

Anonymous
18.09.2005, 21:05
или если кто может, найдите тут ошибку пож. не могу найти :?

<form enctype="multipart/form-data" method="post" action="upload_script.php">
<input type="hidden" name="MAX_FILE_SIZE" value="1000">
Выберите файл: <input name="имя_поля" type="file">
<input type="submit" value="Послать файл">
</form>
<?php
function doUpload($FVARS, $field_name, $overwrite=false, $uniquename=false){
$storage="/home/www/public_html/uploads/";
$flag = (bool) ini_get("safe_mode");
if ($flag||(!strstr($HTTP_SERVER_VARS['SERVER_SOFTWARE'], 'win'))){
if (getmyuid()!=fileowner($storage)){
die("Safe mode uncompatibililty. Check owner for '".$storage"'");
}
}
$allowed=array(
'jpg',
'gif',
'rar',
'pdf',
'doc',
'txt',
'rtf'
);
$maxsize=2000000;
$filename=$FVARS[$field_name]['name'];
$filename=$FVARS[$field_name]['size'];
$fileext=strtolower(substr(strrchr($filename,"."),1));
if(!in_array($fileext, $allowed)){
die("Недопустимый тип файла");
}
if($filesize>$maxsize){
die("Слишком большой файл");
}
$tmpfname=$FVARS[$field_name]['tmp_name'])
$filename = ereg_replace("[^a-z0-9._]", "",
str_replace(" ", "_",
str_replace("%20", "_", strtolower($name))));

if ($filename=""){
die("Недопустимое имя файла. Только английские буквы, цифры и '_'!");
}
$filepath=$storage;
if ($uniquename){
$filepath=$filepath.time()."_";
}
$filepath=$filepath.$filename;
if (is_uploaded_file($tmpfname) {
if (!$overwrite){
if (file_exists($filepath)){
die("Файл с именем ".$filename." уже существует.
Переименуйте файл или удалите его с сервера");
}
}
move_uploaded_file($tmpfname, $filepath)
or die("Ошибка закачки файла: ".$filename);
@chmod($filepath, 0644);
}
}
}
doUpload($HTTP_POST_FILES, 'имя_поля');
doUpload($HTTP_POST_FILES, 'имя_поля', true);
doUpload($HTTP_POST_FILES, 'имя_поля', false, true);
?>

BEATLES
19.09.2005, 12:57
avp, сорри, я админ, а не кодер )))
http://www.apache.ru/docs/ мануалы по апачу ))

Anonymous
19.09.2005, 13:03
Beatles, вот почему ты не кодер??!!))
Блин, я вчера весь вечер убила за чтением этих мануалов. Везде одно и то же. и нет нужного. почитаю ещё твою ссылку.

BEATLES
19.09.2005, 13:11
avp, я не кодер патамушта я админ и железкин ))))

Anonymous
19.09.2005, 13:13
Beatles, что тоже очень радует))

Lord of rings
19.09.2005, 13:21
Мне конечно на трезвую голову облом разбирать приведенный скриптец, но стоит ли в файле конфигурации РНР разрешение аплоада???

file_uploads = On
................................
upload_max_filesize = 2M

Anonymous
19.09.2005, 13:28
Lord of rings, я посмотрю. но застопорилось у меня все на том, что половина кода вылазит на страницу. вот с этого места : if($filesize>$maxsize)...

banzai
19.09.2005, 14:35
avp, что-то я не узрел, где у тебя filesize определяется

Anonymous
19.09.2005, 14:56
banzai, я тоже.. не узрела :D :D :D

Lord of rings
19.09.2005, 18:48
В одном моем проекте аплоад используется и помню - никаких заморочек не было. Будет время - может найду в скрипте требуемый фрагмент. Только это.... тут бы пиво не помешало (шутка)

Anonymous
19.09.2005, 21:16
Lord of rings, :D ну пиво, так пиво))

cryo
20.09.2005, 10:51
Гугль на запрос "php upload form" выдал больше 3 млн ссылок :)
Какую-то из них и я использовал для своих задач, правда, очень узкоспециальных, так что тебе не подойдет.
А из общих решений вот одно из самых коротких:

<form enctype="multipart/form-data" action="upload.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
Choose a file to upload&#58; <input name="userfile" type="file" />
<input type="submit" value="Upload File" />
</form>

<?php
$uploadDir = '/var/www/uploads/';
$uploadFile = $uploadDir . $_FILES&#91;'userfile'&#93;&#91;'name'&#93;;
print "<pre>";
if &#40;move_uploaded_file&#40;$_FILES&#91;'userfile'&#93;&#91;'tmp_name' &#93;, $uploadFile&#41;&#41;
&#123;
print "File is valid, and was successfully uploaded. ";
print "Here's some more debugging info&#58;\n";
print_r&#40;$_FILES&#41;;
&#125;
else
&#123;
print "Possible file upload attack! Here's some debugging info&#58;\n";
print_r&#40;$_FILES&#41;;
&#125;
print "</pre>";
?>

Перед move_uploaded_file вставь свои проверки, но суть оставь.
А то, что ты привела - какая-то каша из разных частей. Из формы передается MAX_FILE_SIZE, но в функции у тебя используется своя переменная
$maxsize=2000000;
Вместо
$filename=$FVARS&#91;$field_name&#93;&#91;'size'&#93;; должно быть
$filesize=$FVARS&#91;$field_name&#93;&#91;'size'&#93;;
Дальше, в фрагменте
$filename = ereg_replace&#40;"&#91;^a-z0-9._&#93;", "",
str_replace&#40;" ", "_",
str_replace&#40;"%20", "_", strtolower&#40;$name&#41;&#41;&#41;&#41;;
не определена переменная $name, хотя бы замени ее на $filename.
И т.д...
Проще все-таки взять за основу рабочий скелет, что я привел, и аккуратно добавить туда нужные проверки.

Anonymous
20.09.2005, 11:51
cryo, спасибо!