PHP Upload и права доступа на хостинге

Transa

Новичок
PHP Upload и права доступа на хостинге

Привет!

Я уже совсем задолбался самостоятельно решить следующую проблему: не работает upload файлов через PHP скрипт на сервер.

Первое что пришло в голову - выключена возможность upload в php.ini. Оказывается на хостинге несколько этих php.ini в разных каталогах, в одном из них поменял значение параметра на "On". То есть теоретически, должно все начать аккуратно работать. Но нет! Нифига.

Вторая тема - наверное каталог, куда сначала записывается файл, не разрешен на запись. Дак вот что это за каталог я не знаю. Помогите. Права на /tmp я установил 777. Не помогло.

Как мне наконец решить проблему?
Хостинг virtual dedicated server.

Заранее спасибо всем ответившим!
 

Сергей123

Новичок
Я бы начал не с лечения всего, что может мешать upload'у, а с лечения того, что действительно мешает. Как определил, что не upload'ится? Текст ошибки - сюда.
 

Transa

Новичок
=) да...

Ну я проверяю содержимое $HTTP_POST_FILES['filename']['tmp_dir'] - пусто. Ноль вообще.
 

Transa

Новичок
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 "Possible file upload attack! Дополнительная отладочная информация:\n";
print_r($_FILES);
}

print_r($_FILES) - ничего не выдает.
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile) - не выполняется, потому что $_FILES['userfile']['tmp_name'] - пусто.

с "tmp_dir" ошибся.
 

Фанат

oncle terrible
Команда форума
Первое что пришло в голову - выключена возможность upload в php.ini.
Вторая тема - наверное каталог, куда сначала записывается файл
для начала посмотри результаты этих своих телодвижений в phpinfo()
то, что ты писал - это одно, а то, что есть на самом деле - это другое.
 

Transa

Новичок
<form action='index.php' method='POST' enctype='multipart/form-data'>
<input name='scorefile' type='file' class='InputField'>
<input type='submit' value='Send Scores' class='SubmitButton'></form>

Да, multipart/form-data.

phpinfo() посмотрю.

Спасибо за ответы!
 

Сергей123

Новичок
Удобно...
name='scorefile'
а смотришь в 'userfile'

-~{}~ 29.09.05 17:37:


:) надо в мане сменить это на что-то новое или note сделать :)
 

Transa

Новичок
Да нет же. Тут кусок кода реальный, а в первом сообщении - навскидку. Естественно, что проверяю тоже scorefile.
 

Transa

Новичок
Всем спасибо! Заработало =)

Как решил:

1. Было отключено upload files в php.ini. Я сделал "On".
2. Вместо $HTTP_POST_FILES использую $_FILES.
3. Вместо $_FILES["scoreFile"]["tmp_name"] делаю $_FILES["scorefile"]["tmp_name"]. То есть регистр здесь важен.
 

Feonis

Guest
Помогите, кто знает как. У меня Apache работает под своим пользователем и группой. У всех файлов пользователей выставляется свой владелец за счёт SUIDDIR, все файлы пользователей принадлежат группе apache. Все файлы, которые создаются PHP имеют необходимые права 660, как и указано в umask 007 при запуске. Однако при аплоаде файлов на сервер файл почему-то получает права 0600, т.е. как будь-то в этом случае umask 077. Это происходит ещё на стадии помещения файла во временную папку при загрузке на сервер.
Естественно Apache потом ничего с закачанным файлом сделать не может, пока владелец скрипта не зайдёт по FTP и не подправит права доступа на свой файл.
 
Сверху