这里小编只说Truenas scale版本, 这里的nextcloud都是挂在docker里的, 一般默认php是没有安装smbclient的, 需要事先在docker里面安一下:
apt-get install smbclient libsmbclient-dev
接下来用docker里自带的php pecl来自动安装smbclient.so插件
pecl install smbclient
如果你因为某种原因, 没有办法运行pecl命令, 就从pecl官网down包来手动编译
手动编译php的smbclient
wget https://pecl.php.net/get/smbclient-1.1.1.tgz tar zxf smbclient-1.1.1.tgz cd smbclient-1.1.1 && phpize && ./configure --with-php-config=/usr/local/php/bin/php-config && make && make install
安装完毕之后会出现下方提示, 大体意思是要你在php.ini里面添加smbclient.so, 不用理会, 因为到这一步, 命令行安装的事已经ok了。
Build process completed successfully Installing '/usr/local/lib/php/extensions/no-debug-non-zts-20210902/smbclient.so' install ok: channel://pecl.php.net/smbclient-1.0.6 configuration option "php_ini" is not set to php.ini location You should add "extension=smbclient.so" to php.ini
接下来就是在nextcloud管理员账户里找到右上角->应用, 添加一个外部存储的精选应用, 添加完了再迂回到管理员的设置->外部存储菜单中, 会发现系统不再提示smbclient找不到的报错了, 看到这个界面
这里解释一下, 不要慌,下方文字告诉你,图里这些东西是啥意思
目录名称: 在Nextcloud中看到的挂载名称(任意填)
注意第三列的认证选项, 一般均为用户名和密码, 平时你怎么登录SMB目录的, 当然是用户名和密码了。
SMB服务器地址,如果smb服务端口不是默认的139或445,可以定义为IP:端口的形式。你不知道SMB服务器是啥地址? 那你平时是怎么连smb共享盘的? 不用IP的吗? 那就写域名也行。
SMB服务器中配置的共享文件夹名称, 比如你共享盘目录叫张三, 那就写张三, 找不到的话肯定报错。你平时怎么连smb共享盘的? 共享盘目录就啥名知道吗? 知道就填进这一栏里去。
远程子文件夹,我也不知道填啥,没填过
域名,我也不知道填啥,不填
smb用户名, 你怎么登录smb共享盘的就怎么填当时的用户名
smb密码, 同上
最右边那个栏位, 让你选, 把这个smb目录桥接到哪个nextcloud用户手里。如果不写,则所有人都可以看。那可就很危险喽?
接下来填好了点右侧对号,如果测试通过,则表示没有问题。