문제

Windows XP 컴퓨터에 설치된 PHP (XAMPP) 내에서 로컬 네트워크 서버에 존재하는 DIR을 읽으려고합니다. IM 사용 is_dir() 내가 읽을 수있는 멍청한 지 여부를 확인합니다.

Windows Explorer에서 I를 입력합니다 \\\server\dir 그리고 그 dir가 보여지고 있습니다. 네트워크 드라이브를 매핑 할 때 A는 z:\dir 또한.

PHP에는 그 대본이 있습니다.

<?php if( is_dir($dir){ echo 'success' } ) ?>

을 위한 $dir 나는 시도했다 :

  • /server/dir
  • //server/dir
  • \server\dir
  • \\server\dir
  • \\\\server\\dir

그리고

  • z:\dir
  • z:\\dir
  • z:/dir
  • z://dir

그러나 나는 결코 성공하지 못합니까? 아이디어가 있습니까? 고마워

도움이 되었습니까?

해결책

이 토론의 마지막 답변에서 설명한대로 서버 레지스트리에서 일부 물건을 변경하여 해결했습니다.

http://bugs.php.net/bug.php?id=25805

어쨌든 Volkerk와 Gumbo에게 감사합니다! 나는 stackoverflow와 당신을 엄청나게 빨리 도와주는 위대한 사람들을 좋아합니다 !!

편집 (php.net에서 가져온) :

이 서비스는 자격 증명이없고 널 세션을 사용하여 연결해야하기 때문에 주식 및 파이프와 같은 네트워크 리소스에 대한 액세스가 제한되어 있습니다. 다음 레지스트리 키에는 nullsessionpipes 및 nullsessionshares 값이 포함되어 있습니다. Null 세션이 연결할 수있는 파이프 및 공유를 지정하는 데 사용됩니다. 모든 NULL 세션이 해당 기계에서 생성 된 모든 파이프 및 공유에 액세스 할 수 있도록 0으로 설정합니다.

레지스터에 제한을 제한 사항에 추가하십시오.

다른 팁

XAMPP가 Apache를 서비스로 설치하고 PHP 스크립트를이 Apache를 가로 질러 실행하게 할 것입니다. 그리고 Apache 서비스 (AS 실행 로컬 시스템) 사용자 계정의 방식으로 네트워크에 액세스 할 수 없습니다.

LocalSystem 계정의 맥락에서 실행되는 서비스는 SCM의 보안 컨텍스트를 상속합니다. 사용자 sid는 security_local_system_rid 값에서 생성됩니다. 계정은 로그온 사용자 계정과 관련이 없습니다..
이것은 몇 가지 의미가 있습니다.
...
   * 이 서비스는 컴퓨터의 자격 증명을 원격 서버에 제공합니다..
...

콘솔 응용 프로그램 (XAMPP 디렉토리의 APACHE_START.BAT)으로 APACHE를 시작하여 스크립트를 다시 실행하여이를 테스트 할 수 있습니다. UNC 경로에서 앞뒤로 슬래시를 사용할 수 있습니다. PHP는 문자열 리터럴을 신경 쓰지 않으므로 // 서버 /공유를 사용하는 것이 좋습니다.

<?php
$uncpath = '//server/dir';
$dh = opendir($uncpath);
echo "<pre>\n";
var_dump($dh, error_get_last());
echo  "\n</pre>";

시도해보십시오 file: URI 체계 :

file://server/dir
file:///Z:/dir

시작은 항상입니다 file://. 다음 경로 세그먼트는 서버입니다. 로컬 컴퓨터에있는 경우 비워 두십시오 (두 번째 예 참조). 또한보십시오 Windows에 uris를 파일.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top