Symlink () 함수의 기본 구문은 다음과 같습니다.
<span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">symlink</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$target</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$link</span></span><span>)
</span></span>
$ target : 대상 파일 또는 디렉토리의 경로.
$ 링크 : 기호 링크의 경로.
함수가 성공하면 true를 반환하고 그렇지 않으면 거짓을 반환하고 오류 메시지를 생성합니다.
Symlink () 에 대해 이야기 할 때 먼저 두 경로의 기본 정의를 이해해야합니다.
절대 경로 : 파일 시스템의 루트에서 시작하는 전체 경로. 예 : /var/www/html/index.php .
상대 경로 : 현재 작업 디렉토리와 관련된 경로. 예를 들어 ./index.php 또는 ../images/logo.png .
절대 경로를 대상으로 사용하는 경우 SymLink ()는 파일 또는 디렉토리의 전체 경로를 직접 참조하며 현재 작업 디렉토리 (현재 스크립트가 위치)의 영향을받지 않습니다. 생성 된 상징적 링크는 항상이 절대 경로를 가리킬 것이며, 상징적 링크 방문자가 다른 디렉토리에 있더라도 대상을 올바르게 찾을 수 있습니다.
예 :
<span><span><span class="hljs-comment">// 대상 파일은 절대 경로입니다</span></span><span>
</span><span><span class="hljs-variable">$target</span></span><span> = </span><span><span class="hljs-string">'/var/www/html/index.php'</span></span><span>;
</span><span><span class="hljs-variable">$link</span></span><span> = </span><span><span class="hljs-string">'/var/www/html/link_to_index.php'</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">symlink</span></span><span>(</span><span><span class="hljs-variable">$target</span></span><span>, </span><span><span class="hljs-variable">$link</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-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"기호 링크 생성이 실패했습니다!"</span></span><span>;
}
</span></span>
이 예에서는 현재 PHP 스크립트의 작업 디렉토리가 위치에 관계없이 SymLink $ 링크는 항상 /var/www/html/index.php 를 가리 킵니다.
상대 경로의 처리는 약간 더 복잡합니다. SymLink () 함수는 상대 경로를 현재 작업 디렉토리에 대한 경로로 변환합니다. 따라서 기호 링크의 정확성은 링크가 만들어 질 때 작업 디렉토리와 기호 링크에 액세스 할 때 작업 디렉토리에 따라 다릅니다. 작업 디렉토리가 다르면 상징적 링크가 대상을 올바르게 가리킬 수 있습니다.
예 :
<span><span><span class="hljs-comment">// 대상 파일은 상대 경로입니다</span></span><span>
</span><span><span class="hljs-variable">$target</span></span><span> = </span><span><span class="hljs-string">'images/logo.png'</span></span><span>;
</span><span><span class="hljs-variable">$link</span></span><span> = </span><span><span class="hljs-string">'link_to_logo.png'</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">symlink</span></span><span>(</span><span><span class="hljs-variable">$target</span></span><span>, </span><span><span class="hljs-variable">$link</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-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"기호 링크 생성이 실패했습니다!"</span></span><span>;
}
</span></span>
이 예에서 현재 스크립트가 /var/www/html/ directory에 있다고 가정하면 Symbolic Link_to_logo.png 는 /var/www/html/images/logo.png 를 가리 킵니다. 기호 링크가 다른 디렉토리에 액세스 되고이 디렉토리에 동일한 상대 경로 구조가 없으면 상징적 링크가 유효하지 않습니다.
절대 경로 사용 : 다른 디렉토리간에 리소스를 공유 해야하는 상황에 적합한 상징적 링크는 대상 파일 또는 디렉토리를 올바르게 가리킬 수 있습니다. 예를 들어, 중요한 파일 또는 디렉토리를 글로벌 액세스 위치에 연결하려는 경우.
상대 경로 사용 : 상대 구조를 유지해야 할 때 자원 링크에 적합합니다. 예를 들어, 프로젝트 디렉토리에서 리소스 파일을 동일한 디렉토리 또는 하위 디렉토리에 연결하면 상대 경로를 사용하면 프로젝트 구조의 편의성을 더 잘 유지할 수 있습니다.
상대 경로에 대한 작업 디렉토리 종속성 : 상대 경로를 사용할 때는 상징적 링크를 만들 때 현재 작업 디렉토리에주의를 기울여야합니다. 현재 작업 디렉토리가 변경되면 상대 경로를 가리키는 오류가 발생할 수 있습니다.
파일 권한 : 상대적 또는 절대 경로를 사용하든 대상 파일에 대한 액세스 권한 및 상징적 링크가 올바르게 작동되도록 올바르게 설정해야합니다.
기호 링크의 재귀 문제 : 기호 링크가 그 자체로 가리키거나 원형 링크를 형성하면 Symlink ()가 오류로 실패합니다.
Symlink () 함수는 상대 경로와 절대 경로를 다루는 데 명백한 차이가 있습니다. 절대 경로는 현재 작업 디렉토리의 위치에 상관없이 기호 링크가 대상 파일을 올바르게 가리 키도록합니다. 상대 경로는 현재 작업 디렉토리에 따라 다르며 액세스 할 때 디렉토리 위치의 영향을받을 수 있습니다. 실제 개발에서 어떤 경로 양식을 선택 해야하는지에 따라 결정해야합니다. 상징적 링크가 다른 위치에서 올바르게 작동하도록하려면 절대 경로를 사용하는 것이 최선의 선택입니다. 기호 링크가 특정 디렉토리 구조 내에서만 유효한 경우 상대 경로는 프로젝트의 구조를 유지할 수 있습니다.