You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SMB共享文件夹卸载后PHP仍可访问的问题排查

问题拆解与解决办法

兄弟,你遇到的这个情况其实挺常见的——核心原因是有进程(就是跑你PHP脚本的那个服务,比如php-fpm或者Apache)还攥着/mnt/smb的访问权限,导致你的卸载操作只是“表面生效”:shell里看不到内容,但进程还能访问到原来的共享文件系统。

为啥会出现这种情况?

  • 要么是运行PHP的服务进程(比如某个php-fpm worker)当前的工作目录就在/mnt/smb或者它的子目录里
  • 要么是之前的PHP脚本打开了/mnt/smb里的文件,没及时关闭文件句柄,系统就会保留对这个挂载点的引用

先验证问题根源

你可以用lsof命令查一查哪些进程还在占用这个挂载点:

lsof +D /mnt/smb

执行完应该能看到php-fpm或者Apache相关的进程条目,这就实锤了。

解决步骤

  1. 先停掉相关的PHP服务,把所有占用的引用都释放掉:
    如果用的是php-fpm:
    systemctl stop php-fpm
    # 老系统可能要用 service php-fpm stop
    
    如果是Apache搭的PHP环境:
    systemctl stop apache2
    
  2. 重新执行卸载命令,这次就能彻底卸载了:
    umount /mnt/smb
    
    如果还提示“device is busy”,可以用强制卸载(已经停了服务的话没问题):
    umount -f /mnt/smb
    
  3. 重启服务,再跑你的PHP脚本试下,应该就列不出内容了:
    systemctl start php-fpm
    # 或者 systemctl start apache2
    

小提醒

以后卸载挂载前,最好先用lsof扫一眼有没有进程在占用目标目录,能避免这种“假卸载”的麻烦。

内容的提问来源于stack exchange,提问作者Reza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:13:09