在我内网的 HomeLab 上部署 NextCloud 测试用。在部署的过程中需要用到 PHP 的 smbclient 这个扩展,就是在 NextCloud 上挂载我群晖的 SMB 共享作为存储。已经部署了 LNMP 环境,常用的一些 PHP 扩展 LNMP 已经提供,这个 smbclient 属于不常用的,所以只能自己手动添加编译这个扩展到 PHP 中。记录下过程以备后续用到。
0x01 查看扩展
在添加扩展前先检查确认下是否已经安装,使用命令可以查看 PHP 已经安装了哪些扩展;命令的路径为 PHP 的安装路径;
/usr/local/php/bin/php -m #查看已安装的扩展;

0x02 解压源码
添加编译扩展需要在 PHP 的源码中进行,LNMP 在编译的过程会自动解压 PHP 源码。安装完毕会自动删除已解压的文件夹,进入到 LNMP 的 src 目录解压 PHP 源码到当前目录;
cd /root/lnmp1.9/src #进入到lnmp src目录;
tar -jxvf php-7.4.30.tar.bz2 #解压PHP到当前目录;
cd php-7.4.30 # 进入到PHP源码目录;
cd ext #进入到PHP源码扩展目录;
wget http://pecl.php.net/get/smbclient-1.0.6.tgz #下载smbclient到当前ext目录;


0x03 添加扩展
将 smbclient 扩展下载 php 的扩展目录后进行解压,解压完毕后开始安装扩展;
tar -zxvf smbclient-1.0.6.tgz #解压smbclient扩展;
cd smbclient-1.0.6 #进入到扩展目录;
apt install libsmbclient-dev #安装smbclient依赖;
/usr/local/php/bin/phpize #开始添加编译扩展;
./configure --with-php-config=/usr/local/php/bin/php-config #开始添加编译扩展;
make && make install #开始添加编译扩展;




0x04 编译完成
编译完成后将会出现一下提示,如果没有则需要留意错误提示;

0x05 添加配置
扩展编译完成后并不是就可以使用了,还需要将扩展添加到 PHP 的配置文件中并启用;
vim /usr/local/php/etc/php.ini #编辑PHP配置文件;
查找 extension = 将 extension = "smbclient.so" 添加到下面并去掉前面的分号;


0x06 添加完成
修改完 PHP 的配置最后要做的一步就是重启 PHP 是添加的扩展生效启用。然后再使用命令查看已安装的拓展 smbclient 已经添加好了;
lnmp php-fpm restart #lnmp环境php的重启命令;

