Форум SAPE.RU

Форум SAPE.RU (http://forum.sape.ru/index.php)
-   Ошибки при работе с системой (http://forum.sape.ru/forumdisplay.php?f=14)
-   -   Система не видит код на странице, пока не включу force_show_code (http://forum.sape.ru/showthread.php?t=4541)

sdvv 16.09.2007 13:15

Система не видит код на странице, пока не включу force_show_code
 
Добрый день.

Развернул папку, поставил права, установил код. На странице пусто.
Захожу в SAPE.RU, вбиваю сайт - говорит проверьте установку кода.
Если ставлю force_show_code=true, то на странице по прежнему НИЧЕГО не показывается, но зато SAPE нормально все находит и начинает индексировать сайт.

ИМХО это хак, который непонятно как скажется на работоспособности в дальнейшем. Что делать?

Дополнительная информация:
1. Код PHP выполняется, из вышесказанного это понятно.

2. В links.db записи добавляются
a:3:{s:18:"__sape_delimiter__";s:0:"";s:16:"__sape _new_url__";s:17:"<!--check code-->";s:12:"__sape_ips__";a:5:{i:0;s:13:"81.176.228.7 3";i:1;s:13:"87.242.7
4.101";i:2;s:14:"81.176.230.132";i:3;s:13:"81.176. 228.49";i:4;s:13:"80.251.136.38";}}

3. Окружение:
php-5.1.6-12.el5
php-cli-5.1.6-12.el5
php-common-5.1.6-12.el5
php-devel-5.1.6-12.el5
php-ldap-5.1.6-12.el5
php-mbstring-5.1.6-12.el5
php-mysql-5.1.6-12.el5
php-pdo-5.1.6-12.el5

4. Файрвол опущен, SELinux выключен

5. Стоит Front-End (nginx 0.5.31)\Back-End (apache httpd httpd-2.2.3-7.el5.centos)
Фронт отдает на апач запрос с передачей полей:
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE_ADDR $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

6. Код установлен несколько дней назад, т.е. свежий.

7. Код расположен в отдельном файле, но подключается НЕ через подзапрос.
require_once( dirname(__FILE__) . '/templates/tables4.php');

8. Проблема скорее всего не в сайте, а в коде либо сервере, т.к. стоит несколько сайтов, ни один SAPE не увидел без force_show_code

Спасибо.

Mendel 16.09.2007 20:00

передавайте хост и адрес страницы напрямую - это часто описывалось.
force_show_code дает то что выводится кометарий по которому сапа узнает что ваш сайт содержит скрипт.

Avelon 16.09.2007 20:12

Цитата:

Сообщение от Mendel (Сообщение 41753)
передавайте хост и адрес страницы напрямую - это часто описывалось.
force_show_code дает то что выводится кометарий по которому сапа узнает что ваш сайт содержит скрипт.

да, скорее всего дело в алиасах

читайте вопрос 7 б) в частых вопросах

sdvv 17.09.2007 00:42

Спасибо за помощь. К сожалению эту подсказку я читал, но, похоже, это не мой случай и вот почему:

1. ИЩЕМ "ВЫВОДИТСЯ КОММЕНТАРИЙ"

Я тоже ожидал, что
Цитата:

force_show_code дает то что выводится кометарий по которому сапа узнает что ваш сайт содержит скрипт
но в HTML тексте страницы я не вижу никакого вывода от $sape->return_links(); Тем не менее система скрипт начинает видеть. Можно получить пояснения по механизму, как SAPE ищет свой скрипт?

Вот как подключается:
<?php
define('_SAPE_USER', '1*******************');
require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php');

$o['force_show_code'] = true;
$o['verbose'] = true;
$sape = new SAPE_client($o);
echo "SAPE START";
$sape->return_links();
echo "SAPE STOP";

?>

Вот что в HTML:
SAPE STARTSAPE STOP

Т.е. нет никакого вывода комментария.

2. ПРОВЕРЯЕМ ОКРУЖЕНИЕ

Создаю файлик info.php с вызовом phpinfo и вижу следующее в выводе:
Apache Environment
HTTP_HOST mrate.net
HTTP_X_REAL_IP 195.34.***.***
HTTP_REMOTE_ADDR 195.34.***.***
HTTP_X_FORWARDED_FOR 195.34.***.***
SERVER_NAME mrate.net
SERVER_ADDR 127.0.0.1
SERVER_PORT 80
REMOTE_ADDR 127.0.0.1
REQUEST_URI /info.php
SCRIPT_NAME /info.php

HTTP Request Headers
HTTP Request GET /info.php HTTP/1.0
Host mrate.net
X-Real-IP 195.69.***.***
REMOTE_ADDR 195.69.***.***
X-Forwarded-For 195.69.***.***

Т.е., как видите, переменная HTTP_HOST отдается корректно.
Также я не понял как может быть вот такое
Цитата:

"Ваш сервер не верно или в нестандартном формате возвращает переменную окружения HTTP_HOST (такая проблема часто бывает, если сайт ...... "висит" на нестандартном порту"
Да, сайт имеет алиас с www., но судя по Вашему коду Вы отрезаете www.

Имхо используемые переменные переданы корректно.
Также непонятно, почему нет никакого воздействия директивы verbose? :(

Спасибо

sdvv 19.09.2007 17:34

И все таки. Хочется получить помощь от админов.

$o['host'] = mrate.net';
$sape = new SAPE_client($o);
unset($o);

не помогло, да и не должно было помочь.

Avelon 19.09.2007 18:54

Цитата:

Сообщение от sdvv (Сообщение 42400)
И все таки. Хочется получить помощь от админов.

$o['host'] = mrate.net';
$sape = new SAPE_client($o);
unset($o);

не помогло, да и не должно было помочь.

в первой строчке ошибка

если так и не получится присылайте фтп доступ мне в личку + все данные на аккаунт

sdvv 20.09.2007 14:21

Да, видимо когда копировал строку из mc потерял кавычку.

Отписался в личку. Спасибо.

sdvv 21.09.2007 12:42

Благодаря Avalon и персоналу SAPE проблема решилась быстро, за что им отдельная благодарность.

Теперь, собственно пояснение:
Похожая проблема может быть у пользователей, использующих Front-End(nginx, lighttpd etc.) или Reverse Proxy(squid etc.) на сервере, к сожалению таких много. Возможны проблемы для пользователей, которые ходят через Proxy.

Причина:
В настоящее время скрипт sape ориентируется на поле REMOTE_ADDR для определения адреса клиента.

Вполне очевидно, что в нашем случае это будет адрес Front-End или Proxy (как правило, если Front-End стоит на том-же сервере - 127.0.0.1). При этом настоящие значения принято заносить в HTTP_X_REAL_IP и HTTP_REMOTE_ADDR.

Как лечить:
Пока в sape.php не внесли изменения (надеюсь, что их внесут), вот решение персонала SAPE (вставить в начало подключения скрипта)
$_SERVER[REMOTE_ADDR] = $_SERVER[HTTP_REMOTE_ADDR];
вот моя вариация на тему их решения, ИМХО более верная. Это если не вмешиватся в sape.php
if (isset($_SERVER['HTTP_X_REAL_IP'])) $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_REAL_IP']; else {
if (isset($_SERVER['HTTP_REMOTE_ADDR'])) $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_REMOTE_ADDR'];
}

Полностью подключение выглядит вот так:

<?php
define('_SAPE_USER', '****');
require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php');
if (isset($_SERVER['HTTP_X_REAL_IP'])) $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_REAL_IP']; else {
if (isset($_SERVER['HTTP_REMOTE_ADDR'])) $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_REMOTE_ADDR'];
}
$sape = new SAPE_client();
echo $sape->return_links();
?>

Все. Надеюсь это будет полезным.
Спасибо персоналу SAPE за быструю и квалифицированную помощь.

Hedgehog 21.09.2007 17:54

Сделали новую версию кода. Можно скачивать, если кому-то интересно.

Avelon 21.09.2007 18:45

в соответствии с вышеописанным глюком


Часовой пояс GMT +3, время: 03:10.

Работает на vBulletin® версия 3.8.7.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
SAPE.RU — система купли-продажи ссылок с главных и внутренних страниц сайтов.