- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Доброго времени суток друзья!
При переносе сайта (modx evo) на новый сервер получил такое вот "чудо"
Почитав в интернетах по этому поводу: preg_replace модификатор /e теперь считается устаревшим. Используйте функцию preg_replace_callback()
Источник: http://php.net/manual/ru/function.preg-replace.php
Вроде бы все стало ясно, но ... к сожалению знаний что бы исправить это самому не хватает.
Честно пытался разобраться самостоятельно, но это так ни к чему и не привело.
Прошу помочь с преобразованием записи или натолкнуть на другое решение.
Вот кусок (Красным выделил строку на которую ругается):
function rewriteUrls($documentSource) {// rewrite the urls
if ($this->config['friendly_urls'] == 1) {
$aliases= array ();
foreach ($this->aliasListing as $item) {
$aliases[$item['id']]= (strlen($item['path']) > 0 ? $item['path'] . '/' : '') . $item['alias'];
}
$in= '!\[\~([0-9]+)\~\]!ise'; // Use preg_replace with /e to make it evaluate PHP
$isfriendly= ($this->config['friendly_alias_urls'] == 1 ? 1 : 0);
$pref= $this->config['friendly_url_prefix'];
$suff= $this->config['friendly_url_suffix'];
$thealias= '$aliases[\\1]';
$found_friendlyurl= "\$this->makeFriendlyURL('$pref','$suff',$thealias)";
$not_found_friendlyurl= "\$this->makeFriendlyURL('$pref','$suff','" . '\\1' . "')";
$out= "({$isfriendly} && isset({$thealias}) ? {$found_friendlyurl} : {$not_found_friendlyurl})";
$documentSource= preg_replace($in, $out, $documentSource);
} else {
$in= '!\[\~([0-9]+)\~\]!is';
$out= "index.php?id=" . '\1';
$documentSource= preg_replace_($in, $out, $documentSource);
}
return $documentSource;
}
Надеюсь на вашу помощь и заранее благодарен!
p.s. даунгрейд версии php прошу не предлагать
видимо у вас очень старая версия modx, т.к. modx evo нормально поддерживает php 5.5
https://modx.com/download/other-versions.html?releaseKey=evolution-1.0.15
https://github.com/modxcms/evolution/issues/413
обновите движок и проблем не будет
В самом начале функции добавьте строчку
error_reporting(ini_get("error_reporting") & ~8192);Проблему снимет, а по уму как выше заметили, надо обновить движок если есть такая возможность.
Лучшее решение - обновить MODX до актуальной версии, тем более что совсем недавно в паблик ушла серьезная уязвимость и пострадало множество сайтов.
Закроете эту ошибку - вылезет следующая, в старых версиях MODX множество мест, где использовались функции, которые помечены как устаревшие в версиях РНР, которые сейчас наиболее востребованы (5.6 & 7.0).
Ребята, всем большое спасибо за советы!
p.s. По вашим советам, моя проблема решилась обновлением ...