Перейти к содержимому

Как обновить php на windows

  • автор:

Как обновить php на windows

final class MyTest extends TestCase protected $logFile ;

protected function setUp (): void $this -> logFile = fopen ( ‘/tmp/logfile’ , ‘w’ );
>

protected function taerDown (): void fclose ( $this -> logFile );
unlink ( ‘/tmp/logfile’ );
>
>

// The log file will never be removed, because the
// method name was mistyped (taerDown vs tearDown).

final class MyTest extends TestCase protected $logFile ;

protected function setUp (): void $this -> logFile = fopen ( ‘/tmp/logfile’ , ‘w’ );
>

#[ \Override ]
protected function taerDown (): void fclose ( $this -> logFile );
unlink ( ‘/tmp/logfile’ );
>
>

// Fatal error: MyTest::taerDown() has #[\Override] attribute,
// but no matching parent method exists

Если добавить методу атрибут #[\Override] , то PHP убедится, что метод с таким же именем существует в родительском классе или в реализованном интерфейсе. Добавление атрибута даёт понять, что переопределение родительского метода является намеренным, а также упрощает рефакторинг, поскольку удаление переопределённого родительского метода будет обнаружено.

Глубокое клонирование readonly-свойств RFC

class PHP <
public string $version = ‘8.2’ ;
>

readonly class Foo public function __construct (
public PHP $php
) <>

public function __clone (): void $this -> php = clone $this -> php ;
>
>

$instance = new Foo (new PHP ());
$cloned = clone $instance ;

// Fatal error: Cannot modify readonly property Foo::$php

class PHP <
public string $version = ‘8.2’ ;
>

readonly class Foo public function __construct (
public PHP $php
) <>

public function __clone (): void $this -> php = clone $this -> php ;
>
>

$instance = new Foo (new PHP ());
$cloned = clone $instance ;

$cloned -> php -> version = ‘8.3’ ;

Свойства, доступные только для чтения ( readonly ) теперь могут быть изменены один раз с помощью магического метода __clone для обеспечения возможности глубокого клонирования readonly-свойств.

Новая функция json_validate() RFC Документация

function json_validate ( string $string ): bool <
json_decode ( $string );

return json_last_error () === JSON_ERROR_NONE ;
>

var_dump ( json_validate ( ‘ < "test": < "foo": "bar" >>’ )); // true

var_dump ( json_validate ( ‘ < "test": < "foo": "bar" >>’ )); // true

Функция json_validate() позволяет проверить, является ли строка синтаксически корректным JSON, при этом она более эффективна, чем функция json_decode() .

Новый метод Randomizer :: getBytesFromString() RFC Документация

// This function needs to be manually implemented.
function getBytesFromString ( string $string , int $length ) $stringLength = strlen ( $string );

$result = » ;
for ( $i = 0 ; $i < $length ; $i ++) // random_int is not seedable for testing, but secure.
$result .= $string [ random_int ( 0 , $stringLength — 1 )];
>

$randomDomain = sprintf (
«%s.example.com» ,
getBytesFromString (
‘abcdefghijklmnopqrstuvwxyz0123456789’ ,
16 ,
),
);

// A \Random\Engine may be passed for seeding,
// the default is the secure engine.
$randomizer = new \Random\Randomizer ();

$randomDomain = sprintf (
«%s.example.com» ,
$randomizer -> getBytesFromString (
‘abcdefghijklmnopqrstuvwxyz0123456789’ ,
16 ,
),
);

Модуль Random, добавленный в PHP 8.2, был дополнен новым методом генерации случайных строк, состоящих только из определённых байтов. Этот метод позволяет легко генерировать случайные идентификаторы, например, имена доменов и числовые строки произвольной длины.

Новые методы Randomizer::getFloat() и Randomizer::nextFloat() RFC Документация

// Returns a random float between $min and $max, both including.
function getFloat ( float $min , float $max ) // This algorithm is biased for specific inputs and may
// return values outside the given range. This is impossible
// to work around in userland.
$offset = random_int ( 0 , PHP_INT_MAX ) / PHP_INT_MAX ;

return $offset * ( $max — $min ) + $min ;
>

$temperature = getFloat (- 89.2 , 56.7 );

