Forum Webscript.Ru

Программирование => PHP => Тема начата: nobody от 07 Сентября 2002, 14:17:00

Название: По виндама работает, а хостера на FreeBSD отказывается
Отправлено: nobody от 07 Сентября 2002, 14:17:00
Проблема в том что скрипт идеально работает под виндами на
Apache 1.3.23 (Win32), PHP 4.1.1 а у хостера на Russian Apache 1.3.23, FreeBSD 4.5, PHP 4.2.2 работать отказывается так как надо.

unset($admin_name);  
unset($admin_password);
session_start();
session_register($admin_name);
session_register($admin_password);

include("config.inc.php");
include("function/processFuncs.inc.php");
include("function/db_MySql.inc.php");
include("lang/lang.win1251.inc.php");
include("classes/error.class.inc.php");
include("mysql/dbaccess.inc.php");
include("function/security.inc.php");

$myerror = new error();

if(@$Submit=="true"){
$photosmall = htmlspecialchars($photosmall);
$name = htmlspecialchars(trim($name));
   
// Начало проверки
include ("function/checkFuncs.inc.php");

if(strlen($a_name)<1){
$myerror->addError($lang[\'ERR5\']);
}

if(strlen($photosmall)<1){
$myerror->addError($lang[\'ERR8\']);}else{
@$pic_size_small=GetImageSize($photosmall);
if(($pic_size_small[0]<>80 )|| ($pic_size_small[1]<>110)){
$myerror->addError($lang[\'ERR3\']);
}
}

// Конец проверки

if($myerror->getListLength()==0){

$f=fopen("$photosmall","rb"); // имя файла или картинки -- открыли файл на чтение
$upload_small=fread($f,filesize("$photosmall")); // считали файл в переменную
$upload_small=addslashes($upload_small);

mysql_query("INSERT INTO girls (`name`, `photosmall`, `status`) VALUES (\'$a_name\',  \'$upload_small\', \'0\')");

$admin_name = $name;
$admin_password = $password;
session_register("admin_name");
session_register("admin_password");
 
Header("Location: index.php");
exit;
}
}
?>

/css/main.css" type="text/css">
include("function/errorreport.inc.php");
?>





">











">





">




">


" class="td_header" colspan="1">

:



" size="">

:



""
" onBlur="showImage(this)" onFocus="showImage(this)">


img/b_Submit.gif" width="90" height="16" alt="Submit">






он постоянно выдает, что размер изображения несовподает, хотя на локалке все нормально делает, если отключить проверку то в базу все равно ничего непишится. Вчем проблема ума неприложу.
Название: По виндама работает, а хостера на FreeBSD отказывается
Отправлено: Макс от 07 Сентября 2002, 16:59:11
Напиши простой скрипт аплоадинга без всего лишнего и определи,  закачивается ли файл. Для начала просто аплоадинг с записью в файл. Если работает, модифицируй до копирования в БД и посмотри чем файл из БД отличается от исходного файла.


ЗЫ
Ты же не думаешь что сейчас все кинутся твой код проверять

ЗЗЫ
Перекодировка апачем выключена?
Название: По виндама работает, а хостера на FreeBSD отказывается
Отправлено: ВВЕДИТЕ СВОЕ ИМЯ от 07 Сентября 2002, 17:36:54
проверил, аплодится....
перекодировка включенна, я на нее первым делом грешил :)
Название: По виндама работает, а хостера на FreeBSD отказывается
Отправлено: ThE0ReTiC от 07 Сентября 2002, 18:41:49
А enctype="multipart/form-data" где?
Название: По виндама работает, а хостера на FreeBSD отказывается
Отправлено: nobody от 07 Сентября 2002, 18:59:54
да не в этом все дело...

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

$upload_small

точнее - просто оно у хостера не поподает в базу...
поле создоется, а значение в поле blob пустое....
на локалке все нормально :(
Название: По виндама работает, а хостера на FreeBSD отказывается
Отправлено: Макс от 07 Сентября 2002, 19:24:02
Цитировать

        $f=fopen("$photosmall","rb"); // имя файла или картинки -- открыли файл на чтение
        $upload_small=fread($f,filesize("$photosmall")); // считали файл в переменную
        $upload_small=addslashes($upload_small);
       

Выведи $photosmall (кстати зачем кавычки?)
и попробуй
if (file_exists($photosmall)) {
echo "file found";
 ... //твой код
} else {
echo "file not found";
}
что выводит?
Название: По виндама работает, а хостера на FreeBSD отказывается
Отправлено: nobody от 07 Сентября 2002, 20:31:03
Это смешно но пишет "file not found"

На локалке соответственно все работает идеально
Название: По виндама работает, а хостера на FreeBSD отказывается
Отправлено: Макс от 07 Сентября 2002, 20:36:19
echo $photosmall;
правильный путь?


PS
кстати, обрати внимание на сообщение ThE0ReTiC? enctype прописал?
Название: По виндама работает, а хостера на FreeBSD отказывается
Отправлено: Dm от 07 Сентября 2002, 20:37:09
nobody
ты часом не забыл про регистр файловых имен в юниксах?
Название: По виндама работает, а хостера на FreeBSD отказывается
Отправлено: nobody от 07 Сентября 2002, 20:39:47
извиняюсь. все равно пишет что все прошло...
Название: По виндама работает, а хостера на FreeBSD отказывается
Отправлено: nobody от 07 Сентября 2002, 20:45:45
Э в каком это смысле регистр файловых имен?
Название: По виндама работает, а хостера на FreeBSD отказывается
Отправлено: Dm от 07 Сентября 2002, 20:48:43
nobody
File.ext и file.ext - это разные вещи в юниксах.
Название: По виндама работает, а хостера на FreeBSD отказывается
Отправлено: nobody от 07 Сентября 2002, 20:56:06
с регистром все нормально, просто $upload_small оказывается пустым...
Название: По виндама работает, а хостера на FreeBSD отказывается
Отправлено: Макс от 07 Сентября 2002, 21:02:15
nobody
$upload_small пустой потому что файла с именем, которое у тебя в $photosmall не существует.
Повторяю вопрос - там правильное имя файла
(echo $photosmall;)
Название: По виндама работает, а хостера на FreeBSD отказывается
Отправлено: nobody от 07 Сентября 2002, 21:07:26
Макс
помоему да под окошками то работает, а после echo $photosmall;
выдает
/var/tmp/phpRJlzoh
Название: По виндама работает, а хостера на FreeBSD отказывается
Отправлено: Макс от 07 Сентября 2002, 21:33:51
Цитировать


не знаю, может PHP_SELF в action вписать и enctype
Похоже файл просто не закачивается. Попробуй еще MAX_FILE_SIZE прописать.
Название: По виндама работает, а хостера на FreeBSD отказывается
Отправлено: nobody от 07 Сентября 2002, 21:40:50
Ты случаем не об этом говоришь?
" method="post" enctype="multipart/form-data">
прописал в самом начале, непомогает.........
Название: По виндама работает, а хостера на FreeBSD отказывается
Отправлено: Макс от 07 Сентября 2002, 21:51:21
после
Цитировать

if(@$Submit=="true"){
вставь
error_reporting(E_ALL);
какие то интересные warning-и выводятся?
Название: По виндама работает, а хостера на FreeBSD отказывается
Отправлено: nobody от 07 Сентября 2002, 22:05:38
Да никаких не выдается...
Я пошел по другому пути и решил посмотреть на php.net в официальных багах... Как нестранно нашел....

Там что то сказанно про временные файлы и невозможность их загонять в переменную....

Предлагают вначале откопировать во временную директорию и только после этого производить какие либо манипуляции...

Теперь думаю как это получше реализовать... готов выслушать предложения....

Только вот это лишняя нагрузка на сервер :(

Пора открывать топик БАГИ и способы их решения....
Название: По виндама работает, а хостера на FreeBSD отказывается
Отправлено: Dm от 07 Сентября 2002, 22:07:31
nobody
а примеры из мана как?
 http://www.php.net/manual/en/features.file-upload.php
внимательно см. комменты.
Название: По виндама работает, а хостера на FreeBSD отказывается
Отправлено: Макс от 07 Сентября 2002, 22:12:45
Цитировать
Только вот это лишняя нагрузка на сервер
не думаю, файлы не часто закачивают, а вот хранение файлов в БД - вот это действительно лишняя нагрузка на сервер