ru:troubleshooting
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| ru:troubleshooting [2024/06/21 09:37] – [You are behind proxy - Warning] admin | ru:troubleshooting [2025/10/01 13:33] (current) – [How to view HTTP headers] admin | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Troubleshooting ====== | ||
| + | |||
| + | ===== It doesn' | ||
| + | |||
| + | |||
| + | Я рад вам помочь, | ||
| + | |||
| + | * Сделайте все апдейты, | ||
| + | * Попробуйте найти свой вопрос в траблшутинге или факе, скорее всего ответ там уже есть | ||
| + | * Напишите где именно проблема (урл, пункт в админке, | ||
| + | * Что именно вам выдало (ошибка, | ||
| + | * Если считаете что этого не достаточно - опишите что вы ожидали увидеть | ||
| + | |||
| + | Заранее спасибо! чем больше информации - тем быстрее и качественнее будет помощь :) | ||
| + | |||
| + | ===== Page does not show ===== | ||
| + | |||
| + | не показывается, | ||
| + | |||
| + | |||
| + | ===== Test template ===== | ||
| + | |||
| + | Обычно в темплейте куча тагов, html, js, картинки и тп , в итоге в этом сложно разобраться. | ||
| + | |||
| + | Если что-то не работает то надо сделать тестовый темплейт где будет ТОЛЬКО то что не работает. Те НЕ будет html, js, картинок и прочего. | ||
| + | |||
| + | например, | ||
| + | |||
| + | < | ||
| + | <thumb num=1-10> | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | Все, ничего лишнего, | ||
| + | ===== Does not count traffic ===== | ||
| + | |||
| + | |||
| + | 1. Проверьте работает ли крон. Вкладка Home. Если там нет надписи "check SCJ crontab job" - следуйте к следующим пунктам. | ||
| + | Если есть эта надпись, | ||
| + | Необходимо прописать запуск каждую минуту строки вида | ||
| + | |||
| + | cd / | ||
| + | |||
| + | |||
| + | 2. Если вы используете index.php Смарта убедитель, | ||
| + | В зависимости от настроек сервера по умолчанию при запросе урла | ||
| + | http:// | ||
| + | он может брать файл index.php или index.shtml или index.html и тд. Те если в каталоге лежит index.html - сервер грузит его вместо index.php (файл SmartCJ), те скрипт смарта не отрабатывает и хиты не считаются. | ||
| + | |||
| + | |||
| + | ===== How to view HTTP headers ===== | ||
| + | |||
| + | |||
| + | Это так же вариант, | ||
| + | Поскольку каждый клик проходит много правил - единственный вариант узнать почему вас редиректит туда а не сюда - это хедеры. | ||
| + | Итак в протоколе HTTP, говоря простым языком, | ||
| + | 99% всех редиректов происходит с использование хедера Location. Когда браузер получает от сервера такой хедер он сразу же идет по указанному урлу. | ||
| + | |||
| + | Итак, для того что бы посмотреть куда вас редиректит скрипт надо посмотреть хедеры. Это делается следующим образом (вариантов много, но мне кажется данный наиболее простой и требующий минимальных усилий): | ||
| + | - В settings - other включить out.php debug (Yes) (ждем минуту) | ||
| + | - поставить Cookie Engine = Regular cookie | ||
| + | - Если у вас еще не установлен, | ||
| + | - Нажать Инструменты-Дополнения (Tools-addons), | ||
| + | - Открыть в ФФ свой сайт, из меню Инструменты (Tools) запустить Live HTTP Headers. Откроется новое окно, в котором будут видны все хедеры. Кликаете на любой ссылке и можете наблюдать как в этом окошке бегут запросы от вас к серверу. В этом надо найти строки вида | ||
| + | |||
| + | Location: http:// | ||
| + | |||
| + | это редирект. | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Так же в хедерах может быть строки типа Current-Click: | ||
| + | |||
| + | ===== SmartCJ doesn' | ||
| + | |||
| + | Варианта 2: | ||
| + | |||
| + | **1. если вы используете для подсчета кликов инклуд** | ||
| + | |||
| + | Проверить это очень просто. Если вы используете include.php переименуйте его в include_scj.php и создайте файл include.php следующего содержания | ||
| + | |||
| + | <?php | ||
| + | $f = fopen(' | ||
| + | fputs($f, date(' | ||
| + | fclose($f); | ||
| + | include(' | ||
| + | |||
| + | потом создайте файл log.txt и chmod его 666 | ||
| + | |||
| + | Скрипт очень простой, | ||
| + | |||
| + | **2. если вы используете индекс смарта** | ||
| + | * создайте в корне файл log.txt и chmod 666 его | ||
| + | * оригинальный индекс (index.php смарта) переименуйте в index_scj.php | ||
| + | * создайте index.php следующего содержания | ||
| + | |||
| + | <?php | ||
| + | $f = fopen(' | ||
| + | fputs($f, date(' | ||
| + | fclose($f); | ||
| + | include(' | ||
| + | |||
| + | |||
| + | Все. | ||
| + | Скрипт очень простой, | ||
| + | |||
| + | **Если надо посчитать кол-во КЛИКОВ** все практически так же. | ||
| + | |||
| + | * out.php смарта переименовываем в scj_out.php | ||
| + | * создаем там же файл log.txt и 666 на него | ||
| + | * создаем out.php следующего содержания | ||
| + | < | ||
| + | <?php | ||
| + | |||
| + | if ($_COOKIE[' | ||
| + | $f = fopen(' | ||
| + | fputs($f, date(' | ||
| + | fclose($f); | ||
| + | } | ||
| + | |||
| + | include(' | ||
| + | |||
| + | </ | ||
| + | |||
| + | где **trader.com** соответственно нужный трейдер. | ||
| + | |||
| + | потом остается только посмотреть кол-во строк в лог файле за выбранный промежуток времени. | ||
| + | |||
| + | ===== All clicks are counted as nocookie. ===== | ||
| + | |||
| + | A: Клики считаются по кукам. При ИНЕ пользователю ставится кука, в которой записано от какого трейдера он пришел. При кликах считывается эта кука и соответствующему трейдеру зачисляется клик. Если при клике скрипт не может прочесть куку (ее нет) - скрипт записывает такие клики в nocookie. | ||
| + | |||
| + | Технология работы кук такова, | ||
| + | |||
| + | Что это значит в нашей ситуации: | ||
| + | http:// | ||
| + | а линк к ауту | ||
| + | http:// | ||
| + | (те без www), то на аут куки переданы НЕ будут и клики будут засчитаны как нокуки. Что бы такого не было надо все линки на аут делать относительными. | ||
| + | |||
| + | <a href=' | ||
| + | <a href='/ | ||
| + | |||
| + | |||
| + | Бывают частные случаи, | ||
| + | У трейдера прописана Personal Page. Трейдер шлет вам как | ||
| + | http:// | ||
| + | , а в Personal Page прописано | ||
| + | http:// | ||
| + | , те теряется кука. Что бы избежать этого лучше прописывать персональную страницу как путь те просто trader.html (без http:/ | ||
| + | |||
| + | |||
| + | ===== It redirects somewhere | ||
| + | |||
| + | Надо включить в Settings - Debug out.php, кликнуть на нужной ссылке | ||
| + | Обычно по хедерам в целом ясно что происходит. Если не ясно - создавайте тему на форуме с хедерами, | ||
| + | |||
| + | ===== It counts 3 times more traffic then I actually have ===== | ||
| + | |||
| + | Часто сталкиваюсь со сл. ситуацией: | ||
| + | |||
| + | Вариант 2: на корне лежит индекс смарта. При этом в [[CJ Pages]] так же прописан тот же индекс, | ||
| + | |||
| + | |||
| + | В любом случае проверить это достаточно просто. | ||
| + | |||
| + | 1. делаем тестовый темплейт где просто строка " | ||
| + | 2. открываем сайт как domain/? | ||
| + | 3. убеждаемся что в логе подсчета хитов только 1 запись с вашего ИП | ||
| + | 4. переносим в тестовый темплейт по частям то что у вас в индексе до того момента как заметите что считает 2 раза | ||
| + | ===== All traders are marked as banned by uribl.com ===== | ||
| + | |||
| + | Вероятнее всего проблема в настройках resolv сервера. | ||
| + | Скрипт проверяет наличие в бане этого сервиcа (http:// | ||
| + | host -tA trader.com.multi.uribl.com | ||
| + | |||
| + | Если домена нет в базе сервис должен ответить что-то вроде | ||
| + | |||
| + | Host trader.com.multi.uribl.com not found: 3(NXDOMAIN) | ||
| + | | ||
| + | Если у вас отвечает например "can not connect" | ||
| + | |||
| + | |||
| + | |||
| + | ===== It doesn' | ||
| + | |||
| + | |||
| + | Проверяет очень просто: | ||
| + | |||
| + | * создаем файл log.txt и 666 пермишены для него | ||
| + | * в common.php добавиваем ПОСЛЕ <?php добавляем следующий код | ||
| + | |||
| + | < | ||
| + | $f = fopen(' | ||
| + | fputs($f, date(' | ||
| + | fclose($f); | ||
| + | </ | ||
| + | |||
| + | |||
| + | Все. В скрипте как видно 3 строки, | ||
| + | |||
| + | |||
| + | ===== It doesn' | ||
| + | |||
| + | Сейчас гугл все больше любит сайты которые подписаны сертификатом (https). Вопрос трейда заключается в том, что по дефолту при переходе с https на http реферер не передается, | ||
| + | |||
| + | В этой ситуации есть 2 выхода: | ||
| + | |||
| + | - добавлять и слать на трейдеров с ИД. Те если у вас сайт с https то трейдеров вы добавляете как http:// | ||
| + | - Либо добавить <meta таг который скажет браузеру что в конкретной ситуации реферер передавать все же надо. | ||
| + | |||
| + | |||
| + | Таг добавляется в < | ||
| + | |||
| + | Есть следующие варианты значения тага: | ||
| + | * unsafe-url - передает реферер как есть, те полностью урл как все привыкли | ||
| + | * origin - только домен | ||
| + | * none-when-downgrade - пустой реферер если переход на http, и реферер ка обычно если переход на https | ||
| + | * none - ничего совсем | ||
| + | |||
| + | Из этого нас интерисуют только origin и unsafe-url. Технически для трейда достаточно origin. Однако, | ||
| + | |||
| + | Хотелось бы отметить, | ||
| + | |||
| + | |||
| + | ===== Wrong skimming, wrong redirect, out does not work ===== | ||
| + | |||
| + | 99% проблем с аутом решаются просмотром дебаг хедеров out.php | ||
| + | |||
| + | - Settings - включаем дебаг Add out.php debug comments = yes | ||
| + | - ждем минуту пока обновится конфиг | ||
| + | - кликаем на любом линке и смотрим хедеры (как смотреть хедеры и что это такое описано на этой же странице чуть выше) | ||
| + | |||
| + | Обычно по хедерам сразу ясно что как и почему, | ||
| + | |||
| + | |||
| + | ===== How to change country ===== | ||
| + | |||
| + | Для теста кликов из определенной страны надо сменить страну для сервера. Те если например вы в стране 1, а надо эмулировать клик из страны 2, то не надо покупать VPN страны 2, достаточно в common.php указать примрено следующее: | ||
| + | |||
| + | < | ||
| + | |||
| + | if ($_SERVER[' | ||
| + | $_SERVER[' | ||
| + | } | ||
| + | |||
| + | </ | ||
| + | |||
| + | где 1.1.1.1 - заменить на ваш реальный ИП, а DE заменить на код страны которая вам надо. | ||
| + | |||
| + | ===== Global Admin does not work ===== | ||
| + | |||
| + | Если ГА не может скачать статистику с другого домена, | ||
| + | |||
| + | Проверить: | ||
| + | |||
| + | и смотрим какой ответ. Должно ответить HTTP/1.1 501 Password Error, если нет - значит надо смотерть админа куда на самом деле уходит запрос. | ||
| + | |||
| + | ===== Imagemagick lib path error ===== | ||
| + | |||
| + | Скрипт проверяет правильность пути основных либ, в том числе imagemagick. Проверка происходит как | ||
| + | |||
| + | < | ||
| + | exec("/ | ||
| + | </ | ||
| + | |||
| + | если $error не 0 (те произошла какая то ошибка, | ||
| + | |||
| + | < | ||
| + | <?php | ||
| + | exec("/ | ||
| + | echo $error; | ||
| + | </ | ||
| + | |||
| + | и проверить выводится ли ошибка. | ||
| + | |||
| + | ===== Cloudflare ===== | ||
| + | |||
| + | В целом большинство проксей http определяются по заголовку типа X-Forwarded-For | ||
| + | (в пхп он обозначается как HTTP_FORWARDED_FOR). При подключении Cloudflare сам запрос приходит от не от релаьного юзера, а то Cloudflare. Тут возникает 2 проблемы: | ||
| + | |||
| + | - реальный IP который должен быть в REMOTE_ADDR - это ИП не юзера, а Cloudflare | ||
| + | - Cloudflare добавляет хедер X-Forwarded-For и все хиты становяться проксями | ||
| + | |||
| + | Что делать: | ||
| + | |||
| + | - прочесть их доку по хедерам https:// | ||
| + | - прочесть как восстановить реальный ИП https:// | ||
| + | |||
| + | |||
| + | Так же можно без модов попробовать модификацией конфига , был интересный пример для nginx | ||
| + | |||
| + | < | ||
| + | if ($http_x_forwarded_for ~ " | ||
| + | set $xreal $2; | ||
| + | } | ||
| + | fastcgi_param HTTP_X_FORWARDED_FOR $xreal if_not_empty; | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | ===== PHP version mismatch ===== | ||
| + | |||
| + | Скрипт работает под управлением IonCube Optimizer, | ||
| + | |||
| + | Но бывает что на сервере стоит несоклько версий пхп, одна из них является дефолтной. Например если просто в шеле написать | ||
| + | |||
| + | < | ||
| + | |||
| + | user@server: | ||
| + | PHP 7.0.33-0ubuntu0.16.04.16+esm4 (cli) ( NTS ) | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | то можно увидеть что дефолтная версия - 7.0.33, при этом для веба может быть включена другая версия. | ||
| + | |||
| + | Открываем scj/ | ||
| + | |||
| + | Получается, | ||
| + | |||
| + | Надо просить админа унифицировать версии. | ||
| + | |||
| + | |||
| + | ===== Full description copy - Warning | ||
| + | |||
| + | По умолчанию слейв имеет те же дески, что и мастер. Фактически он использует таблицу мастера с десками. Можно рассоединить дески мастера и слейва, | ||
| + | |||
| + | |||
| + | Иногда люди рассоединяют дески, однако не меняют дески. | ||
| + | |||
| + | В чем минус: | ||
| + | |||
| + | - для слейва создается таблица с теми же десками, | ||
| + | - mysql кеширует и таблицу мастера и таблицу слейва, | ||
| + | |||
| + | Поэтому если вы не меняете дески на слейве то лучше не рассоединять и экономить ресурсы сервера. | ||
| + | |||
| + | |||
| + | ===== Server setup error, apache\nginx is running with user permissions - Warning | ||
| + | |||
| + | |||
| + | Во всех системах есть разделение прав пользователей. Например, | ||
| + | |||
| + | Так же есть разграничение прав пользователя и вебсервера (апач\nginx). Например, | ||
| + | |||
| + | Иногда, | ||
| + | |||
| + | |||
| + | Однако, | ||
| + | |||
| + | |||
| + | ===== You are behind proxy - Warning | ||
| + | |||
| + | Для скрипта важно правильно находится ли пользователь за прокси, | ||
| + | |||
| + | Прокси определяются по наличию хедеров в запросе (HTTP_X_FORWARDED_FOR, | ||
| + | |||
| + | Но часто при настройке nginx + apache не настраивают передачу хедеров. Получается что приходит запрос с ИП 22.22.22.22 на nginx , он должен этот запрос передать апачу и " | ||
| + | |||
| + | Что б такого не было в апаче есть моды которые автоматически обрабатывают такую ситуацию (mod_remoteip, | ||
| + | |||
| + | ===== Grabber - Can not download ===== | ||
| + | |||
| + | Если граббер (тумбы топа трейдеров, | ||
| + | |||
| + | * скачивает не SmartCJ, а сервак (curl lib конкретно) | ||
| + | * что б проверить можно на серваке в шеле сделать | ||
| + | |||
| + | wget http:// | ||
| + | or | ||
| + | curl http:// | ||
| + | | ||
| + | |||
| + | * и проверить что отвечает сервак (99% случаев - тут надо отписать админу с этой ошибкой) | ||
| + | |||
| + | Какие бывают причины: | ||
| + | |||
| + | * криво настроенный DNS: контент находится на IP 1.1.1.1 а у вас на серваке DNS отпределяет его как 2.2.2.2 | ||
| + | * IP сервака с которого вы пытаетесь скачать - забанен на хосте откуда надо скачать | ||
| + | |||
| + | |||