$chanceForTrue = 0.1 ;
// getFloat(0, 1) might return the upper bound, i.e. 1,
// introducing a small bias.
$myBoolean = getFloat ( 0 , 1 ) < $chanceForTrue ;

$randomizer = new \Random\Randomizer ();

$temperature = $randomizer -> getFloat (
— 89.2 ,
56.7 ,
\Random\IntervalBoundary :: ClosedClosed ,
);

$chanceForTrue = 0.1 ;
// Randomizer::nextFloat() is equivalent to
// Randomizer::getFloat(0, 1, \Random\IntervalBoundary::ClosedOpen).
// The upper bound, i.e. 1, will not be returned.
$myBoolean = $randomizer -> nextFloat () < $chanceForTrue ;

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

Класс Randomizer был расширен двумя методами, позволяющими генерировать случайные числа с плавающей точкой несмещённым образом. Метод Randomizer::getFloat() использует алгоритм γ-секции, который был опубликован в Drawing Random Floating-Point Numbers from an Interval. Frédéric Goualard, ACM Trans. Model. Comput. Simul., 32:3, 2022.

Как обновить PHP

PHP мог попасть на компьютер разными способами. Поскольку PHP является портативным, то в простейшем варианте PHP вообще не нужно устанавливать — чтобы запускать скрипты из командной строки, достаточно просто извлечь скаченный архив, и с помощью главного исполнимого php.exe запускать скрипты *.php прямо из командной строки. В этом случае достаточно просто скачать новую версию и распаковать — никакой установки не требуется.

Если у вас PHP в составе какой-либо сборки, то есть смысл проверить новые версии самой сборки, а не обновлять компоненты по отдельности.

Если же вы самостоятельно установили Apache и подключили к нему PHP, то эта инструкция поможет вам обновить PHP до самой последней версии.

Последнюю версию PHP скачайте со страницы https://windows.php.net/download/. Выберите версию Thread Safe, обратите внимание на битность. Если вы затрудняетесь, какой именно файл скачать, то посмотрите эту заметку.

PHP поставляется в виде портативного, автономного пакета, вся настройка которого происходит в файле php.ini. Разве что, можно дополнительно добавить путь до PHP в переменную окружения PATH в Windows. Поэтому после скачивания новой версии, желательно сделать резервную копию php.ini, чтобы не пришлось настраивать заново.

Подразумевается, что у вас установка выполнена в C:\Server\bin\PHP\, если это не так, то здесь и далее подставьте своё значений путей до файлов и папок.

Порядок действий такой:

  1. Прежде всего, скопируйте в безопасное место файл c:\Server\bin\PHP\php.ini.
  2. Затем удалите папку C:\Server\bin\PHP\.
  3. Распакуйте новый архив в C:\Server\bin\PHP.
  4. Скопируйте сохранённый ранее файл php.ini в c:\Server\bin\PHP\php.ini.

Если вы установили PHP для работы в паре с веб-сервером и веб-сервер уже настроен на взаимодействие с PHP, то никакие дополнительные настройки делать не нужно. Достаточно только перезапустить службу Apache, чтобы сделанные изменения сразу вступили в силу:

c:\Server\bin\Apache24\bin\httpd.exe -k restart

Вот и всё — теперь вы можете как запускать файлы скриптов .php с самой последней версией PHP прямо из командной строки, так и работать с последней версией PHP в веб-сервере Apache.

Как обновить Apache на Windows

Или можно посмотреть открыв ApacheMonitor.exe:

Скачать Apache Windows

Заходим на главную страницу сайта https://apache-windows.ru:

и видим, что вышла новая версия — скачиваем её для 64 битных систем (Win64) или 32-битных (Win32).

Заодно можно обновить и C++ Redistributable Visual Studio 2017.

Далее я исхожу из того, что веб-сервер у меня установлен в c:\Server\bin\Apache24 — если у вас другое расположение, то отредактируйте пути соответствующим образом.

Скопируйте в безопасное место файл c:\Server\bin\Apache24\conf\httpd.conf — это главный конфигурационный файл Apache. Мы делаем его резервную копию чтобы не пришлось заново настраивать Apache.

Остановите и удалите службу Apache:

