ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 

  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА














     АРХИВ :: Apache-Talk
Apache-Talk mailing list archive (apache-talk@lists.lexa.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[apache-talk] Problem with using LOAD DATA INFILE



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


У меня очень странная ситуация.

Есть один срипт import.cgi, который запизивает данные в базу данных mysql
с помощью LOAD DATA INFILE.

Есть другой, который  делает тоже самое, ноне проводит предварительной
подготовки файлов с данными, а пользуется тем, что придоговил import.cgi.
Зовут ЭТОТ срипт: aimport.cgi

Import.cgi получает zip файл через http upload, распаковывает его в
директорию,
и для каждого .dat файла прогоняет функцию импорта с LOAD DATA INFIL. - без
проблем.

КОгда же запускаем aimport.cgi с той же cgi диреткории, чтобы он просто
повотрил
импорт тех распакованных файлов - хрен - вываливается с :

Can't get stat of '/hosts/ubex.ru/admin/curi/rates.dat' (Errorcode: 13)

Права и владельцы, ПО:

hosts, server, curi - mode 750,  owner: ubex, group: ubex
rates.dat - 666, owner: ubex, group: ubex
apache is run as: root with suEXEC (so, all scripts execute as ubex.ubex)
mysql is run as : mysql.mysql
database, db user db password are the same for both scripts (read from the
same config file)
apache: 1.3.9
mysql: 3.23.24
OS: FreeBSD 4.1.1-stable


Я решил, что что-то не так с правами или effective/real uid/gid. Вывел эту
информацию
прямо перед выполнением запроса:

import.cgi:
Real user id: 5012 Real group id: 5012 5012 5012
Eff user id : 5012 Eff  group id:5012 5012 5012
/hosts/ubex.ru/admin/curi/rates.dat
134407,1064442,33206,1,5012,5012,0,0,970932306,970932306,970935971,8192,0

amport.cgi
Real user id: 5012 Real group id: 5012 5012 5012
Eff user id : 5012 Eff  group id:5012 5012 5012
/hosts/ubex.ru/admin/curi/rates.dat
134407,1064442,33206,1,5012,5012,0,0,970935971,970932306,970935971,8192,0

Для файлов выдается массив stat($file):
33206= mode 100666
5012 - uid of ubex
5012 - gid of ubex


Функция импорта простая до нельзя:

# import one table from a file
sub import_table {
        my $myname="import_table";
        my $sql;
        my $sth;
        my $table=$_[0];
        my $a=0;

# debug data
warn "Real user id: $< Real group id: $(\n";
warn "Eff user id : $> Eff  group id:$)\n";
$f=$CONFIG{'CURDIR'}.'/'.$table.'.dat';
@aa=stat($f);$"=',';warn "$f @aa\n";


        $sql="LOAD DATA INFILE \'$CONFIG{'CURDIR'}/".$table.".dat\' REPLACE
INTO TABLE $table";
        unless ($sth=$dbh->prepare($sql)){die "$DBI::errstr,$myname\n";}
        unless ($a=$sth->execute()){die "$DBI::errstr,$myname\n";}
        $a=$sth->rows;
        $sth->finish;
        if ($a>0){warn "    $a record(s) in $table\n";}
        return $a;
}

Я уже ничего не понимаю. Или это должно работать в обоих сриптах или вообще
не должно. Ведь
условия перед LOAD DATA INFILE одни и те же.

Есть мысли?

Артем


=============================================================================
=               Apache-Talk@lists.lexa.ru mailing list                      =
Mail "unsubscribe apache-talk" to majordomo@lists.lexa.ru if you want to quit.
=       Archive avaliable at http://www.lexa.ru/apache-talk                 =



 




Copyright © Lexa Software, 1996-2009.