Mostrar mensagens com a etiqueta Programação em PHP. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta Programação em PHP. Mostrar todas as mensagens

29/06/18

Download: PHP 7.3.0 alpha 2
A equipe PHP já anunciou o lançamento da segunda versão do PHP 7.3.0, PHP 7.3.0 Alpha 2. O esboço do ciclo de lançamento do PHP 7.3 é especificado no PHP Wiki.

Para downloads de fontes do PHP 7.3.0 Alpha 2, visite a página de download. Fontes e binários do Windows podem ser encontrados em windows.php.net/qa/.

Por favor, teste cuidadosamente esta versão e relate todos os problemas encontrados no sistema de relatórios de erros.

ESTA É UMA VISUALIZAÇÃO DE DESENVOLVIMENTO - NÃO USE-O NA PRODUÇÃO!

Para obter mais informações sobre os novos recursos e outras alterações, você pode ler o arquivo NEWS ou o arquivo UPGRADING para obter uma lista completa de notas de atualização. Esses arquivos também podem ser encontrados no arquivo de lançamento.

O próximo lançamento seria Alpha 3, planejado para 5 de julho.

As assinaturas para o lançamento podem ser encontradas no manifesto ou no site do QA.

Changelog:

21 Jun 2018, PHP 7.3.0alpha2

- Core:
. Fixed bug #76427 (Segfault in zend_objects_store_put). (Laruence)
. Fixed bug #76422 (ftruncate fails on files > 2GB). (Anatol)

- CLI:
. Fixed bug #44217 (Output after stdout/stderr closed cause immediate exit
with status 0). (Robert Lu)

- Date:
. Fixed bug #76462 (Undefined property: DateInterval::$f). (Anatol)

- EXIF:
. Fixed bug #76409 (heap use after free in _php_stream_free). (cmb)

- Interbase:
. Fixed bug #76443 (php+php_interbase.dll crash on module_shutdown). (Kalle)

- Mysqlnd:
. Fixed bug #76386 (Prepared Statement formatter truncates fractional seconds
from date/time column). (Victor Csiky)

