не работает загрузка файлов на сервер

Статус
В этой теме нельзя размещать новые ответы.

djubas

Новичок
не работает загрузка файлов на сервер

приветствую всех.

программа рабочая

Array ( [myfile] => Array ( [name] => 01.jpg [type] => image/jpeg

[tmp_name] => Z:\tmp\php479.tmp

[error] => 0 [size] => 171877 ) )

не создается временный файл на сервере.

в php.ini установки заданы.
где еще смотреть. и как в апаче посмотреть или назначить права записи к определенной директории
 

DiMA

php.spb.ru
Команда форума
покажи phpinfo()
и как ты определил, что файл не создается?

Права в винде раздает не апач. Смотря о чем ты:
1. либо организация доступа к файлам путем их чтения на пхп
2. либо права на диск NTFS для юзера апача/пхп.
 

djubas

Новичок
короче говоря, когда функцию вызываешь move_uploaded_file($myfile, "../../public/");
говорит не найден файл не могу перенести.
и когда в фаре смотришь в папке, там же все равно должен мелькать фаил тмп. даже если не мелькает , то не создается.

а разве в апаче не указывается в какие папки могут записывать пользователи файлы? а иначе любой куда попало сможет файлы распихивать. главное команда mkdir у меня работает. а файл не работает.
 

DiMA

php.spb.ru
Команда форума
покажи код перед move_uploaded_file
и без убогих обрезок
+print_r($_FILES)
 

djubas

Новичок
файл индекс.php
head('главная');
echo '<form enctype="multipart/form-data" action="../../office/adv/upload.php" method="POST" >
<input type="hidden" name="MAX_FILE_SIZE" value="100000">
<input type="file" name="myfile">
<input type="submit" value="Загрузить файл">
</form>';
footer();

файл upload.pho
session_start();
is_logged();

head();


print_r($_FILES); // смотрел просто что в массиве имеется

//echo 'vaska = '.$_FILES['myfile'][tmp_name].'<br>';

$myfile=$_FILES['myfile']['tmp_name'];
$myfile_name=$_FILES['myfile']['name'];
$myfile_size=$_FILES['myfile']['size'];
$myfile_type=$_FILES['myfile']['type'];
$myfile_error=$_FILES['myfile']['error'];
if($myfile_error>0)
{
echo 'you have got a problemm son...';
switch($myfile_error)
{
case 1: echo 'file is longer than upload_max_filesize'; break;
case 2: echo 'file is too fat'; break;
case 3: echo 'only a part of file uploaded on server'; break;
case 4: echo 'file is not uploaded'; break;
}
}

move_uploaded_file($myfile, "../../public_org_data/");

классический пример взял с чужого сайта

картинки вообще лучше хранить на сервере в папках или в базе данных?
если к примеру пользователей 2-3 тыщи и каждый закачивает по 2-3 картинки в районе 50-200 кб каждая?

думаю в своей папке www/public_org_data/ создать каждому пользователю по папке при регистрации и чтобы туда он заливал свои картинки. а в базе хранить ссылки на файлы.
правильный ли подход или классически по другому делают?
и как к примеру ограничить доступ каждого пользователя к остальным папкам. чтобы не лазал куда не следует.
 

djubas

Новичок
я так понимаю, после того как произошла отправка данных из формы и при помощи enctype="multipart/form-data" сразу файл загружается на сервер в промежуточную папку. потом с файлом временным делаешь, что требуется. в нашем случае надо записать файл в папку public_org_data. но поскольку файл не создается, он ничего и не записывает.

пишет
Warning: move_uploaded_file(../../public_org_data/) [function.move-uploaded-file]: failed to open stream: No such file or directory in Z:\home\test.ru\www\office\adv\upload.php on line 76

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'Z:\tmp\php4A3.tmp' to '../../public_org_data/' in Z:\home\test.ru\www\office\adv\upload.php on line 76

-~{}~ 18.12.08 21:17:

array(1) { ["myfile"]=> array(5) { ["name"]=> string(11) "001Tude.jpg" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(17) "Z:\tmp\php4A4.tmp" ["error"]=> int(0) ["size"]=> int(37603) } }

я такую функцию не знал. сижу изголяюсь.

-~{}~ 18.12.08 21:20:

