PHP 7.2 general availability

Posted in PHP by

PHP 7.2, which is the latest second feature update to the PHP 7 series, is now available as a one-click install in our control panel!

While it has been installed on our CentOS 7 servers for a few weeks now, you should now be able to create new apps using our control panel by selecting the Static/CGI/PHP-7.2 option in the App Type dropdown menu.

Screenshot of WebFaction control panel php version picker

If you want to run a php script from the command line, like composer or drush, you can invoke the php 7.2 interpreter as php72.

[iliasr@web624 ~]$ php72 -v
PHP 7.2.1 (cli) (built: Jan  5 2018 04:43:31) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2017 Zend Technologies

Eager users (and there were a few judging from the support tickets about it) were able to use PHP 7.2 by manually putting this in their site’s .htaccess file:

<FilesMatch .php$>
    SetHandler php72-cgi

If you want to switch an existing PHP app to PHP 7.2 you will need to do the same. While there are only a few backward incompatible changes with this release, it would be wise to review the official migration guide before doing so.

PHP 7.2 brings a lot of impromvements and new features such as the ability to convert numeric keys in object/array casts, the migration of the Hash extension from Resource to Object and the introduction of libsodium as a core extension. You can review the full list of changes in the official ChangeLog.

Please note that PHP 7.2 is not available on our CentOS 6 servers (any machine lower than Web500). Users on CentOS 6 who wish to install and use PHP 7.2 apps must migrate to a CentOS 7 server.


PHP 7 is here!

Posted in PHP by

PHP 7 is here

PHP 7 has been released! That’s right, PHP 5.6 has given way to PHP 7.0 (stop, do not pass PHP 6, do not collect $200)! The new version is now available on all WebFaction servers. So let’s take a look at some of the biggest changes in PHP 7.


Perhaps the most talked about part of PHP 7 is the substantial improvement in performance and memory usage. Measuring requests per second, benchmarks with PHP 7 have shown 30 to over 100 percent improvements over PHP 5.6. You read that correctly: upgrading to PHP 7 can sometimes double the performance of an application. The PHP project achieved these gains by merging the changes of PHPNG into the main PHP project. Although memory benchmarks are harder to come by, anecdotal reports are that PHP 7 uses less memory as well. While the real-world performance gains of upgrading to PHP 7 vary by application, you should expect to experience a marked improvement.


PHP 7 comes with a spaceship, or at least it comes with an operator that looks like a spaceship: <=>. The spaceship operator, more formally known as the “combined comparison” operator or “three-way comparison” operator, makes it easier to write comparisons for sorting. The spaceship operator compares two values and evaluates to 1, -1, or 0, if the first value is greater, less than, or equal to the second value, respectively.

Take the expression a <=> b, for example. If a is greater than b, then the expression evaluates to 1. But if a is less than b, then the expression evaluates to -1. If a and b are equal, the expression evaluates to 0. In this way, the spaceship operator reduces a complex ternary expression like ($a < $b) ? -1 : (($a > $b) ? 1 : 0) to just a <=> b.

Plus spaceships are cool. Pew pew!

Type hints

PHP 7 expands the language’s type hinting features. Previous versions of PHP supported limited argument type hinting. PHP 7 adds scalar type hinting to arguments, so you can hint int, float, string and bool for argument types. What’s more, PHP 7 lets you declare what type a function is expected to return, including the scalar types.

But there’s a catch

With these changes, you may be eager to upgrade, but keep in mind that PHP 7 is not a drop-in replacement for PHP 5.6. Many long-deprecated SAPIs and functions have been removed. There have been changes to errors and exceptions, variable handling, and source parsing too numerous to list here.

We recommend that you read the official guide on Migrating from PHP 5.6.x to PHP 7.0.x or see the the official ChangeLog to learn about every change and how it may affect your application. We also recommend that you test your application before upgrading your live site.

When you are ready to upgrade, you’ll find PHP 7 available in our one-click installer and on the command line as php70.


PHP-5.4 is here

Posted in PHP by

Things certainly move fast on the web. Just a few weeks ago we described our PHP setup on this blog and we proudly explained that we had both PHP 5.2 and 5.3 installed on our servers. But now that blog post is obsolete because PHP 5.4 was just released!
Fortunately we’ve already installed PHP 5.4 on all of our servers, just days after it was released:

[remi@web300 ~]# php54 -v
PHP 5.4.0 (cli) (built: Mar  2 2012 06:58:40)

We’ve also added a new Static/CGI/PHP-5.4 to our control panel for the early adopters.
If you want to switch an existing PHP app to PHP-5.4 you can do so by putting this in a .htaccess file:

<FilesMatch .php$>
    SetHandler php54-cgi

Amongst many other improvements PHP-5.4 is faster and uses less memory and it provides a new feature called Traits which enables developers to reuse code.
More details are available in the ChangeLog.


New PHP-5.3 app available

Posted in PHP by

We’ve just added a new app to our control panel called “Static/CGI/PHP-5.3”.

This means that you can now choose between PHP-5.2 and PHP-5.3 when you create a PHP app.

The PHP-5.3 command line tools are also installed on all servers:

[remi@web180 ~]$ php53 -v
PHP 5.3.5 (cli) (built: Mar 15 2011 06:04:49)

[remi@web180 ~]$ php -v
PHP 5.2.11 (cli) (built: Oct 18 2010 14:11:48)


PS: Note that the PHP-5.3 app is only available on Web120 and over. This is because machines before that use mod_php to serve PHP apps and Apache can’t run mod_php-5.2 and mod_php-5.3 side by side. If you’re on a machine before that and want to run PHP-5.3 you can either build your own Apache/PHP-5.3 stack or ask for a plan on a newer server. Open a ticket and we’ll be happy to help.

Update May 12th: The PHP-5.3 app is now available on all servers.