2014-02-19 2 views
2

아파치 웹 서버는 Apache 서버 및 PHP가 설치된 Linux 서버에서 실행됩니다. 그 서버에서 Windows 서버의 특정 디렉토리는 /mnt/some_directory/처럼 마운트됩니다. 내 자신의 사용자 계정을 사용하여 WinSCP 또는 SSH로이 디렉토리를 탐색 할 수 있습니다.아파치/PHP에 탑재 된 디렉토리에 대한 읽기/쓰기 액세스 허용

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

을 해당 파일의 내용을 참조하십시오

나는 또한 SSH에서 다음을 수행 할 수 있습니다.

웹 사이트에서 사용하는 데이터베이스에서 가져 오기 위해 파일을 읽고 해당 디렉토리에서 구문 분석해야합니다. 그러나 웹 사이트에서 fopen 또는 file_get_contents가 발생하면 권한이 거부되었습니다.

웹 서버에 대한 액세스가 제한되어 있고 (* nix 및 Apache 구성에 대한 제한된 지식이 있지만)이 문제를 해결해야하는 관리자도이 지식이 부족하므로이 작업을 해결해야합니다. 그 이유는 무엇입니까? 나는 여기서 묻고있다.

관리자가 수행 한 작업은 마운트 된 디렉토리의 그룹 및 소유권을 "apache"(httpd 프로세스가 실행중인 사용자)로 설정하는 것입니다. 그러나 그것은 도움이되지 않았습니다.

웹 루트 외부의 파일에 대한 액세스는 기본적으로 허용되지 않습니다. /mnt/some_directory/에 대해 httpd.conf에 DIRECTORY 지시문을 설정하는 것으로 충분합니까? 아니면 할 일이 있습니까?

+0

당신은/var 같은 디렉토리를 링크 할 수 있습니다/www/linkedtomntsomething? 작동하는지 정말로 모르겠다. (지금 테스트 할 수 없다.) –

+0

Selinux 권한 문제 일 수있다. –

+0

감사합니다. 'ps -ZC httpd'에 따르면 httpd 프로세스는 "unconfined_u"에 의해 실행되므로 Selinux 사용자 매핑은 "apache"를 "unconfined_u"로 매핑합니다. 아파치에 대해이 매핑을 변경하면 저장 되겠습니까? –

답변

0

링크 장착 된 www가 루트 디렉토리에 디렉토리와 링크를 "주"

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

이름보다 (당신이 경우 파일

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

을 읽어보세요 ... 또는 당신은 할 수 있습니다 웹 서버 구성을 편집 할 수있는 충분한 권한)

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

''에 지시어를 써봤지만 아무 것도 바뀌지 않았습니다. –

+0

이것을 시도하십시오 : 안에는 Options + FollowSymLinks 지시어가 들어있는 가 있어야합니다. – enterx

0

나는 cifs mo unt 사용자가 마운트 된 볼륨에 액세스 할 수 있지만 아파치는 액세스 할 수없는 linux/unix apache.

는이 다음을 참조하십시오 CIFS 경로를 마운트에만, htaccess로에서

스위치를 끊고 때, 아파치가 느리게 작동 할 수 떨어져 EnableSendfile을, 그것을 작동합니다 ....

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

안부 L.Tomas

3

우리 팀이 같은 문제가 있었다, 나의 팀 동료 마운트 옵션을 context을 추가하여이 문제를 해결 할 수 있었다.예를 들어

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" 

:

우리가 아파치에 액세스 할 수 있음을 리눅스로 창을 공유 폴더를 장착하기위한 다음과 같은 형식을 사용하는

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" 
관련 문제