Versions
- For COmanage 1.0.x and earlier, PHP 5.2.8 or later is required.
- The GitHub Provisioning Plugin requires PHP 5.4. It may be necessary to delete this plugin to use an earlier PHP version.
- PHP 7 is not supported.
- For COmanage 1.1.x and later, PHP 5.4 or later is required.
- PHP 7 is supported. The use of PHP 7.0.10 or later is recommended, as earlier version have known bugs that may cause segmentation faults under Apache.
Regardless of the minimum version requirements, it is strongly recommended to use a version of PHP that is not EOL (currently 5.6 or later).
Build Options
Depending on your needs, you may need the following PHP options:
- php5-xsl is required, built with
--with-xsl
. - PHP must be built with OpenSSL support (
--with-openssl
) for COmanage to directly connect using SSL or TLS to a SMTP server to send email. For example on RHEL install thephp-openssl
RPM. - For multi-byte string support in data normalization, PHP must be built with
--enable-mbstring
. - An appropriate database option, built with a flag like
--with-pdo-pgsql
or--with-pdo-mysql
. - In order to use any LDAP based plugin (including the LDAP Provisioning Plugin, LDAP Identifier Validator Plugin, or LDAP Source Plugin), PHP must be built with
--with-ldap
.
PHP Functionality | Required? | Build Option | Debian Package | RHEL Package |
---|---|---|---|---|
XSL | Yes |
| php[57]-xsl | |
An appropriate database option | Yes | eg | php[57]-pgsql or php[57]-mysql | |
OpenSSL | If COmanage will connect directly to an SMTP server to send mail, using SSL or TLS |
| php-openssl | |
mbstring | For multi-byte string support in data normalization |
| ||
LDAP | In order to use any LDAP based plugin (including the LDAP Provisioning Plugin, LDAP Identifier Validator Plugin, or LDAP Source Plugin) |
| php[57]-ldap |
PHP 5.4.0 Enables Strict Error Reporting
As of PHP 5.4.0, PHP ships by default with strict logging enabled. As of CakePHP 2.0.5, this will cause failures during setup. This can be disabled in php.ini
by setting
error_reporting = E_ALL & ~E_STRICT
PCRE Bug May Cause Problems
There are known issues with earlier versions of the PCRE library that will cause COmanage Registry to be unable to set up its database tables. Version 6.6 and earlier are known to have problems, while versions 8.02 and later are known to work. You can check the version that PHP was built against by running this command:
php -r 'phpinfo();' | grep PCRE
If you are using an old version of PCRE, you'll first need to install a more recent version. Be sure to configure it with the --enable-utf8 --enable-unicode-properties
flags. You'll then need to rebuild PHP against the newer version of the PCRE library.
Alternately, you may be able to rebuild PHP using its own internal copy of PCRE. As of PHP v5.3.3, PCRE 8.02 or later is included by default.
The database setup step may throw errors like Error: Database connection "Mysql" is missing, or could not be created.
if the command line php
client can't find the PDO libraries. One way to ensure their availability is to build PHP --with-pdo-mysql
(or with the appropriate flag for the database you are using).
You can test for this with php -r 'phpinfo();' | grep pdo
:
$ php -r 'phpinfo();' | grep pdo pdo_mysql pdo_mysql.default_socket => /var/lib/mysql/mysql.sock => /var/lib/mysql/mysql.sock pdo_sqlite
Testing PHP Database Connectivity
PHP will work with many different database servers. You may wish to test that PHP was built with support for MySQL or PostgreSQL (or whatever database you are using). You should have already installed and configured the database server and (in this example) have created a user named registry_user
.
To test if PHP was built with support for MySQL create the file mysql-test.php
with contents
<?php mysql_connect("localhost", "registry_user", "a password goes here") or die(mysql_error()); echo "Connected to MySQL<br/>"; ?>
To test if PHP was built with support for PostgreSQL create the file postgreSQL-test.php
with contents
<?php pg_connect("host=localhost dbname=test user=registry_user password=password") or die(pg_last_error()); echo "Connected to PostgreSQL<br/>"; ?>
Either run the command line php
tool on the file or serve it from your webserver and make sure that the script can connect to your database server.
Be sure to remove your test file after testing so it is not exposed on your web server.
Configuration Suggestions
As for all production PHP installations, display_errors
should be set to Off
in your php.ini.