현재 위치: > 최신 기사 목록> 상징적 인 링크 데드 루프가 발생합니까? 솔루션은 readlink 함수를 사용하여 수행됩니다

상징적 인 링크 데드 루프가 발생합니까? 솔루션은 readlink 함수를 사용하여 수행됩니다

gitbox 2025-09-04
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 다음 단락은 기사의 내용과 관련이 없습니다.</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"환영 PHP 스터디 스테이션!\n"</span></span><span>;
</span><span><span class="hljs-variable">$timestamp</span></span><span> = </span><span><span class="hljs-title function_ invoke__">time</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"현재 타임 스탬프:"</span></span><span> . </span><span><span class="hljs-variable">$timestamp</span></span><span> . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-variable">$randomNumber</span></span><span> = </span><span><span class="hljs-title function_ invoke__">rand</span></span><span>(</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">100</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"임의 번호 예제:"</span></span><span> . </span><span><span class="hljs-variable">$randomNumber</span></span><span> . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>

<hr>

</span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 텍스트를 시작하십시오</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<h1>기호 링크 데드 루프가 발생합니다?사용 readlink 기능 솔루션이 여기에 있습니다</h1>"</span></span><span>;

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<p>在使사용 PHP 파일 시스템을 작동 할 때,기호 링크(symlink)종종 문제가 발생합니다,尤其是当기호 링크出现死循环时,프로그램은 무한 재귀로 떨어질 수 있습니다,메모리 소진 또는 스크립트 타임 아웃을 유발합니다。운 좋게,PHP 제공 <code>readlink()
"; 에코 "

프로그램이 링크를 직접 따르는 경우 Link1과 Link2 사이를 계속 루프합니다.

"
; 에코 "

READLINK ()를 사용하여 상징적 링크를 감지하십시오

"
; 에코 "

PHP의 readlink () 함수는 직접 따르는없이 상징적 링크에 의해 지적 된 대상 경로를 반환합니다. 이런 식으로, 우리는 작업 전에 경로에 죽은 루프가 있는지 여부를 결정할 수 있습니다.

"
; 에코 "
\ $ path = &#39;/path/to/link1&#39;;
if (is_link (\ $ path)) {
    \ $ target = readLink (\ $ path);
    echo &#39;symlink는 다음을 가리킨다. \ $ 대상;
} 또 다른 {
    &#39;상징적 인 링크가 아님&#39;;
}
"
;
에코 "

악순환을 예방하는 기술

"
; 에코 "

파일 시스템을 통과 할 때 readlink () 와 배열을 결합하여 액세스 한 경로를 기록 할 수 있습니다.

"
; 에코 "
\ $ 방문 = [];
함수 resolvelink (\ $ path, & \ $ 방문) {
    if (in_array (realPath (\ $ path), \ $ visited)) {
        새로운 예외를 던지십시오 ( &#39;Symbolic Link Dead 루프 감지&#39;);
    }
    \ $ visited [] = realPath (\ $ path);

    if (is_link (\ $ path)) {
        \ $ target = readLink (\ $ path);
        return resolvelink (\ $ target, \ $ 방문);
    } 또 다른 {
        반환 \ $ 경로;
    }
}

노력하다 {
    \ $ finalPath = resolvelink ( &#39;/path/to/link1&#39;, \ $ 방문);
    에코 &#39;최종 경로 :&#39;. \ $ FinalPath;
} catch (예외 \ $ e) {
    에코 &#39;오류 :&#39;. \ $ e-> getMessage ();
}
"
;
에코 "

요약

"
; 에코 "

기호 링크는 파일 시스템에서 매우 편리하지만 죽은 루프 문제를 일으킬 수 있습니다. PHP의 readlink () 함수를 사용하면 액세스 경로를 기록하여 Symbolic Link Targets를 안전하게 얻고 데드 루프를 피할 수 있습니다.이 기술을 마스터 한 후에는 파일 시스템 작업이 더 안전하고 안정적입니다.

"
; ?>