PHP: Configuration
PHP basic packages
Installed by default, but please check if it exists by typing php -m | grep -i <module_name>:
| iconv, ftp, json, xml, simplexml, spl, mbstring, bcmath, zip, zlib, pcre, dom, session, date, hash, filter | 
Additional Required Packages
| libapache2-mod-php8.1 | Apache Webserver PHP Modul | 
| php-common | Common files for PHP packages | 
| php8.1 | PHP base package | 
| php8.1-bcmath | e.g. Faktura | 
| php8.1-bz2 | bzip2 module for PHP | 
| php8.1-cli | e.g. Cronjobs, Series letters | 
| php8.1-common | PHP Utilities | 
| php8.1-curl | e.g. for Exchange Connector connection | 
| php8.1-gd | e.g. Project management for chart generation | 
| php8.1-igbinary | PHP serializer | 
| php8.1-imap | e.g. E-Mail Manager, Mail Scanner | 
| php8.1-intl | Internationalization functions (for translation of CRM+ and PDF templates Plus) | 
| php8.1-ldap | e.g. Authentication via an MS Active Directory system | 
| php8.1-mailparse | e.g. for Exchange Connector synchronization of SMIME attachments | 
| php8.1-mbstring | Support of human speech and character encoding | 
| php8.1-mysql | Database layer to connect CRM+ to the database. | 
| php8.1-opcache | increases the PHP performance | 
| php8.1-readline | Interface to the GNU readline library | 
| php8.1-soap | e.g. Exchange Connector, customer portal | 
| php8.1-ssh2 | e.g. SFTP Backup | 
| php8.1-tidy | For filtering dangerous HTML content | 
| php8.1-xmlrpc | e.g. PBX connection | 
| php8.1-xml | e.g. Datev | 
| php8.1-zip | e.g. Datev | 
Optional Packages
| php8.1-redis | Caching (also needs php-igbinary and redis-server) | 
Required PHP Functions
must not be listed in “disable_functions”
| popen, escapeshellcmd, ini_restore, get_loaded_extensions, chmod, mkdir, rmdir, syslog, copy, unlink, rename, exec, shell_exec | 
PHP Apache / CLI Configuration
PHP Apache / Command Line Interface (CLI) Configuration
Create the file /etc/php/8.1/mods-available/custom-php.ini with following content, after creating the file
enable the module by typing phpenmod custom-php.
; Custom configuration for php8.1 module
; priority=30
[Custom PHP Configuration]
; Enable / disable showing PHP is available on the server
expose_php = Off
; Maximum execution time of each script, in seconds
max_execution_time = 600
; Maximum amount of time each script may spend parsing request data
max_input_time = 300
; How many GET/POST/COOKIE input variables may be accepted
max_input_vars = 10000
; Maximum amount of memory a script may consume
memory_limit = 1024M
; Error reporting
error_reporting = E_ALL & ~(E_NOTICE | E_DEPRECATED | E_STRICT)
; Enable / disable displaying errors on screen
display_errors = Off
; Enable / disable logging errors
log_errors = On
; Output buffering
output_buffering = On
; Date time zone
date.timezone = 'Europe/Berlin'
; Allow access to session ID cookie only when protocol is HTTPS
session.cookie_secure = 1
; Allow access to session ID cookie only via HTTP/HTTPS
session.cookie_httponly = 1
; Maximum session life time in seconds (Garbage Collector)
session.gc_maxlifetime = 7200
; Internal/script encoding
mbstring.internal_encoding = UTF-8
; PHP's default character set is set to UTF-8.
default_charset = UTF-8
; PCRE library backtracking limit.
pcre.backtrack_limit = 5000000
; Enable / disable file uploads
file_uploads = On
; Maximum allowed size for uploaded files.
upload_max_filesize = 2M
; Maximum size of POST data that PHP will accept.
; Its value may be 0 to disable the limit. It is ignored if POST data reading
; is disabled through enable_post_data_reading.
post_max_size = 8M
; Max. Total size of files that can be uploaded.
max_file_uploads = 20
Note
For uploading files, set the following parameters according to your own needs.
Cache Configuration
Create the file /etc/php/8.1/mods-available/custom-opcache.ini with following content, after creating the file
enable the module by typing phpenmod custom-opcache.
; configuration for php ZendOpcache module
; priority=05
zend_extension=opcache.so
; Enable / Disable OPcache for Apache
opcache.enable = 1
; Enable / Disable OPcache for CLI
opcache.enable_cli = 1
; The size of the shared memory storage used by OPcache, in megabytes (recommend 1024M)
opcache.memory_consumption = 512M
; The amount of memory used to store interned strings, in megabytes.
opcache.interned_strings_buffer = 16
; The maximum number of keys (and therefore scripts) in the OPcache hash table.
; ~5500x30 (find . -type f -print | grep php | wc -l) (max. 1.000.000)
opcache.max_accelerated_files = 10007
; The maximum percentage of wasted memory that is allowed before a restart is scheduled.
opcache.max_wasted_percentage = 5
; If enabled, OPcache will check for updated scripts every opcache.revalidate_freq seconds.
opcache.validate_timestamps = 0
Note
Please note that only one cacher may be installed / activated, otherwise complications and thus negative effects may occur.