Доброго всем времени суток! Есть сайт на 1C Битрикс, если обновить версию PHP в окружении до 7.2 то появляются проблемы в работе некоторых модуля SEO вызываемого из верхней админ панели: При попытке вызвать его он начинает ругаться на сессии: Если дальше обновить битрикс и PHP до 7.4 то он вообще крашится при вызове: При этом если включить буферизацию (output_buffering = On), то проблема пропадает в любой из версий PHP и Битрикса. Сравнил некоторые изменения конфигурации двух версий PHP которые касаются буферизации: Но где можно почитать за что отвечают эти значения которые выводит phpinfo()?!?? И какое изменение в PHP приводит к тому что один и тот же код работает на 7.1 и не работает на 7.2?!??
У тебя есть первичная проблема - что-то в программе выводит предупреждения, и её последствие - заголовки не могут быть созданы после того как что-то уже выведено. Для сессии нужны куки, куки в заголовках. Вот и получил проблему с сессией. Вторичную! Да, буферизация маскирует вторичную проблему. Типа поциент сломал ногу, ты дал ему обезболивающее, нога больше не болит. Но она, сука, по прежнему сломана. А первичную проблему ты не описал. Открывай исходный текст страницы и ищи варнинги и нотисы, исправляй их. --- Добавлено --- П.С. не надо постить в "пхп для профи". Этот раздел был создан в наивной надежде, что профи 80го левела будут общаться с профи не меньшего левела. А проблема headers have already been sent это проблема новичка, её узнает каждый на первом году знакомства с пхп.
Да это я уже понял Спасибо Кеп, было очень интересно, но ковыряться в ядре битрикса такая се задача. К тому же как я описал выше, один и тот же код работает на PHP 7.1 и не работает на 7.2, то есть 7.1 не колышет что заголовки уже были отправлены?!?? Вот я пытаюсь понять какие изменения от одной минорной версии к другой могли привести к ошибке --- Добавлено --- Ещё если отключить папку с локалями в папке local ошибка пропадает. Но что именно в них приводит к ошибкам не понятно. Весь код который там есть это заполнение массива: PHP: <?php $MESS["EVENT_SEND_ERROR"] = "Ошибка отправки письма"; $MESS["EVENT_SEND_SUCCESS"] = "Данные успешно отправлены"; $MESS["EMAIL_ERROR"] = "Некорретное значение email"; $MESS["FILE_ERROR"] = "Ошибка отправки файла"; $MESS["SEND_CONTRACT_TO_EMAIL_MESSAGE"] = "Вам был отправлен файл договора";
Попробуйте проинициализировать массив $MESS = []; перед загоном локалей, хз. Уточните, конфигурации PHP для разных версий одни и те же? Так-то нитисы-ворнинги смотреть надо, но на бесплатной основе никто не будет этим заниматься. Как-то сам переводил самописный магазин с PHP4 на PHP5, вот там было весело, в данном случае минорка сменилась, скорее всего конфиги виноваты, но всё бывает.
Проверил, ничего такого не Попробовал. Безрезультатно Файлы php.ini идентичны. Параметры окружения отличаются: Но это не на что не влияет
Тады ой: https://www.php.net/manual/ru/migration72.incompatible.php Ну и если мешают нотисы, сидеть и расковыривать.
Хочу уточнить, тут вы имеете ввиду поставить в конфиге: error_reporting = E_ALL display_errors =On display_startup_errors =On и изучать на то интерпретатор ругаться начнёт. Верно?!??
Ты не понял. Не код на битриксе, а код страницы хтмл, в браузере. Там сверху будет что-то вроде warning --- Добавлено --- Это даст информацию к поиску ошибки в настройках. Я не думаю что битрикс не совместим с пхп 7.2 --- Добавлено --- А в первом сообщении ты показывал склейку из пхпинфо, говорящую что пхп.ини разные.
ТС-у надо смотреть версию битрикса и совместимость с какими версиями PHP там заявлена. Да там левый снимок совсем, не про php.ini.
Читал уже, но идей это не прибавило Вроде всё прописал в конфиге, но на экран ничего не выводится. Плиз гляньте я не где тут не налажал: Снова не понял. Сорян, но можете чуток подробнее объяснить куды смотреть нужно?!?? Не только совместим, но и настоятельно требует обновления до PHP 7.4. Правда при это на сайте куча фич отваливается, но это уже совсем другая история Неа. Копировал и сравнивал php.ini двух версий PHP + конфиги окружения битрикса, они абсолютно идентичны Битрикс совместим с 7.4. Но обновление системы ошибку не решат Да понял уже, понял
А что если нам так и не удастся отыскать источник проблемы и для восстановления работоспособности SEO модуля будет тупо включена буферизация на сайте, чем это может быть чревато?!??
кроме того, что ты спрячешь от себя ошибки? хм, дайте подумать... --- Добавлено --- альтернатива: нажать таки в браузере Ctrl+U или Cmd+U и увидеть источник проблемы. но нет. слишком сложно.
Может ты уже "исправил" берез буферизацию, лол. Ты изначально писал "при попытке вызвать тра-та-та из админки...", а тут я вижу домашнюю страничку. Короче... Мне тратить время не хочется. Не хочу тебя уличать в умышленной или неумышленной подтасовке, просто прими аргументы к сведению. Я высказал свои соображения, основываясь на твоих вводных данных. Буферизация "исправляет" Headers have already set. Это показывает что где-то файрится ошибка ДО формирования заголовков, т.е. старта сессии, порождая преждевременный вывод. Буферизация просто отодвигает момент выдачи текста страницы. Дальше ты сам, пожалуйста.
И зачем оно мне?!?? Я пришёл сюда чтобы поискать новых идей, а не с Вами письками помериться. Именно поэтому я и не доумевал в предыдущем сообщении, мол а причем тут исходный код страницы.... вообще вызов SEO модуля происходит через ajax, так что воможно именно по этой причине на скрине выше нет того что Вы искали Да теорию я и сам знаю..... найти только участок с ошибкой не могу