Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP从LAMP服务器读取Windows Samba共享目录_Php_Linux_Windows_File Permissions_Samba - Fatal编程技术网

使用PHP从LAMP服务器读取Windows Samba共享目录

使用PHP从LAMP服务器读取Windows Samba共享目录,php,linux,windows,file-permissions,samba,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 挂载可以工作,我可以浏览操作系统

我将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和用户的身份运行了这个程序,但它在浏览器上无法运行。

因此,经过一些尝试和错误后,我发现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