2014-03-12 3 views
-1

내 웹 서버의 웹 루트 디렉토리 외부에 db conf 연결 파일을 숨기려고합니다. 필자는 웹 관리자와 PHP 인터프리터 만 읽을 수 있도록 허용하기 위해 가능한 바깥쪽에 넣고 사용 권한을 최대한 수정하고 싶습니다.PHP에만 웹 루트 외부에서 config 디렉토리를 읽는 권한을주는 방법은 무엇입니까?

파일이 권한이 있습니다

-rw ------- 1의 ServerAdmin의 ServerAdmin 150 3월 12일 1시 12분 DB-conf.php

을하지만 때 웹 루트 내부의 PHP 스크립트 require_once '/path/outside/webroot/to/db-conf.php'를 사용하여 호출합니다. 나는 php permission denied error를 얻는다.

는 ** 경고 : require_once를 (/path/outside/webroot/to/db-conf.php) : 스트림을 열지 못했습니다 : 라인 /var/www/php-script.php에서 거부 권한을 X

치명적 오류 : require_once() : /var/www/php-script.php 온라인에 require ''(include_path = '.:') 열기 실패 ** **

어떻게 해결할 수 있습니까?

+0

이 파일을 보호 할 다른 사용자는 무엇입니까? –

+0

질문 제목은 "PHP ** 및 ** webadmin"이라는 질문 본문과 모순됩니다. 둘 다 "webadmin ** only **"라는 코드와 모순됩니다. 마침내 네 마음을 알 수 있니? –

+0

해결되었지만 어쨌든 감사합니다! – tonix

답변

0

웹 서버 (예 : apache)를 통해 PHP를 실행하는 경우 PHP는 Apache 사용자로 실행되며 PHP는 읽을 수있는 모든 항목을 읽을 수 있으므로 아파치는이 파일에 대한 읽기 권한을 부여해야합니다. 그것의 외부 웹 사이트 디렉토리라면, 사람들은 아파치를 통해 접근 할 수 없지만, PHP는 그것을 찾을 수있을 것입니다.

+0

그래서 PHP 나 Apache에 권한을 주어야합니까? 내가 어떻게 해? chmod를 사용 하시겠습니까? – tonix

+0

예, 아파치 사용자에게 아파치가 실행중인 사용자를 확인합니다. httpd.conf (가능한 envvars)에 있고 'chown -R user : group/path/to/directory'에 있습니다. –

+0

이게 이거니까? # # httpd가 다른 사용자 또는 그룹으로 실행되기를 원하면 처음에 # httpd를 루트로 실행해야 전환됩니다. # # User/Group : httpd를 실행할 사용자/그룹의 이름 (또는 # 번호). # 일반적으로 대부분의 시스템 서비스와 마찬가지로 # httpd 실행 전용 사용자 및 그룹을 만드는 것이 좋습니다. # 사용자 데몬 그룹 데몬 ------------ 내가 사용자 '데몬'아파치를 실행하는 것을 얻을 쉘에서 '최고'를 입력 한 경우에도 원인이 데몬입니다 추측 'httpd'프로세스. – tonix

관련 문제