Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Не вижу ошибки в скрипте


Автор: SIMarOK 11.9.2005, 17:19
Вот сам скрипт, выложил только выполняющую часть загрузки файла на удаленный сервер фтп, с другого хоста.
Код

function uploads_process1()
{
error_reporting(E_ALL);
$ftp_server = 'files.domain.ru';
$ftp_user_name = 'login';
$ftp_user_pass = 'pass';
$path = 'uploads';
$file = $_FILES["userfile"]["tmp_name"];

global $config;
require_once("mainfile.php");
include_once("themes/".$config['theme']."/theme.php");
echo '<html><head><title>'.$config['site_name'].' - '._UPLOAD1.'</title>';
echo '<LINK REL="StyleSheet" HREF="themes/'.$config['theme'].'/style/style.css" TYPE="text/css"></head>';
echo '<BODY BGCOLOR="" TEXT="" link= alink= vlink=>';
        
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 

if ((!$conn_id) || (!$login_result)) { 
    echo "No!<br>\n";
    exit; 
}
?>

<center><table cellpadding="0" cellspacing="0">
<tr>
<td class="bodymain">
<table class="tabborder" height="1">
        
<?php
$img_types = array("image/jpeg", "image/pjpeg", "image/gif");
if (!in_array($_FILES['userfile']['type'], $img_types)) {
        echo _UPFILENO;
} else {
    $uploadfile = $path."/".time()."_".$_FILES["userfile"]["name"];
    $new_name = time()."_".$_FILES["userfile"]["name"];
    $logofile = $_SERVER['DOCUMENT_ROOT'].'/'.'uploads/logo.jpg';
                $logost = $_POST['logost'];    
    
    if (ftp_put($conn_id, $_FILES["userfile"]["name"], $uploadfile, FTP_ASCII)) { // ошибка тут начинается
        ftp_chmod($conn_id, $ftp_server.'/'.$uploadfile, 0755);
        
        echo '<tr><td class="tab" height="2" colspan="2">'._UPLOAD7.'</td></tr>';
        echo '<tr><td class="tab" height="2" colspan="2"><a href="'.$path.'/'.$new_name.'">'._UPLOAD10.'</a></td></tr>';
        echo '<tr><td class="tab" height="2" colspan="2">'._UPLOAD8.'</td></tr>';
        echo '<tr><td class="tab" height="2" colspan="2"><input type="text" value="&lt;img border=&quot;0&quot; src=&quot;'.$ftp_server.'/'.$path.'/'.$new_name.'&quot;&gt;" size="50" maxlength="255"><br><br>'._SYS31.'</td></tr>';
        } else {
            echo '<tr><td class="tab" height="2" colspan="2">NO</td></tr>';
        }
}

if ($logost == 1)
watermarkJPG($_SERVER['DOCUMENT_ROOT'].'/'.$uploadfile,$_SERVER['DOCUMENT_ROOT'].'/'.'images/watermark/logo.jpg');

if ($logost == 2)
watermarkGIF($_SERVER['DOCUMENT_ROOT'].'/'.$uploadfile,$_SERVER['DOCUMENT_ROOT'].'/'.'images/watermark/logob.gif');

if ($logost == 3)
watermarkGIF($_SERVER['DOCUMENT_ROOT'].'/'.$uploadfile,$_SERVER['DOCUMENT_ROOT'].'/'.'images/watermark/logow.gif');
ftp_close($conn_id);
}
?>


Он соединяется с фтп, но сам файл почему-то загрузить не может NO выводит...незнаю в чем ошибка, скрипт вроде правильно написан...
На самом сервере ftp сначало идет папка WWW потом в ней уже все рабочие и выводимые файлы, указывал в $path="WWW/uploads" и всеравно без изменений...

Помогите плиз кто знаетsmile

Автор: Bikutoru 11.9.2005, 18:28
Рекомендую переписать эту часть
Код

$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 
if ((!$conn_id) || (!$login_result)) { 
    echo "No!<br>\n";
    exit; 
}

вот так
Код

$conn_id = ftp_connect($ftp_server) or die("No connect");
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass) or die("No login"); 

Это будет более информативно.

Автор: SIMarOK 11.9.2005, 18:37
пасибоsmile, но проблема в самой загрузке файла а не в коннекте с фтп)

Автор: AntonioBanderaz 12.9.2005, 00:11
Первое что увидел, FTP_ASCII надо заменить на бинари.
Второе, зачем права 0755, попробуй 0777.

