Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP: Закачка файлов на сервер. mkdir

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2

Открыть новую тему     Написать ответ в эту тему

SafeWay



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Есть папка, созданная скриптом, потом  
                     mkdir(ROOT_PATH.'/html/gallery/original/'.$id);
                     chmod(ROOT_PATH.'/html/gallery/original/'.$id, 0777);
Потом в эту папку этот же скрипт переносит файлы, однако при включенном сайф моде это не работает.  
 
 В мануале нашёл только 1 вариант: через фтп. ftp_mkdir.
 Вопросы:
 1) Можно ли обойтись без этого.
 2) Если нет, то будет ли это работать. (ftp_mkdir)
 3) Насколько ftp_mkdir проигрывает mkdir в скорости, если проигрывает вообще.
 
 Спасибо.

Всего записей: 365 | Зарегистр. 28-12-2003 | Отправлено: 05:20 17-08-2004
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SafeWay

Цитата:
Потом в эту папку этот же скрипт переносит файлы, однако при включенном сайф моде это не работает.

уверен? какое сообщение?

Цитата:
 В мануале нашёл только 1 вариант: через фтп. ftp_mkdir.  


Цитата:
// so you have a form
<form action="upload.php" method="POST" enctype="multipart/form-data">
File<br>
<input name="userfile" type="file">
<input type="submit" value="Upload">
</form>
// ...
// upload.php
 
$dir = /home/public_html/images // this would be where you want to put the files
 
// create ftp connection
$ftp_conn = ftp_connect('gameology101.com');
 
// logon to the ftp
$ftp_log = ftp_login($ftp_conn, 'user', 'password');
 
// error checking
if (!ftp_conn || !ftp_log)
echo 'There was an error connecting to the ftp';
else  
ftp_put($ftp_conn, $dir . $_FILES['userfile']['name'], $_FILES['userfile']['tmp_name'], FTP_BINARY);
 
ftp_close($ftp_conn);
 
// $_FILES['userfile']['name'] would be the name you want to put in the db  


Цитата:
3) Насколько ftp_mkdir проигрывает mkdir в скорости, если проигрывает вообще.  

Догадайся сам.. когда ты напрямик обращаешься к файловой системе.. или же через ftp протокол к ftp серверу.


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 05:32 17-08-2004
SafeWay



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Cheery
насчёт проигрывания - это явно, код выше - читал в мануале. акцент в вопросе был на слове "насколько"

Всего записей: 365 | Зарегистр. 28-12-2003 | Отправлено: 05:45 17-08-2004
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SafeWay

Цитата:
насчёт проигрывания - это явно, код выше - читал в мануале. акцент в вопросе был на слове "насколько"

ну сам подумай.. зависит от реакции ftp сервера.. его загруженности.
попробуй и узнаешь.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 05:47 17-08-2004
SafeWay



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
SafeWay
1-ый вопрос остаёться в силе.

Всего записей: 365 | Зарегистр. 28-12-2003 | Отправлено: 10:37 17-08-2004
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SafeWay

Цитата:
1-ый вопрос остаёться в силе.

тебе же сказали - приведи точно сообщение, как выглядит об ошибке.. тогда будет на него ответ.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:30 17-08-2004
SafeWay



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Cheery
Ниче не выводит,  
Это в классе:

Код:
 
function uploadIMG(){
         global $filename;
                foreach($_FILES as $key=>$val){
                        if($this->max_file_size>=$_FILES[$key]['size']){
                                if (is_uploaded_file($_FILES[$key]['tmp_name'])){
                                        $filename = time() . $_FILES[$key]['name'];
                                        move_uploaded_file($_FILES[$key]['tmp_name'], $this->directoryname . $filename);
                                        $data_plus[$filename] = $_FILES[$key]+array('desc'=>$_POST[$key.'_desc']);
                                }else{array_push($this->errors, "File not uploadet");}
                        }else{array_push($this->errors, "File size is to big");}
                }
 
        }
 

Всего записей: 365 | Зарегистр. 28-12-2003 | Отправлено: 22:55 17-08-2004
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SafeWay

Цитата:
Потом в эту папку этот же скрипт переносит файлы, однако при включенном сайф моде это не работает.  

тогда было бы сообщение.. если, конечно, не вырублены warning-и..
посмотри массив $_FILES что в нем?

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:59 17-08-2004
SafeWay



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Cheery
В нём содержимое:
$_FILES[$key]['tmp_name'] = /tmp/php5GKWCZ
$_FILES[$key]['name'] = now.jpg
$_FILES[$key]['size'] = 5159
 
