Всем доброго времени суток, снова столкнулся с проблемой, которую не могу что-то никак решить.

Итак: есть VPS с CentOS, на нем работает небольшой php-скрипт, который заносит в одну общую таблицу MySQL (назовем ее "alldata") данные, которые поступают на сервер извне и хранятся в обычном txt. Далее, в этом php-скрипте инклудится обработчик sortirovka.dbr, который отвечает за сортировку всех данных из таблицы "alldata" по всем остальным таблицам MySQL ("firma","gorod","strana" и т.д.).
И вот тут проблема: в таблицу "alldata" значения пишутся, а вот дальше уже не сортируются. Я так понимаю, что как раз проблема в работе *.dbr . Возможно, что-то нужно докрутить в конфиге апача или в настройках mysql на самом сервере для корректной работы данной конструкции? Или в чем беда?

Буду весьма признателен за любые советы и любую информацию!  az

2 (31.07.2014 05:45:06 отредактировано Marley)

Включаете отладку в скриптах и на каждом шагу в скрипте выводите информацию, выполнен ли шаг успешно или нет.
Если что-то идет не так как нужно, получаете ошибку на экран.

Обычно, если скрипты рабочие, а всеравно, что-то не работает.
Скорее всего проблемы с форматом данных. Может кодировка у вас указана неправильная, или формат дата/время отличается от нужного.

Как выводить сообщения на экран:
Не работает include (); CentOS 6

No Woman No Cry...

3 (31.07.2014 14:15:20 отредактировано iAlexandre)

Marley пишет:

Скорее всего проблемы с форматом данных. Может кодировка у вас указана неправильная, или формат дата/время отличается от нужного.
Как выводить сообщения на экран:
Не работает include (); CentOS 6

Спасибо, с сообщениями на экран попробую.
А разве может быть проблема с кодировкой, если там в таблицах нет кириллицы, а используется немного латиницы и в основном одни цифры? Может ли на это влиять кодировка utf-8 вместо cp1251, например?

UPDATE: Попробовал прописать в .htaccess.
Что-то не выводятся никакие сообщения и в лог ничего не складывается. Даже файл лога пришлось вручную создавать, все-равно не помогло. Поставил права 777, оставил в .htaccess только Ваш код, перегрузил апач, ничего не дало тоже)

4 (31.07.2014 18:16:06 отредактировано Marley)

А у вас apache работает с .htaccess?
В прошлый раз когда разбирались, не работал.

Вообщем нужно, настроить его работу.
Насколько я помню, нужно внести несколько правок в httpd.conf в разделе dirctory.

============================
Можно посмотреть какой запрос выполняется в скрипте и попробовать его выполнить в какой нибудь среде для работы с MySQL.

============================
Что такое DBR мне неизвестно, может покажете исходники?

No Woman No Cry...

5 (01.08.2014 01:50:53 отредактировано iAlexandre)

А у вас apache работает с .htaccess?
В прошлый раз когда разбирались, не работал.
Вообщем нужно, настроить его работу.
Насколько я помню, нужно внести несколько правок в httpd.conf в разделе dirctory.

Ну вроде как работает, я прописал AllowOverride All в httpd.conf в двух местах , теперь такая картина:

 Консоль:
[root@vps conf]# grep AllowOverride httpd.conf
    AllowOverride All
# AllowOverride controls what directives may be placed in .htaccess files.
    AllowOverride All
#    AllowOverride FileInfo AuthConfig Limit
# for additional configuration directives.  See also the AllowOverride
    AllowOverride None
    AllowOverride None
    AllowOverride None

я так понимаю этого достаточно для работы .htaccess?

Можно посмотреть какой запрос выполняется в скрипте и попробовать его выполнить в какой нибудь среде для работы с MySQL.

Можно попробовать, но я не знаю подходящие для этого программы под Мас. Буду искать.


Что такое DBR мне неизвестно, может покажете исходники?

Да, конечно. Небольшой кусок кода:

+ открыть спойлер
<?

class dbr{ 

    function dbr($type){}
    function abon($type){
         global $kon,$mod;
        $link = $this->connect_to_mysql();
            
        $query = "select kacod,katype from alldata where kamod=$mod and kakontr=$kon and katype=$type";
        if($result1 = mysql_query($query,$link)){
           while($row1 = mysql_fetch_object($result1)){
                 $user=$row1->kacod;
           }
        }
        return $user;
    }
    
