Difference between revisions of "PHP Software Collections"

From SME Server
Jump to navigationJump to search
 
(71 intermediate revisions by 8 users not shown)
Line 1: Line 1:
 +
=== Requirements ===
 +
{{Warning box|'''This page is ONLY for SME Server 9 64 bit''' which is now EOL and deprecated. Please upgrade '''urgently''' to SME Server v10}}
 +
{{Warning box|Even if you try this on an old v9 installation you may well break your server. Upgrade immediately}}
 +
{{Warning box|Do '''NOT''' try this on a v10 server}}
 +
 +
 
{{Languages}}
 
{{Languages}}
{{Level|Easy|The instructions for installing and using Roundcube can be followed by a beginner, changing options requires a basic knowledge of linux.}}
+
{{Level|Easy|The instructions for installing and using php scl can be followed by a beginner, changing options requires a basic knowledge of linux.}}
 
{{usefulnote}}
 
{{usefulnote}}
 +
 
== PHP Software Collections for SME Server ==
 
== PHP Software Collections for SME Server ==
 +
 +
{{warning box| Please check the following site for notes on EOL for different versions of PHP.
 +
 +
As of May 2019 the minimum supported version of PHP is 7.1 but only for security updates until 30th November 2019
 +
 +
https://www.php.net/supported-versions.php
 +
 +
Note that the default installed version of PHP on Koozali SME is 5.3.3 and that is supported for security updates by RedHat only until the distro goes EOL. However, it may not be supported by applications.}}
 +
 +
{{Warning box|'''With php-scl contrib older than  0.4-22 : If you enable PHP 7.x globally you may get errors trying to access Webmail and possibly some panels of the Server-Manager
 +
The highest PHP version that will work with Horde 3.x is PHP 5.6
 +
 +
To use PHP 7.x globally you will need to update to Horde 5.x (see Bugs/wiki)
 +
 +
If panels depending of php of your Server Manager or Webmail are blocked please see below for instructions on how to get them working
 +
'''
 +
 +
Simply updating to last version of php-scl contrib will solve this issue.}}
  
 
=== Maintainer ===
 
=== Maintainer ===
 
[mailto:stephdl@de-labrusse.fr stephdl] Stéphane de Labrusse AKA [[User:stephdl|Stephdl]]<br />
 
[mailto:stephdl@de-labrusse.fr stephdl] Stéphane de Labrusse AKA [[User:stephdl|Stephdl]]<br />
 
=== Version ===
 
