Всем доброго времени суток, снова столкнулся с проблемой, которую не могу что-то никак решить.
Итак: есть VPS с CentOS, на нем работает небольшой php-скрипт, который заносит в одну общую таблицу MySQL (назовем ее "alldata") данные, которые поступают на сервер извне и хранятся в обычном txt. Далее, в этом php-скрипте инклудится обработчик sortirovka.dbr, который отвечает за сортировку всех данных из таблицы "alldata" по всем остальным таблицам MySQL ("firma","gorod","strana" и т.д.).
И вот тут проблема: в таблицу "alldata" значения пишутся, а вот дальше уже не сортируются. Я так понимаю, что как раз проблема в работе *.dbr . Возможно, что-то нужно докрутить в конфиге апача или в настройках mysql на самом сервере для корректной работы данной конструкции? Или в чем беда?
Буду весьма признателен за любые советы и любую информацию! *DRINK*
Обработка DBR'ом таблиц MySQL на CentOS
Включаете отладку в скриптах и на каждом шагу в скрипте выводите информацию, выполнен ли шаг успешно или нет.
Если что-то идет не так как нужно, получаете ошибку на экран.
Обычно, если скрипты рабочие, а всеравно, что-то не работает.
Скорее всего проблемы с форматом данных. Может кодировка у вас указана неправильная, или формат дата/время отличается от нужного.
Как выводить сообщения на экран:
Не работает include (); CentOS 6
Скорее всего проблемы с форматом данных. Может кодировка у вас указана неправильная, или формат дата/время отличается от нужного.
Как выводить сообщения на экран:
Не работает include (); CentOS 6
Спасибо, с сообщениями на экран попробую.
А разве может быть проблема с кодировкой, если там в таблицах нет кириллицы, а используется немного латиницы и в основном одни цифры? Может ли на это влиять кодировка utf-8 вместо cp1251, например?
UPDATE: Попробовал прописать в .htaccess.
Что-то не выводятся никакие сообщения и в лог ничего не складывается. Даже файл лога пришлось вручную создавать, все-равно не помогло. Поставил права 777, оставил в .htaccess только Ваш код, перегрузил апач, ничего не дало тоже)
А у вас apache работает с .htaccess?
В прошлый раз когда разбирались, не работал.
Вообщем нужно, настроить его работу.
Насколько я помню, нужно внести несколько правок в httpd.conf в разделе dirctory.
============================
Можно посмотреть какой запрос выполняется в скрипте и попробовать его выполнить в какой нибудь среде для работы с MySQL.
============================
Что такое DBR мне неизвестно, может покажете исходники?
А у вас apache работает с .htaccess?
В прошлый раз когда разбирались, не работал.
Вообщем нужно, настроить его работу.
Насколько я помню, нужно внести несколько правок в httpd.conf в разделе dirctory.
Ну вроде как работает, я прописал AllowOverride All в httpd.conf в двух местах , теперь такая картина:
[console][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[/console]
я так понимаю этого достаточно для работы .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. Возможны кое-какие неточности со значениями, ибо это черновая версия, рабочей под рукой нет. Но в финальном варианте все как нужно. Только вот все никак не удается заставить его начать на сервере данные обрабатывать..(
Ставите в качестве клиента phpmyadmin или обычный клиент для всех осей от mysql. Называется, вроде mysql workbench.
Перед вызовом sql запроса на добавление данных, с помощью echo выводите этот запрос. Потом вставляете его в phpmyadmin и смотрите, что не так.
За программу спасибо, загружу.
Очень извиняюсь, а можно написать то же самое, но как-то в форме более доступной обычному юзеру?:)
Не понял про echo и запрос. И вставку в phpmyadmin - это имеется ввиду просто выполнить SQL-запрос к базе данных?
По поводу .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, предварительно сделайте копию базы и экспериментируйте с копией.