у меня стояло error_reporting(4) поставил E_ALL
 
Warning: move_uploaded_file(): SAFE MODE Restriction in effect. The script whose uid is 1088 is not allowed to access /usr/home/bk/public_html/portal/html/gallery/original/10 owned by uid 65534 in /usr/home/bk/public_html/portal/inc/class/class.upload.inc on line 22
 
Notice: Undefined index: up_file_desc in /usr/home/bk/public_html/portal/inc/class/class.upload.inc on line 23
/tmp/phppluJJAnow.jpg5159Cannot read the file!
 
 move_uploaded_file($_FILES[$key]['tmp_name'], $this->directoryname . $filename);
                                        $data_plus[$filename] = $_FILES[$key]+array('desc'=>$_POST[$key.'_desc']);
 
22, 23 соответственно.
 
Добавлено

Цитата:
посмотри массив $_FILES что в нем


Код:
 
array(1)  
 {  
   ["up_file"]=> array(5)  
     {  
          ["name"]=> string(10) "меохус.jpg"  
          ["type"]=> string(11) "image/pjpeg"  
          ["tmp_name"]=> string(14) "/tmp/phplsQqlo"  
          ["error"]=> int(0)  
          ["size"]=> int(29616)  
      }
 }
 

Всего записей: 365 | Зарегистр. 28-12-2003 | Отправлено: 00:09 18-08-2004
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SafeWay

Цитата:
Note: When safe mode is enabled, PHP checks whether the files or directories you are about to operate on have the same UID (owner) as the script that is being executed.
 
Note: move_uploaded_file() is not affected by the normal safe mode UID-restrictions. This is not unsafe because move_uploaded_file() only operates on files uploaded via PHP.  
 

всего лишь дать доступ скрипту временной дире..
если не твой хостинг, то можно еще попробовать copy или rename...

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 00:25 18-08-2004
SafeWay



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Cheery

Цитата:
если не твой хостинг

Не мой, а balthost, при copy -

Код:
 
Warning: copy(): SAFE MODE Restriction in effect. The script whose uid is 1088 is not allowed to access /usr/home/bk/public_html/portal/html/gallery/original/10 owned by uid 65534 in /usr/home/bk/public_html/portal/inc/class/class.upload.inc on line 22
 
Warning: copy(/usr/home/bk/public_html/portal/html/gallery/original/10/1092774437меохус.jpg): failed to open stream: No such file or directory in /usr/home/bk/public_html/portal/inc/class/class.upload.inc on line 22
 
Notice: Undefined index: up_file_desc in /usr/home/bk/public_html/portal/inc/class/class.upload.inc on line 23
Cannot read the file!
 



----------
Hosted by http://www.balthost.ee

Всего записей: 365 | Зарегистр. 28-12-2003 | Отправлено: 00:30 18-08-2004
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SafeWay
дык.. тут траббл в другом.. только сейчас обратил внимание..

Цитата:
Warning: move_uploaded_file(): SAFE MODE Restriction in effect. The script whose uid is 1088 is not allowed to access /usr/home/bk/public_html/portal/html/gallery/original/10 owned by uid 65534 in /usr/home/bk/public_html/portal/inc/class/class.upload.inc on line 22  

вот эта дира

Цитата:
/usr/home/bk/public_html/portal/html/gallery/original/10  

создана кем?? похоже ко временной он имеет доступ, а вот к этой нет.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 00:34 18-08-2004
SafeWay



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Cheery
Она создана этим же скриптом, тока не за 1 "сеанс". методы в первом посте.


----------
Hosted by http://www.balthost.ee

Всего записей: 365 | Зарегистр. 28-12-2003 | Отправлено: 00:54 18-08-2004
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SafeWay

Цитата:
Она создана этим же скриптом, тока не за 1 "сеанс". методы в первом посте.

а вот это уже странно.. владельцем созданной диры является uid 65534, при этом запущенный скрипт обладает uid 1088. хотя он же и создавал диру.
попробуй в одном скрипте создать диру и сразу туда сделать move_uploaded_file.
у одного из хостеров..