Автор: SIMarOK 13.9.2005, 18:51
всеравно не грузитsmile

Автор: SIMarOK 13.9.2005, 19:47
Код

function uploads_process1()
{
error_reporting(E_ALL);
$ftp_server = 'files.domain.ru';
$ftp_user_name = 'login';
$ftp_user_pass = 'pass';
$path = 'WWW/uploads';
$file = $_FILES["userfile"]["tmp_name"];

global $config;
require_once("mainfile.php");
include_once("themes/".$config['theme']."/theme.php");
echo '<html><head><title>'.$config['site_name'].' - '._UPLOAD1.'</title>';
echo '<LINK REL="StyleSheet" HREF="themes/'.$config['theme'].'/style/style.css" TYPE="text/css"></head>';
echo '<BODY BGCOLOR="" TEXT="" link= alink= vlink=>';
        
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 

if ((!$conn_id) || (!$login_result)) { 
    echo "íåò!<br>\n";
    exit; 
}
?>

<center><table cellpadding="0" cellspacing="0">
<tr>
<td class="bodymain">
<table class="tabborder" height="1">
        
<?php
$img_types = array("image/jpeg", "image/pjpeg", "image/gif");
if (!in_array($_FILES['userfile']['type'], $img_types)) {
        echo _UPFILENO;
} else {
    $new_name = time()."_".$_FILES["userfile"]["name"];
    $uploadfile = $path."/".$new_name;

    $logofile = $_SERVER['DOCUMENT_ROOT'].'/'.'uploads/logo.jpg';
                $logost = $_POST['logost'];    

if (ftp_put($conn_id, $uploadfile, $new_name, FTP_BINARY)) {
        ftp_chmod($conn_id, $ftp_server.'/'.$uploadfile, 0777);
        
        echo '<tr><td class="tab" height="2" colspan="2">'._UPLOAD7.'</td></tr>';
        echo '<tr><td class="tab" height="2" colspan="2"><a href="'.$path.'/'.$new_name.'">'._UPLOAD10.'</a></td></tr>';
        echo '<tr><td class="tab" height="2" colspan="2">'._UPLOAD8.'</td></tr>';
        echo '<tr><td class="tab" height="2" colspan="2"><input type="text" value="&lt;img border=&quot;0&quot; src=&quot;'.$ftp_server.'/'.$path.'/'.$new_name.'&quot;&gt;" size="50" maxlength="255"><br><br>'._SYS31.'</td></tr>';
        } else {
            echo '<tr><td class="tab" height="2" colspan="2">'._UPLOAD9.' ['. _SYS31.' ]</td></tr>';
        }
}

if ($logost == 1)
watermarkJPG($_SERVER['DOCUMENT_ROOT'].'/'.$uploadfile,$_SERVER['DOCUMENT_ROOT'].'/'.'images/watermark/logo.jpg');

if ($logost == 2)
watermarkGIF($_SERVER['DOCUMENT_ROOT'].'/'.$uploadfile,$_SERVER['DOCUMENT_ROOT'].'/'.'images/watermark/logob.gif');

if ($logost == 3)
watermarkGIF($_SERVER['DOCUMENT_ROOT'].'/'.$uploadfile,$_SERVER['DOCUMENT_ROOT'].'/'.'images/watermark/logow.gif');
ftp_close($conn_id);
}


Сейчас скрипт выглядет так, вроде 100% правльно написан. Даже если впихнуть код создачи папки, то создает, не понятно почему файл загружать не хочет...Если поменять в строке if (ftp_put($conn_id, $uploadfile, $new_name, FTP_BINARY))
$new_name на $_FILES["userfile"]["tmp_name"] то выводит следующие ошибки:
Warning: ftp_put(): bind() failed: Operation not permitted (1) in /home/sm/ssss/public_html/admin/modules/uploader/index.php on line 201

Warning: ftp_put(): Type set to I. in /home/sm/ssss/public_html/admin/modules/uploader/index.php on line 201

201 строка именно эта...
Что это за ошибки?smile

Автор: AntonioBanderaz 13.9.2005, 23:24
Посмотри значения констант, для ftp_put.. Я тебе попозже пример кину.

Автор: SIMarOK 15.9.2005, 17:57
Пасибо за помощьsmile
Разобрался в чем дело...оказывается у хостинга фтп пасивный, а скрипт актив. Пришлось и скрипт пасивным сделатьsmile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)