현재 위치: > 최신 기사 목록> PHP Symlink 함수가 실패 할 때 오류를 잡는 방법은 무엇입니까? 실용적인 오류 처리 기술을 공유하십시오

PHP Symlink 함수가 실패 할 때 오류를 잡는 방법은 무엇입니까? 실용적인 오류 처리 기술을 공유하십시오

gitbox 2025-08-18

3. SymLink () 오류를 포착하는 일반적인 방법

Symlink () 함수의 오류를 더 잘 잡고 처리하기 위해 PHP는 오류 처리를 구현하는 몇 가지 방법을 제공합니다. 아래에는 몇 가지 일반적인 방법을 소개합니다.

3.1 @error suppressor 사용

오류를 잡는 가장 쉬운 방법은 PHP의 @ error suppressor를 사용하여 오류 메시지를 출력하지 않을 수 있습니다.

 <span><span><span class="hljs-meta">&lt;?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-literal">false</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-meta">?&gt;</span></span><span>
</span></span>

이 방법은 거칠고 모든 PHP 오류를 억제하지만 오류에 대한 특정 정보를 제공하지는 않습니다. 따라서 특히 개발 환경에서 유일한 오류 처리 방법으로 권장되지 않습니다.

3.2 ERROR_GET_LAST () 함수를 사용하여 오류 정보를 얻습니다

오류 억제기를 사용하지 않고 오류 메시지를 캡처하려면 Error_Get_Last () 함수를 사용하여 SymLink ()를 호출 한 후 마지막 오류 메시지를 얻을 수 있습니다.

 <span><span><span class="hljs-meta">&lt;?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-literal">false</span></span><span>) {
    </span><span><span class="hljs-variable">$error</span></span><span> = </span><span><span class="hljs-title function_ invoke__">error_get_last</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">$error</span></span><span>[</span><span><span class="hljs-string">'message'</span></span><span>];
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

이 메소드는 오류 메시지 및 오류가 발생한 파일 줄 번호와 같은 마지막 오류의 세부 사항을 포함하는 연관 배열을 반환 할 수 있습니다.

3.3 시도 캐치 및 사용자 정의 예외 사용

SymLink () 자체는 예외를 제외하지 않지만 SymLink ()를 호출 할 때 수동으로 예외를 던질 수 있습니다.

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">createSymlink</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$target</span></span></span><span>, </span><span><span class="hljs-variable">$link</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-literal">false</span></span><span>) {
        </span><span><span class="hljs-keyword">throw</span></span><span> </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-built_in">Exception</span></span><span>(</span><span><span class="hljs-string">"상징적 링크를 만들 수 없습니다:"</span></span><span>.</span><span><span class="hljs-variable">$link</span></span><span>);
    }
}

</span><span><span class="hljs-keyword">try</span></span><span> {
    </span><span><span class="hljs-title function_ invoke__">createSymlink</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">catch</span></span><span> (</span><span><span class="hljs-built_in">Exception</span></span><span> </span><span><span class="hljs-variable">$e</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">$e</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">getMessage</span></span><span>();
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

Try-Catch 구조를 사용하면 오류 처리가 명확해질 수 있으며 다양한 유형의 오류에 대한 다른 처리 방법을 제공 할 수 있습니다.

3.4 로깅 오류를 사용하십시오

프로덕션 환경에서 특히 보안이 관련 될 때 사용자에게 오류 메시지를 직접 출력하는 것이 항상 적절한 것은 아닙니다. 로그 파일에 오류를 로그인하여 개발자가 백그라운드에서 확인하고 디버그 할 수 있도록 선택할 수 있습니다.

 <span><span><span class="hljs-meta">&lt;?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-literal">false</span></span><span>) {
    </span><span><span class="hljs-title function_ invoke__">error_log</span></span><span>(</span><span><span class="hljs-string">"상징적 링크를 만들지 못했습니다: "</span></span><span>.</span><span><span class="hljs-title function_ invoke__">error_get_last</span></span><span>()[</span><span><span class="hljs-string">'message'</span></span><span>], </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-string">"/var/log/php_errors.log"</span></span><span>);
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

이 메소드는 오류 정보를 사용자에게 노출시키지 않지만 제작 환경에서 오류 추적에 적합한 서버의 오류 로그 파일에 기록합니다.


4. 일반적인 오류 처리 기술

4.1 파일 및 디렉토리 권한을 확인하십시오

기호 링크를 만들기 전에 PHP 스크립트에 대상 경로와 링크 경로에 액세스 할 수있는 충분한 권한이 있는지 확인해야합니다. is_writable () 함수를 사용하여 파일 또는 디렉토리가 쓸 수 있는지 확인할 수 있습니다.

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">is_writable</span></span><span>(</span><span><span class="hljs-variable">$target</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">exit</span></span><span>;
}
</span></span>

4.2 대상 파일이 존재하는지 확인하십시오

특히 기호 링크를 만들 때 대상 파일 또는 디렉토리가 존재하는지 확인하는 것이 매우 중요합니다. file_exists () 또는 is_file () 함수를 사용하여 대상 파일의 존재를 확인할 수 있습니다.

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">file_exists</span></span><span>(</span><span><span class="hljs-variable">$target</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">exit</span></span><span>;
}
</span></span>

4.3 상징적 링크가 이미 존재하는지 확인하십시오

상징적 링크를 만들기 전에 상징적 링크 경로가 이미 존재하는지 확인하는 것이 가장 좋습니다. 대상 경로가 이미 존재하고 상징적 링크가 아닌 경우, 생성 작업이 실패합니다. IS_LINK ()를 사용하여 이미 상징적 링크인지 확인할 수 있습니다.

 <span><span><span class="hljs-meta">&lt;?php</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">$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">exit</span></span><span>;
}
</span></span>