а за информэйшен по ошибкам рахмет. однакож показывает ["error"]=> int(0)
 

dimagolov

Новичок
djubas, ты читать сообщения об ошибках не пробовал? там же однозначно написано, в чем проблема. прочти и пойми, потом исправь свой код.

-~{}~ 18.12.08 14:22:

да, тебе сюда: http://phpfaq.ru/path
 

Фанат

oncle terrible
Команда форума
djubas, вторым параметром функции что надо указывать? а у тебя что?

-~{}~ 18.12.08 21:24:

как к примеру ограничить доступ каждого пользователя к остальным папкам.
а что это за файлы? пользователь их только для себя закачивает, типа жесткого диска онлайн?
 

djubas

Новичок
нет это картинки по типу как описания товаров и подобная весчь.

вторым параметром указать куда записать. по ходу с путями запутался. но вроде папку то я правильно указываю назначение.

mkdir('../../public_org_data/asd/');

эта функция работает и папка asd создается где требуется
 

Фанат

oncle terrible
Команда форума
Конкретнее.
не "куда записать", а что конкретно должно быть во втором параметре. в компьютерных терминах, желательно, а не девочковых.
 

djubas

Новичок
переменная типа string , блин оказывается имя файла, а не папка куда записать. ебанзи.

-~{}~ 18.12.08 21:46:

все заработало, что бы без вас делал хз. спасибо уважаемые господа.

так а что там с правами и хранением изображений в базе или на диске?
 

Фанат

oncle terrible
Команда форума
если это информация о товаре, то обычно принимаются меры к тому, чтобы её смогло увидеть как можно больше народу, а не к тому, чтобы скрыть ото всех, кроме владельца.
 

djubas

Новичок
но bool move_uploaded_file ( string filename, string destination )
по человечески если думать, filename - имя файла, destination - назначение. типа путь. двояко.
эх. люблю я программировать. хороший кстати говоря форум у вас. а то один кон где-то интересовался по аяксу где-то и все равно пришлось самому осваивать.

-~{}~ 18.12.08 21:57:

Автор оригинала: *****
если это информация о товаре, то обычно принимаются меры к тому, чтобы её смогло увидеть как можно больше народу, а не к тому, чтобы скрыть ото всех, кроме владельца.
я говорю не то чтобы скрыть от всех. а то, чтобы он имел право записи в свою сессию, только в свою папку, а не куда кто-то пожелает.
а смотреть по идее тоже надо не просто так, а через определенные страницы.

если к примеру у вас имеется zzz.com/pic/
в броузере выводишь. там список файлов имеющихся в папке. уже нехорошо.
если добавишь в папку index.html
<body>
zdes ni4ego net
</body>

уже лучше. вот я о чем
 

Фанат

oncle terrible
Команда форума
не понял.
ты спрашиваешь, как сделать так, чтобы юзер не мог залезть в файл upload.php и отредактировать его? Не давать юзерам пароль на фтп.
 

djubas

Новичок
короче говоря есть же такое залазишь в папку в каком нить сайте а там пишут you have not permission to ... i td i tp.
как это делается?
 

DiMA

php.spb.ru
Команда форума
файл: .htaccess

содержимое:

Order Allow,Deny
Allow from 1.2.3.4

Всем, кроме твоего ип 1.2.3.4 будет отказано в доступе.
 

Фанат

oncle terrible
Команда форума
Дубас.
никогда не спрашивай, как оно сделано, если не знаешь - зачем.
Еще вопросы будут?
 

x-yuri

Новичок
я говорю не то чтобы скрыть от всех. а то, чтобы он имел право записи в свою сессию, только в свою папку, а не куда кто-то пожелает.
единственная возможность загружить файл на сервер у тебя - через скрипт загрузки файлов, если он будет корректно работать, то каждый пользователь будет писать файлы только в свою папку

а смотреть по идее тоже надо не просто так, а через определенные страницы.
если через страницу можно посмотреть файл, то его можно посмотреть и напрямую, введя в строку адреса содержимое атрибута src тэга img

а не давать возможности смотреть список файлов директории - это уже другой вопрос: в .htaccess надо написать "Options -Indexes". И лучше сделать это в корне сайта, а создавать файлы типа
<body>
zdes ni4ego net
</body>
имеет смысл, если ты не можешь управлять настройками через .htaccess
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху