2010-04-07 3 views
3

네트워크 드라이브를 홈 네트워크의 컴퓨터에 매핑했습니다. 이제 PHP를 통해 액세스하려고 -이 빠른 테스트했다 : 내가 잘못 무슨매핑 된 네트워크 드라이브

Warning: opendir(Z:\) [function.opendir]: failed to open dir: No error in C:\wamp\www\webs\tester-function.php on line 3 

을했을 :

echo opendir('Z:\\'); 

이 나를 제공을?

내 사용자가 UNC 경로에 입력하는 것을 원치 않으므로 UNC 경로를 얻는 방법이 있습니까? 그렇다면 액세스하려고 할 때 작동 할 수 있습니까? 이것은 Microsoft 언어에서 가능하지만 어떻게 PHP가 이것을 할 수 있는지 모르겠습니다 - 어쩌면 cmd.exe 명령을 사용합니까?

매핑 된 드라이브는 내가 볼 수 있고 액세스 할 수 있으므로 존재합니다. 또한이 드라이브에 액세스 할 수있는 경우이 문제에 대해 불만을 제기한다고 가정 할 때 사용 권한 문제로 보이지 않습니다 ... 맞습니까? 모든 도움

+0

* (관련) * http://bugs.php.net/40117 – Gordon

+0

이 스크립트는 웹 서버에 의해 생성 된 PHP 인스턴스에 의해 실행된다? 이 웹 서버가 서비스로 실행되고 있습니까? 이 서비스가'localsystem'으로 실행되고 있습니까, 아니면 다른 계정을 사용합니까? 드라이브 맵을 생성하는 계정은 무엇입니까 (귀하 자신 또는 서비스 계정 용)? – VolkerK

+0

예, 웹 서버에서 만든 PHP 인스턴스입니다. 예, 웹 서버가 서비스로 실행 중입니다. 네,'localsystem'입니다. 이 매핑 된 드라이브는'localsystem'이 아니라 내게 만들어졌습니다.그러나'localsystem'은 매핑 된 드라이브에 자동으로 설정된 사용 권한을 가지고 있습니다. – Abs

답변

5

User Contributed Notes to opendir()에 대한

감사가이 :이했던 opendir 함수를 사용하여 네트워크 드라이브에 액세스하려고했다

. 나는 네트워크 드라이브에 액세스하는 것이 거의 불가능하다는 많은 게시물을 읽었으며 마지막으로 대답을 찾았습니다. 동일한 기계 또는 다른 기계에서 PHP로 네트워크 드라이브에 액세스하려면 2 단계를 따라야합니다.

이 경우 사용자 권한이 실제로 PHP/웹 서버가 실행중인 사용자에 따라 귀하의 권리와 다를 수 있습니다.

+0

그건 재미 있어요! 아파치는 권한 설정에서 'SYSTEM'사용자로 실행됩니다. 매핑 된 드라이브에는 드라이브를 읽을 수있는 'SYSTEM'사용자가 있습니다. 이 방법으로, 나는이 두 단계를 완료했으며 여전히 작동하지 않습니다. 어쩌면 내가 오해 한 것일까? – Abs

+0

어떻게 드라이브 맵을 만들었습니까? 귀하의 계정에 대한 드라이브 맵을 작성한다고해서 웹 서버의 프로세스/계정이 동일한 매핑을 얻는 것은 아닙니다. – VolkerK

+0

@Abs는 말하기가 어렵습니다. 어쩌면 링크 된 코멘트에 명시된대로 특정 사용자 계정으로 서비스를 실행하여 그 방식으로 작동하는지 확인할 수 있습니다. –

2

시작 -> 실행 (또는 Windows 7을 사용하는 경우 검색 상자 사용)에서 Services.msc를 입력하고 Enter 키를 눌러 서비스 MMC를 엽니 다. Apache 서비스를 찾으십시오. WAMP를 한번도 사용 해본 적이 없지만 그 이름이 무엇인지 전혀 알지 못합니다. 다행히도 "Apache"라는 단어로 시작하기 때문에 찾기가 너무 어려워서는 안됩니다. 서비스를 마우스 오른쪽 단추로 클릭하고 속성을 선택하십시오. 로그온 탭으로 전환하십시오. "이 계정 :"옆에있는 라디오 버튼을 선택하고 Apache를 실행할 사용자 계정의 자격 증명을 입력하십시오. 네트워크/도메인 계정 인 경우 "DOMAIN \ user"구문을 사용하거나 찾아보기 버튼을 사용하여 계정을 검색하십시오. 확인을 선택하고 Apache 서비스를 다시 시작하십시오. 작업 관리자에서 "httpd.exe"프로세스를 찾고 프로세스가 실행중인 사용자 이름을 확인하여 변경 사항이 적용되었는지 확인하십시오.

참조 http://board.phpbuilder.com/board/showthread.php?t=10371870&page=2

+0

좋은 답변입니다! +1 –

+0

Apache가 실행중인 사용자를 변경하여 수행중인 작업의 보안 의미를 이해하십시오. 로컬 시스템 계정을 사용하면 파일 구조의 중요한 영역에 대한 액세스가 제한되고 네트워크에 대한 액세스가 제한됩니다. 이를 변경하면 보호 지역 및 사용자가 보유한 네트워크 액세스에 대한 액세스 권한을 부여 할 수 있습니다. 즉, 누군가 프로그램을 해킹하면 전체 컴퓨터와 네트워크에 액세스하여 파일을 배치 할 수 있습니다. 가능한 경우 Apache와 Windows에 내장 된 보안의 범위 내에서이를 수행하는 방법을 찾으십시오. – Robert

3

간단한 사용 : 경로로 "\\\\server\\dir\\subfolder". "서버"에 액세스 할 수 있는지 확인하십시오.

이 저에게 효과적입니다.
$arquivo = "\\\\server\\dir\\subfolder\\file.txt"; echo is_file($arquivo); //print 1.

+0

이것은 위대한 일을 해냈고, 이것에 도달하기 전에 다른 많은 방법을 시도했습니다. 최소한 내 경우에는이 권한을 변경할 필요가 없습니다. – user3101337