Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Баги move_uploaded_file() 
:(
    Опции темы
MuToGeN
  Дата 23.8.2005, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: 4
Всего: 32



Заметил на PHP 4.3.11 и 4.4.0 под Win2K3 Srv
move_uploaded_file() обламывается - говорит, что $_FILES[...]['tmp_name'] не существует. Строкой выше file_exists($_FILES[...]['tmp_name']) возвращает true, copy() и move_uploaded_file() обламываются.
$_FILES[...]['error']==0.
Это баг PHP или драйвера hands.sys?


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
IZ@TOP
Дата 23.8.2005, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



По моему это просто напросто отказ 2К3 сервера в доступе РНР интерпретатору к загруженному файлу.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
MuToGeN
Дата 23.8.2005, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: 4
Всего: 32



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


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
IZ@TOP
Дата 23.8.2005, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



MuToGeN, а можно весь код посмотреть где проблемы вместе с тем местом где все в порядке?


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
MuToGeN
Дата 23.8.2005, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: 4
Всего: 32



Код

function afManufacturerAddDoInsert(){
    global $db,$mosConfig_absolute_path;
    $error='';
    trimRequest('name');
    if($_REQUEST['name']==''){
        $error.="Вы должны указать название.\n";
    }
    if($_REQUEST['logo']=='1'&&$_FILES['logo_upl']['error']!=0){
        $error.="Укажите логотип.\n";
    }
    if(!formError($error)){
        if($_REQUEST['logo']=='1'){
            $logo=moveUploadedPicture('logo_upl',$mosConfig_absolute_path.'/images/stories/manufacturer_logos');
        }else{
            $logo='';
        }
        $db->setQuery("INSERT INTO #__af_manufacturers SET name = '$_REQUEST[name]', logo = '$logo';");
        $db->query();
        header("Location: index2.php?option=$_REQUEST[option]");
        exit();
    }
}
Код

function afManufacturersEditDoUpdate(){
    global $db,$mosConfig_absolute_path;
    $error='';
    trimRequest('name');
    if($_REQUEST['name']==''){
        $error.="Вы должны указать название производителя.\n";
    }
    switch($_REQUEST['logo']){
        case 'no_change':
            $logoUpdate='';
            break;
        case 'no_logo':
            $logoUpdate=', logo = \'\'';
            break;
        case 'upload':
            if($_FILES['logo_upl']['error']==0){
                $logoFile=moveUploadedPicture('logo_upl',$mosConfig_absolute_path.'/images/manufacturer_logos');
                $logoUpdate=", logo = '$logoFile'";
            }else{
                $error.="Ошибка при загрузке логотипа.\n";
            }
            break;
        default:
            echo 'Error: wrong $_REQUEST[logo].';
            exit();
    }
    if(!formError($error)){
        $sql="UPDATE #__af_manufacturers SET name = '$_REQUEST[name]'$logoUpdate WHERE id = $_REQUEST[id];";
        $db->setQuery($sql);
        $db->query();
        header("Location: index2.php?option=$_REQUEST[option]");
        exit();
    }
}

Добавлено @ 12:05
2 ф-ии в одном скрипте, вызывается ф-я moveUpoloadedPicture() в 13й строке первого скрипта и в 17й второго:
Код

function moveUploadedPicture($requestName,$savePath,$filename=''){
    if($_FILES[$requestName]['error']!=0){
        return false;
    }
    switch($_FILES[$requestName]['type']){
        case 'image/bmp':
            $ext='bmp';
            break;
        case 'image/gif':
            $ext='gif';
            break;
        case 'image/pjpeg':
        case 'image/jpeg':
            $ext='jpg';
            break;
        case 'image/png':
            $ext='png';
            break;
        case 'image/tiff':
            $ext='tif';
            break;
        case 'image/vnd.wap.wbmp':
            $ext='wbmp';
            break;
        case 'image/x-icon':
            $ext='ico';
            break;
        case '':
            $ext='';
            break;
        case '':
            $ext='';
            break;
        default:
            return false;
    }
    if($filename==''){
        $filename=$_FILES[$requestName]['name'];
    }
    $filename=explode('.',$filename);
    if(sizeof($filename)!=1){
        unset($filename[sizeof($filename)-1]);
    }
    $filename=implode('.',$filename);
    $filename=preg_replace('/([^a-zA-Z0-9.\-_]{1,})/','_',$filename);
    if(file_exists("$savePath/$filename.$ext")){
        for($i=0;file_exists("$savePath/$filename{$i}.$ext");$i++){}
        $filename.=$i;
    }
    move_uploaded_file($_FILES[$requestName]['tmp_name'],"$savePath/$filename.$ext");
    return $filename.'.'.$ext;
}

Добавлено @ 12:06
В moveUploadedPicture() перед 50й строкой ставил
Код
echo file_exists($_FILES[$requestName]['tmp_name']);
Тот признавался, что true. move_uploaded_file() при этом говорит, что не находит фаил. Обычный copy() тоже.


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
IZ@TOP
Дата 23.8.2005, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



MuToGeN, E_ALL? Может где то ошибся буквой? Вообще я тут не вижу ошибок ни каких вроде... хотя у себя никогда такого не замечал (система PHP 4.3.10 под Apache на Win2k3 ENT.).


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
MuToGeN
Дата 23.8.2005, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: 4
Всего: 32



Цитата(IZ @ 23.8.2005, 12:17)
Может где то ошибся буквой?
Второй (нерабочий) кусок кода, а точнее вызов moveUploadedPicture(), есть копи-пейст с первого (рабочего). Посему опечатки исключены. E_ALL всегда врублен во время разработки, еррор репортинг молчит как рыба об лед.

Походу, глюки парсера...
Добавлено @ 12:25
IZ@TOP, а какой апач? Хотя оно конечно влиять навряд ли будет.
У меня - 1.3.31


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
IZ@TOP
Дата 23.8.2005, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



MuToGeN, Apache 1.3.33 Release. Может это действительно глюки РНР версии 4.3.11? Я на ней не работал, так что и глюков не замечал.

PS А на хостере все работает?



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
MuToGeN
Дата 23.8.2005, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: 4
Всего: 32



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


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.1081 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.