Redwind
Новичок
Проблеима с рекурсивной функцией для заливки папки по ftp
Такая задача: необходимо по ftp отправить папку с вложенными папками и файлами. Здесь нашел рекурсивную функцию, но работает она неправильно
При попытки заливки папки на хост в папку $ftproot = "/www/htdocs"; выскакивают ошибки:
При этом заливаются только файлы находящиеся в папке W:/home/localhost/www/files (W:/home/localhost/www/files/qwe.php, W:/home/localhost/www/files/вапвап.php), а вложенные папки не создаются на хосте
Для скрипта переменные выставляю таким образом:
А когда заливаю в папку $ftproot = "/www"; все нормально
Подскажите плиз в чем может быть причина?
Такая задача: необходимо по ftp отправить папку с вложенными папками и файлами. Здесь нашел рекурсивную функцию, но работает она неправильно
При попытки заливки папки на хост в папку $ftproot = "/www/htdocs"; выскакивают ошибки:
PHP:
Warning: ftp_chdir() [function.ftp-chdir]: /www/htdocs/folder/: No such file or directory in w:\home\localhost\www\ftp.php on line 15
Warning: ftp_mkdir() [function.ftp-mkdir]: /www/htdocs/folder/: Disc quota exceeded in w:\home\localhost\www\ftp.php on line 17
Warning: ftp_chdir() [function.ftp-chdir]: /www/htdocs/folder/: No such file or directory in w:\home\localhost\www\ftp.php on line 18
Warning: ftp_put() [function.ftp-put]: /www/htdocs/folder/file.php: No such file or directory in w:\home\localhost\www\ftp.php on line 29
Warning: ftp_put() [function.ftp-put]: /www/htdocs/folder/file1.php: No such file or directory in w:\home\localhost\www\ftp.php on line 29
Warning: ftp_put() [function.ftp-put]: /www/htdocs/folder/file2.php: No such file or directory in w:\home\localhost\www\ftp.php on line 29
Для скрипта переменные выставляю таким образом:
PHP:
$ftproot = "/www/htdocs"; или $ftproot = "/www"
$srcroot = "W:/home/localhost/www/files";
$srcrela = "/";
PHP:
<?php
// set the various variables
$ftproot = "/public_html/test/";
$srcroot = "/home/kristy/scripts/";
$srcrela = "iwm/";
// connect to the destination FTP & enter appropriate directories both locally and remotely
$ftpc = ftp_connect("ftp.mydomain.com");
$ftpr = ftp_login($ftpc,"username","password");
if ((!$ftpc) || (!$ftpr)) { echo "FTP connection not established!"; die(); }
if (!chdir($srcroot)) { echo "Could not enter local source root directory."; die(); }
if (!ftp_chdir($ftpc,$ftproot)) { echo "Could not enter FTP root directory."; die(); }
// start ftp'ing over the directory recursively
ftpRec ($srcrela);
// close the FTP connection
ftp_close($ftpc);
function ftpRec ($srcrela)
{
global $srcroot;
global $ftproot;
global $ftpc;
global $ftpr;
// enter the local directory to be recursed through
chdir($srcroot.$srcrela);
// check if the directory exists & change to it on the destination
if (!ftp_chdir($ftpc,$ftproot.$srcrela))
{
// remote directory doesn't exist so create & enter it
ftp_mkdir ($ftpc,$ftproot.$srcrela);
ftp_chdir ($ftpc,$ftproot.$srcrela);
}
if ($handle = opendir("."))
{
while (false !== ($fil = readdir($handle)))
{
if ($fil != "." && $fil != "..")
{
// check if it's a file or directory
if (!is_dir($fil))
{
// it's a file so upload it
ftp_put($ftpc, $ftproot.$srcrela.$fil, $fil, FTP_BINARY);
}
else
{
ftpRec ($srcrela.$fil."/");
chdir ("../");
}
}
}
closedir($handle);
}
}
?>