LiveInternetMail.ru
Форум русской поддержки Joomla!® CMS
11.02.2012, 00:40:04 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 1.7 FAQ Joomla 1.5 FAQ Joomla 1.0 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор Тема: Режим отладки по IP  (Прочитано 11096 раз)
0 Пользователей и 1 Гость смотрят эту тему.
andragor
Захожу иногда
**

Репутация: +5/-0
Offline Offline

Сообщений: 19


« : 26.03.2008, 12:40:54 »

Возможно ли в Joomla! 1.0.х включить режим отладки сайта только для одного конкретного IP или как смотреть отладку на live site, чтобы пользователи ее не видели?
« Последнее редактирование: 26.03.2008, 12:44:06 от andragor » Записан
 
Muratty
Осваиваюсь на форуме
***

Репутация: +9/-0
Offline Offline

Пол: Мужской
Сообщений: 154


не стреляёте в пианиста, он играет как умеет...


« Ответ #1 : 26.03.2008, 12:54:39 »

можно, нужно в .htacess прописать
#order "deny,allow"
#deny from "all" - это запрет всем
allow from "000.00.00.0" - это ip разрешен
это закроет всем доступ и одному откроет
можно и так:
#order "deny,allow"
#deny from "000.00.00.0" - это запрет одному
allow from "all" - это разрешен всем остальным
Записан
smart
Администратор
*******

Репутация: +1081/-14
Offline Offline

Пол: Мужской
Сообщений: 8298


тружусь даже во сне...


« Ответ #2 : 26.03.2008, 13:05:25 »

Хм, вопрос интересный. Стандартного решения для него я не видел, поэтому можно сделать следующий хак:

1. Открываем файл /index.php расположенный в корне сайта
2. В самом низу файла находим строчку:

