- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Что делать, если ваша email-рассылка попала в спам
10 распространенных причин и решений
Екатерина Ткаченко
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Доброго времени суток друзья!
При переносе сайта (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. По вашим советам, моя проблема решилась обновлением ...