- Opcache:
. Fixed bug #76477 (Opcache causes empty return value).
(Nikita, Laruence)
. Fixed bug #76466 (Loop variable confusion). (Dmitry, Laruence, Nikita)
. Fixed bug #76463 (var has array key type but not value type). (Laruence)
. Fixed bug #76446 (zend_variables.c:73: zend_string_destroy: Assertion
`!(zval_gc_flags((str)->gc)). (Nikita, Laruence)

- Tokenizer:
. Fixed bug #76437 (token_get_all with TOKEN_PARSE flag fails to recognise
close tag). (Laruence)
. Fixed bug #75218 (Change remaining uncatchable fatal errors for parsing
into ParseError). (Nikita)

- ZIP:
. Fixed bug #76461 (OPSYS_Z_CPM defined instead of OPSYS_CPM).
(Dennis Birkholz, Remi)


12/06/18

php
Novidade! O PHP 7.3 já está a ser desenvolvido e já é possível fazer o download do PHP 7.3 Alpha1.

Esta versão ainda está na versão "alpha" pelo que quer dizer, que ainda é muito cedo para usar esta versão do PHP, pois pode estar instável e com muitos bugs.

No entanto, os mais curiosos que tanto anseiam pelas novas funções do php podem agora ter uma ideia de como vai ser esta nova versão.

Na página "Snapshots" do site do PHP já é possível ter acesso às versões mais recentes de desenvolvimento do PHP. Note-se que estas versões não são as versões finais e sim as versões em desenvolvimento.

Para a versão mais recente do php, pode ver este link: PHP para Windows (Snapshots).
Existem vários "snapshots". O PHP 7.3 encontra-se na secção "PHP Master".

Se quiser ter acesso ás versões finais e estáveis, basta entrar na página inicial do php: PHP Homepage.

Veja aqui o changlog do PHP 7.3 (Alpha 1):

07 Jun 2018, PHP 7.3.0alpha1

- Core:
  . Improved PHP GC. (Dmitry, Nikita)
  . Redesigned the old ext_skel program written in PHP, run:
    'php ext_skel.php' for all options. This means there are no dependencies,
    thus making it work on Windows out of the box. (Kalle)
  . Removed support for BeOS. (Kalle)
  . Add PHP_VERSION to phpinfo() . (github/MattJeevas)</p><p>  . Add net_get_interfaces(). (Sara, Joe, Anatol)</p><p>  . Implemented flexible heredoc and nowdoc syntax, per</p><p>    RFC https://wiki.php.net/rfc/flexible_heredoc_nowdoc_syntaxes.</p><p>    (Thomas Punt)</p><p>  . Added support for references in list() and array destructuring, per</p><p>    RFC https://wiki.php.net/rfc/list_reference_assignment.</p><p>    (David Walker)</p><p>  . Fixed bug #75683 (Memory leak in zend_register_functions() in ZTS mode).</p><p>    (Dmitry)</p><p>  . Fixed bug #75031 (support append mode in temp/memory streams). (adsr)</p><p>  . Fixed bug #74860 (Uncaught exceptions not being formatted properly when</p><p>    error_log set to "syslog"). (Philip Prindeville)</p><p>  . Fixed bug #75220 (Segfault when calling is_callable on parent). </p><p>    (andrewnester)</p><p>  . Fixed bug #69954 (broken links and unused config items in distributed ini</p><p>    files). (petk)</p><p>  . Fixed bug #74922 (Composed class has fatal error with duplicate, equal const</p><p>    properties). (pmmaga)</p><p>  . Fixed bug #63911 (identical trait methods raise errors during composition). </p><p>    (pmmaga)</p><p>  . Fixed bug #75677 (Clang ignores fastcall calling convention on variadic</p><p>    function). (Li-Wen Hsu)</p><p>  . Fixed bug #54043 (Remove inconsitency of internal exceptions and user</p><p>    defined exceptions). (Nikita)</p><p>  . Fixed bug #53033 (Mathematical operations convert objects to integers).</p><p>    (Nikita)</p><p>  . Fixed bug #73108 (Internal class cast handler uses integer instead of</p><p>    float). (Nikita)</p><p>  . Fixed bug #75765 (Fatal error instead of Error exception when base class is</p><p>    not found). (Timur Ibragimov)</p><p>  . Fixed bug #76198 (Wording: "iterable" is not a scalar type). (Levi Morrison)</p><p>  . Fixed bug #76137 (config.guess/config.sub do not recognize RISC-V). (cmb)</p><p><br /> </p><p>- BCMath:</p><p>  . Fixed bug #66364 (BCMath bcmul ignores scale parameter). (cmb)</p><p>  . Implemented request #67855 (No way to get current scale in use). (Chris</p><p>    Wright, cmb)</p><p>  . Fixed bug #75164 (split_bc_num() is pointless). (cmb)</p><p>  . Fixed bug #75169 (BCMath errors/warnings bypass PHP's error handling). (cmb)</p><p><br /> </p><p>- cURL:</p><p>  . Fixed bug #74125 (Fixed finding CURL on systems with multiarch support).</p><p>    (cebe)</p><p><br /> </p><p>- Date:</p><p>  . Implemented FR #74668: Add DateTime::createFromImmutable() method.</p><p>    (majkl578, Rican7)</p><p>  . Fixed bug #75222 (DateInterval microseconds property always 0). (jhdxr)</p><p>  . Fixed bug #68406 (calling var_dump on a DateTimeZone object modifies it).</p><p>    (jhdxr)</p><p>  . Fixed bug #76131 (mismatch arginfo for date_create). (carusogabriel)</p><p><br /> </p><p>- DBA:</p><p>  . Fixed bug #75264 (compiler warnings emitted). (petk)</p><p><br /> </p><p>- GD:</p><p>  . Added support for WebP in imagecreatefromstring() (Andreas Treichel, cmb).</p><p><br /> </p><p>- GMP:</p><p>  . Export internal structures and accessor helpers for GMP object. (Sara)</p><p>  . Added gmp_binomial(n, k). (Nikita)</p><p>  . Added gmp_lcm(a, b). (Nikita)</p><p>  . Added gmp_perfect_power(a). (Nikita)</p><p>  . Added gmp_kronecker(a, b). (Nikita)</p><p><br /> </p><p>- interbase:</p><p>  . Fixed bug #75453 (Incorrect reflection for ibase_[p]connect). (villfa)</p><p><br /> </p><p>- intl:</p><p>  . Fixed bug #75317 (UConverter::setDestinationEncoding changes source instead </p><p>    of destination). (andrewnester)</p><p><br /> </p><p>- JSON:</p><p>  . Added JSON_THROW_ON_ERROR flag. (Andrea)</p><p><br /> </p><p>- LDAP:</p><p>  . Added ldap_exop_refresh helper for EXOP REFRESH operation with dds overlay. </p><p>    (Come)</p><p>  . Added full support for sending and parsing ldap controls (Come)</p><p>  . Fixed bug #49876 (Fix LDAP path lookup on 64-bit distros). (dzuelke)</p><p><br /> </p><p>- libxml2:</p><p>  . Fixed bug #75871 (use pkg-config where available). (pmmaga)</p><p><br /> </p><p>- litespeed:</p><p>  . Fixed bug #75248 (Binary directory doesn't get created when building </p><p>    only litespeed SAPI). (petk)</p><p>  . Fixed bug #75251 (Missing program prefix and suffix). (petk)</p><p><br /> </p><p>- mbstring:</p><p>  . Fixed bug #65544 (mb title case conversion-first word in quotation isn't</p><p>    capitalized). (Nikita)</p><p>  . Fixed bug #71298 (MB_CASE_TITLE misbehaves with curled apostrophe/quote.</p><p>    (Nikita)</p><p>  . Fixed bug #73528 (Crash in zif_mb_send_mail). (Nikita)</p><p>  . Fixed bug #74929 (mbstring functions version 7.1.1 are slow compared to 5.3</p><p>    on Windows). (Nikita)</p><p>  . Fixed bug #76319 (mb_strtolower with invalid UTF-8 causes segmentation</p><p>    fault). (Nikita)</p><p>  . Updated to Oniguruma 6.8.2. (cmb)</p><p><br /> </p><p>- ODBC:</p><p>  . Removed support for ODBCRouter. (Kalle)</p><p>  . Removed support for Birdstep. (Kalle)</p><p><br /> </p><p>- OpenSSL:</p><p>  . Added openssl_pkey_derive function. (Jim Zubov)</p><p><br /> </p><p>- PCRE:</p><p>  . Implemented https://wiki.php.net/rfc/pcre2-migration (Anatol, Dmitry)</p><p>  . Fixed bug #75355 (preg_quote() does not quote # control character).</p><p>    (Michael Moravec)</p><p><br /> </p><p>- PDO_DBlib:</p><p>  . Implemented request #69592 (allow 0-column rowsets to be skipped</p><p>    automatically). (fandrieu)</p><p>  . Fixed bug #74243 (allow locales.conf to drive datetime format). (fandrieu)</p><p>  . Expose TDS version as \PDO::DBLIB_ATTR_TDS_VERSION attribute on \PDO</p><p>    instance. (fandrieu)</p><p>  . Treat DATETIME2 columns like DATETIME. (fandrieu)</p><p><br /> </p><p>- PDO_OCI:</p><p>  . Fixed bug #74631 (PDO_PCO with PHP-FPM: OCI environment initialized</p><p>    before PHP-FPM sets it up). (Ingmar Runge)</p><p><br /> </p><p>- PDO SQLite</p><p>  . Add support for additional open flags</p><p><br /> </p><p>- pgsql:</p><p>  . Added new error constants for pg_result_error(): (Kalle)</p><p>    - Requires Postgres 9.3</p><p>      - PGSQL_DIAG_SCHEMA_NAME</p><p><span style="white-space:pre"> </span>  - PGSQL_DIAG_TABLE_NAME</p><p><span style="white-space:pre"> </span>  - PGSQL_DIAG_COLUMN_NAME</p><p><span style="white-space:pre"> </span>  - PGSQL_DIAG_DATATYPE_NAME</p><p><span style="white-space:pre"> </span>  - PGSQL_DIAG_CONSTRAINT_NAME</p><p><span style="white-space:pre"> </span>- Requires Postgres 9.6</p><p><span style="white-space:pre"> </span>  - PGSQL_DIAG_SEVERITY_NONLOCALIZED</p><p><br /> </p><p>- phar:</p><p>  . Fixed bug #74991 (include_path has a 4096 char limit in some cases).</p><p>    (bwbroersma)</p><p>  . Fixed bug #65414 (deal with leading slash when adding files correctly).</p><p>    (bishopb)</p><p><br /> </p><p>- readline:</p><p>  . Added completion_append_character and completion_suppress_append options</p><p>    to readline_info() if linked against libreadline. (krageon)</p><p><br /> </p><p>- Session:</p><p>  . Fixed bug #74941 (session fails to start after having headers sent). </p><p>    (morozov)</p><p><br /> </p><p>- SimpleXML:</p><p>  . Fixed bug #54973 (SimpleXML casts integers wrong). (Nikita)</p><p><br /> </p><p>- SOAP:</p><p>  . Fixed bug #75464 (Wrong reflection on SoapClient::__setSoapHeaders). (villfa)</p><p>  . Fixed bug #70469 (SoapClient generates E_ERROR even if exceptions=1 is</p><p>    used). (Anton Artamonov)</p><p><br /> </p><p>- SPL:</p><p>  . Fixed bug #74977 (Appending AppendIterator leads to segfault). </p><p>    (Andrew Nester)</p><p>  . Fixed bug #75173 (incorrect behavior of AppendIterator::append in foreach</p><p>    loop). (jhdxr)</p><p>  . Fixed bug #74372 (autoloading file with syntax error uses next autoloader,</p><p>    may hide parse error). (Nikita)</p><p>  . Fixed bug #75878 (RecursiveTreeIterator::setPostfix has wrong signature).</p><p>    (cmb)</p><p>  . Fixed bug #74519 (strange behavior of AppendIterator). (jhdxr)</p><p>  . Fixed bug #76131 (mismatch arginfo for splarray constructor). </p><p>    (carusogabriel)</p><p><br /> </p><p>- SQLite3:</p><p>  . Updated bundled libsqlite to 3.24.0. (cmb)</p><p><br /> </p><p>- Standard:</p><p>  . Added is_countable() function. (Gabriel Caruso)</p><p>  . Fixed bug #75916 (DNS_CAA record results contain garbage). (Mike, </p><p>    Philip Sharp)</p><p>  . Fixed unserialize(), to disable creation of unsupported data structures</p><p>    through manually crafted strings. (Dmitry)</p><p>  . Fixed bug #75409 (accept EFAULT in addition to ENOSYS as indicator </p><p>    that getrandom() is missing). (sarciszewski)</p><p>  . Fixed bug #74719 (fopen() should accept NULL as context). (Alexander Holman)</p><p>  . Fixed bug #69948 (path/domain are not sanitized in setcookie). (cmb)</p><p>  . Fixed bug #75996 (incorrect url in header for mt_rand). (tatarbj)</p><p>  . Remove superfluous warnings from inet_ntop()/inet_pton(). (daverandom)</p><p><br /> </p><p>- Testing:</p><p>  . Implemented request #62055 (Make run-tests.php support --CGI-- sections).</p><p>    (cmb)</p><p><br /> </p><p>- Tidy:</p><p>  . Fixed bug #74707 (Tidy has incorrect ReflectionFunction param counts for</p><p>    functions taking tidy). (Gabriel Caruso)</p><p><br /> </p><p>- Zlib:</p><p>  . Added zlib/level context option for compress.zlib wrapper. (Sara)</p>

07/06/18

imagem do logotipo do php
Antes de mais, para quem não sabe o que significa, benchmark é o termo que se usa para a verificação de velocidade, que neste caso é do php e para quem usa um pacote tudo-em-um, como por exemplo o XAMPP, também se verifica a ligação às bases de dados do MySQL que usa o "motor" MariaDB 10.1.32.

Quem trabalha com programação, normalmente tem sempre em conta a performance das suas aplicações para que os seus utilizadores não sofram com a lentidão de uma tarefa simples.

É claro que aplicações "leves" não precisam de uma análise profunda de benchmark, no entanto, as aplicações mais pesadas devem sempre ser alvo de análises de desempenho para que aqueles segundos aqui e ali todos somados não se tornem em minutos!

Neste post não vou dar nenhuma aula de programação, vou apenas disponibilizar uma ferramenta para que vocês possam analisar a velocidade do vosso servidor e possam assim poder alterar a configuração de forma a obterem os melhores resultados.

Na imagem abaixo, mostro uma imagem de um benchmark ao meu laptop (fraquinho), que tem o xampp instalado com o PHP 7.2.5.

Imagem Benchmark PHP 7.2.5 e MySql

É claro que estamos a falar de um laptop fraquinho, no entanto, com esses valores, podemos em seguida fazer uma alteração nos ficheiros de configuração e em seguida correr novamente o benchmark para ver se conseguimos melhorar os resultados.

É claro que vou disponibilizar o código para esse benchmark!

O código que tenho, encontrei na internet e na minha opinião está muito bom.



/**
 * PHP Script to benchmark PHP and MySQL-Server
 *
 * inspired by / thanks to:
 * - www.php-benchmark-script.com  (Alessandro Torrisi)
 * - www.webdesign-informatik.de
 *
 * @author odan
 * @license MIT
 */

// -----------------------------------------------------------------------------
// Setup
// -----------------------------------------------------------------------------
set_time_limit(120); // 2 minutes

$options = array();

// Show or hide the server name and IP address
$showServerName = false;

// Optional: mysql performance test
$options['db.host'] = 'localhost';
$options['db.user'] = 'root';
$options['db.pw'] = '';
$options['db.name'] = 'test';

// -----------------------------------------------------------------------------
// Main
// -----------------------------------------------------------------------------
// check performance
$benchmarkResult = test_benchmark($options);

// html output
echo "\n\n";
echo "
   
    ";

echo print_benchmark_result($benchmarkResult, $showServerName);

echo "\n
";exit;

// -----------------------------------------------------------------------------
// Benchmark functions
// -----------------------------------------------------------------------------

function test_benchmark($settings)
{
    $result = array();
    $result['version'] = '1.2';
    $result['sysinfo']['time'] = date('Y-m-d H:i:s');
    $result['sysinfo']['php_version'] = PHP_VERSION;
    $result['sysinfo']['platform'] = PHP_OS;
    $result['sysinfo']['server_name'] = $_SERVER['SERVER_NAME'];
    $result['sysinfo']['server_addr'] = $_SERVER['SERVER_ADDR'];
    $result['sysinfo']['xdebug'] = in_array('xdebug', get_loaded_extensions());

    $timeStart = microtime(true);

    test_math($result);
    test_string($result);
    test_loops($result);
    test_ifelse($result);

    $result['benchmark']['calculation_total'] = timer_diff($timeStart) . ' sec.';

    if (isset($settings['db.host'])) {
        test_mysql($result, $settings);
    }

    $result['benchmark']['total'] = timer_diff($timeStart) . ' sec.';

    return $result;
}

function test_math(&$result, $count = 99999)
{
    $timeStart = microtime(true);

    $mathFunctions = array("abs", "acos", "asin", "atan", "bindec", "floor", "exp", "sin", "tan", "pi", "is_finite", "is_nan", "sqrt");
    for ($i = 0; $i < $count; $i++) {
        foreach ($mathFunctions as $function) {
            call_user_func_array($function, array($i));
        }
    }
    $result['benchmark']['math'] = timer_diff($timeStart) . ' sec.';
}

function test_string(&$result, $count = 99999)
{
    $timeStart = microtime(true);
    $stringFunctions = array("addslashes", "chunk_split", "metaphone", "strip_tags", "md5", "sha1", "strtoupper", "strtolower", "strrev", "strlen", "soundex", "ord");

    $string = 'the quick brown fox jumps over the lazy dog';
    for ($i = 0; $i < $count; $i++) {
        foreach ($stringFunctions as $function) {
            call_user_func_array($function, array($string));
        }
    }
    $result['benchmark']['string'] = timer_diff($timeStart) . ' sec.';
}

function test_loops(&$result, $count = 999999)
{
    $timeStart = microtime(true);
    for ($i = 0; $i < $count; ++$i) {

    }

    $i = 0;
    while ($i < $count) {
        ++$i;
    }

    $result['benchmark']['loops'] = timer_diff($timeStart) . ' sec.';
}

function test_ifelse(&$result, $count = 999999)
{
    $timeStart = microtime(true);
    for ($i = 0; $i < $count; $i++) {
        if ($i == -1) {

        } elseif ($i == -2) {

        } else {
            if ($i == -3) {

            }
        }
    }
    $result['benchmark']['ifelse'] = timer_diff($timeStart) . ' sec.';
}

function test_mysql(&$result, $settings)
{
    $timeStart = microtime(true);

    $link = mysqli_connect($settings['db.host'], $settings['db.user'], $settings['db.pw']);
    $result['benchmark']['mysql_connect'] = timer_diff($timeStart) . ' sec.';

    mysqli_select_db($link, $settings['db.name']);
    $result['benchmark']['mysql_select_db'] = timer_diff($timeStart) . ' sec.';

    $dbResult = mysqli_query($link, 'SELECT VERSION() as version;');
    $arr_row = mysqli_fetch_array($dbResult);
    $result['sysinfo']['mysql_version'] = $arr_row['version'];
    $result['benchmark']['mysql_query_version'] = timer_diff($timeStart) . ' sec.';

    $query = "SELECT BENCHMARK(1000000,ENCODE('hello',RAND()));";
    mysqli_query($link, $query);
    $result['benchmark']['mysql_query_benchmark'] = timer_diff($timeStart) . ' sec.';

    mysqli_close($link);

    $result['benchmark']['mysql_total'] = timer_diff($timeStart) . ' sec.';

    return $result;
}

function timer_diff($timeStart)
{
    return number_format(microtime(true) - $timeStart, 3);
}

function print_benchmark_result($data, $showServerName = true)
{
    $result = '';

    $result .= '
System Info
';
    $result .= '';
    $result .= '
Version
' . h($data['version']) . '
';
    $result .= '
Time
' . h($data['sysinfo']['time']) . '
';

    if (!empty($data['sysinfo']['xdebug'])) {
        // You are running the benchmark with xdebug enabled. This has a major impact on runtime performance.
        $result .= '
Xdebug
'
            . h('Warning: Xdebug is enabled!')
            . '
';    }

    $result .= '
PHP Version
' . h($data['sysinfo']['php_version']) . '
';
    $result .= '
Platform
' . h($data['sysinfo']['platform']) . '
';

    if ($showServerName == true) {
        $result .= '
Server name
' . h($data['sysinfo']['server_name']) . '
';
        $result .= '
Server address
' . h($data['sysinfo']['server_addr']) . '
';
    }

    $result .= '
';
    $result .= '
Benchmark
';
    $result .= '';
    $result .= '
String
' . h($data['benchmark']['string']) . '
';
    $result .= '
Loops
' . h($data['benchmark']['loops']) . '
';
    $result .= '
If Else
' . h($data['benchmark']['ifelse']) . '
';
    $result .= '
Calculation total
' . h($data['benchmark']['calculation_total']) . '
';
    $result .= '
';
    if (isset($data['sysinfo']['mysql_version'])) {
        $result .= '
MySQL
';
        $result .= '';
        $result .= '
MySQL Version
' . h($data['sysinfo']['mysql_version']) . '
';
        $result .= '
MySQL Connect
' . h($data['benchmark']['mysql_connect']) . '
';
        $result .= '
MySQL Select DB
' . h($data['benchmark']['mysql_select_db']) . '
';
        $result .= '
MySQL Query Version
' . h($data['benchmark']['mysql_query_version']) . '
';
        $result .= '
MySQL Benchmark
' . h($data['benchmark']['mysql_query_benchmark']) . '
';
        $result .= '
MySQL Total
' . h($data['benchmark']['mysql_total']) . '
';
        $result .= '
';    }

    $result .= '
Total
' . h($data['benchmark']['total']) . '
';
    $result .= '
';
    return $result;
}

function h($v)
{
    return htmlentities($v);
}


Lembre-se de no início do código alterar a configuração do mysql.

Vantagens deste benchmark:
  • Pode alterar os valores dos ficheiros de configuração de acordo com a capacidade do seu servidor e verificar qual a melhor configuração para o seu servidor.
  • Sempre que atualizar o PHP, pode verificar se essa versão está mais rápida ou mais lenta.

O que achou deste artigo? Acha que devo continuar a desenvolver este assunto?

29/04/18

Imagem PHP 7

A equipa de desenvolvimento do PHP já anunciou a disponibilidade imediata do PHP 7.2.5 com a data de lançamento em 26 de Abril de 2018.

Esta é uma versão de segurança que também contém várias pequenas correções de bugs.

Todos os utilizadores do PHP 7.2 são encorajados a atualizar para esta versão.

A lista de alterações é sempre registada no ChangeLog.

PHP 7.2.5 Changelog (em inglês):

Core:
  • Fixed bug #75722 (Convert valgrind detection to configure option).
Date:
  • Fixed bug #76131 (mismatch arginfo for date_create).
Exif:
  • Fixed bug #76130 (Heap Buffer Overflow (READ: 1786) in exif_iif_add_value).
FPM:
  • Fixed bug #68440 (ERROR: failed to reload: execvp() failed: Argument list too long).
  • Fixed incorrect write to getenv result in FPM reload.
GD:
  • Fixed bug #52070 (imagedashedline() - dashed line sometimes is not visible).
iconv:
  • Fixed bug #76249 (stream filter convert.iconv leads to infinite loop on invalid sequence).
intl:
  • Fixed bug #76153 (Intl compilation fails with icu4c 61.1).
ldap:
  • Fixed bug #76248 (Malicious LDAP-Server Response causes Crash).
mbstring:
  • Fixed bug #75944 (Wrong cp1251 detection).
  • Fixed bug #76113 (mbstring does not build with Oniguruma 6.8.1).
ODBC:
  • Fixed bug #76088 (ODBC functions are not available by default on Windows).
Opcache:
  • Fixed bug #76094 (Access violation when using opcache).
Phar:
  • Fixed bug #76129 (fix for CVE-2018-5712 may not be complete).
phpdbg:
  • Fixed bug #76143 (Memory corruption: arbitrary NUL overwrite).
SPL:
  • Fixed bug #76131 (mismatch arginfo for splarray constructor).
standard:
  • Fixed bug #74139 (mail.add_x_header default inconsistent with docs).
  • Fixed bug #75996 (incorrect url in header for mt_rand).
Se quiser ver as grandes novidades do php 7, pode ver este artigo: PHP 7, veja as grandes novidades!
O download do php 7 pode ser feito na página de downloads do php 7.

21/12/17

XAMPP (Apache, Mysql/MariaDB, PHP)Finalmente chegou o pacote para quem gosta de programar em php, com tudo incluído, ou seja, o PHP, Apache, MariaDB, OpenSSL, phpMyAdmin e muito mais... e tudo atualizado!

A versão mais recente do XAMPP já traz o PHP 7.2.0! Além disso, também traz os pacotes essenciais para programadores completamente atualizados!

As atualizações do xampp são as seguintes:

PHP versão 7.2.0
Apache versão 2.4.29
MariaDB versão 10.1.29
OpenSSL versão 1.0.2n
phpMyAdmin versão 4.7.6

Nota: O XAMPP também tem suporte para programadores de PERL.

O XAMPP pode ser encontrado no site ApacheFriends.org. Apenas tem de escolher o download correspondente ao seu sistema operativo e fazer o respectivo download!

Não vou falar aqui de todas as alterações, mas posso dizer que são várias as melhorias, basta ver por exemplo o changelog do php7.

Se quiser discutir o tema aqui, desde a intslação até à programação em PHP, deixe um comentário!