    function connect_to_mysql(){
   
    
       $link = mysql_connect(MY_HOST, MY_DB, MY_USER, MY_PASSWD);// устанавливаем соединение с БД
       mysql_select_db(MY_DB,$link);
       mysql_query('SET NAMES utf8');
       mysql_query ("set character_set_client='utf8'"); 
       mysql_query ("set character_set_results='utf8'"); 
       mysql_query ("set collation_connection='utf8_general_ci'");
       if($link) return $link;
       else false;
    }
    
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Обработка данных
    
    function beac($arr_beac,$date){
        global $kon,$mod;
        $user1=$this->user(1);
        $user2=$this->user(2);
        
        foreach ($arr_beac as $param=>$str){
            $query='';
            switch ($param){
                case "street":
                    if(preg_match("/Str_/",$str))$str=str_replace("Str_","(",$str).")";
                    $query = "delete from kastree where kacod=$user1 and date='$date'";
                    if(isset($user1) && $user1!='')mysql_query($query);
                    $query = "insert into street(kacod,date,kastr) values($user1,'$date','$str')";
                    if(isset($user1) && $user1!='')mysql_query($query);
                    break;

            }
        }
    }

P.S. Возможны кое-какие неточности со значениями, ибо это черновая версия, рабочей под рукой нет. Но в финальном варианте все как нужно. Только вот все никак не удается заставить его начать на сервере данные обрабатывать..(

6 (01.08.2014 09:28:18 отредактировано Marley)

Ставите в качестве клиента phpmyadmin или обычный клиент для всех осей от mysql. Называется, вроде mysql workbench.
Перед вызовом sql запроса на добавление данных, с помощью echo выводите этот запрос. Потом вставляете его в phpmyadmin и смотрите, что не так.

No Woman No Cry...

7 (01.08.2014 13:19:21 отредактировано iAlexandre)

За программу спасибо, загружу.
Очень извиняюсь, а можно написать то же самое, но как-то в форме более доступной обычному юзеру?:)
Не понял про echo и запрос. И вставку в phpmyadmin - это имеется ввиду просто выполнить SQL-запрос к базе данных?

8 (02.08.2014 01:09:27 отредактировано Marley)

По поводу .htaccess
Беру конфиг со свежеустановленного Apache:

В httpd.conf

# This should be changed to whatever you set DocumentRoot to.
#
<Directory "/var/www/html">

#
# Possible values for the Options directive are "None", "All",
# or any combination of:
#   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important.  Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
    Options Indexes FollowSymLinks

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
#    AllowOverride None
AllowOverride All
#
# Controls who can get stuff from this server.
#
    Order allow,deny
    Allow from all

</Directory>

Вместо

AllowOverride None

пишете:

#    AllowOverride None
AllowOverride All

Перестартовываете сервер.

Создаете в каталоге со скриптами (ссылка на него в Directory в данном случае  "/var/www/html")

файл .htaccess с содержимым:

AddDefaultCharset UTF-8
DirectoryIndex index.php index.html
Options +Indexes

order deny,allow
deny from all
allow from 192.168.1.5

### Show Errors on Page

php_flag display_errors on
# E_ALL has code 2047
php_value error_reporting 2047
php_flag display_startup_errors on
php_flag html_errors on
# php_value error_log /var/www/html/PHP_errors.log 

Вместо 192.168.1.5, указываете не тот ip с которого работаете.
Если получаете сообщение, что добсуп заблокирован, все ок.

Далее выполняете то, с чем у вас возникают ошибки. Возможно, что удастся их сразу отловить.

=====================

Ели ошибок нет или вам они непонятны.
Копируете в каталог, где находится ваше приложение вот этот скрипт http://www.phpmyadmin.net/
И запускаете его по http://ip_сайта/phpmyadmin
=====================

В скриптах, после
$query = " какие-то команды";

(Лучше конечно, непосредственно перед их вызовом.)

пишете

echo "<br/>";
echo $query;
echo "<br/>";

Получаете запрос, который выполняет скрипт.
Вы его копируете, при необходимости изменяете и вставляете в phpmyadmin (предварительно выбрав нужную базу, в окне для sql запросов).

Только делайте аккуратно, там у вас операции и по удалению имеются.
В phpmyadmin, предварительно сделайте копию базы и экспериментируйте с копией.

No Woman No Cry...