IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   Помогите настроить скрипт PHP FXP (http://www.imho.ws/showthread.php?t=70856)

Madchild 12.10.2004 19:24

Помогите настроить скрипт PHP FXP
 
Сам скрипт скачать можно здесь:
http://fxp.harrym.nu/phpfxp/index.php (версия 3)

Сделал все, как указано в readme.txt
Прописал вроде все пути в config.inc.php, положил папку в /httpdocs/ а скрипт при попытке скачки файла с другого сервера выдает ошибку:

Цитата:

Warning: file(): open_basedir restriction in effect. File(/phpfxp/data/source.txt) is not within the allowed path(s): (/home/httpd/vhosts/*****.ru/httpdocs:/tmp) in /home/httpd/vhosts/*****.ru/httpdocs/phpfxp/index.php on line 95

Warning: file(/phpfxp/data/source.txt): failed to open stream: Operation not permitted in /home/httpd/vhosts/*****.ru/httpdocs/phpfxp/index.php on line 95
All files transfered!
И что ему не хватает?
Кстати, а папки /tmp на сервере нет...

Зы. Может не стоит с этим скриптом возится? есть ли что-нить попроще из Site to site transfer на PHP?

Sheryld 13.10.2004 10:45

дык сделай:)

Hubbitus 13.10.2004 12:52

Цитата:

Madchild:
И что ему не хватает?
Соответственно ему не хватает файла /phpfxp/data/source.txt посмотри чтобы он был в каталоге скрипта с учетом твоих настроек путей.

Sheryld 13.10.2004 16:26

закачка на php:

там скорее всего функция copy стоит(или move, move_upload_files, etc). они перемещаюти файл из временной директории в то место на сайте, куда нужно закачать файлы.

сначала происходит закачка, файл помещается во временную папку(вся инфа записывается в $HTTP_POST_FILES - ошибки, путь и т.д.). далее нужно проверять нет ли ошибок, и если все ок, то перемещаем файл из временной папки в нашу, попутно заменив имя.

у тебя скорее всего происходит ошибка, либо напутал с директориями, хотя странно, т.к. путь берется из массива $HTTP_POST_FILES , а путь в нем заполнится только после удачной закачки(по-моему). возможно у тебя просто не определена временная директория или ее нету на том месте, где она должна быть(исходя из конфигуации).

вот что я имею ввиду:

Код:

foreach ($HTTP_POST_FILES as $file)
                        {
                                for($i=0;$i<count($file['error']);$i++)
                                {
                                        if ($file['error'][$i] == 0)
                                        {
                                                sleep(1);
                                                $path = $DOCUMENT_ROOT . "/news_foto/" . $newsItemPath;
                                                                                                                                                                                       
                                                $fileName = time() . $file['name'][$i];
                                                $destFile = $path . $fileName;       
                                               
                                                echo $file['tmp_name'][$i];       
                                                if (copy($file['tmp_name'][$i],$destFile))
                                                {
                                                        $nfObj = new Foto();
                                                        if ($nfObj->SetItem($newsSet->newsItem['id'],
                                                                "news_foto/" . $newsItemPath . $fileName) == 0)
                                                        {
                                                                echo "Файл " . $destFile . " сохранен.<BR>";
                                                        }
                                                }
                                                else
                                                {
                                                        echo "Не могу закачать фотографию.<BR>";
                                                }
                                        }
                                        else
                                        {
                                                echo "Не могу закачать фотографию. Код ошибки:" . $file['error'][$i] . "<BR>";
                                        }
                                }
                               
                        }


Madchild 13.10.2004 22:06

Цитата:

Сообщение от Hubbitus
Соответственно ему не хватает файла /phpfxp/data/source.txt посмотри чтобы он был в каталоге скрипта с учетом твоих настроек путей.

Есть такой файл.

Цитата:

Сообщение от Sheryld
там скорее всего функция copy стоит(или move, move_upload_files, etc). они перемещаюти файл из временной директории в то место на сайте, куда нужно закачать файлы.

сначала происходит закачка, файл помещается во временную папку(вся инфа записывается в $HTTP_POST_FILES - ошибки, путь и т.д.). далее нужно проверять нет ли ошибок, и если все ок, то перемещаем файл из временной папки в нашу, попутно заменив имя.

у тебя скорее всего происходит ошибка, либо напутал с директориями, хотя странно, т.к. путь берется из массива $HTTP_POST_FILES , а путь в нем заполнится только после удачной закачки(по-моему). возможно у тебя просто не определена временная директория или ее нету на том месте, где она должна быть(исходя из конфигуации).

Что-то очень сложно для меня. попробовать создать временную директорию?
С путями вроде ошибиться не мог, там настроек всего-ничего:
Цитата:

//General
$mirrordir=false;

//URL
$url="http://www.*****.ru";
$path="/phpfxp/";

$storepath=$path."store/"; //777

$datapath=$path."data/";

Madchild 13.10.2004 23:20

Создал папку tmp в httpdocs - тоже самое. :(
Кстати, вот что пишется в access_log

Цитата:

[13/Oct/2004:23:10:54 +0400] "GET /phpfxp/index.php HTTP/1.1" 200 2108 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)"
[13/Oct/2004:23:11:02 +0400] "POST /phpfxp/index.php?action=transfer&next=0 HTTP/1.1" 200 907 "http://www.*****.ru/phpfxp/index.php" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)"
Больше ничего...
Пытался скачать обычный exe файл, выбранный наугад из сети. Через IE он качается. :)

Hubbitus 14.10.2004 11:11

Цитата:

Madchild:
Есть такой файл.
Файл-то может и есть, только вот скрипт его найти и подключить не может. Проверь еще права на него.

Цитата:

Madchild:
Создал папку tmp в httpdocs - тоже самое.
Директория /tmp должна быть не в httpdocs а в корне сервера и в нее должны быть права на запись скрипту.

Дак и чего ты привел логи доступа, лучше логи ошибок посмотри.

V0iD 14.10.2004 11:27

Судя по сообщению об ошибке:

Warning: file(): действуют open_basedir ограничения. Файл(/phpfxp/data/source.txt) не находится в разрешенной дире: (/home/httpd/vhosts/*****.ru/httpdocs:/tmp)...

разрешенный дир для выполнения функции у тебя две - "/home/httpd/vhosts/*****.ru/httpdocs" и "/tmp".

Из readme (одно из требований):
"- safe modus should be off" - php сэйф мод должен быть вырублен.

Hubbitus 14.10.2004 15:52

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

Может ты не выставил права на файлы как требуется в Ридми? Там прочитай, написано что на директорию "store" права должны быть 0777 и на ВСЕ файлы в директории "data" - 0777. Это кстати очень важно, видимо поэтому у тебя скрипт и не может прочитать файл data/source.txt т.к. на него поумолчанию почему-то права стоят 0644...

Madchild 14.10.2004 22:21

Hubbitus
Все права так и настроены. В корне есть tmp директория. Права на нее - 1777.
В error_log вообще ничего, относящегося к скрипту, нет. :( Поэтому и выдал что есть. :)
Цитата:

V0iD:
Из readme (одно из требований):
"- safe modus should be off" - php сэйф мод должен быть вырублен.
А это что за зверь? Может дело в нем? Где его вырубать?

Hubbitus 15.10.2004 02:31

Цитата:

Сообщение от Madchild
А это что за зверь? Может дело в нем? Где его вырубать?

Если сервер свой, то можно убедиться что в файле php.ini написано safe_mode = Off

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

Madchild 15.10.2004 02:41

Hubbitus
Хостинг платный. А где обычно этот php.ini лежит? Видать, все дело в нем.

Hubbitus 15.10.2004 02:57

Если шаред-хостинг (а не выделенный сервер) и также не отдельный Апач на аккаунте (обычно так на достаточно больших тарифах только) то соответственно скорее всего изменить php.ini нельзя. Если сервер выделенный то он тоже может быть в разных местах (как настроить), но поумолчанию обычно он лежит в /etc/php.ini или /usr/local/etc/php.ini

Посмотреть точно где он есть, можно запустив ПХП-файлик с одной строкой
<?php phpifo() ?> и найдя параметр "Configuration File (php.ini) Path"

Madchild 15.10.2004 03:09

Да, точно. phpinfo выдает safe-mode' '--enable
Да и путь... Явно не у меня лежит. :(

А есть скрипты для пересылки файлов с сервера на сервер, для которых не критично включение safe-mode?

Хотя нет, в Configuration PHP Core написано:
Directive ----------------Local Value ----Master Value
safe_mode------------------Off-------------Off
safe_mode_exec_dir ------no value --------no value
safe_mode_gid -------------Off -------------Off
safe_mode_include_dir-----no value --------no value

или я вообще не там смотрю?

Hubbitus 15.10.2004 19:43

Цитата:

Madchild:
Directive ----------------Local Value ----Master Value
safe_mode------------------Off-------------Off
Значит он выключен радуйся.

Кажись понял (и как я сразу не заметил :p ) в переменной $path нужно указывать полный локальный путь, от корня сервера!!! (у тебя это будет скорее всего /home/httpd/vhosts/*****.ru/httpdocs/phpfxp/)

Madchild 15.10.2004 21:18

Исправил. Прогрес есть. :) Теперь вот что выдает:

Цитата:

ftp://ftp.kaspersky.com/beta/kavpers...n.exe/a.zipftp
Warning: ftp_mkdir(): /beta/kavpersonal/english/kav5.0mp2beta_personalen.exe: permission denied in /home/httpd/vhosts/*****.ru/httpdocs/phpfxp/functions.inc.php on line 256

Warning: ftp_chdir(): /beta/kavpersonal/english/kav5.0mp2beta_personalen.exe: Not a directory. in /home/httpd/vhosts/*****.ru/httpdocs/phpfxp/functions.inc.php on line 261

Warning: ftp_put(): 'STOR': command not understood. in /home/httpd/vhosts/*****.ru/httpdocs/phpfxp/functions.inc.php on line 270

Warning: unlink(/home/httpd/vhosts/*****.ru/httpdocs/phpfxp/store/): Is a directory in /home/httpd/vhosts/*****.ru/httpdocs/phpfxp/functions.inc.php on line 321
Successfully connected to ftp://ftp.kaspersky.com/beta/kavpersonal/english/kav5.0mp2beta_personalen.exe/a.zip!
Error while changing pasive mode!
Successfully logged in!
Error while changing directory to /beta/kavpersonal/english/kav5.0mp2beta_personalen.exe!
Error while uploading file !
Successfully closed ftp session!
Error while deleting temporary file!
Отображает это сообщение около секунды, а потом перегружает страницу с надписью All files transfered!
Самих файлов в папке store, естественно, нет. :(

Короче, ссылка-источник записывается в /data/source.txt - это уже прогресс. :)
А что вообще надо в поле Destination server записывать, если я хочу к себе на сервер скачать? Может я просто что-нить не то делаю... Ну, руки кривые и все такое. :)

Hubbitus 16.10.2004 13:48

Смысл всех этих ошибок в том что он не смог создать директорию на твоем Destination server, тоесть скорее всего нету прав на запись по указанным логину/паролю/адресу.

В Destination server соответственно нужно писать куда ты хочешь все положить с того сервера откуда качаешь...
Цитата:

Madchild:
А что вообще надо в поле Destination server записывать, если я хочу к себе на сервер скачать?
Слушай, а если ты на тотже сервер качаешь, с которого и скрипт запускаешь, зачем такой изврат с этим скриптом? Просто скачай wget'ом и все, ну приблизительно так:
wget -c ftp://ftp.kaspersky.com/beta/kavpers...personalen.exe

P.S. И вообще, я посмотрел, скрипт может конечно и работает этот, но он жутко кривой...

Madchild 18.10.2004 01:13

Хех, скрипт то работает, вот только не так, как надо. Пока я пробовал так и эдак, втихаря закачал ко мне на комп около 550 мегов сам-незнаю-чего... (больше некому) Короче, сожрал весь предоплаченный трафик за пол месяца. :( Я, немного, в шоке. Надо-ж так лохануться... :( Теперь это скрипт - враг номер 1! :)

Цитата:

Слушай, а если ты на тотже сервер качаешь, с которого и скрипт запускаешь, зачем такой изврат с этим скриптом? Просто скачай wget'ом и все
wget тоже надо на сервер устанавливать, или он с моей машины работать будет? Я пробовал перекачивать файлы с помощью FlashFXP и SmartFTP - ничего не выходит.

V0iD 18.10.2004 11:19

Цитата:

Madchild:
wget тоже надо на сервер устанавливать, или он с моей машины работать будет?
Скорее всего, wget уже есть на сервере. Если нет - можно погемориться (если есть шелл-доступ) и установить его в "/home/...".
Закачивать файлы можно используя шелл-доступ или написав небольшой скрипт-оболочку к wget'у...

Hubbitus 18.10.2004 14:01

Вложений: 1
Действительно, wget обычно установлен на большинстве хостингов, только не на всех есть к нему доступ...

Использовать его можно как имея SSH, так и из ВЕБ-шелла из 10 строчек, если нужно можешь скачать, простейший вариант шелла в аттаче, дальше просто заливаешь его себе на сервер и из него запускаешь комманду для скачивания wget'ом, как я писал раньше: wget -c URL...

Madchild 18.10.2004 21:22

Вот, блин. Как все просто. И ничего настраивать ненадо. Что-бы это узнать, мне понадобилась неделя и пол лимита трафика на месяц. :)

Hubbitus
Все замечательно работает! Спасиб огромный! :)
Надо было еще права на папку, где этот exec.php установить на запись, правильно? А то wget ругается. :) Буду теперь wget изучать. Судя по беглому поиску на Imho.ws и на яндексе, это очень мощная штука.

Hubbitus 19.10.2004 13:29

Ну ничего не делается сразу и всегда требует усилий и затрат :)

Наздоровье.

Да права на запись конечно нужны.
wget очень мощная штука, почитать о его параметрах ты можешь в МАНе (в том шелле выполни man wget)

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

n0n 21.10.2004 22:30

Существует еще вот таклй скриптик _http://soft.xyzsite.ru/lorex.html?l=rus
Его работа полностью опирается на wget ... только вот стоит он дороговато.

Madchild 05.09.2005 22:47

Опять назрела проблема. Давненько не пользовался этим шелом, теперь на команду
wget -c ссылка
выдает вот какую дребидень:
Цитата:

/bin/bash: /root/.bashrc: Permission denied
Это что, хостер мне что-то прикрыл? Или у меня руки кривые? :idontnow:

Hubbitus 07.09.2005 00:32

Цитата:

Madchild:
Это что, хостер мне что-то прикрыл? Или у меня руки кривые? :idontnow:
Вообще-то странная ошибка. А только это выводится, ничего больше нету?
Приведите вывод комманды which wget

Madchild 07.09.2005 01:05

Цитата:

Hubbitus:
Приведите вывод комманды which wget
/usr/bin/wget

Цитата:

Madchild:
А только это выводится, ничего больше нету?
Больше ничего. :(

Hubbitus 07.09.2005 09:54

Цитата:

Madchild:
/usr/bin/wget
Тогда попробуйте указать полный путь при вызове, так:
/usr/bin/wget -c URL
возможно он просто алиасов не может найти, приведите ответ, если не работает, может хоть сообщение об ошибке будет более вразумительное.

Если не работает всеравно, и действительно хостер запретил пользователям хостинга использовать wget, то есть вариант полохить свой wget, статически скомпилированный в домашнюю директорию и использовать его. Я так делал на одном хостинге. Тогда скажите какая операционка на сервере, версия ее, желательно подробнее (команды: uname - a, cat /proc/version)

Madchild 07.09.2005 16:21

Цитата:

Hubbitus:
Тогда попробуйте указать полный путь при вызове, так:
/usr/bin/wget -c URL
возможно он просто алиасов не может найти, приведите ответ, если не работает,
Ответ тот-же
/bin/bash: /root/.bashrc: Permission denied :(
Цитата:

Hubbitus:
команды: uname - a, cat /proc/version
Отвечает
uname: invalid option -- ,
Try `uname --help' for more information.


А если ввести uname -a
Linux plesk11.at99.ru 2.4.20-021stab022.10.777-smp #1 SMP Mon Jan 10 12:56:27 MSK 2005 i686 i686 i386 GNU/Linux

Hubbitus 07.09.2005 18:29

Цитата:

Madchild:
А если ввести uname -a
Именно так, пробел это форум вставил почему-то :(
И еще бы хорошо cat /proc/version

И еще, по ошибке вдруг пришла такая догадка, а не что-то вроде VDS (виртуальный выделенный сервер) у вас, тоесть вы случано не имеете доступ туда пользователем root???

Если нет, то попоробуйте скачать вот этот файлик http://bil.net.ru/wget , положить его к себе на хостинг, в ту же директорию где лежит файл веб-шелла (насколько я понимаю именно им пользуетесь), и выполнить пробуем уже следующую комманду:
Код:

./wget -c URL
Вывод сюда, если не заработало.

Этот файл я компилировал именно для этих целей, компилировал на шапке, проверял на Дебиане, поэтому никаких гарантий что он будет работать на вашем дистрибутиве дать не могу (темболее без cat /proc/version даже не понятно какой у Вас :) )

Madchild 07.09.2005 18:36

Цитата:

Hubbitus:
cat /proc/version
А, так это отдельная команда... Я думал какой-нить аргумент для uname -a.
Так вот, что выдает:
Linux version 2.4.20-021stab022.10.777-smp (st@kbuild26.eng.sw.ru) (gcc version 2.96 20000731 (Red Hat Linux 7.3 2.96-110)) #1 SMP Mon Jan 10 12:56:27 MSK 2005
Цитата:

Hubbitus:
а не что-то вроде VDS (виртуальный выделенный сервер) у вас, тоесть вы случано не имеете доступ туда пользователем root???
Да я в этом как-то и не рабираюсь. Какой там сервер. :) Оплатил на год хостинг и пользуюсь. Покупал здесь: at99.ru
Цитата:

Hubbitus:
попоробуйте скачать вот этот файлик
Попробовал:
sh: line 1: ./wget: Permission denied

Hubbitus 08.09.2005 11:15

Цитата:

Madchild:
Да я в этом как-то и не рабираюсь. Какой там сервер. :) Оплатил на год хостинг и пользуюсь. Покупал здесь: at99.ru
В этом вопросе было главным последняя часть :) - пользователем логинетесь случаное не root?

Цитата:

Madchild:
Попробовал:
sh: line 1: ./wget: Permission denied
Это уже лучше!
Попробуйте выполнить
chmod 0777 wget
А потом снова попробуйте.

Madchild 08.09.2005 18:46

Цитата:

Hubbitus:
пользователем логинетесь случаное не root?
Нет, логин именем.
Цитата:

Hubbitus:
chmod 0777 wget
Ответ:
chmod: changing permissions of `wget': Operation not permitted

Сменил права wget через панель управления plesk.
Цитата:

Hubbitus:
А потом снова попробуйте.
Теперь все заработало. :yees:
И что-же это было? Хотелось бы прояснить.

Hubbitus 09.09.2005 14:50

Цитата:

Madchild:
И что-же это было? Хотелось бы прояснить.
Что было в самом начале не совсем ясно. Что было потом: Прав на использование wget на вашем хостинге у Вас не было, видимо какраз хостер запретил. Я Вам дал собственно скомпилированную версию wget который Вы скачали и положили на свой хостинг, при переносе получился другой пользователь естественно, и пока не сменили права, он не хотел запускаться. Теперь я так понял все нормально.


Часовой пояс GMT +4, время: 02:45.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.