За последние 24 часа нас посетил 22661 программист и 1281 робот. Сейчас ищут 782 программиста ...

Разница между PHP 7.1 и 7.2?

Тема в разделе "Прочие вопросы по PHP", создана пользователем JastaFly, 7 апр 2021.

  1. JastaFly

    JastaFly Активный пользователь

    С нами с:
    4 ноя 2019
    Сообщения:
    46
    Симпатии:
    3
    Доброго всем времени суток! Есть сайт на 1C Битрикс, если обновить версию PHP в окружении до 7.2 то появляются проблемы в работе некоторых модуля SEO вызываемого из верхней админ панели:
    [​IMG]
    При попытке вызвать его он начинает ругаться на сессии:
    [​IMG]
    Если дальше обновить битрикс и PHP до 7.4 то он вообще крашится при вызове:
    [​IMG]
    При этом если включить буферизацию (output_buffering = On), то проблема пропадает в любой из версий PHP и Битрикса. Сравнил некоторые изменения конфигурации двух версий PHP которые касаются буферизации:
    [​IMG]
    Но где можно почитать за что отвечают эти значения которые выводит phpinfo()?!??
    И какое изменение в PHP приводит к тому что один и тот же код работает на 7.1 и не работает на 7.2?!??
     
  2. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    861
    Симпатии:
    132
    Сравнил к БД настройки или, даже, статистику относящуюся, а не к этому поделию )
     
  3. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
    У тебя есть первичная проблема - что-то в программе выводит предупреждения,
    и её последствие - заголовки не могут быть созданы после того как что-то уже выведено. Для сессии нужны куки, куки в заголовках. Вот и получил проблему с сессией. Вторичную! Да, буферизация маскирует вторичную проблему. Типа поциент сломал ногу, ты дал ему обезболивающее, нога больше не болит. Но она, сука, по прежнему сломана.


    А первичную проблему ты не описал. Открывай исходный текст страницы и ищи варнинги и нотисы, исправляй их.
    --- Добавлено ---
    П.С. не надо постить в "пхп для профи". Этот раздел был создан в наивной надежде, что профи 80го левела будут общаться с профи не меньшего левела. А проблема headers have already been sent это проблема новичка, её узнает каждый на первом году знакомства с пхп.
     
  4. JastaFly

    JastaFly Активный пользователь

    С нами с:
    4 ноя 2019
    Сообщения:
    46
    Симпатии:
    3
    Да это я уже понял
    Спасибо Кеп, было очень интересно, но ковыряться в ядре битрикса такая се задача. К тому же как я описал выше, один и тот же код работает на PHP 7.1 и не работает на 7.2, то есть 7.1 не колышет что заголовки уже были отправлены?!?? Вот я пытаюсь понять какие изменения от одной минорной версии к другой могли привести к ошибке
    --- Добавлено ---
    Ещё если отключить папку с локалями в папке local ошибка пропадает. Но что именно в них приводит к ошибкам не понятно. Весь код который там есть это заполнение массива:
    PHP:
    1. <?php
    2. $MESS["EVENT_SEND_ERROR"] = "Ошибка отправки письма";
    3. $MESS["EVENT_SEND_SUCCESS"] = "Данные успешно отправлены";
    4. $MESS["EMAIL_ERROR"] = "Некорретное значение email";
    5. $MESS["FILE_ERROR"] = "Ошибка отправки файла";
    6. $MESS["SEND_CONTRACT_TO_EMAIL_MESSAGE"] = "Вам был отправлен файл договора";
     
  5. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    Ещё там может быть BOM в начале или что-нибудь после закрывающего ?> (если он, конечно, есть.)
     
  6. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    861
    Симпатии:
    132
    Попробуйте проинициализировать массив $MESS = []; перед загоном локалей, хз.
    Уточните, конфигурации PHP для разных версий одни и те же?
    Так-то нитисы-ворнинги смотреть надо, но на бесплатной основе никто не будет этим заниматься.
    Как-то сам переводил самописный магазин с PHP4 на PHP5, вот там было весело, в данном случае минорка сменилась, скорее всего конфиги виноваты, но всё бывает.
     
  7. JastaFly

    JastaFly Активный пользователь

    С нами с:
    4 ноя 2019
    Сообщения:
    46
    Симпатии:
    3
    Проверил, ничего такого не
    Попробовал. Безрезультатно
    Файлы php.ini идентичны. Параметры окружения отличаются:
    envrivaement.jpg
    Но это не на что не влияет
     
  8. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    861
    Симпатии:
    132
  9. JastaFly

    JastaFly Активный пользователь

    С нами с:
    4 ноя 2019
    Сообщения:
    46
    Симпатии:
    3
    Хочу уточнить, тут вы имеете ввиду поставить в конфиге:
    error_reporting = E_ALL
    display_errors =On
    display_startup_errors =On
    и изучать на то интерпретатор ругаться начнёт. Верно?!??
     
  10. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    861
    Симпатии:
    132
    Если это не прод, конечно, или нанять специально обученного человека )))
     
  11. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
    Ты не понял. Не код на битриксе, а код страницы хтмл, в браузере. Там сверху будет что-то вроде warning
    --- Добавлено ---
    Это даст информацию к поиску ошибки в настройках. Я не думаю что битрикс не совместим с пхп 7.2
    --- Добавлено ---


    А в первом сообщении ты показывал склейку из пхпинфо, говорящую что пхп.ини разные.
     
  12. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
    хехе. он уже начал ругаться. ты просто игнорируешь этот факт.
     
  13. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    861
    Симпатии:
    132
    ТС-у надо смотреть версию битрикса и совместимость с какими версиями PHP там заявлена.
    Да там левый снимок совсем, не про php.ini.
     
  14. JastaFly

    JastaFly Активный пользователь

    С нами с:
    4 ноя 2019
    Сообщения:
    46
    Симпатии:
    3
    Читал уже, но идей это не прибавило
    Вроде всё прописал в конфиге, но на экран ничего не выводится. Плиз гляньте я не где тут не налажал:
    error_reporting.jpg
    Снова не понял. Сорян, но можете чуток подробнее объяснить куды смотреть нужно?!??
    Не только совместим, но и настоятельно требует обновления до PHP 7.4. Правда при это на сайте куча фич отваливается, но это уже совсем другая история
    Неа. Копировал и сравнивал php.ini двух версий PHP + конфиги окружения битрикса, они абсолютно идентичны
    Битрикс совместим с 7.4. Но обновление системы ошибку не решат
    Да понял уже, понял
     
  15. JastaFly

    JastaFly Активный пользователь

    С нами с:
    4 ноя 2019
    Сообщения:
    46
    Симпатии:
    3
    А что если нам так и не удастся отыскать источник проблемы и для восстановления работоспособности SEO модуля будет тупо включена буферизация на сайте, чем это может быть чревато?!??
     
  16. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
    кроме того, что ты спрячешь от себя ошибки? хм, дайте подумать...
    --- Добавлено ---
    альтернатива: нажать таки в браузере Ctrl+U или Cmd+U и увидеть источник проблемы. но нет. слишком сложно.
     
  17. JastaFly

    JastaFly Активный пользователь

    С нами с:
    4 ноя 2019
    Сообщения:
    46
    Симпатии:
    3
    И как просмотр исходного HTML страницы поможет мне решить проблему???!
     
  18. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
    если не понимаешь, покажи первые строчки нам
     
  19. JastaFly

    JastaFly Активный пользователь

    С нами с:
    4 ноя 2019
    Сообщения:
    46
    Симпатии:
    3
    Ok просветите меня:
    source.jpg
     
  20. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
    Может ты уже "исправил" берез буферизацию, лол. Ты изначально писал "при попытке вызвать тра-та-та из админки...", а тут я вижу домашнюю страничку. Короче...
    Мне тратить время не хочется. Не хочу тебя уличать в умышленной или неумышленной подтасовке, просто прими аргументы к сведению. Я высказал свои соображения, основываясь на твоих вводных данных. Буферизация "исправляет" Headers have already set. Это показывает что где-то файрится ошибка ДО формирования заголовков, т.е. старта сессии, порождая преждевременный вывод. Буферизация просто отодвигает момент выдачи текста страницы.
    Дальше ты сам, пожалуйста.
     
  21. JastaFly

    JastaFly Активный пользователь

    С нами с:
    4 ноя 2019
    Сообщения:
    46
    Симпатии:
    3
    И зачем оно мне?!?? Я пришёл сюда чтобы поискать новых идей, а не с Вами письками помериться. Именно поэтому я и не доумевал в предыдущем сообщении, мол а причем тут исходный код страницы.... вообще вызов SEO модуля происходит через ajax, так что воможно именно по этой причине на скрине выше нет того что Вы искали
    Да теорию я и сам знаю..... найти только участок с ошибкой не могу