Windows 아래의 PHP 액세스 네트워크 경로
-
18-09-2019 - |
문제
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를 파일.