Здравствуйте, сайт на Joomla 3.6.2, после ошибки пришлось восстанавливаться через резервную копию. Какие-то модули "слетели". Подкорректировала. Но на сайте которое время красуется надпись Script($url); } } if(!function_exists , в верхнем левом углу. Пыталась найти ошибку сама - не понимаю, гуглила - не нашла. Возможно это ошибка какого-то слетевшего модуля, плагина. Раньше ее не было. Где искать проблему?
модули отключала, не помогло. Сейчас отключала плагины, обновляла страницу - ничего не меняется. Что за скрипт - я вообще понятия не имею, может еще есть варианты? Прикрепляю код
index.php проверяй на неправильно закрытые теги. Видно в коде что <head> пустой, а служебные мета-теги находятся в <body> Проверь как на стандартном шаблоне.
или через ftp клиент или консоль пройдитесь по содержимому файлов оно должно быть не закодировано только не ищите по содержимому с итоговой страницы ( в оригинале, пробелы и абзацы ведь) ищите по if(!function_exist например
На стандартном шаблоне все отлично! На другом стороннем шаблоне эта надпись видна во время загрузки страницы (меньше секунды) и все, все нормально. Index.HTML пустые Spoiler: вот такие пустые (<html><body></body></html>) Файл проверила, прикрепляю его под спойлером (файл из шаблона, который на данный момент работает с ошибкой), иначе бесконечное сообщение получится Spoiler: index.php Код (PHP): <?php /** * * Main file * * @version 3.0.0 * @package Gavern Framework * @copyright Copyright (C) 2010 - 2012 GavickPro. All rights reserved. * */ // No direct access. defined('_JEXEC') or die; if(!defined('DS')){ define('DS',DIRECTORY_SEPARATOR); } // enable showing errors in PHP ini_set('error_reporting', E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT); ini_set('display_errors','Off'); // include framework classes and files require_once('lib/gk.framework.php'); require_once('lib/framework/gk.const.php'); // Add JavaScript Frameworks JHtml::_('bootstrap.framework'); // run the framework $tpl = new GKTemplate($this, $GK_TEMPLATE_MODULE_STYLES); // EOF А это файл который находится в корне сайта, тот же index.php Spoiler: index.php Код (PHP): <?php /** * @package Joomla.Site * * @copyright Copyright (C) 2005 - 2016 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ /** * Define the application's minimum supported PHP version as a constant so it can be referenced within the application. */ define('JOOMLA_MINIMUM_PHP', '5.3.10'); if (version_compare(PHP_VERSION, JOOMLA_MINIMUM_PHP, '<')) { die('Your host needs to use PHP ' . JOOMLA_MINIMUM_PHP . ' or higher to run this version of Joomla!'); } // Saves the start time and memory usage. $startTime = microtime(1); $startMem = memory_get_usage(); /** * Constant that is checked in included files to prevent direct access. * define() is used in the installation folder rather than "const" to not error for PHP 5.2 and lower */ define('_JEXEC', 1); if (file_exists(__DIR__ . '/defines.php')) { include_once __DIR__ . '/defines.php'; } if (!defined('_JDEFINES')) { define('JPATH_BASE', __DIR__); require_once JPATH_BASE . '/includes/defines.php'; } require_once JPATH_BASE . '/includes/framework.php'; // Set profiler start time and memory usage and mark afterLoad in the profiler. JDEBUG ? $_PROFILER->setStart($startTime, $startMem)->mark('afterLoad') : null; // Instantiate the application. $app = JFactory::getApplication('site'); // Execute the application. $app->execute(); по всем словам и частям искала, я так поняла это что-то вроде функции, но названия или указания на функцию нет. Я и дальше продолжаю искать, но пока ничего не могу найти. Дополнительно: нашла файл framework, в котором есть подобные функции (если ввести поиск по слову exist), но у каждой функции есть название, указание Spoiler: helper.cache.php Код (PHP): <?php // // Function for CSS/JS compression // class GKTemplateCache { // private $parent; // function __construct($parent) { $this->parent = $parent; } // function registerCache() { $dispatcher = JDispatcher::getInstance(); $dispatcher->register('onBeforeRender', 'useCache'); } function registerJSCompression() { $dispatcher = JDispatcher::getInstance(); $dispatcher->register('onBeforeCompileHead', 'useJSCompression'); } } if(!function_exists('useCache')){ function useCache() { $document = JFactory::getDocument(); $cache_css = $document->params->get('css_compression'); $overwrite = $document->params->get('css_cache'); $toAddURLs = array(); $toRemove = array(); $scripts = array(); $css_urls = array(); if($document->params->get('jscss_excluded') != '') { $toRemove = explode(',',$document->params->get('jscss_excluded')); } if ($cache_css) { foreach ($document->_styleSheets as $strSrc => $strAttr) { if (!preg_match('/\?.{1,}$/', $strSrc) && (!isset($strAttr['media']) || $strAttr['media'] == '')) { $break = false; if(count($toRemove) > 0) { foreach ($toRemove as $remove) { $remove = str_replace(' ', '', $remove); if(strpos($strSrc, $remove) !== false) { $toAddURLs[] = $strSrc; $break = true; continue; } } } if(!$break) { if (!preg_match('/\?.{1,}$/', $strSrc)) { $srcurl =cleanUrl($strSrc); if (!$srcurl) continue; //remove this css and add later if($srcurl != 'components/com_community/templates/gk_style/css/style.css') { unset($document->_styleSheets[$strSrc]); $path = str_replace('/', DS, $srcurl); $css_urls[] = array(JPATH_SITE . DS . $path, $srcurl); } //$document->_styleSheets = array(); } } } } } // re-add external scripts foreach($toAddURLs as $url) { $document->addStylesheet($url); } if ($cache_css) { $url = optimizecss($css_urls, $overwrite); if ($url) { $document->addStylesheet($url); } else { foreach ($css_urls as $urls) { $document->addStylesheet($urls[1]); //re-add stylesheet to head } } } } } if(!function_exists('useJSCompression')){ function useJSCompression() { $js_urls = array(); $toAddURLs = array(); $document = &JFactory::getDocument(); $toRemove = array(); $break = false; if($document->params->get('jscss_excluded') != '') { $toRemove = explode(',',$document->params->get('jscss_excluded')); } foreach ($document->_scripts as $strSrc => $strAttr) { if(count($toRemove) > 0) { foreach ($toRemove as $remove){ $remove = str_replace(' ', '', $remove); if(strpos($strSrc, $remove) !== false) { $toAddURLs[] = $strSrc; $break = true; continue; } } } if(!$break) { $srcurl = cleanUrl($strSrc); unset($document->_scripts[$strSrc]); if (!$srcurl){ $js_urls[] = array($strSrc, $strSrc); } else { $path = str_replace('/', DS, $srcurl); $js_urls[] = array(JPATH_SITE . DS . $path, JURI::base(true) . '/' . $srcurl); } } $break = false; } // clean all scripts $document->_scripts = array(); // optimize or re-add $url = optimizejs($js_urls, false); if ($url) { $document->addScript($url); } else { foreach ($js_urls as $urls) $document->addScript($url[1]); //re-add stylesheet to head } // re-add external scripts foreach($toAddURLs as $url) $document->addScript($url); } } if(!function_exists('cleanUrl')){ function cleanUrl($strSrc) { if (preg_match('/^https?\:/', $strSrc)) { if (!preg_match('#^' . preg_quote(JURI::base()) . '#', $strSrc)) return false; //external css $strSrc = str_replace(JURI::base(), '', $strSrc); } else { if (preg_match('/^\//', $strSrc)) { if (!preg_match('#^' . preg_quote(JURI::base(true)) . '#', $strSrc)) return false; //same server, but outsite website $strSrc = preg_replace('#^' . preg_quote(JURI::base(true)) . '#', '', $strSrc); } } $strSrc = str_replace('//', '/', $strSrc); $strSrc = preg_replace('/^\//', '', $strSrc); return $strSrc; } } if(!function_exists('optimizecss')){ function optimizecss($css_urls, $overwrite = false) { $content = ''; $files = ''; //jimport('joomla.filesystem.file'); foreach ($css_urls as $url) { $files .= $url[1]; //join css files into one file $content .= "/* FILE: {$url[1]} */\n" . compresscss(JFile::read($url[1]), $url[1]) . "\n\n"; } $file = md5($files) . '.css'; if(useGZip()) $file = $file.'.php'; $expireHeader = (int) 30 * 24 * 60 * 60; if(useGZip()) { $headers = "<?php if(extension_loaded('zlib')){ob_start('ob_gzhandler');} header(\"Content-type: text/css\");"; $headers .= "header(\"Content-Encoding: gzip\");"; } $headers .= "header('Expires: " . gmdate('D, d M Y H:i:s', strtotime(date('D, d M Y H:i:s')) + $expireHeader) . " GMT');"; $headers .= "header('Last-Modified: " . gmdate('D, d M Y H:i:s', strtotime(date('D, d M Y H:i:s'))) . " GMT');"; $headers .= "header('Cache-Control: Public');"; $headers .= "header('Vary: Accept-Encoding');?>"; $content = $headers . $content; $url = store_file($content, $file, $overwrite); return $url; } } if(!function_exists('optimizejs')){ function optimizejs($js_urls, $overwrite = false) { $content = ''; $files = ''; jimport('joomla.filesystem.file'); foreach ($js_urls as $url) { $files .= $url[1]; $srcurl = cleanUrl($url[1]); if (!$srcurl){ if (preg_match('/http/', $url[0])) { $external = file_get_contents($url[0]); } else { $external = file_get_contents('http:'.$url[0]); } $content .= "/* FILE: {$url[0]} */\n" . $external . "\n\n"; } else { $content .= "/* FILE: {$url[1]} */\n" . @JFile::read($url[0]) . "\n\n"; } } $file = md5($files) . '.js'; if(useGZip()) $file = $file.'.php'; $path = JPATH_SITE . DS . 'cache' . DS . 'gk'. DS . $file; if (is_file($path) && filesize($path) > 0) { // skip compression and leave current URL } else { $content = compressjs($content); } $expireHeader = (int) 30 * 24 * 60 * 60; if(useGZip()) { $headers = "<?php if(extension_loaded('zlib')){ob_start('ob_gzhandler');} header(\"Content-type: text/javascript\");"; $headers .= "header(\"Content-Encoding: gzip\");"; } $headers .= "header('Expires: " . gmdate('D, d M Y H:i:s', strtotime(date('D, d M Y H:i:s')) + $expireHeader) . " GMT');"; $headers .= "header('Last-Modified: " . gmdate('D, d M Y H:i:s', strtotime(date('D, d M Y H:i:s'))) . " GMT');"; $headers .= "header('Cache-Control: Public');"; $headers .= "header('Vary: Accept-Encoding');?>"; $content = $headers.$content; $url = store_file($content, $file, true); return $url; } } if(!function_exists('compressjs')){ function compressjs($data) { require_once(dirname(__file__) . DS . 'minify' . DS . 'JSMin.php'); $data = JSMin::minify($data); return $data; } } if(!function_exists('compresscss')){ function compresscss($data, $url) { global $current_css_url; $current_css_url = JURI::root() . $url; /* remove comments */ $data = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $data); /* remove tabs, spaces, new lines, etc. */ $data = str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), ' ', $data); /* remove unnecessary spaces */ $data = preg_replace('/[ ]+([{};,:])/', '\1', $data); $data = preg_replace('/([{};,:])[ ]+/', '\1', $data); /* remove empty class */ $data = preg_replace('/(\}([^\}]*\{\})+)/', '}', $data); /* remove PHP code */ $data = preg_replace('/<\?(.*?)\?>/mix', '', $data); /* replace url*/ $data = preg_replace_callback('/url\(([^\)]*)\)/', 'replaceurl', $data); return $data; } } if(!function_exists('replaceurl')){ function replaceurl($matches) { $url = str_replace(array('"', '\''), '', $matches[1]); global $current_css_url; $url = converturl($url, $current_css_url); return "url('$url')"; } } if(!function_exists('converturl')){ function converturl($url, $cssurl) { $base = dirname($cssurl); if (preg_match('/^(\/|http)/', $url)) return $url; /*absolute or root*/ while (preg_match('/^\.\.\//', $url)) { $base = dirname($base); $url = substr($url, 3); } $url = $base . '/' . $url; return $url; } } if(!function_exists('store_file')){ function store_file($data, $filename, $overwrite = false) { $path = 'cache' . DS . 'gk'; jimport('joomla.filesystem.folder'); if (!is_dir($path)) JFolder::create($path); $path = $path . DS . $filename; $url = JURI::base(true) .DS. 'cache'. DS .'gk' . DS. $filename; if (is_file($path) && !$overwrite) return $url; JFile::write($path, $data); return is_file($path) ? $url : false; } } if(!function_exists('useGZip')){ function useGZip() { if (!isset($_SERVER['HTTP_ACCEPT_ENCODING'])) { return false; } elseif (!extension_loaded('zlib') || ini_get('zlib.output_compression')) { return false; } else { return true; } } } // EOF
Странный разработчик, отключил показ некоторых ошибок в шаблоне, а потом вовсе отключил . Или эт уже хакер постарался Код (PHP): [LIST=1] [*]// enable showing errors in PHP [*]ini_set('error_reporting', E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT); [*]ini_set('display_errors','Off'); [/LIST] Если удалить ~E_WARNING, должны быть ошибки с указанием на файл
Если [*]ini_set('display_errors','Off');, то это я ))) Дело в том что у некоторых шаблонов несовместимость с php 5.6, у нас на хостинге именно такой стоял, поэтому весь сайт был в ошибках. Сейчас отображение ошибок включила, перешла на php 5.5, ошибки несовместимости пропали. Удалила E-warning, никакой реакции нет, надписи хоть бы хны
Вроде этого? 2016-10-10T23:19:26+00:00 INFO 194.87.237.59 joomlafailure Имя пользователя и пароль не совпадают или у вас еще нет учетной записи на сайте Всю ночь искала, безрезультатно. Наткнулась на некие валидаторы, если разъясните то что на прикрепленном фото языком попроще - буду рада. На хосте только один файл нашла с этим скриптом, в папке cache, с длинным и сложным названием файла. Я так поняла это просто кэш. Почистила. Безрезультатно. Подумываю о том что ошибка выводится из SQL базы? Поделитесь мыслями? PS на HikaShop есть всплывающее окошко для регистрации, так оно всплыло и там тоже эта надпись на самом верху PPS если я не уточнила, то уточню сейчас - эта надпись на всех страницах
Может и вирус быть в папке кеша и вызывать левую функцию, которая удалена как вирус, в тело страницы. Лог ошибок хостинга- error.log
Ааа, вон какой. Прикрепляю его, может вам что-нибудь понятно? PS HikaShop только вчера установлен был Spoiler: Содержимое error.log 2016/10/12 12:15:59 [warn] 8724#8724: *6593 a client request body is buffered to a temporary file /var/cache/nginx/client_temp/0000000033, client: 178.163.64.41, server: grifboard.ru, request: "POST /administrator/index.php?tmpl=component&option=com_hikashop HTTP/1.1", host: "grifboard.ru", referrer: "http://grifboard.ru/administrator/i...=component&ctrl=config&task=latest&code=ru-RU"
Стоп- снова дебри . Зачем логи . Ошибку искать в шаблоне или шаблон переустановить. Все так же на сайте теги не на месте .
Спасибо за помощь! Причина была в неправильной установке шаблона. Для тех у кого возникнет похожая проблема - мой шаблон был с квикстартом (что не нужно), выдернула шаблон, установила, но, с вот таким косяком. После переустановки через квикстарт все устранилось