• Hey all,

    Normally I make a proper news article to post in the announcement but I don’t think we should go that route for this particular bit of news.

    I’ve already tested FOG Trunk with PHP 7.0.0 RC8 and fixed the code base to be as operational as possible. Even better, due to all the other edits from about a year ago, I already had a good starting point. For example, not using mysql functions and what not. All I had to change was removing one line of code and all of a sudden everything starting working perfectly with it.

    I will say, PHP 7 is MUCH more memory efficient and a LOT faster. For example, on PHP 5.6.16 the dashboard page on a server that only had FOG installed on it would come in around 9M. Same principle with PHP 7.0 installed, the same page used 2M of memory. This means quite a lot. I also played with injected hosts and had 4k hosts. 5.6.16 would take about 6 - 7 seconds to start returning the page and about 16 - 18 seconds to fully render the page. With PHP 7.0 the same amount of hosts on the same system returns in about 3 seconds, and fully renders in about 12. While the timing for amount of data doesn’t seem all that significant the memory usage is MUCH better. 5.6.16 would come in around 168M, 7.0 Comes in at about 130M.

    I know this is nothing but gibberish, but believe me, if you can update, I would HIGHLY recommend it. One it would be nice to know of any problems I might have in the code, and two it would definitely help out those of you who have MANY MANY hosts in your setup.

  • @Quazz it’s new. I don’t know why, but they separated it, (they being ubuntu/debian maybe?).

  • Moderator

    Latest svn update causes install to fail at php7.0-mbstring (as it does not exist), which is rather confusing as I can’t find that package in the ubuntu install script or anywhere else for that matter.

  • Awesome! I’m glad this is helping people update to php7.0…the performance increase is very worth it!

  • Moderator

    @Tom-Elliott Thanks for the help, looks like the updating to the newest version didn’t properly merge the config file so it still had php_ver set to 7.0 which would produce the results I experienced.

    I can confirm that it works now.

  • @Quazz that doesn’t make any sense.

    The path found should be /etc/php/7.0/apache2/php.ini or /etc/php5/apache2/php.ini

    I don’t quite understand why yours is backwards.

    The line that handles this in lib/ubuntu/config.php is 81.

    Here’s what I have it set as:

    [[ $php_ver != 5 ]] && phpini="/etc/$phpcmd/$php_ver/apache2/php.ini" || phpini="/etc/$phpcmd/apache2/php.ini"
  • Moderator

    @Tom-Elliott This works, except it looks for php.ini in /etc/php/apache2/php.ini rather than /etc/php/apache2/7.0/php.ini (which causes the install to fail)

    Have to admit I’m not a fan of how they decided to change basic structures like that.

  • Moderator

    This post is deleted!

  • I’ve modified the installer a bit to allow for this.

    If you want to give this a shot, yes you will have to first remove all of the existing php5 stuff.

    I do it simpler with:

    apt-get purge -y php* lib*php

    However you do it is up to you.

    I’ve made it so you can actually just add the info to your /opt/fog/.fogsettings (of course remove the packages as described as well.

    Instead of modifying the core installer information add these lines to your .fogsettings file – before the packages line:


  • Update (don’t install yet) to the latest trunk via Git or SVN, then…

    Edit /opt/fog/.fogsettings (or just comment out this line):


    Purge everything php5:

    sudo service apache2 stop
    sudo apt-get purge -y php5 php5-common php5-json php5-gd php5-cli php5-curl php5-mysqlnd php5-fpm php5-mcrypt php5-readline libapache2-mod-php5
    sudo rm -rf /etc/apt/sources.list.d/ondrej-ubuntu-php5-5_6-wily.list
    sudo rm -rf /etc/apache2/mods-enabled/php5.conf
    sudo rm -rf /etc/apache2/mods-enabled/php5.load

    Install php7.0:

    sudo add-apt-repository -y ppa:ondrej/php-7.0
    sudo apt-get update
    sudo apt-get install -y libapache2-mod-php7.0 php7.0 php7.0-phpdbg php7.0-readline php7.0-cgi libphp7.0-embed php7.0-cli php7.0-common php7.0-curl php7.0-fpm php7.0-json php7.0-mcrypt php7.0-mysql php7.0-opcache php7.0-gd php php-cli php-common php-curl php-gd php-mcrypt php-mysql php-readline

    Edit /lib/ubuntu/config.sh (lines 19-23, 81, delete line 82):

    [[ $php_ver != 7.0 ]] && phpcmd="php" || phpcmd="php"
    [[ $php_ver != 7.0 ]] && phpfpm="php-fpm${php_ver}" || phpfpm="php7.0-fpm"
    [[ $php_ver != 7.0 ]] && phpini="/etc/$phpcmd/$php_ver/apache2/php.ini" || phpini="/etc/$phpcmd/$php_ver/apache2/php.ini"

    That’s it 🙂 then install the current trunk that you already updated to and the install should finish without errors.

    If I had to guess I’d imagine that my work on config.sh could be simplified or improved but this always works and I don’t ever have to worry about php5 trying to re-install via .fogsettings.

    Please feel free to use any/all of these steps as any of you please. I’m no expert on php but I can’t see any reason why the latest FOG shouldn’t be pure php7.0.

    Feedback is always welcome 🙂

  • Moderator

    @d4rk3 Could you go through the steps on how to make it work?

  • @MRCUR No…just hopes and dreams.

    Of course I’m running FOG on them lol…two normal servers and two storage nodes.

  • Testers

    @d4rk3 Are you running FOG on them?

  • I’m running pure PHP 7.0 on four different Ubuntu Server 15.10 servers…let me know how I can help!

  • @Tom-Elliott said:

    This is really why I say to play with Ubuntu.

    That’s confusing.

  • @Quazz This is really why I say to play with Ubuntu.

    I’ve added code to the installer to help with ubuntu when I can figure out what’s going on and needed for PHP 7 to work. One of the dependencies I’ve noticed is not used as a service, which is php-fpm.

    I can install php7.0-fpm, but there is not a service file associated with it.

    This is why the instructions I gave in this posting: https://forums.fogproject.org/topic/6285/php-7-0-0-finally-released/2# was not really saying you SHOULD use php 7.0 on debian/ubuntu as I don’t know what info to call out and what not to call out.

    I have tried installing php 7.0 on Ubuntu 15.10 and Debian 8 but I have not had any luck on getting it to work.

  • Moderator

    On ubuntu (after manually setting up the packages for php7.0 in .fogsettings) the install script fails at backing up database.

    Also, there is no php7.0-mysqlnd yet as far as I know, so using version 5 for now.

  • @Arrowhead-IT said:

    The dashboard certainly did load noticeably faster too.

    There are large improvements in efficiency, I understand. It’s one of the best reasons to move to 7. Of course there are likely security and functionality improvements as well.

  • Testers

    @Arrowhead-IT I ran

    rpm -Uvh  http://rpms.remirepo.net/enterprise/remi-release-7.rpm
    yum-config-manager --enable remi-php70
    yum -y update

    Then updated to the latest trunk

    I didn’t see it do anything different with php packages in the FOG install, certainly did in yum -y update though.
    Not sure how to tell which version of php that fog is using. I’m sure there’s a way but I don’t know it off the top of my head.
    I know that php 7 is indeed installed though

    php -v
    PHP 7.0.3 (cli) (built: Feb  3 2016 11:30:45) ( NTS )
    Copyright (c) 1997-2016 The PHP Group
    Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies

    The dashboard certainly did load noticeably faster too.
    So I think that the above method did the trick.
    You may not even need to add the rpm, just enable remi-php70 with yum config mngr. It told me I already had the repo when I added it.

    Hope this helps someone else update too.

  • Testers

    I just saw this post and decided “I Want!”
    Hopefully I don’t break anything…
    I have centos7 and I was about to follow these guides

    But first I’m trying the centos version of @Tom-Elliott’s fedora instructions

    rpm -Uvh  http://rpms.remirepo.net/enterprise/remi-release-7.rpm
    yum-config-manager --enable remi-php70
    yum -y update

    Will report back