2012-02-10 2 views
0

PHP로 설치 스크립트를 작성하고 있으며 응용 프로그램의 일부가 공용 폴더의 한 수준 위에있는 폴더에 설치되어있을 수 있습니다. 일반적으로 공용 폴더는 "public_html"이라고하지만 항상 그럴 수는 없습니다. PHP를 사용하여 루트 공용 폴더의 이름이나 경로를 쉽게 찾을 수 있습니까?PHP를 사용하여 공용 폴더를 찾는 방법은 무엇입니까?

+2

어떻게 당신이 스크립트는 항상 해당 폴더에 액세스 할 수 있습니다 알 수 있습니까? 어쨌든'../'만 사용하십시오. – Brad

+0

권한에 대해서는 참이지만, 별도로 처리하겠습니다. ../ 설치 스크립트가 종종 public_html/subdomain /과 같은 사이트 루트가있는 하위 도메인에서 실행될 때 작동하지 않을 수 있습니다. ../를 사용하면 public_html까지 데려다 줄 테지만 한 단계 위로 올라 가야합니다. – igorilla

답변

3

시도 $_SERVER['DOCUMENT_ROOT']. (documentation)

위의 디렉토리를 가져 오려면 dirname을 사용할 수 있습니다.

Brad에는 요점이 있습니다. 스크립트가 해당 디렉토리에 액세스하지 못할 수도 있습니다.

+0

나는 그가 doc 루트 위에 폴더를 원한다고 생각한다. – Brad

+0

웹 루트 위의 폴더에 쓸 수 있는지 확인하려면 ... $ levelUp = dirname ($ _ SERVER [ 'DOCUMENT_ROOT']); if (is_writable ($ levelUp)) {...}' – rdlowrey

+0

사이트가 하위 도메인에있을 때 $ _SERVER [ 'DOCUMENT_ROOT']는/home1/user/public_html/subdomain과 같은 것을 제공합니다. public_html은 다른 서버에서 다른 이름으로 부를 수 있습니다. – igorilla

0
  1. $_SERVER['DOCUMENT_ROOT']public_html의 전체 경로를 제공 할 것입니다 그리고 당신은 슬래시로 폭발 할 수 있습니다 "/"와 폭발 배열의 마지막 인덱스를 얻을.
  2. 실제 파일 이름을 모르는 경우 "../"인수를 사용하여 realpath을 사용할 수도 있습니다. 그러면 전체 부모 경로 public_html이 반환됩니다.

희망이 두 가지 중 하나가 당신을 위해 작동합니다 :) 그것도 존재하는 경우

+0

고맙지 만 설치 스크립트의 실행 위치를 알 수 없습니다. public_html/install.php 일 수도 있지만 public_html/subfolder/install.php 일 수도 있습니다. 그 두 가지 경우에 대해 $ _SERVER [ 'DOCUMENT_ROOT']는 다른 결과를 줄 것입니다. 그리고이 디렉토리는 "www"와 같이 다른 이름으로 불릴 수 있기 때문에 어느 경로에서나 "public_html"을 찾을 수 없습니다. – igorilla

관련 문제