PHP 5.x – старикам здесь (не) место

    Индустрия хостинга неразрывно связана с PHP, на котором полностью или частично написаны более 80% сайтов в Internet. Это сильно влияет на разработку любого софта, предназначенного для работы с хостингом — в том числе такого, как контрольная панель Plesk. Мы делаем продукт для автоматизации управления сервером, создания и конфигурации веб-сайтов и приложений, а значит, и для использования PHP. Одной из наших ключевых задач является необходимость поддерживать уже устаревшие версии PHP – сфера хостинговых услуг, как любой крупный рынок, довольно инертна, и переход на новый PHP происходит крайне медленно. Несмотря на то, что Plesk предоставляет пользователям самые свежие версии PHP в течение 48 часов после их релиза, миллионы сайтов продолжают работать на старых версиях, поэтому спрос на решения, которые могут предоставить их поддержку, остается высоким. Именно по этой причине Plesk продолжает поддерживать и EOLed-бранчи до PHP 5.2 включительно.

    В то же время мы отдаем себе отчет, что риск использования устаревших версий PHP — это не только слабая производительность и бедный функционал, но и потенциальные уязвимости, которые могут возникнуть в любой момент и обойтись владельцу сайта очень дорого. Если не подталкивать своих клиентов к обновлению хотя бы до PHP 5.6, то в случае появления уязвимости, к примеру, в PHP 5.2, за ней может последовать взлом тысяч сайтов и обвинения в использовании небезопасного софта. Поэтому начиная с новой версии Plesk Onyx 17.8, которая вышла в начале марта 2018, устаревшие версии PHP помечены в интерфейсе как Outdated.


    Мы решили, что полностью прекратить поддержку старого PHP можно только убедившись, что процент работающих на нем сайтов пренебрежимо мал – в таком случае этот шаг не вызовет фрустрацию среди сколь угодно значимой части пользовательской аудитории. С этой целью мы провели статистическое исследование, призванное определить, какие версии PHP наиболее популярны среди пользователей Plesk. Его результатами — весьма, на наш взгляд, любопытными — мы и хотим поделиться.

    Информацию о том, на каком PHP работают сайты наших клиентов, мы начали анализировать относительно недавно. Она собирается для двух последних релизов Plesk Onyx и охватывает около 15% сайтов, работающих на этих версиях Plesk. В статистику не вошли старые версии Plesk, где, возможно, используется более старый РНР, но это не кажется нам большой проблемой. Собранная информация о предпочтениях людей, использующих последние версии Plesk (а значит, являющихся самой лояльной к продукту частью аудитории), сама по себе является крайне показательной. Заставить обновиться тех, кто использует неподдерживаемые версии продукта на неподдерживаемых осях, мы не можем – более того, в их ситуации старый PHP, скорее всего, не самая большая беда. Рано или поздно эти пользователи перейдут на новые версии Plesk, и тогда их сайты окажутся доступными для нашей аналитики.

    На текущий момент самыми свежими версиями РНР являются версии 7.1 и 7.2. Они активно поддерживаются производителем, что подразумевает регулярные обновления с багфиксами и исправлениями обнаруженных уязвимостей. Версии 5.6 и 7.0 помечены вендором как security fixes only – чинятся только критичные проблемы с безопасностью. Наконец, PHP 5.4 и 5.5 не поддерживаются ни в каком виде с 2016 года, их пользователям рекомендуется как можно скорее перейти на более свежие версии во избежание возможных проблем с безопасностью сайтов. Давайте посмотрим, насколько соблюдаются эти рекомендации и чего пользователи боятся сильнее – обновить РНР или стать жертвой очередной уязвимости.

    Соотношение версий PHP по всем попавшим в выборку сайтам, работающим на Plesk, на начало марта 2018 выглядело так:


    Как видно, в целом дела обстоят не блестяще – рекомендуемые вендором версии не попали в топ – более того, они вообще оказались в хвосте. Следующий логичный вопрос: насколько эта картина отличается от страны к стране? Самыми крупными странами, где популярность Plesk традиционно высока, являются Германия, США и Испания. С них и начнем.

    Германия


    Германия с обновлением PHP не спешит – тройку лидеров в этой стране сформировали PHP 5.5 (33% сайтов), PHP 5.6 (24%) и PHP 7.0 (13%). На рекомендуемых версиях 7.1 и 7.2 работает лишь 8% сайтов.


    США


    Соединенные Штаты на первый взгляд могут показаться ещё более консервативными. На первом месте вышел PHP 5.4 (28%), но ему в спину дышит РНР 5.6, сравнительная доля которого выше, чем в Германии – 27%. Интересно, что наиболее популярная в Германии версия 5.5 в США используется только на 7% сайтов.


    Испания


    В Испании всё несколько бодрее: 36% сайтов работают на PHP 5.6 – не самой свежей, но хотя бы поддерживаемой версии. Второе место у PHP 5.4 (22%), третье – уже традиционно за версией 7.0 (14%).


    Любопытно, что в каждой из этих трёх стран первое место в рейтинге популярности принадлежало разным версиям. Это навело нас на мысль составить сводную таблицу, где каждой стране выборки соответствует наиболее популярная в ней версия РНР. Результаты перед вами:

    Country Most popular PHP version
    Australia 5.6
    Austria 5.6
    Belarus 5.6
    Brazil 5.6
    Canada 5.6
    China 4.4
    Czech Republic 5.6
    Denmark 7.0
    Estonia 5.6
    Finland 5.3
    France 5.6
    Germany 5.5
    Great Britain 5.6
    Greece 5.3
    India 5.4
    Iran 5.6
    Italy 5.6
    Japan 5.3
    Kazakhstan 5.5
    Korea 7.0
    Latvia 5.4
    Lithuania 7.1
    Mexico 5.4
    Netherlands 5.6
    Norway 5.6
    Poland 5.6
    Romania 5.6
    Russia 5.4
    Spain 5.6
    Sweden 5.6
    Turkey 5.4
    Ukraine 5.4
    United States 5.4

    В номинации «Самая продвинутая страна» победила Литва – больше всего сайтов (38%) работают на версии 7.1! Повторить свой успех где-либо ещё PHP 7.1 пока не удалось – во всех остальных странах ни версия 7.1, ни версия 7.2 не поднялась выше 4 места.

    Следующими в рейтинге “продвинутости” являются Южная Корея и Дания, где самой популярной версией PHP является 7.0 (51% и 34% соответственно). Эта версия PHP оказалась на втором месте в Нидерландах (19%), Австрии (17%) и Чехии (13%), уступая пальму первенства лишь PHP 5.6 (кстати, в Чехии на 5.6 работают целых 65% сайтов).

    Что же творится в России? Увы, устаревший и небезопасный PHP – реальность и в нашей стране. Первенство с большим отрывом за PHP 5.4 (45%), аналогичная ситуация с украинскими сайтами (24%), а вот Беларусь оказалась более современной – на первом месте PHP 5.6 (40%). В Казахстане первое место занимает PHP 5.5 (32%).


    Ещё хуже обстоят дела в Японии и Греции – там лидирует PHP 5.3 (30% и 37% от всех сайтов соответственно). Но самым консервативным оказался Китай: 44% сайтов здесь работают на PHP 4.4! Такого мы не встретили больше ни в одной стране.


    Всего же в Китае на устаревших версиях РНР работает 77% сайтов. По этому показателю его опережает только Мексика – 78%. На третьем месте Россия (67% сайтов), замыкают же топ-5 поклонников старого РНР Казахстан (65%) и Япония (63%).

    Рейтинг самых сознательных стран с наибольшей долей сайтов на свежем PHP (5.6 и новее) возглавляет Южная Корея – 85% сайтов. Второе место у Чехии (84%), третье – у Швеции (83%), дальше разрыв начинает расти – на четвертом месте Иран (73%), на пятом – Дания (69%).

    Приведённая статистика наглядно свидетельствует, что говорить о прекращении поддержки версий PHP старее 5.6 пока рано – и не только в России. В то же время, как уже говорилось в начале статьи, мягко подталкивать людей в этом направлении определенно стоит. Со своей стороны, Plesk старается сделать переход на новый PHP как можно более комфортным и безболезненным. Предупреждая об устаревшем PHP, мы делаем следующее:

    • учитываем в настройках по умолчанию, какой PHP поставляется вендором операционной системы;
    • если производитель ОС предоставляет не самую последнюю версию РНР, дополняем комплект РНР-хэндлеров и предоставляем полный комплект, включая старые и новые версии;
    • на новых инсталляциях предлагаем актуальные версии PHP (но не переключаем на них автоматом при обновлении со старых версий Plesk, чтобы не сломать работающие сайты).

    Эти шаги уже начинают приносить плоды – за месяц, пока писалась эта статья, в общей выборке по всем странам на третье место вышел PHP 7.0, вытеснив из тройки лидеров PHP 5.5. Это значит, что мы идём в правильном направлении – надеемся, что все остальные будут двигаться в сторону безопасного web’a вместе с нами. Если у вас есть причины, по которым вы предпочитаете старый PHP новому, пожалуйста, поделитесь ими в комментариях.

    Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

    Какую версию РНР используете вы?

    Plesk

    72,00

    Plesk – панель управления хостингом

    Поделиться публикацией

    Похожие публикации

    Комментарии 35
      +1
      Как ни странно, у меня совместимость поломалась не между 5.6 и 7.1, как можно было бы ожидать, а между 7.1 и 7.2 из-за появления ключевого слова Object.
      В Yii2 это уже пофиксили, да никак не доходят руки накатить новую версию и перепроверить на сайте-стотысячнике.
      Ну а обычно сложность только возникает, если используется mysql_ библиотека и просто из-за отсутствия штатных разработчиков, которые бы поддерживали актуальность скрипта. Многие сайты работают по принципу: «работает — не трогай».
        0
        сложность только возникает… просто из-за отсутствия штатных разработчиков, которые бы поддерживали актуальность скрипта. Многие сайты работают по принципу: «работает — не трогай».


        Это самая большая проблема индустрии :(
        К сожалению, чем дольше ждать, тем сложнее довести скрипт до новой версии
          0
          Не факт, кстати. Если подготовка к переходу осуществляется путём анализа кода, то при каждом апдейте надо анализировать его полностью.
          0
          Я на upwork беру только небольшие проекты, и в 25% случаев это переезд с mysql_xxx на PDO :) Так как хостинг провайдеры переводят сайты на новые версии и они перестают работать :)
            0
            Скрипты переводите на prepared statements или оставляете как есть?
            register globals давно встречали?
              0
              Само собой, и конкатенацию на binded parameters.
              Встречается иногда, приходилось и код с PHP4 переводить :(
          +1
          Имхо, есть смысл сделать возможность выбирать несколько пунктов в опросе. А то сложно выбирать, когда имеется несколько проектов на разных версиях
            +1
            Да, возможно стоило сделать множественный выбор. К сожалению, поменять тип опроса после публикации уже не получается, а если удалить и создать заново — потеряем тех, кто уже проголосовал. Будем рады узнать о вашем опыте ведения проектов на разных версиях PHP из комментариев :)
              0

              Можно было бы сверху подписать "Какую минимальную версию РНР используете вы?" :)

            +1

            Если у пользователя старый php. Значит и Plesk тоже старый. И не собирает информацию о php. Разве нет?

              +1
              У пользователей свежего Plesk-а, как оказалось, старого PHP тоже очень много, тем более, что мы пока его поддерживаем. Нам эта поддержка стоит ресурсов — именно поэтому мы и заинтересовались, насколько это в действительности актуально для наших клиентов.
                0
                Версия PHP не так сильно зависит от версии Plesk, сколько от версии OS — у многих остается стоковый PHP.

                Plesk вначале начал давать возможность подключить самособранные PHP, а затем (тоже давно уже) начал поставлять дополнительные версии PHP сам, чтобы решить проблему с отсутствием нужной сборки и сложность сборки самостоятельной, но раньше не было известно — кто и что выбрал.
                +2
                А вы не пробовали искать корреляции с наплывами пользователей?
                К примеру, количество клиентов из России и Японии падает, поэтому большая часть проектов — легаси, в котором страшно что-то менять, а из Литвы и Кореи растёт, поэтому там больше свежих проектов с новыми версиями PHP?
                  +1
                  Обновился на PHP 7.2 — люблю всё новое.)
                    +1

                    возможно еще причина в том, что панели больше предпочитают владельцы не особо продвинутые в администрировании, соответственно не стремящиеся что-то лишний раз менять, обновлять и перенастраивать, пока и так работает

                      0
                      Какие ужасные диаграммы — сразу 3 синих цвета. Я так ничего не понял, без графического редактора я так и не понял где PHP 5.5 а где 7.2
                        +1
                        Они справа идут в порядке уменьшения — понять версии можно таким способом.
                        0
                        «Предпочитаете» неудачное слово, по-моему. Скорее или вообще таких нюансов не знают, или вынуждены.
                          0
                          Китай — версия 4.4

                          WTF…
                            0
                            Подозреваю, что это следствие «Великого файрволла».
                              +1
                              Фаервол лочит репы с новой пыхой?
                                0
                                А кто их знает. Это единственная возможная причина, которая пришла мне в голову. Есть какие-то другие предположения в причинах этой аномалии?
                                0

                                Любая цензура замедляет прохождение информации. Файерфолл не исключение.

                              0

                              И вот сидишь такой, развернул локалку, поставил 7.2 да ещё заморских приблуд и прогаешь на ней, а потом приходишь в компанию, а там 5.3. И никому там неинтересно, что появились типы аргументов, есть PDO, сокращённые конструкции if() и ещё много чего. Бизнес любит стабильность. Печально все это (

                                0
                                В документации написано, что PDO еще в 5.1 были встроены.
                                  0
                                  Как бы то не было. Лишь после выхода 5.6 стал замечать (в очень редких случаях) PDO в коде. Хотя, мб мне не самые лучше проекты попадались…
                                    0
                                    А я кроме PDO ничем больше и не пользовался с тех пор как пришел в мир PHP (где-то 10 лет назад) :) Что самое интересное, из мира C# и Java :D Когда занялся фрилансом, было проще найти для старта проекты на PHP, ну так и потянулось. Так что бывает что неплохо зарабатываю на переводе сайтов на PDO.
                                      0

                                      Бизнес есть бизнес. Даже сейчас есть ещё "самоучки", которые юзают mysql_query() и подобные вещи. В принципе, если это выполняет задачу — оно оправданно.

                                0

                                Очень удивлен высоким долям версий ниже 5.6. Я могу понять инертность в переходе на 7.x, у самого есть 1 проект, изобилующий mysql_. Начинался он с ранних версий 5.3, но на каждую новую версию вплоть до 5.6, включительно, обновлялся регулярно.

                                  0
                                  Ну уж и не знаю, почему все так трясутся за старые РНР версии. Помню 3 года назад была поставлена задача произвести оценку возможности отказа от PHP 4.0, 4.4, 5.2 (было это в ноябре 2015 года тогда же мы решили отказатья и от MySQL 4.x, но речь пойдёт именно о РНР). Сразу хочу пояснить, что речь идет о практически единственном немецком хостинг-провайдере который так долго поддерживал старые версии пхп. Первичный анализ показал, что после того как основные хостеры в начале 2015 году потключали 4.4, мы получили огромное количество новых клиентов с Joomla 1.5, 1.0 и даже Mambo и отключение версий до 5.2 затронет оргомное количество клиентов. Но тут настал декабрь 2015 года со своей замечательной уязвимостью всех Joomla через UserAgent SQL-Injection. Хотя после 2-3 часов после первых взломанных сайтов мы очень быстро отреагировали и нарисовали пару правил для mod_security остановив взломы, но хакеры успели сделать своё дело: большинство клиентских сайтов на основе joomla была взломана. Это был просто кошмар техподдержка захлёбывалась, техники работали на износ. Восстановление из старых бэкапов не приносило облегчения, потому что появлялись всё новые известые дыры, которые уже невозможно было закрыть десятками mod_security и apparmory правил: сервера просто не справлялись. Росла нагрузка и со стороны iptables: Приходилось блокировать десятки тысяч адресов активных ботнетов. В конце концов было принято волевое решение блокировать взломанные Joomla 1.5 совсем и требовать от клиентов полностью сносить сайт и установливать новую версию Joomla либо WP
                                  Была проведена огромная разъяснительная работа с клиетами по электронной почте, телефону. Было выделено несколько коллег, которые помогали переносить данные со старых сайтов на новые Joomla либо Wordpress. В результате огромной работы уже в августе 2016 года мы смогли отказатся от поддержки PHP 5.2, 5.3 и даже 5.4
                                  Самое забавное, что некоторые пользователи Wordpress заметили что сайты стали работать гораздо быстрее и писали нам в техподдержку «Вы что-то исправили у меня на сайте? Он теперь быстрее открывается. Мне нужно больше платить ?»
                                  Суть этой истории проста: не нужно боятся отказываться от старых, неподдерживаемых версий.
                                    0

                                    А экономический выхлоп от отказа считали? Сколько клиентов всё-таки потеряли?

                                      0
                                      Ну уж и не знаю, почему все так трясутся за старые РНР версии.

                                      Была проведена огромная разъяснительная работа с клиетами

                                      То есть вы все-таки понимаете :-)
                                      +1
                                      Одна из существенных причин отказа была как раз экономическая: трудоёмкость поддержки старых версий на 12 убунте. Если вы помните, десятая убунта с древними РНР и MySQL закончилась как раз весной 2015 года. Да и конец 12 убунты был уже рядом. К тому же, в это время мы отказывались от 32 битных ОС (и серверов с 32 битными процессорами). У PHP 5.2 часто текла память, были очень странные и неприятные взломы. Расследование отнимало много времени у техников и безопасников и в конце концов мы находили дыры (переполнение памяти, кривые проверки и прочая дичь), что можно патчили, совсем экзотическое закрывали другими способами. С 5.3 было еще сложнее, потому что в отличии от 5.2 в случае утечек памяти или взлома накрывался FPM пул для всех клиетнов этого сервера. итд итп
                                      Потери клиентов были не такие уж и значительные т.к. во первых: уже не было к кому бежать, во вторых мы помогли большинству клиентов обновится до чего-то более свежего.
                                        0

                                        Заранее была задумана стратегия "не будем прекращать поддержку до последнего, чтобы от тех, кто прекратил раньше, бежали к нам, а когда останемся последними прекратим, ведь некуда будет бежать" или просто осознали почему конкуренты прекратили раньше? Если заранее, то большой респект :)

                                          0
                                          В Германии очень ценится стабильность. Любые изменения принимаются очень болезненно, даже если речь идёт о переходе на более дешёвый тариф с большими возможностями. Стабильностью были привлечены клиенты.
                                          Во вторых в Германии очень ценится качественная техподдержка (яркие примеры: клиенты О2 могут висеть по 30-50 минут на телефоне дожидаясь ответа оператора. Другой пример — платные номера техподдержки: от 10 центов до евро в минуту) — Вторым нашим шагом была огромная работа техподдержки по удержанию клиентов.
                                          Все остались в выигрыше: и мы с низкими затратами на поддержку софта и клиенты с более или менее новыми/залатаными сайтами

                                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                      Самое читаемое