Linux + Криптопро + php7.x

605 просмотров

Для работы с расширением требуется собрать библиотеку совместно с исходниками вашей версии PHP.

Для сборки расширения libphpcades требуется:

1. Установить пакеты libboost-dev и php-dev из репозитория пакетов.

2. Установить КриптоПро CSP версии 4.0 или выше, берем тут
распаковываете архив с помощью tar (как вариант tar zxvf linux-amd64.tgz) и даете возможность запускать скрипт install.shдо установим, еще два пакета cprocsp-rdr-gui-gtk и lsb-cprocsp-devel

3. Установить пакет cprocsp-pki-cades и cprocsp-devel из состава КриптоПро ЭЦП SDK.

4. Смотрим текщую версию php – php-v и качаем исходники этой версии с php.net

заходим в каталог распакованных исходников и ./configure потом make

В файле /opt/cprocsp/src/phpcades/Makefile.unix указать путь к исходным текстам нужной версии PHP в переменной PHPDIR. (например – PHPDIR=/opt/php-7.4.3)

5. Для сборки расширения в папке /opt/cprocsp/src/phpcades в зависимости от разрядности системы выполнить:
сначала пропатчть под php7, сам патч берем тут
распаковываем его в /opt/cprocsp/src/phpcades/ и там выполняем patch -p0 < ./php7_support.patch

Собираем libphpcades.so выполнив
eval `/opt/cprocsp/src/doxygen/CSP/../setenv.sh –64`; make -f Makefile.unix
или (зависит от разрядности)
eval `/opt/cprocsp/src/doxygen/CSP/../setenv.sh –32`; make -f Makefile.unix

6. Узнаем путь к расширениям в вашей системе:
php -i | grep extension_dir
и копируем в нее скомпилированный libphpcades.so

7. В файле php.ini добавить расширение:
extension=libphpcades.so

8. проверяем
[root@localhost phpcades]# php -m | grep php_CPCSP
php_CPCSP

или как вариант, создаем php файл и смотрим вывод

<?php
 ini_set("log_errors", 1);
 ini_set ('display_errors', 1);
 error_reporting (E_ALL);  
 try
 {   $sd = new CPSignedData();
     $content = "test content"; 
     $sd = new CPSignedData();
     $sd->set_Content($content); 
     printf("test init OK\n");
 }
catch (Exception $e)
 {
    printf($e->getMessage());
 } 
?>

В принципе в основном все, могут быть нюансы, но все решается
на всякий случай патч php7_support.patch.zip выложил тут
php7_support.patch

Поделиться: