Aktualizacja PHP do wersji 7.4
Support dla PHP
https://php.net/supported-versions.php
1. Aktualizacja do PHP 7.2
W tym podpunkcie zajmiemy się aktualizacją PHP do wersji 7.4 a także zmianą IONCubeLoadera. Wersję PHP 7.4 można instalować dla Ready_™ 6.80.1 i nowszych.
Przed instalacją nowych pakietów musimy posprzątać nie potrzebne elementy w tym PHP oraz ZendLoadrera. Jeśli korzystaliśmy z PHP 5.6 lub PHP 7.2 wykonujemy poniższe polecenie dpa PHP 5.6:
apt-get purge php5 php5-common php5-dev php5-imap php5-ldap php5-odbc php5-readline php5-sybase php5-cli php5-curl php5-gd php5-json php5-memcached php5-pgsql php5-sqlite php5-xsl
Jeśli świeżo aktualizowaliśmy do Debian 9 Stretch możemy również usunąć pakiety PHP 7.0 poniższym poleceniem.
sudo apt-get remove php7.0*
Usuńmy również ręczenie pliki ZendLoadera nie będą nam już potrzebne. Pliki powinny znajdować się w lokalizacji:
/usr/lib/php5/ZendGuardLoader.so /usr/lib/php5/opcache.so
Dla PHP 7.2:
apt-get purge php7.2*
Jeśli świeżo aktualizowaliśmy do Debian 9 Stretch możemy również usunąć pakiety PHP 7.0 poniższym poleceniem.
sudo apt-get remove php7.0*
Przystępujemy do instalacja PHP 7.4. Jeśli nie mamy jeszcze repozytoriów dla PHP 7.4 dodajemy je w przeciwnym przypadku możemy pominąć ten punkt
Debian 9 Stretch:
sudo apt install ca-certificates apt-transport-https wget -q https://packages.sury.org/php/apt.gpg -O- | sudo apt-key add - echo "deb https://packages.sury.org/php/ stretch main" | sudo tee /etc/apt/sources.list.d/php.list
Debian 10 Buster
sudo apt install ca-certificates apt-transport-https wget -q https://packages.sury.org/php/apt.gpg -O- | sudo apt-key add - echo "deb https://packages.sury.org/php/ buster main" | sudo tee /etc/apt/sources.list.d/php.list
Debian 11 Buster
sudo apt install ca-certificates apt-transport-https wget -q https://packages.sury.org/php/apt.gpg -O- | sudo apt-key add - echo "deb https://packages.sury.org/php/ bullseye main" | sudo tee /etc/apt/sources.list.d/php.list
apt-get update
Przystępujemy do instalacji pakietów PHP 7.4:
apt install php7.4-fpm php7.4-cli php7.4-common php7.4-curl php7.4-mbstring php7.4-mysql php7.4-xml php7.4-gd php7.4-pgsql php7.4-bcmath php7.4-sqlite3 php7.4-imap php7.4-xsl php7.4-ldap php7.4-odbc php7.4-json php7.4-sybase php7.4-readline php7.4-soap php7.4-zip
Dla FPM instalujemy REDIS zamiast memcached
apt-get install redis-server apt-get install php7.4-redis
Konfiguracja dla Redis, którą wprowadzamy w pliku /etc/redis/redis.cont
save 1200 1 save 600 10 save 120 10000
Włączamy obsługę modułów w Apache
sudo a2enmod actions alias proxy_fcgi
Dodajemy IonCubeLoadera, plik znajduje się w paczce konfiguracyjnej tutaj. Po umieszczeniu go na serwerze np
/usr/lib/php/
Dodajemy w pierwszej linii pliku php.ini w lokalizacjach
/etc/php/7.4/fpm/php.ini /etc/php/7.4/cli/php.ini
następujący wpis:
zend_extension=/usr/lib/php/ioncube_loader_lin_7.4.so
W plikach php.ini dodajemy również
session.save_handler = redis session.save_path = "tcp://127.0.0.1:6379"
oraz modyfikujemy wartości dla:
memory_limit = 512M upload_max_filesize = 32M post_max_size = 64M expose_php = Off session.name = READYSESSID max_input_vars = 2500
Kolejnym krokiem jest modyfikacja pliku www.conf
vim /etc/php/7.4/fpm/pool.d/www.conf
modyfikujemy wpis
security.limit_extensions = .php engine pm.max_children = 8
Ostatnim elementem jest zmiana handlera w Apache w pliku default.conf oraz default-ssl.conf, obecny wpis:
Dla PHP 5.6
<FilesMatch "(.+[.]inc$|.+[.]php$|engine)"> SetHandler application/x-httpd-php </FilesMatch>
Dla PHP 7.2
<FilesMatch "(.+[.]inc$|.+[.]php$|engine$)"> SetHandler "proxy:unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/" </FilesMatch>
modyfikujemy następująco
<FilesMatch "(.+[.]inc$|.+[.]php$|engine$)"> SetHandler "proxy:unix:/var/run/php/php7.4-fpm.sock|fcgi://localhost/" </FilesMatch>
W plikach konfiguracyjnych default.conf oraz default-ssl.conf Apache dodajemy również, na potrzeby autoryzacji WebDAV oraz CalDAV:
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
Z poziomu konsoli wykonujemy polecenie:
a2enmod headers
W plikach konfiguracyjnych conf-enabled/security.conf w Apache wprowadzamy następujące zmiany:
ServerSignature Off Header set X-Content-Type-Options: "nosniff" Header set X-Frame-Options: "sameorigin" Header always set Referrer-Policy "same-origin"
Uruchomienie moduł tłumaczącego dla Ready_™. Dodajemy moduł do php 7.4 - bsedt.so w lokalizacji
/usr/lib/php/20190902
Następnie tworzymy pliki bsedt.ini w folderach php:
/etc/php/7.4/mods-available/bsedt.ini
Zawartość pliki bsedt.ini
extension=bsedt.so
Tworzymy symlinki do pliku bsedt.ini
ln -s /etc/php/7.4/mods-available/bsedt.ini /etc/php/7.4/cli/conf.d/bsedt.ini ln -s /etc/php/7.4/mods-available/bsedt.ini /etc/php/7.4/fpm/conf.d/bsedt.ini
W pliku php.ini dla /etc/php/7.4/cli/ oraz /etc/php/7.4/fpm/ dodajemy wpis:
[bsedt] bsedt.lang_path="/home/edokumenty/public_html/apps/edokumenty/share/lang" bsedt.lang=en_UK
Wyłączamy moduł opcache poprzez zakomentowanie w /etc/php/7.4/mods-available/opcache.ini
Po zakończeniu konfiguracji restartujemy usługi Apache oraz FPM
service php7.4-fpm restart /etc/init.d/apache2 restart
Gotowe pliki konfiguracyjne można pobrać z poniższej lokalizacji. Po wgraniu plików wystarczy tylko restart usług Apache oraz PHP-FPM
Po zmianie PHP na 7.4 konieczna jest aktualizacja kodu system Ready_™ do kompilacji dla php 7.4. Aktualizacja kodu na nowszą wersję może wymagać wykonania patchy. Aktualizację wykonujemy w taki sam sposób jak dla systemu eDokumenty. Pomocny może być w tym przypadku ten link.