Сайт обваливается
Доброго времени суток, устал уже, нет никаких сил по 100 раз уже восстанавливал сайт с нуля на modx, а он все равно зараза обваливается и слетает. Не могу понять в чем дело, есть сайт — акваклининг33.рф вот его я делаю на modx, суть в следующем. Сначала сайт нормально функционирует как нужно, но спустя сутки отваливаются сначала скрипты такие как — wow.js просто не отвечают и приходится останавливать сценарий, и ajax форма обратной связи feedback.js начинает работать наполовину а потом и сам сайт отваливается выдавая кучу ошибок.
В консоли пишет вот такую штуку и тут сразу целый набор скриптов которые почему то не хотят нормально уже работать а домен тестовый a0179940.xsph.ru:
Error: Script terminated by timeout at:
WOW.prototype.start/this.boxes<@http://a0179940.xsph.ru/assets/js/wow.js:206:39
WOW.prototype.start@http://a0179940.xsph.ru/assets/js/wow.js:202:21
bind/<@http://a0179940.xsph.ru/assets/js/wow.js:3:56
WOW.prototype.init@http://a0179940.xsph.ru/assets/js/wow.js:192:9
@http://a0179940.xsph.ru/assets/js/init.js:2:3
c@https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js:3:7852
fireWith@https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js:3:8658
ready@https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js:3:3264
H@https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js:3:693
Может кто нибудь сталкивался с такой проблемой? я замучал уже и себя и заказчика никогда на своей практике многолетней с таким не сталкивался, ну не хочет сайт работать и ВСЕ! Помогите кто может
В консоли пишет вот такую штуку и тут сразу целый набор скриптов которые почему то не хотят нормально уже работать а домен тестовый a0179940.xsph.ru:
Error: Script terminated by timeout at:
WOW.prototype.start/this.boxes<@http://a0179940.xsph.ru/assets/js/wow.js:206:39
WOW.prototype.start@http://a0179940.xsph.ru/assets/js/wow.js:202:21
bind/<@http://a0179940.xsph.ru/assets/js/wow.js:3:56
WOW.prototype.init@http://a0179940.xsph.ru/assets/js/wow.js:192:9
@http://a0179940.xsph.ru/assets/js/init.js:2:3
c@https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js:3:7852
fireWith@https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js:3:8658
ready@https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js:3:3264
H@https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js:3:693
Может кто нибудь сталкивался с такой проблемой? я замучал уже и себя и заказчика никогда на своей практике многолетней с таким не сталкивался, ну не хочет сайт работать и ВСЕ! Помогите кто может
Комментарии: 31
Мы уже даже на хостинг другой перешли, но везде одно и тоже, на тестовом домене этом с нуля воссоздал снова сайт, раньше все таблицы из бд брал и просто импортировал чтобы с нуля все не делать, сейчас прям все чанки, доп поля, и т.д все с нуля сделал, а итог опять такой же, и на тестовом сайте те же симптомы появились, сначала отваливаются скрипты, перестает работать форма, а потом и сайт обваливается и все, только бэкап исправляет а через время опять тоже самое
Открыл, увидел в консоли браузера 500 ошибку при запросе адреса /feedback/
Но текста ошибки нет. Возможно, из-за ее наличия js скрипты и зависают. Включите отображение ошибок на сервере, посмотрите, что происходит, исправьте.
Но текста ошибки нет. Возможно, из-за ее наличия js скрипты и зависают. Включите отображение ошибок на сервере, посмотрите, что происходит, исправьте.
мне просто интересен тот факт, что когда с бэкапа я восстанавливаю сайт, он работает как нужно, и скрипты с каталога feedback все прекрасно как нужно работает, никаких ошибок нет, в течении времени, сайт никто не трогает, и он сначала выдает в консоли то что я описал выше, а потом и совсем обваливается и выдает ошибки разряда
Warning: array_merge() [function.array-merge]: Argument #2 is not an array in /MYRoot/core/model/modx/modx.class.php on line 2409
Fatal error: Class 'modContext_' not found in /MyRoot/core/xpdo/xpdo.class.php on line 763
Warning: array_merge() [function.array-merge]: Argument #2 is not an array in /MYRoot/core/model/modx/modx.class.php on line 2409
Fatal error: Class 'modContext_' not found in /MyRoot/core/xpdo/xpdo.class.php on line 763
А что на строке 2409 в файле modx.class.php?
И в xpdo.class.php on line 763 ??
М.б. у вас дыра на сайте и вирус автоматически через некоторое время заражает сайт и портит файлы?
И в xpdo.class.php on line 763 ??
М.б. у вас дыра на сайте и вирус автоматически через некоторое время заражает сайт и портит файлы?
вот и я непонимаю, в чем может быть дело, cms качаю в официального сайта последнюю версию, вроде бы папка системная core, и файлы в ней от источника должны быть надежные, но вот откуда корни растут непонятно
смущает именно то что изначально ошибок нет, но они возникают без каких либо манипуляций, во всяком случае с моей стороны, а заказчику сомневаюсь что есть смысл что то там самому пытаться менять
Напишите адрес сайта. Мы посмотрим.
нашел(акваклининг33. рф/). тут проблема простая, бесплатная версия wow.js содержит скрипт для майнинга, покупайте WoW Commecial за 99 бачей, возможно проблема исчезнет.
а можно посмотреть на него на сам скрипт? как он выглядит?
откуда информация про майнер в стандартном скрипте?
в коде в репозитории ничего такого нет, скорее всего на сайте вирус сидит, который дописывает в js файлы всякую херню.
в коде в репозитории ничего такого нет, скорее всего на сайте вирус сидит, который дописывает в js файлы всякую херню.
как же его удалить? замучался уже
сможете дать архив файлов?
ну как Алексей? есть какие новости?
ничего не нашел, но мало ли.
Закройте на всякий случай папку core, там внутри htaccess лежит уже.
Если есть еще сайты на этом же аккаунте, стоит их проверить.
Можно поглядеть access логи, искать post запросы в core и нестандартные файлы.
Закройте на всякий случай папку core, там внутри htaccess лежит уже.
Если есть еще сайты на этом же аккаунте, стоит их проверить.
Можно поглядеть access логи, искать post запросы в core и нестандартные файлы.
если подумать методом исключений, то я скрипт feedback.js взял с рабочего у себя сайта, и там он вообще работает и никак не конфликтует и тоже на modx, то есть он точно отпадает, смущает меня wow.js и плагин js который я когда то нашел давно еще youtube.js чтобы подгружать видео на сайте когда на него кликнешь
проверял сайт неоднократно и на вирусы ничего не выдает
почему же тогда весь сайт в итоге ломается?
сам скрипт вот акваклининг33. рф/assets/js/wow.js — его смотри. Удали оттуда часть которую подгружает скрипт майнера.
то есть если к примеру вообще wow.js удалить проблема должна исчезнуть? вы точно уверены именно в этом файле?
а вы его совсем удалили? если нет, киньте посмотреть, пожалуйста
он у меня на тестовом еще остался вот он
(function() {
var MutationObserver, Util, WeakMap, getComputedStyle, getComputedStyleRX,
bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
Util = (function() {
function Util() {}
Util.prototype.extend = function(custom, defaults) {
var key, value;
for (key in defaults) {
value = defaults[key];
if (custom[key] == null) {
custom[key] = value;
}
}
return custom;
};
Util.prototype.isMobile = function(agent) {
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(agent);
};
Util.prototype.createEvent = function(event, bubble, cancel, detail) {
var customEvent;
if (bubble == null) {
bubble = false;
}
if (cancel == null) {
cancel = false;
}
if (detail == null) {
detail = null;
}
if (document.createEvent != null) {
customEvent = document.createEvent('CustomEvent');
customEvent.initCustomEvent(event, bubble, cancel, detail);
} else if (document.createEventObject != null) {
customEvent = document.createEventObject();
customEvent.eventType = event;
} else {
customEvent.eventName = event;
}
return customEvent;
};
Util.prototype.emitEvent = function(elem, event) {
if (elem.dispatchEvent != null) {
return elem.dispatchEvent(event);
} else if (event in (elem != null)) {
return elem[event]();
} else if (("on" + event) in (elem != null)) {
return elem["on" + event]();
}
};
Util.prototype.addEvent = function(elem, event, fn) {
if (elem.addEventListener != null) {
return elem.addEventListener(event, fn, false);
} else if (elem.attachEvent != null) {
return elem.attachEvent("on" + event, fn);
} else {
return elem[event] = fn;
}
};
Util.prototype.removeEvent = function(elem, event, fn) {
if (elem.removeEventListener != null) {
return elem.removeEventListener(event, fn, false);
} else if (elem.detachEvent != null) {
return elem.detachEvent("on" + event, fn);
} else {
return delete elem[event];
}
};
Util.prototype.innerHeight = function() {
if ('innerHeight' in window) {
return window.innerHeight;
} else {
return document.documentElement.clientHeight;
}
};
return Util;
})();
WeakMap = this.WeakMap || this.MozWeakMap || (WeakMap = (function() {
function WeakMap() {
this.keys = [];
this.values = [];
}
WeakMap.prototype.get = function(key) {
var i, item, j, len, ref;
ref = this.keys;
for (i = j = 0, len = ref.length; j < len; i = ++j) {
item = ref[i];
if (item === key) {
return this.values[i];
}
}
};
WeakMap.prototype.set = function(key, value) {
var i, item, j, len, ref;
ref = this.keys;
for (i = j = 0, len = ref.length; j < len; i = ++j) {
item = ref[i];
if (item === key) {
this.values[i] = value;
return;
}
}
this.keys.push(key);
return this.values.push(value);
};
return WeakMap;
})());
MutationObserver = this.MutationObserver || this.WebkitMutationObserver || this.MozMutationObserver || (MutationObserver = (function() {
function MutationObserver() {
if (typeof console !== "undefined" && console !== null) {
console.warn('MutationObserver is not supported by your browser.');
}
if (typeof console !== "undefined" && console !== null) {
console.warn('WOW.js cannot detect dom mutations, please call .sync() after loading new content.');
}
}
MutationObserver.notSupported = true;
MutationObserver.prototype.observe = function() {};
return MutationObserver;
})());
getComputedStyle = this.getComputedStyle || function(el, pseudo) {
this.getPropertyValue = function(prop) {
var ref;
if (prop === 'float') {
prop = 'styleFloat';
}
if (getComputedStyleRX.test(prop)) {
prop.replace(getComputedStyleRX, function(_, _char) {
return _char.toUpperCase();
});
}
return ((ref = el.currentStyle) != null ? ref[prop] : void 0) || null;
};
return this;
};
getComputedStyleRX = /(\-([a-z]){1})/g;
this.WOW = (function() {
WOW.prototype.defaults = {
boxClass: 'wow',
animateClass: 'animated',
offset: 0,
mobile: true,
live: true,
callback: null,
scrollContainer: null
};
function WOW(options) {
if (options == null) {
options = {};
}
this.scrollCallback = bind(this.scrollCallback, this);
this.scrollHandler = bind(this.scrollHandler, this);
this.resetAnimation = bind(this.resetAnimation, this);
this.start = bind(this.start, this);
this.scrolled = true;
this.config = this.util().extend(options, this.defaults);
if (options.scrollContainer != null) {
this.config.scrollContainer = document.querySelector(options.scrollContainer);
}
this.animationNameCache = new WeakMap();
this.wowEvent = this.util().createEvent(this.config.boxClass);
}
WOW.prototype.init = function() {
var ref;
this.element = window.document.documentElement;
if ((ref = document.readyState) === "interactive" || ref === "complete") {
this.start();
} else {
this.util().addEvent(document, 'DOMContentLoaded', this.start);
}
return this.finished = [];
};
WOW.prototype.start = function() {
var box, j, len, ref;
this.stopped = false;
this.boxes = (function() {
var j, len, ref, results;
ref = this.element.querySelectorAll("." + this.config.boxClass);
results = [];
for (j = 0, len = ref.length; j < len; j++) {
box = ref[j];
results.push(box);
}
return results;
}).call(this);
this.all = (function() {
var j, len, ref, results;
ref = this.boxes;
results = [];
for (j = 0, len = ref.length; j < len; j++) {
box = ref[j];
results.push(box);
}
return results;
}).call(this);
if (this.boxes.length) {
if (this.disabled()) {
this.resetStyle();
} else {
ref = this.boxes;
for (j = 0, len = ref.length; j < len; j++) {
box = ref[j];
this.applyStyle(box, true);
}
}
}
if (!this.disabled()) {
this.util().addEvent(this.config.scrollContainer || window, 'scroll', this.scrollHandler);
this.util().addEvent(window, 'resize', this.scrollHandler);
this.interval = setInterval(this.scrollCallback, 50);
}
if (this.config.live) {
return new MutationObserver((function(_this) {
return function(records) {
var k, len1, node, record, results;
results = [];
for (k = 0, len1 = records.length; k < len1; k++) {
record = records[k];
results.push((function() {
var l, len2, ref1, results1;
ref1 = record.addedNodes || [];
results1 = [];
for (l = 0, len2 = ref1.length; l < len2; l++) {
node = ref1[l];
results1.push(this.doSync(node));
}
return results1;
}).call(_this));
}
return results;
};
})(this)).observe(document.body, {
childList: true,
subtree: true
});
}
};
WOW.prototype.stop = function() {
this.stopped = true;
this.util().removeEvent(this.config.scrollContainer || window, 'scroll', this.scrollHandler);
this.util().removeEvent(window, 'resize', this.scrollHandler);
if (this.interval != null) {
return clearInterval(this.interval);
}
};
WOW.prototype.sync = function(element) {
if (MutationObserver.notSupported) {
return this.doSync(this.element);
}
};
WOW.prototype.doSync = function(element) {
var box, j, len, ref, results;
if (element == null) {
element = this.element;
}
if (element.nodeType !== 1) {
return;
}
element = element.parentNode || element;
ref = element.querySelectorAll("." + this.config.boxClass);
results = [];
for (j = 0, len = ref.length; j < len; j++) {
box = ref[j];
if (indexOf.call(this.all, box) < 0) {
this.boxes.push(box);
this.all.push(box);
if (this.stopped || this.disabled()) {
this.resetStyle();
} else {
this.applyStyle(box, true);
}
results.push(this.scrolled = true);
} else {
results.push(void 0);
}
}
return results;
};
WOW.prototype.show = function(box) {
this.applyStyle(box);
box.className = box.className + " " + this.config.animateClass;
if (this.config.callback != null) {
this.config.callback(box);
}
this.util().emitEvent(box, this.wowEvent);
this.util().addEvent(box, 'animationend', this.resetAnimation);
this.util().addEvent(box, 'oanimationend', this.resetAnimation);
this.util().addEvent(box, 'webkitAnimationEnd', this.resetAnimation);
this.util().addEvent(box, 'MSAnimationEnd', this.resetAnimation);
return box;
};
WOW.prototype.applyStyle = function(box, hidden) {
var delay, duration, iteration;
duration = box.getAttribute('data-wow-duration');
delay = box.getAttribute('data-wow-delay');
iteration = box.getAttribute('data-wow-iteration');
return this.animate((function(_this) {
return function() {
return _this.customStyle(box, hidden, duration, delay, iteration);
};
})(this));
};
WOW.prototype.animate = (function() {
if ('requestAnimationFrame' in window) {
return function(callback) {
return window.requestAnimationFrame(callback);
};
} else {
return function(callback) {
return callback();
};
}
})();
WOW.prototype.resetStyle = function() {
var box, j, len, ref, results;
ref = this.boxes;
results = [];
for (j = 0, len = ref.length; j < len; j++) {
box = ref[j];
results.push(box.style.visibility = 'visible');
}
return results;
};
WOW.prototype.resetAnimation = function(event) {
var target;
if (event.type.toLowerCase().indexOf('animationend') >= 0) {
target = event.target || event.srcElement;
return target.className = target.className.replace(this.config.animateClass, '').trim();
}
};
WOW.prototype.customStyle = function(box, hidden, duration, delay, iteration) {
if (hidden) {
this.cacheAnimationName(box);
}
box.style.visibility = hidden ? 'hidden' : 'visible';
if (duration) {
this.vendorSet(box.style, {
animationDuration: duration
});
}
if (delay) {
this.vendorSet(box.style, {
animationDelay: delay
});
}
if (iteration) {
this.vendorSet(box.style, {
animationIterationCount: iteration
});
}
this.vendorSet(box.style, {
animationName: hidden ? 'none' : this.cachedAnimationName(box)
});
return box;
};
WOW.prototype.vendors = ["moz", "webkit"];
WOW.prototype.vendorSet = function(elem, properties) {
var name, results, value, vendor;
results = [];
for (name in properties) {
value = properties[name];
elem["" + name] = value;
results.push((function() {
var j, len, ref, results1;
ref = this.vendors;
results1 = [];
for (j = 0, len = ref.length; j < len; j++) {
vendor = ref[j];
results1.push(elem["" + vendor + (name.charAt(0).toUpperCase()) + (name.substr(1))] = value);
}
return results1;
}).call(this));
}
return results;
};
WOW.prototype.vendorCSS = function(elem, property) {
var j, len, ref, result, style, vendor;
style = getComputedStyle(elem);
result = style.getPropertyCSSValue(property);
ref = this.vendors;
for (j = 0, len = ref.length; j < len; j++) {
vendor = ref[j];
result = result || style.getPropertyCSSValue("-" + vendor + "-" + property);
}
return result;
};
WOW.prototype.animationName = function(box) {
var animationName, error;
try {
animationName = this.vendorCSS(box, 'animation-name').cssText;
} catch (error) {
animationName = getComputedStyle(box).getPropertyValue('animation-name');
}
if (animationName === 'none') {
return '';
} else {
return animationName;
}
};
WOW.prototype.cacheAnimationName = function(box) {
return this.animationNameCache.set(box, this.animationName(box));
};
WOW.prototype.cachedAnimationName = function(box) {
return this.animationNameCache.get(box);
};
WOW.prototype.scrollHandler = function() {
return this.scrolled = true;
};
WOW.prototype.scrollCallback = function() {
var box;
if (this.scrolled) {
this.scrolled = false;
this.boxes = (function() {
var j, len, ref, results;
ref = this.boxes;
results = [];
for (j = 0, len = ref.length; j < len; j++) {
box = ref[j];
if (!(box)) {
continue;
}
if (this.isVisible(box)) {
this.show(box);
continue;
}
results.push(box);
}
return results;
}).call(this);
if (!(this.boxes.length || this.config.live)) {
return this.stop();
}
}
};
WOW.prototype.offsetTop = function(element) {
var top;
while (element.offsetTop === void 0) {
element = element.parentNode;
}
top = element.offsetTop;
while (element = element.offsetParent) {
top += element.offsetTop;
}
return top;
};
WOW.prototype.isVisible = function(box) {
var bottom, offset, top, viewBottom, viewTop;
offset = box.getAttribute('data-wow-offset') || this.config.offset;
viewTop = (this.config.scrollContainer && this.config.scrollContainer.scrollTop) || window.pageYOffset;
viewBottom = viewTop + Math.min(this.element.clientHeight, this.util().innerHeight()) - offset;
top = this.offsetTop(box);
bottom = top + box.clientHeight;
return top <= viewBottom && bottom >= viewTop;
};
WOW.prototype.util = function() {
return this._util != null ? this._util : this._util = new Util();
};
WOW.prototype.disabled = function() {
return !this.config.mobile && this.util().isMobile(navigator.userAgent);
};
return WOW;
})();
}).call(this);
Это скрипт такой же как в репозитории wowjs и ничего плохого там нет. Скорее всего у вас сидит вирус, который дописывает в js файлы вредоносный код
я и брал его как раз с репозитория, но как можно обнаружить где именно вирус сидит? есть какие нибудь методы кроме антивирусника онлайн
Попробуйте просканить сайт айболитом — AI-Bolit.
эти ошибки точно исчезнут" WOW.prototype.start/this.boxes...." А на счёт других не знаю.
В wow_js есть система копирования себя в другие части сайта. В виде пхп интеграцый.
В wow_js есть система копирования себя в другие части сайта. В виде пхп интеграцый.
Попробуйте переделать форму обратной связи (средствами FormIt Ajax), сейчас она пытается отправить данные во время загрузки страницы но неправильно указанный путь. joxi.net/zANJVevtl71REA. Также какие-то проблемы с кодировкой файлов. Настройте страницу 404 и Вашый сайт закрыт от индексации.
в том то и дело что поначалу сайт из бэкапа работает и форма функционирует и все прекрасно отправляет куда нужно, проходит время я ничего не трогаю и внезапно сыпятся эти ошибки
Возможно что проблема связана с кириллическим доменом. Можно попробовать в эту сторону посмотреть.
может быть, но все же не понятно по логике, как так сайт может работать его никто не трогает а потом как по команде разваливаться начать, мне кажется это скорее всего вирус какой то, ну не бывает же так, что сайт валится и не может cms найти классы, аж в папке core которая при установке была с официального сайта
Бывает что вирус может быть в самом ресурсе, отключите html редактор и посмотрите нет ли там чего подозрительного.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.