Цитата:
В связи с тем, что PHP на сервере работает в safe mode, владельцем создаваемых с помощью php-скриптов файлов является псевдо-юзер nobody, а сами файлы наследуют umask этого пользователя - 0077 (-rwx------), что приводит к невозможности доступа к таким файлам.
Для изменения прав доступа к файлам в PHP есть стандартные функции umask() и chmod().
При использовании umask() необходимо перед использованием функций по созданию/перемещению/копированию/etc. файлов устанавливать, так сказать, "правильный" в данных условиях umask - 0002 (-rwxrwxr-x), тогда фалы будут создаваться с правами на чтение/запись для владельца/группы и только на чтение для всех остальных пользователей. В данном примере использование этой функции будет выглядеть так: umask(0002).  
Также для изменения прав доступа к создаваемому php-скриптом файлу (например, при использовании функции move_uploaded_file() для закачки файлов по http), можно использовать функцию chmod().
Например: chmod(/home/login/path/filename, 0664) (файлу будут присвоены права на запись/чтение для владельца и группы и только на чтение для всех остальных).
 
Также есть ещё одно ограничение safe mode: Вы не сможете записать скриптом файлы в созданную самим же скриптом директорию. Поэтому директории, в которые Вы собираетесь записывать файлы с помощью php-скрипта, необходимо предварительно создать, зайдя на сервер по ftp.
 
Также изменить права доступа к таким файлам можно с помощью cgi-скрипта, написанного на perl либо sh.  
 

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


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 01:14 18-08-2004 | Исправлено: Cheery, 01:19 18-08-2004
SafeWay



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Cheery
Тобеж:
 $same = umask(0002);
  mkdir(ROOT_PATH.'/html/gallery/original/'.$id, 0777);  
  umask($same);
 
А заливать так как есть?

----------
Hosted by http://www.balthost.ee

Всего записей: 365 | Зарегистр. 28-12-2003 | Отправлено: 01:34 18-08-2004
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SafeWay

Цитата:
Тобеж:  
 $same = umask(0002);  
  mkdir(ROOT_PATH.'/html/gallery/original/'.$id, 0777);  
  umask($same);  
 
А заливать так как есть?

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

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 01:44 18-08-2004
SafeWay



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
 $same = umask(0002);  
  mkdir(ROOT_PATH.'/html/gallery/original/'.$id, 0777);  
  umask($same);  

Папка создалась 775

----------
Hosted by http://www.balthost.ee

Всего записей: 365 | Зарегистр. 28-12-2003 | Отправлено: 02:14 18-08-2004
qik



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
написал простую формочку для заливки через нее к себе на сервак картинок, на домашнем компе все хорошо работает, а вот у хостера нет, может просто у меня прав на запись не хватает, или есть какой-то спец протокол у php для работы с ftp по которому нужно залогинется ?
 
так ругается:
Warning: move_uploaded_file() has been disabled for security reasons in /home/.../works/add.php on line 45
 
Warning: fopen(./titles/qwe.gif.dat): failed to open stream: Permission denied in /home/.../works/add.php on line 46

Всего записей: 473 | Зарегистр. 10-01-2004 | Отправлено: 21:41 10-01-2005
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
qik

Цитата:
или есть какой-то спец протокол у php для работы с ftp по которому нужно залогинется ?

чего ?  
при чем тут ftp?
явно написано, что

Цитата:
move_uploaded_file() has been disabled for security reasons

у хостера стоит safe mode и эта функция прописана как запрещенная в конфиге.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:46 10-01-2005
Sindel



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
move_uploaded_file() has been disabled for security reasons

Они бы ещё echo запретили =)
 
SafeWay
К цитате про ограничения в safe mode хочу добавить что также нельзя создать несколько файлов за один раз.
Напиши хостеру чтоб для твоего аккаунта выключили safe mode (они знают как), если не знаю или откажутся, забирай деньги (если есть возможность) и беги от такого хостера. Если мани бэк уже невозможен, то мне жаль, тебя кинули.

Цитата:
1) Можно ли обойтись без этого.
Можно, если только выключить SM, иначе - нельзя.

Цитата:
2) Если нет, то будет ли это работать. (ftp_mkdir)
Будет

Цитата:
3) Насколько ftp_mkdir проигрывает mkdir в скорости, если проигрывает вообще.
А у тебя есть выбор? Разница в скорости должна быть незначительная, при создании одного каталога.

Всего записей: 559 | Зарегистр. 22-08-2002 | Отправлено: 07:33 11-01-2005
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2

Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP: Закачка файлов на сервер. mkdir


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru