使用LAMP Server中的PHP读取Windows Samba共享目录

时间:2012-11-29 13:55:00

标签: php linux windows file-permissions samba

我将Windows网络中的Samba共享安装到基于Linux的Web服务器上的目录中。我按如下方式安装了目录:

mount -t cifs -o username=admin,password='passsword',domain=mydomain.local,file_mode=0644,dir_mode=0777,uid=client_user,gid=client_user '//192.168.0.x/d$' /home/client_user/mnt

挂载工作,我可以浏览操作系统中的文件和目录。但是,我希望能够通过从浏览器运行的PHP脚本来访问它。但是,共享上的任何文件操作都会导致权限被拒绝错误。我已经尝试了一点,用apache替换了uid和gid参数值,但仍然没有运气。

非常感谢任何建议

修改

在进一步测试中,我使用以下代码创建了一个文件:

if(is_readable('/path/to/mnt')) {
  echo 'Readable';
}
else {
  echo 'Not';
}

从服务器上的命令行运行此操作会导致可读打印。我以root身份和服务器上的用户身份运行它,但它无法在浏览器中运行。

1 个答案:

答案 0 :(得分:0)

经过一些试验和错误后,我发现SELinux不允许httpd访问这些文件夹。

运行此命令允许httpd访问cifs:

setsebool -P httpd_use_cifs on

然而,进一步的调查显示我可以在挂载的文件夹上设置httpd上下文。所以我卸载了驱动器并修改了我的mount命令以包含:

context="system_u:object_r:httpd_sys_rw_content_t:s0",

完整的命令:

mount -t cifs -o context="system_u:object_r:httpd_sys_rw_content_t:s0",username=admin,password='passsword',domain=mydomain.local,file_mode=0644,dir_mode=0777,uid=client_user,gid=client_user '//192.168.0.x/d$' /home/client_user/mnt