=== Version ===
{{ #smeversion: smeserver-php-scl }}
+
{{#smeversion: smeserver-php-scl }}
  
 
=== Description ===
 
=== Description ===
The purpose of the contribs is to install PHP54,PHP55,PHP56 beside the default php without remove it. We take rpms from the [[remi]] repository but in fact it is the same than the [https://www.softwarecollections.org/en/ official web site], except than you will have more choices.
+
The purpose of the contribs is to install PHP54, PHP55, PHP56, PHP70, PHP71 alongside the default php version installed with SME9 without having to remove or change the default php installation. We use the rpms from the [[remi-safe]] repository which are in fact the same as those on the official [https://www.softwarecollections.org/en/ official web site], but have the advantage of providing more choices.
  
 +
All PHP rpms are installed in /opt , this prevents any interference or conflict with the default install of PHP.
  
=== Requirements ===
+
=== Installation ===
{{Warning box|'''Only for SME Server 9 64 bit'''}}
+
 
 +
===Base installation===
 +
 
 +
==== Simple repo installation====
 +
 
 +
These repos can now be easily added using a rpm
 +
 
 +
yum --enablerepo=smeaddons install smeserver-extrarepositories-epel, smeserver-extrarepositories-remi-safe
 +
 
 +
==== Manual repo installation====
 +
 
 +
Remember to first configure the required [[remi-safe]] repository,
 +
{{:Remi-safe}}
 +
 
 +
In the future you may also need [[epel]] repository, although currently it is not required
  
=== Installation ===
+
{{:Epel|transcludesection=Generic}}
Remember to first configure the required [[stephdl]] and the [[remi]] repositorie, then issue the following command on the SME Server shell:
 
  
db yum_repositories set stephdl repository \
 
BaseURL http://mirror.de-labrusse.fr/smeserver/\$releasever \
 
EnableGroups no GPGCheck yes \
 
Name "Mirror de Labrusse" \
 
GPGKey http://mirror.de-labrusse.fr/RPM-GPG-KEY \
 
Visible yes status disabled
 
 
  /sbin/e-smith/db yum_repositories set remi repository \
 
Name 'Remi - EL6' \
 
BaseURL 'http://rpms.famillecollet.com/enterprise/6/remi/$basearch/' \
 
EnableGroups no \
 
GPGCheck yes \
 
GPGKey http://rpms.famillecollet.com/RPM-GPG-KEY-remi \
 
Visible yes \
 
Exclude mysql*,php-* \
 
status disabled
 
  
 +
then you need to issue this command before installing:
 
   signal-event yum-modify
 
   signal-event yum-modify
Then Issue the command line
 
yum install smeserver-php-scl --enablerepo=stephdl,remi
 
  
 +
the minimal installation can simply be done doing :
 +
yum install smeserver-php-scl --enablerepo=smecontribs
 +
If you do not want to restart your server
 +
signal-event php-update; config set UnsavedChanges no
 +
or
 +
signal-event post-upgrade; signal-event reboot
 +
Go to the php-scl panel on Server Manager and activate the version of php you desire for each Ibay, or if you need for the whole server.
 +
 +
if you need additional php packages consider advanced install
 +
 +
===Advanced installation===
 +
 +
 +
To install additional php rpm, as an example you might need the following components of php :  php56-php-pecl-rar php56-php-libvirt php56-php-magickwand
 +
 +
yum install smeserver-php-scl php56-php-pecl-rar php56-php-libvirt php56-php-magickwand --enablerepo=smecontribs,epel
 +
If you need additional PHP modules (e.g. for Nextcloud, Redis) you need to include the required PHP Redis modules (php71-php-pecl-redis php70-php-pecl-redis):
 +
yum --enablerepo=remi,epel install php71-php-pecl-redis php70-php-pecl-redis
 
If you do not want to restart your server
 
If you do not want to restart your server
 
  signal-event php-update; config set UnsavedChanges no
 
  signal-event php-update; config set UnsavedChanges no
Line 46: Line 86:
  
 
Go to the php-scl panel on Server Manager and activate the version of php you desire for each Ibay, or if you need for the whole server.
 
Go to the php-scl panel on Server Manager and activate the version of php you desire for each Ibay, or if you need for the whole server.
 +
 +
===Limitation===
 +
 +
If you use scl_php56/scl_php54/scl_php55 for the whole server, You can add also specific values (MemoryLimit,UpMaxFileSize,PostMaxSize,MaxExecTime,AllowUrlfOpen) per Ibay (either by db command or by the contrib smeserver-webhosting) because apache is the handler of php.
 +
 +
If you use scl_php71,scl_php70,scl_php56,scl_php55,scl_php54 per ibay, then you use php with a cgi application and you cannot add specific setting to apache with php_admin_flag or php_admin_value. Then if you want to add a specific setting like in [[PHP_Software_Collections#Usage|Usage]] you must use it for the whole php applications by the command you can find in [[PHP_Software_Collections#Usage|Usage]]
 +
 +
It is the limitation of php-scl
 +
 +
In short
 +
 +
* PHP SCL for the whole server -> all settings can be set per Ibay normally with db or with smeserver-webhosting (these settings will overwritten those set in [[PHP_Software_Collections#Usage|Usage]])
 +
* PHP SCL per Ibay -> all settings must be set in each php{54,55,56} properties like in [[PHP_Software_Collections#Usage|Usage]]. Of course all php applications (whatever the Ibay) will share the same settings.
 +
 +
===Usage===
 +
When you want to change the version of php, you can use the panel (Php-Scl versions), either for changing the php version for an Ibay or for the whole server.
 +
 +
However if you want to change settings of a specific php version you have to use the command line, first see the new db entries.
 +
 +
After each modification don't forget to launch the event 'signal-event php-update'
 +
 +
[root@sme9b3dev64 ~]# config show php54
 +
php54=configuration
 +
    AllowUrlFopen=Off    #(On/Off)
 +
    MaxExecutionTime=30
 +
    MaxFileUpload=20
 +
    MaxInputTime=60
 +
    MemoryLimit=128M
 +
    PhpModule=disabled    #(enabled/disabled)
 +
    PostMaxSize=20M
 +
    UploadMaxFilesize=10M
 +
 +
[root@sme9b3dev64 ~]# config show php55
 +
php55=configuration
 +
    AllowUrlFopen=Off    #(On/Off)
 +
    MaxExecutionTime=30
 +
    MaxFileUpload=20
 +
    MaxInputTime=60
 +
    MemoryLimit=128M
 +
    PhpModule=disabled    #(enabled/disabled)
 +
    PostMaxSize=20M
 +
    UploadMaxFilesize=10M
 +
 +
[root@sme9b3dev64 ~]# config show php56
 +
php56=configuration
 +
    AllowUrlFopen=Off      #(On/Off)
 +
    MaxExecutionTime=30
 +
    MaxFileUpload=20
 +
    MaxInputTime=60
 +
    MemoryLimit=128M
 +
    PhpModule=disabled    #(enabled/disabled)
 +
    PostMaxSize=20M
 +
    UploadMaxFilesize=10M
 +
 +
[root@sme9b3dev64 ~]# config show php70
 +
php70=configuration
 +
    AllowUrlFopen=Off      #(On/Off)
 +
    MaxExecutionTime=30
 +
    MaxFileUpload=20
 +
    MaxInputTime=60
 +
    MemoryLimit=128M
 +
    PhpModule=disabled    #(enabled/disabled)
 +
    PostMaxSize=20M
 +
    UploadMaxFilesize=10M
 +
 +
[root@sme9b3dev64 ~]# config show php71
 +
php71=configuration
 +
    AllowUrlFopen=Off      #(On/Off)
 +
    MaxExecutionTime=30
 +
    MaxFileUpload=20
 +
    MaxInputTime=60
 +
    MemoryLimit=128M
 +
    PhpModule=disabled    #(enabled/disabled)
 +
    PostMaxSize=20M
 +
    UploadMaxFilesize=10M
 +
 +
{{Note box|Similar settings for php72 and php73 should be available in the latest release}}
 +
 +
in fact you can choose manually (think about you have a panel for that) which version you want to use in the phpmod of apache (only one version can be used), for example
 +
 +
config setprop php56 PhpModule enabled
 +
signal-event php-update
 +
 +
Since just one version can be used with php-mod, the lower version is used....all disabled and it is the php default version which is used
 +
 +
=== Run a command with a specific software environment ===
 +
 +
You can run a command from the shell with a specific env with:
 +
 +
scl enable php55 'php -v'
 +
 +
(useful for example if you need to run a cron job with an alternative PHP version)
 +
 
=== Find other RPMS ===
 
=== Find other RPMS ===
{{Note box|Now when you want a specific rpm, you have to install it from the 'remi' repository. The name start by php54-php or php55-php or php56-php}}
+
{{Note box|Now when you want a specific rpm, you have to install it from the 'remi-safe' repository. The name start by php54-php or php55-php or php56-php  
  
If you want to see rpm availables
+
here all the rpm available : '''http://rpms.famillecollet.com/enterprise/6/safe/x86_64/repoview/letter_p.group.html''' }}
  
  yum list available php5\* --disablerepo=* --enablerepo=remi
+
If you want to see available rpm
 +
 
 +
  yum list available php5\* --disablerepo=* --enablerepo=remi-safe
  
 
For example if you want to install the php rpm for pgsql
 
For example if you want to install the php rpm for pgsql
  yum install php54-php-pgsql php55-php-pgsql php56-php-pgsql --enablerepo=remi
+
  yum install php54-php-pgsql php55-php-pgsql php56-php-pgsql php70-php-pgsql php71-php-pgsql --enablerepo=remi-safe
 +
 
 +
=== Update ===
 +
====base install====
 +
#If you enabled smecontribs repo there will be nothing to do, all updates will propagated on their own with usual updates as remi-safe is enabled.
 +
 
 +
#If smecontribs is not enabled, you will need to issuethe following:
 +
yum update smeserver-php-scl php54* php55* php56* php70* php71* --enablerepo=smecontribs
 +
 
 +
====Advanced install====
 +
The repo remi-safe is enabled by default as it has no conflicts with base installation.
 +
Please do not enable epel repo by default, as you might break you system or at least the update process.
 +
 
 +
regularly you should check for updates and apply them by doing so:
 +
 
 +
yum update smeserver-php-scl php54* php55* php56* php70* php71*  --enablerepo=smecontribs,remi-safe,epel
  
 
=== Uninstall ===
 
=== Uninstall ===
 
  yum remove smeserver-php-scl
 
  yum remove smeserver-php-scl
 +
 +
=== Custom Templates ===
 +
If you need to modify the php.ini you can add a custom template.
 +
 +
Make a new directory here and add your template fragment:
 +
 +
<syntaxhighlight  lang="bash" >
 +
/etc/e-smith/templates-custom/opt/remi/php{$ver}/root/etc/php.ini
 +
</syntaxhighlight>
 +
 +
===Debug===
 +
 +
{{Warning box| This was for v9. v10 is different and this may break your installation
 +
Some notes here:
 +
https://wiki.koozali.org/Koozali_SME_Server_Debugging#Multiple_machine_debug_proxy}}
 +
 +
====Setup====
 +
 +
This demonstrates how to get xdebug going for a given version - in this case PHP 5.6
 +
 +
yum --enablerepo=remi-safe install php56-php-pecl-xdebug
 +
 +
For OpenBaseDir errors add the pear path:
 +
 +
db accounts setprop myibay PHPBaseDir /home/e-smith/files/ibays/myibay/html/:/usr/share/pear/:/usr/share/pear-addons/:/tmp/:/opt/remi/php56/root/usr/share/pear/
 +
 +
signal-event php-update;signal-event ibay-modify
 +
 +
====Enable====
 +
 +
To enable the debugger:
 +
 +
Now edit the following file according to your needs:
 +
 +
/etc/e-smith/templates/opt/remi/php56/root/etc/php.ini
 +
 +
====Standard direct connection====
 +
 +
For stock xdebug you probably need to set debugger.enabled to True
 +
 +
Copy:
 +
/etc/e-smith/templates/opt/remi/phpxx/root/etc/php.ini/80ModuleSettings03Debugger
 +
 +
To:
 +
/etc/e-smith/templates-custom/opt/remi/phpxx/root/etc/php.ini/80ModuleSettings03Debugger
 +
 +
Edit the following and set debugger.enabled to True
 +
 +
[Debugger]
 +
debugger.host                          = localhost
 +
debugger.port                          = 7869
 +
debugger.enabled                      = False
 +
 +
You could add a debug setting to automate this.
 +
 +
;debugger.enabled                      = False
 +
debugger.enabled                      = {
 +
    my $debug = $php71{Debugger} || "False";
 +
    $OUT .= "$debug";
 +
}
 +
 +
Now you can do:
 +
 +
config setprop php71 Debugger True
 +
signal-event php-update
 +
 +
Using Komodo IDE with pydbgp you may need a debug section like this
 +
 +
;xdebug.remote_enable                  = true
 +
xdebug.remote_enable                  = {
 +
    my $debug = $php71{Debugger} || "False";
 +
    $OUT .= "$debug";
 +
}
 +
; If using a debug proxy on the server for multi users you need settings like this
 +
; If you have a single user you can set remote host to their IP
 +
xdebug.remote_host                    = 127.0.0.1
 +
xdebug.remote_port                    = 9000
 +
xdebug.remote_handler                  = dbgp
 +
xdebug.remote_log                      = /var/log/xdebug.log
 +
xdebug.remote_mode                    = req
 +
 +
 +
Alternative if you use Zend/Eclipse etc:
 +
 +
zend_extension                          = "/usr/lib64/php/modules/xdebug.so"
 +
zend_debugger.allow_hosts              = 192.168.10.0/24
 +
zend_debugger.expose_remotely          = always
 +
zend_debugger.httpd_uid                = 102
 +
zend_debugger.httpd_uid                = -1
 +
 +
signal-event php-update
 +
 +
You should be able to connect with your debugger pointed to the correct port and IP address of the server, and using a URL like this:
 +
 +
https://test.myserver.com/TestFile.php?XDEBUG_SESSION_START
 +
 +
====Using pydbg proxy====
 +
 +
[Debugger]
 +
xdebug.remote_enable                  = true
 +
xdebug.remote_host                    = 127.0.0.1
 +
xdebug.remote_port                    = 9000
 +
xdebug.remote_handler                  = dbgp
 +
xdebug.remote_log                      = /var/log/xdebug.log
 +
xdebug.remote_mode                    = req
 +
xdebug.idekey                          = users
 +
 +
signal-event php-update
 +
 +
Then run the debug proxy with something like this
 +
 +
python /root/dbgp/bin/pydbgpproxy -d 127.0.0.1:9000 -i 192.168.10.1:9001 -l DEBUG
 +
 +
You should be able to connect with your debugger pointed to the correct port 9001 and IP address of your server, and using a URL like this:
 +
 +
https://test.myserver.com/TestFile.php?XDEBUG_SESSION_START=users
 +
 +
===Cannot access Webmail ===
 +
 +
In previous version you could have issue accessing webmail if php7 is selected. We have added a process to set php cgi to php56 in case a php7 version is selected globally. Unfortunately this would create a lot of warnings in the logs.
 +
 +
you could avoid this by doing:
 +
<syntaxhighlight lang="bash">
 +
mkdir -p /etc/e-smith/templates-custom/home/httpd/html/horde/config/conf.php/
 +
cp -a /etc/e-smith/templates/home/httpd/html/horde/config/conf.php/100GeneralSettings /etc/e-smith/templates-custom/home/httpd/html/horde/config/conf.php/
 +
 +
#then add this in the file
 +
if (defined('E_STRICT')) \{
 +
  $conf['debug_level'] &=  ~E_STRICT;
 +
\}
 +
 +
</syntaxhighlight>
 +
and finally, run :
 +
<syntaxhighlight  lang="bash" >
 +
expand-template /home/httpd/html/horde/lib/core.php
 +
</syntaxhighlight>
 +
 +
this will reduce the amount of warning, but there will be still some because of script called before the conf file
 +
 +
in older version if you find that you can not access Webmail then you can disable PHP SCL as follows:
 +
 +
Global
 +
 +
config setprop php{$ver} PhpModule disabled|enabled
 +
signal-event php-update
 +
 +
eg
 +
 +
config setprop php71 PhPModule disabled
 +
signal-event php-update
 +
 +
You should now be able to access Webmail
 +
 +
As a side note this is how to do it per ibay
 +
For an individual ibay
 +
 +
db {ibayname} setprop php{$ver} PhpVersion disabled|enabled
 +
signal-event php-update
  
 
=== Bugs ===
 
=== Bugs ===
Line 64: Line 372:
  
 
{{#bugzilla:columns=id,product,version,status,summary |sort=id|order=desc |component=smeserver-php-scl|noresultsmessage="No open bugs found."}}
 
{{#bugzilla:columns=id,product,version,status,summary |sort=id|order=desc |component=smeserver-php-scl|noresultsmessage="No open bugs found."}}
 +
===Changelog===
 +
Only released version in smecontrib are listed here.
  
 +
{{#smechangelog: smeserver-php-scl}}
  
[[Category: Contrib]]
+
[[Category: Deprecated_Contrib]]
 +
[[Category:Software Collections]]

Latest revision as of 14:05, 17 August 2022

Requirements

Warning.png Warning:
This page is ONLY for SME Server 9 64 bit which is now EOL and deprecated. Please upgrade urgently to SME Server v10


Warning.png Warning:
Even if you try this on an old v9 installation you may well break your server. Upgrade immediately


Warning.png Warning:
Do NOT try this on a v10 server




PythonIcon.png Skill level: Easy
The instructions for installing and using php scl can be followed by a beginner, changing options requires a basic knowledge of linux.


Is this article helpful to you?
Please consider donating or volunteering
Thank you!

PHP Software Collections for SME Server

Warning.png Warning:
Please check the following site for notes on EOL for different versions of PHP.

As of May 2019 the minimum supported version of PHP is 7.1 but only for security updates until 30th November 2019

https://www.php.net/supported-versions.php

Note that the default installed version of PHP on Koozali SME is 5.3.3 and that is supported for security updates by RedHat only until the distro goes EOL. However, it may not be supported by applications.



Warning.png Warning:
With php-scl contrib older than 0.4-22 : If you enable PHP 7.x globally you may get errors trying to access Webmail and possibly some panels of the Server-Manager

The highest PHP version that will work with Horde 3.x is PHP 5.6

To use PHP 7.x globally you will need to update to Horde 5.x (see Bugs/wiki)

If panels depending of php of your Server Manager or Webmail are blocked please see below for instructions on how to get them working

Simply updating to last version of php-scl contrib will solve this issue.


Maintainer

stephdl Stéphane de Labrusse AKA Stephdl

Version

Contrib 9:
smeserver-php-scl
The latest version of smeserver-php-scl is available in the SME repository, click on the version number(s) for more information.


Description

The purpose of the contribs is to install PHP54, PHP55, PHP56, PHP70, PHP71 alongside the default php version installed with SME9 without having to remove or change the default php installation. We use the rpms from the remi-safe repository which are in fact the same as those on the official official web site, but have the advantage of providing more choices.

All PHP rpms are installed in /opt , this prevents any interference or conflict with the default install of PHP.

Installation

Base installation

Simple repo installation

These repos can now be easily added using a rpm

yum --enablerepo=smeaddons install smeserver-extrarepositories-epel, smeserver-extrarepositories-remi-safe

Manual repo installation

Remember to first configure the required remi-safe repository,

issue the following command on the SME Server shell:

/sbin/e-smith/db yum_repositories set remi-safe repository \
Name 'Remi - safe' \
BaseURL 'http://rpms.famillecollet.com/enterprise/$releasever/safe/$basearch/' \
EnableGroups no \
GPGCheck yes \
GPGKey http://rpms.famillecollet.com/RPM-GPG-KEY-remi \
Visible yes \
status enabled


In the future you may also need epel repository, although currently it is not required


yum install smeserver-extrarepositories-epel -y


then you need to issue this command before installing:

 signal-event yum-modify

the minimal installation can simply be done doing :

yum install smeserver-php-scl --enablerepo=smecontribs

If you do not want to restart your server

signal-event php-update; config set UnsavedChanges no

or

signal-event post-upgrade; signal-event reboot

Go to the php-scl panel on Server Manager and activate the version of php you desire for each Ibay, or if you need for the whole server.

if you need additional php packages consider advanced install

Advanced installation

To install additional php rpm, as an example you might need the following components of php : php56-php-pecl-rar php56-php-libvirt php56-php-magickwand

yum install smeserver-php-scl php56-php-pecl-rar php56-php-libvirt php56-php-magickwand --enablerepo=smecontribs,epel

If you need additional PHP modules (e.g. for Nextcloud, Redis) you need to include the required PHP Redis modules (php71-php-pecl-redis php70-php-pecl-redis):

yum --enablerepo=remi,epel install php71-php-pecl-redis php70-php-pecl-redis

If you do not want to restart your server

signal-event php-update; config set UnsavedChanges no

or

signal-event post-upgrade; signal-event reboot

Go to the php-scl panel on Server Manager and activate the version of php you desire for each Ibay, or if you need for the whole server.

Limitation

If you use scl_php56/scl_php54/scl_php55 for the whole server, You can add also specific values (MemoryLimit,UpMaxFileSize,PostMaxSize,MaxExecTime,AllowUrlfOpen) per Ibay (either by db command or by the contrib smeserver-webhosting) because apache is the handler of php.

If you use scl_php71,scl_php70,scl_php56,scl_php55,scl_php54 per ibay, then you use php with a cgi application and you cannot add specific setting to apache with php_admin_flag or php_admin_value. Then if you want to add a specific setting like in Usage you must use it for the whole php applications by the command you can find in Usage

It is the limitation of php-scl

In short

  • PHP SCL for the whole server -> all settings can be set per Ibay normally with db or with smeserver-webhosting (these settings will overwritten those set in Usage)
  • PHP SCL per Ibay -> all settings must be set in each php{54,55,56} properties like in Usage. Of course all php applications (whatever the Ibay) will share the same settings.

Usage

When you want to change the version of php, you can use the panel (Php-Scl versions), either for changing the php version for an Ibay or for the whole server.

However if you want to change settings of a specific php version you have to use the command line, first see the new db entries.

After each modification don't forget to launch the event 'signal-event php-update'

[root@sme9b3dev64 ~]# config show php54
php54=configuration
   AllowUrlFopen=Off     #(On/Off)
   MaxExecutionTime=30
   MaxFileUpload=20
   MaxInputTime=60
   MemoryLimit=128M
   PhpModule=disabled    #(enabled/disabled)
   PostMaxSize=20M
   UploadMaxFilesize=10M
[root@sme9b3dev64 ~]# config show php55
php55=configuration
   AllowUrlFopen=Off     #(On/Off)
   MaxExecutionTime=30
   MaxFileUpload=20
   MaxInputTime=60
   MemoryLimit=128M
   PhpModule=disabled    #(enabled/disabled)
   PostMaxSize=20M
   UploadMaxFilesize=10M
[root@sme9b3dev64 ~]# config show php56
php56=configuration
   AllowUrlFopen=Off      #(On/Off)
   MaxExecutionTime=30
   MaxFileUpload=20
   MaxInputTime=60
   MemoryLimit=128M
   PhpModule=disabled    #(enabled/disabled)
   PostMaxSize=20M
   UploadMaxFilesize=10M
[root@sme9b3dev64 ~]# config show php70
php70=configuration
   AllowUrlFopen=Off      #(On/Off)
   MaxExecutionTime=30
   MaxFileUpload=20
   MaxInputTime=60
   MemoryLimit=128M
   PhpModule=disabled    #(enabled/disabled)
   PostMaxSize=20M
   UploadMaxFilesize=10M
[root@sme9b3dev64 ~]# config show php71
php71=configuration
   AllowUrlFopen=Off      #(On/Off)
   MaxExecutionTime=30
   MaxFileUpload=20
   MaxInputTime=60
   MemoryLimit=128M
   PhpModule=disabled    #(enabled/disabled)
   PostMaxSize=20M
   UploadMaxFilesize=10M


Important.png Note:
Similar settings for php72 and php73 should be available in the latest release


in fact you can choose manually (think about you have a panel for that) which version you want to use in the phpmod of apache (only one version can be used), for example

config setprop php56 PhpModule enabled
signal-event php-update

Since just one version can be used with php-mod, the lower version is used....all disabled and it is the php default version which is used

Run a command with a specific software environment

You can run a command from the shell with a specific env with:

scl enable php55 'php -v'

(useful for example if you need to run a cron job with an alternative PHP version)

Find other RPMS

Important.png Note:
Now when you want a specific rpm, you have to install it from the 'remi-safe' repository. The name start by php54-php or php55-php or php56-php

here all the rpm available : http://rpms.famillecollet.com/enterprise/6/safe/x86_64/repoview/letter_p.group.html


If you want to see available rpm

yum list available php5\* --disablerepo=* --enablerepo=remi-safe

For example if you want to install the php rpm for pgsql

yum install php54-php-pgsql php55-php-pgsql php56-php-pgsql php70-php-pgsql php71-php-pgsql --enablerepo=remi-safe

Update

base install

  1. If you enabled smecontribs repo there will be nothing to do, all updates will propagated on their own with usual updates as remi-safe is enabled.
  1. If smecontribs is not enabled, you will need to issuethe following:
yum update smeserver-php-scl php54* php55* php56* php70* php71* --enablerepo=smecontribs

Advanced install

The repo remi-safe is enabled by default as it has no conflicts with base installation. Please do not enable epel repo by default, as you might break you system or at least the update process.

regularly you should check for updates and apply them by doing so:

yum update smeserver-php-scl php54* php55* php56* php70* php71*  --enablerepo=smecontribs,remi-safe,epel

Uninstall

yum remove smeserver-php-scl

Custom Templates

If you need to modify the php.ini you can add a custom template.

Make a new directory here and add your template fragment:

/etc/e-smith/templates-custom/opt/remi/php{$ver}/root/etc/php.ini

Debug

Warning.png Warning:
This was for v9. v10 is different and this may break your installation

Some notes here: https://wiki.koozali.org/Koozali_SME_Server_Debugging#Multiple_machine_debug_proxy


Setup

This demonstrates how to get xdebug going for a given version - in this case PHP 5.6

yum --enablerepo=remi-safe install php56-php-pecl-xdebug

For OpenBaseDir errors add the pear path:

db accounts setprop myibay PHPBaseDir /home/e-smith/files/ibays/myibay/html/:/usr/share/pear/:/usr/share/pear-addons/:/tmp/:/opt/remi/php56/root/usr/share/pear/
signal-event php-update;signal-event ibay-modify

Enable

To enable the debugger:

Now edit the following file according to your needs:

/etc/e-smith/templates/opt/remi/php56/root/etc/php.ini

Standard direct connection

For stock xdebug you probably need to set debugger.enabled to True

Copy:

/etc/e-smith/templates/opt/remi/phpxx/root/etc/php.ini/80ModuleSettings03Debugger

To:

/etc/e-smith/templates-custom/opt/remi/phpxx/root/etc/php.ini/80ModuleSettings03Debugger

Edit the following and set debugger.enabled to True

[Debugger]
debugger.host                          = localhost
debugger.port                          = 7869
debugger.enabled                       = False

You could add a debug setting to automate this.

;debugger.enabled                       = False
debugger.enabled                       = {
   my $debug = $php71{Debugger} || "False";
   $OUT .= "$debug";
}

Now you can do:

config setprop php71 Debugger True
signal-event php-update

Using Komodo IDE with pydbgp you may need a debug section like this

;xdebug.remote_enable                   = true
xdebug.remote_enable                   = {
   my $debug = $php71{Debugger} || "False";
   $OUT .= "$debug";
}
; If using a debug proxy on the server for multi users you need settings like this
; If you have a single user you can set remote host to their IP
xdebug.remote_host                     = 127.0.0.1
xdebug.remote_port                     = 9000
xdebug.remote_handler                  = dbgp
xdebug.remote_log                      = /var/log/xdebug.log
xdebug.remote_mode                     = req


Alternative if you use Zend/Eclipse etc:

zend_extension                          = "/usr/lib64/php/modules/xdebug.so"
zend_debugger.allow_hosts               = 192.168.10.0/24
zend_debugger.expose_remotely           = always
zend_debugger.httpd_uid                 = 102
zend_debugger.httpd_uid                 = -1
signal-event php-update

You should be able to connect with your debugger pointed to the correct port and IP address of the server, and using a URL like this:

https://test.myserver.com/TestFile.php?XDEBUG_SESSION_START

Using pydbg proxy

[Debugger]
xdebug.remote_enable                   = true
xdebug.remote_host                     = 127.0.0.1
xdebug.remote_port                     = 9000
xdebug.remote_handler                  = dbgp
xdebug.remote_log                      = /var/log/xdebug.log
xdebug.remote_mode                     = req
xdebug.idekey                          = users
signal-event php-update

Then run the debug proxy with something like this

python /root/dbgp/bin/pydbgpproxy -d 127.0.0.1:9000 -i 192.168.10.1:9001 -l DEBUG

You should be able to connect with your debugger pointed to the correct port 9001 and IP address of your server, and using a URL like this:

https://test.myserver.com/TestFile.php?XDEBUG_SESSION_START=users

Cannot access Webmail

In previous version you could have issue accessing webmail if php7 is selected. We have added a process to set php cgi to php56 in case a php7 version is selected globally. Unfortunately this would create a lot of warnings in the logs.

you could avoid this by doing:

mkdir -p /etc/e-smith/templates-custom/home/httpd/html/horde/config/conf.php/
cp -a /etc/e-smith/templates/home/httpd/html/horde/config/conf.php/100GeneralSettings /etc/e-smith/templates-custom/home/httpd/html/horde/config/conf.php/

#then add this in the file
if (defined('E_STRICT')) \{
   $conf['debug_level'] &=  ~E_STRICT;
\}

and finally, run :

expand-template /home/httpd/html/horde/lib/core.php

this will reduce the amount of warning, but there will be still some because of script called before the conf file

in older version if you find that you can not access Webmail then you can disable PHP SCL as follows:

Global

config setprop php{$ver} PhpModule disabled|enabled
signal-event php-update

eg

config setprop php71 PhPModule disabled
signal-event php-update

You should now be able to access Webmail

As a side note this is how to do it per ibay For an individual ibay

db {ibayname} setprop php{$ver} PhpVersion disabled|enabled
signal-event php-update

Bugs

Please raise bugs under the SME-Contribs section in bugzilla and select the smeserver-php-scl component or use this link .

"No open bugs found."

Changelog

Only released version in smecontrib are listed here.