if ($mosConfig_debug) {

и заменяем ее на

if ($mosConfig_debug && $my->gid == 25) {

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

p.s. предложение использовать .htaccess не очень корректное - пользователи тогда не увидят сайта, а тут насколько я понял задачу - администратор хотел бы видеть режим отладки, пока пользователи ходят по сайту... чтобы и они лишнего не видели, и не закрывать сайт на период каких-то опытов.
Записан
andragor
Захожу иногда
**

Репутация: +5/-0
Offline Offline

Сообщений: 19


« Ответ #3 : 26.03.2008, 13:49:37 »

Muratty,
Вариант, но так весь сайт никто не увидит.

smart,
Проверил, работает, супер, спасибо!
Только gid почему-то не пошел, сделал так:
Код:
if ($mosConfig_debug && $my->id == 62) {

Еще бы такую же проверку для варнингов сделать, которые есть на некоторых страницах:

/home/httpd/vhosts/site.ru/httpdocs/includes/database.php:433
/home/httpd/vhosts/site.ru/httpdocs/includes/joomla.php:4206
/home/httpd/vhosts/site.ru/httpdocs/includes/joomla.php:4179

Вообще цены бы хаку не было!
Записан
Physicist
Support Team
*****

Репутация: +179/-0
Offline Offline

Пол: Мужской
Сообщений: 1151


Рябов Денис


« Ответ #4 : 26.03.2008, 15:20:03 »

Меня кроме собственно запросов еще интересует общее время генерации страницы, время выполнения каждого запроса и в каком файле данный запрос генерируется. Рассказываю, как обычно поступаю я.

1. В /index.php перед строкой
Код:
require_once( 'includes/joomla.php' );
добавляем (xxx.xx.xx.xxx — это мой IP)
Код:
if($_SERVER['REMOTE_ADDR']=='xxx.xx.xx.xxx')
{
$mosConfig_caching = '0';
$mosConfig_debug   = '1';
set_time_limit(0);
}
а после нее добавляем
Код:
$prof = new mosProfiler();

2. В конце /index.php после блока
Код:
echo $database->_ticker . ' queries executed';
echo '<pre>';
  foreach ($database->_log as $k=>$sql) {
  echo $k+1 . "\n" . $sql . '<hr />';
}
echo '</pre>';
добавляем
Код:
echo 'The page is generated in '.strip_tags($prof->mark('')).' sec.';

3. В файле /includes/database.php в функции query() меняем блок
Код:
if ($this->_debug) {
$this->_ticker++;
  $this->_log[] = $this->_sql;
}
$this->_errorNum = 0;
$this->_errorMsg = '';
$this->_cursor = mysql_query( $this->_sql, $this->_resource );
на
Код:
if ($this->_debug) {
$this->_ticker++;
list($usec,$sec)=explode(" ",microtime());
$timer1=(float)$usec+(float)$sec;
}
$this->_errorNum = 0;
$this->_errorMsg = '';
$this->_cursor = mysql_query( $this->_sql, $this->_resource );
if ($this->_debug) {
global $prof;
list($usec,$sec)=explode(" ",microtime());
$timer2=(float)$usec+(float)$sec;
$backs=debug_backtrace();
$count=count($backs);
$str='';
for($i=0;$i<$count;$i++)
$str.='<-'.$backs[$i]['file'].':'.$backs[$i]['line'];
$this->_log[] = ($timer1-$prof->start).' sec: ('.($timer2-$timer1).' sec) '.
$this->_sql.' <small>['.$str.']</small>';
}
« Последнее редактирование: 26.03.2008, 19:03:57 от Physicist » Записан
andragor
Захожу иногда
**

Репутация: +5/-0
Offline Offline

Сообщений: 19


« Ответ #5 : 26.03.2008, 18:52:18 »

Спасибо, Денис, о таком и мечтать нельзя было!

Первые два хака работают отлично, а вот после третьей замены, увы, белый экран.
syntax error, unexpected T_VARIABLE in /home/httpd/vhosts/site.ru/httpdocs/includes/database.php on line 301

Cтрока 301:
Код:
$str='';
Записан
Physicist
Support Team
*****

Репутация: +179/-0
Offline Offline

Пол: Мужской
Сообщений: 1151


Рябов Денис


« Ответ #6 : 26.03.2008, 19:04:22 »

Я там точку с запятой пропустил в конце предыдущей строки.
Записан
andragor
Захожу иногда
**

Репутация: +5/-0
Offline Offline

Сообщений: 19


« Ответ #7 : 26.03.2008, 20:06:43 »

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

Денис, теперь всё работает. Это что-то с чем-то, столько интересного можно узнать!

Добавил маленькую модификацию, чтобы отладка шла не в строку, а в столбик для удобства чтения:
Код:
$str.='<-'.$backs[$i]['file'].':'.$backs[$i]['line'];
         $this->_log[] = ($timer1-$prof->start).' sec: ('.($timer2-$timer1).' sec) '.
         $this->_sql.' <small>['.$str.']</small>';
заменить на:
Код:
$str.='<br>'.$backs[$i]['file'].':'.$backs[$i]['line'];
$this->_log[] = ($timer1-$prof->start).' sec: ('.($timer2-$timer1).' sec)<br>'.
$this->_sql.'<small>'.$str.'</small>';

Еще раз спасибо, что решили поделиться столь полезным хаком.
Записан
Physicist
Support Team
*****

Репутация: +179/-0
Offline Offline

Пол: Мужской
Сообщений: 1151


Рябов Денис


« Ответ #8 : 26.03.2008, 20:19:32 »

Брейки на php ставить не обучен  Roll Eyes
xdebug тебе в помощь Azn
Записан
Jkr
Новичок
*

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 1



« Ответ #9 : 12.12.2010, 00:01:54 »

Замечательный хак!
Извиняюсь за глупый вопрос, но я не совсем понимаю, что именно обозначают 2 числа перед запросом. Например:
Цитировать
0,028769969940186 sec (0,00062012672424316 sec)
Какое-то из них - время на выполнение запроса, а второе? И почему такая разница между этими числами?
Заранее благодарю за разъяснение.
Записан
Physicist
Support Team
*****

Репутация: +179/-0
Offline Offline

Пол: Мужской
Сообщений: 1151


Рябов Денис


« Ответ #10 : 19.05.2011, 00:29:09 »

Извиняюсь за глупый вопрос, но я не совсем понимаю, что именно обозначают 2 числа перед запросом. Например:Какое-то из них - время на выполнение запроса, а второе? И почему такая разница между этими числами?
Первое - время, прошедшее с начала генерации страницы, второе - собственно время выполнения запроса.
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@Mail.ru Rambler Top100 Powered by SMF 1.1.16 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet