在我內網的 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的重啟命令;