- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Чем вызвана необходимость смены версии ПХП? Какая была, а какая стала?
Начал устанавливать CMS, на сервере изначально стояла такая версия, ничего не менял.
Когда вылезла эта ошибка и начал Гуглить, то выяснил, что на более новых конфигурациях сервера "preg_replace" воспринимается за ошибку по новым правилам php и его необходимо заменить на "preg_replace_callback". Поменял и начало выкидывать ошибку, что оглашена в первом посту. Как его записать этот код в работоспособном виде, не умею. Вот и обратился на форум.
PARFUMER_, ну вы попробуйте сначала заметить ваш кусок кода:
function s1($A){
return str_replace("\\\"", "\"", $A);
}
function fixx($A,$H){
return preg_replace_callback("/(<[a-z][^<>]*?(?:src|href))=(['\"])?(.*?)(?(2)\\2|([\s>]))/i", "s1('\\1').__fixx('\\3','{$H}').'\\4'/", $A);
}
на
function s1($A){
return str_replace("\\\"", "\"", $A);
}
function fixx($A,$H){
return preg_replace_callback(
'/(<[a-z][^<>]*?(?:src|href))=(['\"])?(.*?)(?(2)\\2|([\s>]))/i',
function($matches){
return s1($matches[1]).__fixx($matches[3],$H).$matches[4].'/';
}, $A);
}
Как wanick пишет, должно работать
Скопировал и вставил. Данный кусок кода высвечивается серым цветом, как закоментированый код.
Прикрепляю в архиве сам этот файл, что в 36 строке вызывает ошибку.
действительно, там кавычка пропущена была. я добавил, теперь нормально высвечивается, посмотрите
Когда вылезла эта ошибка и начал Гуглить, то выяснил, что на более новых конфигурациях сервера "preg_replace" воспринимается за ошибку по новым правилам php и его необходимо заменить на "preg_replace_callback".
ЧяВО?
Меня одного это удивляет?
Ребят, смысл лечить ЕГО код, если мы не видели исходную ошибку и о чем вообще речь идет?
Я не говорю о том что от кода попахивает в принципе. Это то ладно. Но это уже код измененный человеком который не знает языка. Зачем ЭТО копать? Чтобы плодить глюки?
ТС, дайте значальный код который заглючил. Дайте ошибку которую получали. Дайте ссылку на то место где вам такое посоветовали. Тогда это будет что-то разумное.
ЧяВО?
Меня одного это удивляет?
Ребят, смысл лечить ЕГО код, если мы не видели исходную ошибку и о чем вообще речь идет?
Я не говорю о том что от кода попахивает в принципе. Это то ладно. Но это уже код измененный человеком который не знает языка. Зачем ЭТО копать? Чтобы плодить глюки?
ТС, дайте значальный код который заглючил. Дайте ошибку которую получали. Дайте ссылку на то место где вам такое посоветовали. Тогда это будет что-то разумное.
nikonlay Просмотрел исходный код и подправил ошибку. Файл установил в CMS и заработало нормально, без ошибок.
ЧяВО?
Меня одного это удивляет?
Просто preg_replace с модификатором /e устарел
nikonlay, Благодарю за помощь в решении вопроса. Подправленный файл исправно работает.
---------- Добавлено 22.08.2016 в 18:56 ----------
Просто preg_replace с модификатором /e устарел
Эти модификаторы и были изменены, а сам код приведен в соответствии с новыми правилами.
Теперь работает.
Благодарю всех заинтересованных в решении вопроса и оказавших реальную помощь!
Просто preg_replace с модификатором /e устарел
А там был евал? ыыы
Прелесть.
Но в любом случае депрекейтет можно и подавить. Мало ли где оно еще повылазит.
nikonlay, Благодарю за помощь в решении вопроса. Подправленный файл исправно работает.
Сергей, а что за ЦМС такая? движок с таким кодом гарантированно уязвим.
А там был евал? ыыы
Прелесть.
Но в любом случае депрекейтет можно и подавить. Мало ли где оно еще повылазит.
Сергей, а что за ЦМС такая? движок с таким кодом гарантированно уязвим.
ЦМС на файлах без БД. Или название интересно?
депрекейтет - что это слово обозначает?:)
Название конечно. Может на досуге обзаведусь десятком бесплатных проксей :)
Депрекейтет - в данном случае "предупреждение что в следующих версиях функцию уберут". У вас 5.5., в 5.5. предупреждение только появилось. Так что проще было запретить такие ошибки и всё. Чай не полечить безопасность такими исправлениями, а исправления могут и в других местах понадобится потом.