Nextcloud挂载SMB/CIFS外部存储

Linux, PHP, 折腾 2019/05/30

有位朋友留言:

请教一下关于smbclient问题:我这边smbclient和php-client都在shell下手动装了,但是nextcloud挂载外部存储那里还是不行。这是什么原因呢?(只使用了apt-get install smbclient 和apt-get install php-smbclient)

最开始捣鼓nextcloud的时候折腾过挂载外部存储,很久没操作过了,顺便记录一下。

这里仅以挂载SMB为例,nextcloud 16.0.1

开始

设置 – 左侧管理 – 外部存储

提示:“smbclient” 未安装。无法挂载 "SMB / CIFS", "SMB / CIFS 使用 OC 登录信息"。请联系管理员安装。

那就安装smbclient呗,我是CentOS 7

yum install libsmbclient libsmbclient-devel -y

yum安装完后,仅仅只是系统底层支持smb client了,而nextcloud是基于php的,还需要通过PECL命令来安装php对应的smb扩展

pecl install smbclient

这里可能会报错

WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update

运行

pecl channel-update pecl.php.net

对pecl channel进行升级

PHP Warning: popen() has been disabled for security reasons

popen函数被禁用了,打开宝塔的php管理面板,删掉被禁用的popen函数即可再次执行pecl安装smbclient

pecl安装smbclient扩展完成后会提示

检查php的配置文件,看是否已添加引用smbclient的库文件,如未添加,需手动添加并重启php

回到nextcloud的挂载外部存储管理页面,之前的提示已消除

挂载

添加一个 SMB/CIFS 协议的共享目录

 

添加后,页面上方会出现如下图配置区域,由于配置项毕竟多,我以编号命令,逐一解释

注:当配置OK时,最前面的图标为绿色对勾,否则显示为红、橙色图标

  • 1.在Nextcloud中看到的挂载名称(任意填
  • 2.认证选项(一般均为用户名和密码
  • 3.SMB服务器地址(如果smb服务端口不是默认的139或445,可以定义为IP:端口的形式
  • 4.SMB服务器中配置的共享文件夹名称(如果该文件夹不存在则会报错
  • 5.远程子文件夹(默认为空
  • 6.域名(默认为空
  • 7.用户名(smb用户名
  • 8.密码(smb密码
  • 9.指定挂载的共享文件夹的权限(默认为空,表示所有用户都可以读写该文件夹
  • 10.检查配置\保存按钮(用于测试是否配置成功

完成

配置完成后,返回Nextcloud首页,点击左侧外部存储,就能看到已挂载的远程smb文件夹

完~

本文标签:


2条评论

  • mdos 评论于

    我用其他方法解决了XD
    原因是apt-get之后
    smbclient.so并没有被正确的放到php库文件那个目录下。
    手动搜索移动过去了

    • Bug侠 评论于

      @mdos 不错不错~我是一遍就OK了,没遇到什么大问题。

    评论(*号为必填项)