PHP 7.0.0 finally Released
-
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.
-
So I normally update fog with this command:
dnf update -y;svn up;./installfog.sh -y
How do I know that PHP 7 was installed? I didn’t see anything different done.
-
Fedora 23 (maybe 22 but may need to change RPM to install)
rpm -Uvh http://rpms.remirepo.net/fedora/remi-release-23.rpm dnf config-manager --set-enabled remi-php70 dnf -y update
Fedora 22 Would most likely be:
rpm -Uvh http://rpms.remirepo.net/fedora/remi-release-22.rpm dnf config-manager --set-enabled remi-php70 dnf -y update
Install fog like you normally would.
Ubuntu 15.10 (and Others I suppose) (as long as you’re running trunk)
sudo sed -e 's/php5-.*[[:space:]]/php7\.0-\*/g' -e 's/php5/php7\.0/g' -i /opt/fog/.fogsettings sudo rm -rf /etc/apache2/mods-enabled/php5.load sudo apt-get -f purge libapache2-mod-php5 php5-fpm* php5* sudo add-apt-repository -y ppa:ondrej/php-7.0 sudo apt-get update
The fog installer for Ubuntu (possibly debian?) will not work either. All thanks to their excessive use of using the version as the enabling/disabling items.
-
Just wanted to mention that the code listed here for Ubuntu removes all packages from .fogsettings except apache and php7.0, it also incorrectly adds php7.0-*libapache2-mod-php7.0 (when it should be libapache2-mod-php7.0)
-
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
https://webtatic.com/packages/php70/
http://tecadmin.net/install-php-7-on-centos/#But first I’m trying the centos version of @Tom-Elliott’s fedora instructions
beingrpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm yum-config-manager --enable remi-php70 yum -y update
Will report back
-
@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 thoughphp -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.
-
@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.
-
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.
-
@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.
-
-
I’m running pure PHP 7.0 on four different Ubuntu Server 15.10 servers…let me know how I can help!
-
@d4rk3 Are you running FOG on them?
-
@MRCUR No…just hopes and dreams.
Of course I’m running FOG on them lol…two normal servers and two storage nodes.
-
@d4rk3 Could you go through the steps on how to make it work?
-
Update (don’t install yet) to the latest trunk via Git or SVN, then…
Edit /opt/fog/.fogsettings (or just comment out this line):
packages=''
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 php_verAdds="-7.0" repo="php${php_verAdds}" [[ $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
-
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:
php_ver="7.0" php_verAdds="-7.0" repo="php-${php_ver}"
-
This post is deleted! -
@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.
-
@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"
-
@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.