기호 링크는 Windows 시스템의 바로 가기 또는 UNIX/Linux 시스템의 소프트 링크와 유사합니다. 다른 파일 또는 디렉토리를 가리키는 특수 유형의 파일입니다. PHP에서 기호 링크를 사용하면 파일 및 디렉토리를 쉽게 관리 할 수 있습니다. 특히 파일이나 디렉토리가 이름이 바뀌거나 이동할 때 기호 링크는 경로의 유효성을 유지할 수 있습니다.
상징적 링크의 역할은 주로 다음 측면에서 반영됩니다.
파일 시스템의 경로를보다 유연하게 만듭니다
다른 위치의 파일이 같은 이름을 공유하도록 허용
파일 시스템의 바로 가기로 경로 관리를 단순화하십시오.
그러나 이러한 링크를 다룰 때 파일 경로를 직접 읽으면 특히 파일이 상징적 링크인지 알지 못할 때 문제가 발생할 수 있습니다.
IS_LINK ()는 파일이 상징적 링크인지 여부를 결정하는 데 사용되는 PHP 함수입니다. 파일 경로를 인수로 취하고 부울 값을 반환합니다.
지정된 경로가 상징적 링크 인 경우 true를 반환합니다.
지정된 경로가 상징적 링크가 아닌 경우 거짓을 반환합니다.
<span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">is_link</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$filename</span></span><span>)
</span></span>
$ filename : 확인할 파일 또는 디렉토리의 경로.
사실 : 경로가 상징적 링크 인 경우.
거짓 : 경로가 상징적 링크가 아니거나 파일이 존재하지 않는 경우.
실제 개발에서 파일 경로에 상징적 링크가 포함되어 있는지 여부를 종종 확인해야합니다. IS_LINK ()를 사용하면 경로가 상징적 링크인지 편리하게 결정하여 다른 처리 전략을 채택 할 수 있습니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$file_path</span></span><span> = </span><span><span class="hljs-string">'/path/to/file_or_directory'</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_link</span></span><span>(</span><span><span class="hljs-variable">$file_path</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$file_path</span></span></span><span> 상징적 링크입니다。\n";
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$file_path</span></span></span><span> 不상징적 링크입니다。\n";
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
위의 코드는 먼저 파일 경로 $ file_path를 정의한 다음 is_link () 함수를 사용하여 경로가 상징적 링크인지 확인합니다. 상징적 링크 인 경우 해당 프롬프트를 출력하고 그렇지 않으면 다른 프롬프트를 출력하십시오.
IS_LINK ()는 일반적으로 파일 시스템 경로 점검에 사용되지만 URL을 처리 할 때도 상징적 링크가 발생할 수도 있습니다. 특히 웹 응용 프로그램에서 URL은 상징적 링크 (예 : Apache 또는 Nginx로 구성 할 때)를 가리킬 수 있습니다. 따라서 올바른 파일 액세스 및 경로 해상도를 보장하기 위해 URL의 상징적 링크를 확인하는 것이 중요합니다.
일반적으로 URL에서 기호 링크를 처리하는 것은 파일 경로만큼 직접적인 것이 아닙니다. PHP에서 URL 자체는 일반적으로 파일 경로로 직접 처리되지 않습니다. 그러나 URL과 파일 시스템 간의 매핑을 처리 해야하는 경우 (예 : 웹 응용 프로그램의 가상 경로는 물리적 경로로 맵핑) URL을 먼저 파일 경로로 변환 한 다음 IS_LINK ()를 사용하여 확인할 수 있습니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 가정 URL 파일에 대한 물리적 경로</span></span><span>
</span><span><span class="hljs-variable">$url</span></span><span> = </span><span><span class="hljs-string">'/var/www/html/my_site/index.php'</span></span><span>;
</span><span><span class="hljs-variable">$file_path</span></span><span> = </span><span><span class="hljs-title function_ invoke__">realpath</span></span><span>(</span><span><span class="hljs-variable">$url</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$file_path</span></span><span> && </span><span><span class="hljs-title function_ invoke__">is_link</span></span><span>(</span><span><span class="hljs-variable">$file_path</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$file_path</span></span></span><span> 상징적 링크입니다。\n";
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$file_path</span></span></span><span> 不상징적 링크입니다,또는 파일이 존재하지 않습니다。\n";
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
이 예에서 먼저 url /var/www/html/my_site/index.php를 실제 파일 경로 ( RealPath () 함수 사용)로 변환 한 다음 is_link ()를 사용하여 파일이 상징적 링크인지 확인하십시오.
기호 링크를 사용할 때 다음과 같은 일반적인 문제가 발생할 수 있습니다.
DEAD LINK : 상징적 링크가 가리키는 파일 또는 디렉토리가 존재하지 않으면 DEAD 링크가됩니다. 이 경우 IS_LINK ()는 여전히 TRUE를 반환하지만 링크가 유효한지 알리기 위해 file_exists ()를 사용해야 할 수도 있습니다.
무한 루프 : 때로는 상징적 링크가 루프 링크를 생성하여 프로그램이 무한 재귀로 떨어질 수 있습니다. 시스템 성능 문제를 유발하지 않도록 기호 링크를 처리 할 때주의하십시오.
권한 문제 : PHP 스크립트에 기호 링크가 가리키는 파일을 읽을 수있는 권한이 충분하지 않은 경우 오류를 반환하거나 링크를 전혀 읽을 수 없습니다.
관련 태그:
URL