Allow Apache/PHP a read/write access to a mounted directory

大城市里の小女人 提交于 2019-12-30 05:21:06

问题


We have websites running on a linux server with apache httpd and php. On that server a certain directory from a windows server is mounted as let's say /mnt/some_directory/. I can browse this directory with both WinSCP or SSH, using my own user account.

I can also perform the following in SSH:

php -r "print_r(file_get_contents('/mnt/some_directory/file_name.txt'));"

and see contents of that file.

We need to read a file and parse from that directory in order to import it in the database that is used by the website. But when an fopen or a file_get_contents on the website we get a permission denied error.

I have limited access to the web server (and limited knowledge of *nix and apache configuration), but the administrator that is supposed to resolve this apparently is also lacking this knowledge and I need to have this task resolved,that's why I am asking here.

What the admin did was to set the group and ownership of the mounted directory to"apache", which is the user the httpd process is running as. But that didn't help.

As far as I know access to files outside of the webroot is disallowed by default. Would it be sufficient to set a DIRECTORY directive in httpd.conf for /mnt/some_directory/? Or is there anything else that has to be done?


回答1:


our team had the same issue, my team-mate was able to resolve this by adding context to mount options.

we are using the following format for mounting windows shared folder to linux that apache will be able to access:

mount -v -t cifs <//$hostname/$(windows shared dir)> <mount directory> -o username="<username>",password=<password>,domain=<domain name>,iocharset=utf8,file_mode=0777,dir_mode=0777,context="system_u:object_r:httpd_sys_content_t:s0"

For example:

mount -v -t cifs //192.168.1.19/sample_dir /mnt/mount_dir -o username="admin",password=adminpwd,domain=MIINTER,iocharset=utf8,file_mode=0777,dir_mode=0777,context="system_u:object_r:httpd_sys_content_t:s0"



回答2:


Link the mounted directory to your www root dir and name the link "share"

ln -s /mnt/some_directory /path/to/your/www/root/directory/share

than try reading the file

php -r "print_r(file_get_contents('/path/to/your/www/root/directory/share/file_name.txt'));"

...or you can allow (if you have enough privileges to edit the webserver's configuration)

<Directory /mnt/somedirectory >
    Allow from All
<Directory>



回答3:


i have seen the same problem with a cifs mount linux/unix apache that user can have access to the mounted volume, but not apache.

see also this: EnableSendfile off

but when turned off, apache may work slowly, in .htaccess, only for the cifs mount path, it should work ... .

http://httpd.apache.org/docs/current/en/mod/core.html

best regards L.Tomas



来源:https://stackoverflow.com/questions/21878647/allow-apache-php-a-read-write-access-to-a-mounted-directory

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!