c:\Server\bin\Apache24\bin\httpd.exe -k stop c:\Server\bin\Apache24\bin\httpd.exe -k uninstall

Эти команды надо ввести в командную строку, чтобы открыть командную строку нажмите Win+x, и там выберите Windows PowerShell (Администратор).

Удалите папку C:\Server\bin\Apache24\. Пмните о ваших сайтах и базах данных — у меня они расположены в другой папке, специально, чтобы было легко обновлять сервер. Если у вас сайты размещены в папке c:\Server\bin\Apache24\htdocs\ (внутри директории Apache24, как это сделано по умолчанию), то вам самостоятельно нужно позаботиться об их резервном копировании.

Распакуйте новый архив в C:\Server\bin\. Скопируйте сохранённый ранее файл httpd.conf в c:\Server\bin\Apache24\conf\httpd.conf.

Запустите службу Apache:

c:\Server\bin\Apache24\bin\httpd.exe -k install c:\Server\bin\Apache24\bin\httpd.exe -k start

Как обновить PHP сайта и зачем это нужно

Лучшее — враг хорошего? Мы рассмотрели, как обновить версию PHP, на которой работает ваш сайт, и для чего это нужно.

Наталья Березовская

Наталья Березовская

Автор в сфере IT, digital, экономики и финансов. Ведёт некоммерческий проект для начинающих писателей «ЛитЦех».

Актуальная версия PHP

Актуальной на сегодняшний момент считается PHP 8.1, которая превосходит в скорости и функциональности все прошлые версии.

Вот неполный список возможностей PHP 7:

  • JIT-компилятор;
  • аннотации и атрибуты;
  • именованные параметры;
  • оператор безопасного null;
  • оператор выбора match.

Как обновить PHP на Windows

Здесь все очень просто и прозаично:

Скачиваем последнюю версию PHP

Прописываем заново настройки в Apache и PHP.

Но прежде чем обновлять, нужно внимательно изучить раздел Appendices в документации к новой версии. В нем описывается устаревший функционал, который больше не применяется в языке. Новые версии не поддерживают старый код: особенно трудна миграция с пятой на седьмую, у которой очень слабая обратная совместимость.

Если разработчик использует неподдерживаемые функции, то кусок кода, в котором они есть, просто не заработает. Поэтому перед обновлением нужно серьезно проанализировать этот раздел и в соответствии с ним — свой код.

Зачем обновлять, если все работает

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

В каждом релизе PHP появляются новые фишки и функции, а также закрываются уязвимости. Например, is_countable позволяет определить тип переменной — перечисляемый или нет. Это очень удобная возможность для веб-разработчиков. Сейчас приходится использовать для определения типа переменной if, а в PHP 8.1 это можно будет сделать одной функцией.

Однако обновление версии PHP — это болезненный процесс для команды разработки, означающий многодневный рефакторинг кода и исправление ошибок — всё из-за проблем с обратной совместимостью в этом языке. Ранее установленные плагины и скрипты могут конфликтовать с новой версией, работать некорректно или не подключаться вообще, добавляя головной боли разработчикам.

Веб-сервис W3Techs провёл опрос и выяснил, какие версии чаще всего используют PHP-разработчики. В начале февраля 2022 года ситуация выглядела вот так:

Как видите, самую последнюю версию используют очень немногие. Консервативное большинство остается верным надежным технологиям — от 5 до 7 версий.

Обновлять или не обновлять: вот в чем вопрос

Мы скажем так: Святого Грааля в проблеме обновления нет. Подходить к нему нужно с позиции целесообразности. Большой проект перевести на PHP 8 будет сложно: придется рефакторить всю кодовую базу, но ради чего? Любое изменение должно исходить из рабочей потребности.

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

На старых сайтах, где сплошной легаси , разработчикам вообще страшно что-либо менять, так как велик риск все случайно поломать. Проект стабильно работает, а значит, изменения ни к чему. Зато разработку новых сайтов однозначно нужно начинать с установки последней версии языка.

Читайте также:

  • Для чего используют PHP и почему его ненавидят
  • «Незрячие тоже заказывают такси»: как делают Android-приложения для тех, кто не видит
  • JavaScript: главный инструмент frontend-разработчиков

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *