Как настроить Apache на Upload?
|
Как настроить Apache на Upload?
А можно как-то поподробнее вопрос изложить???
Per rectum ad astrum!
Ну вот стоит на одном компе Apache. С другого компа хотят положить на комп, где он стоит, файлик) Чего и где надо написать, что бы он работал не только в одну сторону(только скачать)?
или если кто может, найдите тут ошибку пож. не могу найти :?
<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);
?>
avp, сорри, я админ, а не кодер )))
http://www.apache.ru/docs/ мануалы по апачу ))
Не ищите злого умысла в том, что вполне объяснимо глупостью.
Beatles, вот почему ты не кодер??!!))
Блин, я вчера весь вечер убила за чтением этих мануалов. Везде одно и то же. и нет нужного. почитаю ещё твою ссылку.
avp, я не кодер патамушта я админ и железкин ))))
Не ищите злого умысла в том, что вполне объяснимо глупостью.
Beatles, что тоже очень радует))
Мне конечно на трезвую голову облом разбирать приведенный скриптец, но стоит ли в файле конфигурации РНР разрешение аплоада???
file_uploads = On
................................
upload_max_filesize = 2M
Per rectum ad astrum!
Lord of rings, я посмотрю. но застопорилось у меня все на том, что половина кода вылазит на страницу. вот с этого места : if($filesize>$maxsize)...
avp, что-то я не узрел, где у тебя filesize определяется
Не опохмелившись - не приступай к работе!
banzai, я тоже.. не узрела
В одном моем проекте аплоад используется и помню - никаких заморочек не было. Будет время - может найду в скрипте требуемый фрагмент. Только это.... тут бы пиво не помешало (шутка)
Per rectum ad astrum!
Lord of rings, ну пиво, так пиво))
Гугль на запрос "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: <input name="userfile" type="file" /> <input type="submit" value="Upload File" /> </form>Перед move_uploaded_file вставь свои проверки, но суть оставь.Код:<?php $uploadDir = '/var/www/uploads/'; $uploadFile = $uploadDir . $_FILES['userfile']['name']; print "<pre>"; if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadFile)) { print "File is valid, and was successfully uploaded. "; print "Here's some more debugging info:\n"; print_r($_FILES); } else { print "Possible file upload attack! Here's some debugging info:\n"; print_r($_FILES); } print "</pre>"; ?>
А то, что ты привела - какая-то каша из разных частей. Из формы передается MAX_FILE_SIZE, но в функции у тебя используется своя переменнаяВместоКод:$maxsize=2000000;должно бытьКод:$filename=$FVARS[$field_name]['size'];Дальше, в фрагментеКод:$filesize=$FVARS[$field_name]['size'];не определена переменная $name, хотя бы замени ее на $filename.Код:$filename = ereg_replace("[^a-z0-9._]", "", str_replace(" ", "_", str_replace("%20", "_", strtolower($name))));
И т.д...
Проще все-таки взять за основу рабочий скелет, что я привел, и аккуратно добавить туда нужные проверки.
cryo, спасибо!
Социальные закладки