PHP 使用 Tongsuo + 国密说明文档
编译
我们从 php-src fork 了官方仓库到 Tongsuo-Project 中,然后对其适配了 Tongsuo 和支持国密,相关 patch 移步:https://github.com/Tongsuo-Project/php-src/pull/2 ,目前仅在 8.1 版本上支持 Tongsuo + 国密,之后的版本以后再支持。如果是自己从php官方下载的代码,则只需要打上支持国密的 path 即可。
- php 二进制编译和安装,参考官方文档即可
- openssl.so 扩展编译:(注意:configure 脚本指定的路径更改成自己系统安装 tongsuo 的路径)
cd ext/openssl/
OPENSSL_CFLAGS='-I/opt/tongsuo/include' OPENSSL_LIBS='-L/opt/tongsuo/lib64 -lssl -lcrypto' ./configure --with-openssl --with-php-config=/opt/php-81/bin/php-config
make -j
sudo make install
配置
php.ini
,路径:/path/to/php/lib/php.ini
(改成自己安装的路径)php.iniextension = openssl.so
error_log = var/log/php_error.logwww.conf
,路径:/path/to/php/etc/php-fpm.d/www.conf
(改成自己安装的路径),把www.conf.default
的后缀.default
去掉,把listen = 127.0.0.1:9000
改成未被占用的端口,使用默认的 9000 端口也可以。php-fpm.conf
,路径:/path/to/php/etc/php-fpm.conf
(改成自己安装的路径),把php-fpm.conf.default
的后缀.default
去掉即可。- 启动
php-fpm
:sudo /path/to/php/sbin/php-fpm
,启动没有报错即可。 - 配置
nginx/tengine
代理:
location ~ [^/]\.php(/|$) {
# php 文件要放到如下 root 指定的目录
root /var/www/php;
fastcgi_param HTTP_PROXY "";
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}