종종 프로그램을 만들 때 파일을 삭제해야 하고(이유는 매우 다를 수 있음) 이 경우 unlink php가 도움이 됩니다. 오늘 우리는 PHP에서 파일을 삭제하는 방법과 몇 가지 예를 살펴보겠습니다.

PHP 연결 해제로 파일 삭제

unlink() 함수는 파일을 삭제하는 데 사용됩니다. 이 함수의 구문은 다음과 같습니다.

연결 해제(파일 이름)

이 함수는 부울이므로 파일을 성공적으로 삭제하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다. 사용을 고려 풀리다()예를 들어:

이 페이지를 다시 로드할 때 프로그램에서 오류가 발생한다는 점에 유의해야 합니다. 이것은 함수가 처음 호출될 때 이미 파일을 삭제했고 다음에 찾을 수 없기 때문입니다.

이 문제를 해결하는 방법에는 여러 가지가 있습니다. 예를 들어 다음을 사용하여 더 복잡한 내부 프로그램 아키텍처를 사용할 수 있습니다. 조건문만약에 . 또는 발생하는 오류를 무시하려면 함수 자체 앞에 @ 기호를 넣으면 됩니다. 이 경우 파일을 찾지 못하더라도 오류가 발생하지 않습니다.

링크 해제를 사용하여 PHP에서 파일을 삭제하는 것은 전혀 어렵지 않습니다. 다음 시간에는 파일 상태를 확인하는 방법에 대해 알아보겠습니다.

PHP는 주로 동적 웹 페이지를 만드는 데 사용되는 프로그래밍 언어입니다. 다른 프로그래밍 언어와 마찬가지로 PHP에는 유용한 기능이 많이 포함되어 있습니다. 예를 들어 스크립트에서 사용할 수 있는 파일을 삭제하는 기능입니다.

이 팁은 방법을 배우는 데 도움이 될 것입니다. PHP에서 파일 삭제기능을 사용하여 풀리다.

단계별 지침:

PHP에서 파일을 삭제하려면 다음 함수를 사용할 수 있습니다. 풀리다. 간단한 스크립트의 예를 사용하여 작업을 분석해 봅시다. 풀리다:

  1. 만들다 텍스트 파일안에 텍스트 에디터(vi/vim, nano, gedit 또는 표준 메모장).
  2. 다음 코드를 입력하거나 복사하십시오.$file="예시.로그";
    연결 해제($파일);
    ?>
  3. 저장(예: testunlink.php 이름으로)하고 생성된 스크립트 파일을 테스트 웹 서버에 배치합니다. 동일한 디렉토리에서 모든 콘텐츠가 포함된 example.log 파일을 생성합니다. 그것이 우리가 제거할 것입니다.
  4. 브라우저에서 스크립트를 호출하여 실행하고 디렉토리를 다시 보면 example.log 파일이 더 이상 존재하지 않는다는 것을 알 수 있습니다. 풀리다그의 일을 했다!

작동 원리:

스크립트 코드의 첫 번째 줄: 스크립트 유형을 정의합니다.

코드의 두 번째 줄: 우리가 만든 스크립트를 실행한 후 파일 변수에 값이 할당됩니다. example.log(같은 이름을 가진 파일은 우리가 만든 스크립트와 같은 디렉터리에 있어야 합니다. 아무 내용으로나 만들면 됩니다!).

코드의 세 번째 줄: example.log 파일을 unlink 함수에 인수로 전달하여 삭제합니다.

스크립트 코드의 네 번째 줄: PHP 코드의 끝.

PHP를 사용하여 하나 또는 여러 파일을 삭제하는 간단한 작업을 해결해 보겠습니다. 일반적으로 여기에는 복잡한 것이 없지만 알아야 할 솔루션뿐만 아니라 많은 세부 정보가 있습니다. 내 기사에서 나는 광대함을 포용하지 않지만 몇 가지 질문을 설명하고 몇 가지 예를 들 수 있다고 생각합니다. 시작 할까?

PHP unlink() 함수

그리고 파일을 제거하는 unlink() php 함수부터 시작하겠습니다.

부울 풀리다($파일명[, 자원$context])

여기서 $filename은 파일의 경로이고 $context(선택 사항)는 스트림 작업을 위한 컨텍스트에 대한 설명입니다. (PHP 5.0.0부터 지원). 함수는 성공 시 TRUE를 반환하고 오류 시 FALSE를 반환합니다.

unlink() php 함수를 사용하는 예:

$filename = "./경로/to/file.txt";

이 함수를 unlink()라고 하는 이유는 무엇입니까?

이는 Unix 파일 시스템이 미디어에 있는 파일의 물리적 위치와 해당 디렉토리 구조를 구별하기 때문입니다. 따라서 특정 시점에 파일을 저장할 때 파일 시스템디렉토리 트리의 이 지점은 파일 데이터가 저장된 물리적 위치와 연결됩니다. 즉, Unix 파일 경로는 실제로 이러한 노드 중 하나에 대한 고유 식별자입니다.

Unix에서는 이러한 여러 지점을 동일한 데이터와 연결할 수 있다는 점도 주목할 만합니다. 그러한 데이터는 적어도 하나의 링크가 있는 한 존재합니다. 그러나 모든 링크가 파괴되면 데이터 자체도 파괴됩니다. 따라서 unlink() 함수는 이미 파일 데이터의 결과로 링크를 제거하도록 설계되었습니다.

Windows에서는 그런 것이 없고 unlink() 함수가 파일을 삭제합니다. 또한 일부 Windows 버전의 PHP는 unlink()를 전혀 지원하지 않습니다. 이 경우 del 명령은 system() 또는 exec() 를 통해 사용됩니다. 예를 들면 다음과 같습니다.

$filename = "/2014/04/file.txt";
if (isset($_ENV["WINDIR"])) (
@exec("del ". $파일명);
if (file_exists($filename)) die("파일 삭제 오류.");
) 그렇지 않으면 (!(@unlink($filename))) (
die("파일 삭제 오류입니다.");
}

이 경우 $_ENV["WINDIR"] 환경 변수는 다음과 같은 역할을 할 수 있습니다. 채점자 Windows 플랫폼을 사용하여 파일이 삭제되었는지 확인하는 것은 파일의 존재를 확인하는 php-function file_exists() 를 통해 수행됩니다.

PHP에서 파일을 삭제하는 방법은 무엇입니까?

경우에 따라 unlink() 함수가 파일 삭제에 액세스할 수 없는 경우가 있습니다. 우리는 오류를 얻는다 : 권한이 거부되었습니다.. 파일 경로가 잘못 지정되었거나 액세스 권한이 없기 때문일 수 있습니다.

파일 경로 작업에 대한 흥미로운 옵션은 getcwd() php 함수를 사용하는 것입니다. (현재 작업 디렉토리의 이름을 얻음)및 chdir() (현재 디렉토리를 지정된 디렉토리로 변경), 예를 들어:

$file_path = "경로/대상";
$file_name = "/2014/04/file.txt";
$old = getcwd();
if (!(@chdir($file_path))) die("경로 열기 오류입니다.");
if (!(@unlink($file_name))) die("파일 삭제 오류입니다.");
chdir($old);

보시다시피, 어떤 방식으로든 문제를 탐색하고 추적하는 것이 더 쉽습니다. 동시에 삭제를 수행한 후 현재 $old 디렉토리로 돌아가는 것은 불필요한 일이 아닙니다.

액세스 문제에 관해서는 여기에서 php-function chmod()를 사용해 볼 수 있습니다. (파일 액세스 모드 변경), 예를 들어:

$filename = "/2014/04/경로/to/file.txt";
@chmod($파일명, 0666);
if (!(@unlink($filename))) die("파일 삭제 오류입니다.");

필요한 경우 디렉토리의 모든 파일 삭제 array_map() PHP 함수의 조합을 사용하는 것이 편리합니다. (모든 배열 요소에 콜백 함수 적용)그리고 글로브() (패턴과 일치하는 파일 경로 찾기), 예를 들어:

array_map("연결 해제", glob("some/dir/*.txt"));

파일 삭제 시 멀티스레딩 문제 해결

스크립트에 대한 동시 요청(스레드)이 많은 대규모 사이트의 경우 훨씬 더 어렵습니다. 여기에는 여러 가지 솔루션이 있습니다. 나는 그들 중 하나만 줄 것입니다, 주된 것은 사용하는 것입니다 세마포어.

이와 같이, 신호기종류로 작용 채점자프로세스. 한 프로세스에서 세마포어를 획득하면 값이 1 감소하고 해제되면 1 증가합니다. 이 경우 세마포어의 현재 값이 0이면 프로세스는 이를 캡처할 수 없으며 세마포어가 해제될 때까지 기다립니다.

sem_get() 함수는 세마포어 리소스를 가져오는 데 사용됩니다. 함수는 1이 아닌 값을 가진 세마포어를 얻을 수 있으며, 그런 다음 여러 스레드가 세마포어를 캡처할 수 있습니다. sem_acquire() 함수는 캡처하는 데 사용됩니다. 예시:

$sem = sem_get(1);
if (sem_acquire($sem) && file_exists($filename)) @unlink($filename);
sem_remove($sem);

file_exists() 파일의 존재에 대한 추가 검사가 여기에서 사용됩니다. 요점은 첫 번째 스레드가 세마포어를 획득하고 파일을 삭제하고 세마포어를 해제하면 두 번째 스레드는 더 이상 존재하지 않는 파일을 삭제하지 않고 계속 실행할 수 있다는 것입니다.

여기서 중요한 역할은 바쁜 세마포어를 해제하는 sem_remove() 함수에 의해 수행됩니다. 세마포어가 해제되지 않으면 병렬 스레드는 현재 스레드가 끝날 때까지 대기 상태를 유지합니다. 따라서 함수는 조건 외부에 있어야 합니다.

그게 다야. 내 기사가 귀하에게 유용하거나 유익한 정보가 되었기를 바랍니다. 관심을 가져주셔서 감사합니다. 행운을 빕니다!

8시에 메시지 수정

우리는 "라는 주제에 전념하는 수업을 계속합니다. PHP 파일 작업". 전편을 읽지 않으셨다면 읽어보시길 추천하고, 읽어보신 분들은 계속 읽어보시기 바랍니다. 이 단원에서는 다음을 사용하여 생성되거나 기존 파일을 삭제하는 방법을 배웁니다. PHP를 사용하여, 복사 또는 이름 바꾸기, 파일을 잠급니다.
자, 준비가 되었다면 전쟁터로 가십시오...

PHP에서 파일 삭제

파일을 제거해야 하는 경우 PHP의 unlink() 함수를 사용하십시오.

링크 해제(파일명);

파일 이름 - 여기에 삭제하려는 파일의 이름을 입력합니다.

" file.txt" 파일을 삭제해야 한다고 가정해 보겠습니다. 채우기의 예는 다음과 같습니다.

링크 해제("file.txt");

완성된 코드:

"file.txt" 파일이 있는 경우 해당 스크립트가 제거됩니다.

PHP에서 파일 복사

한 파일에서 다른 파일로 내용을 복사해야 하는 경우 PHP의 copy() 함수를 사용하십시오.

복사("파일1", "파일2");

File1 - 텍스트를 복사할 파일의 이름
- file2 - 텍스트가 복사될 파일의 ​​이름

예를 들어 로컬 서버의 "test-1" 폴더에 "file2.txt"라는 파일을 만듭니다. 파일을 비워 두십시오. 이제 이 코드를 붙여넣으세요. copy("파일.txt", "파일2.txt"); PHP 코드 "file.php"에서:

우리는 무엇을 했습니까? PHP를 통해 "file.txt"라는 파일을 만들고 PHP를 통해 "file.txt" 파일에 항목을 만들었습니다. 블로그 사이트에서 뵙게 되어 반갑습니다 ", 브라우저에 결과를 표시하고 파일에서 텍스트를 복사했습니다." file.txt"그리고 파일에 붙여넣었습니다." file2.txt». 이런 일이 일어났다는 게 믿기지 않으세요? "file2.txt" 파일이 비어 있었던 것을 기억하십니까?! 열어 봐! 그리고 무엇을 봅니까? 예, 맞습니다. "file.txt" 파일에 있던 텍스트는 다음과 같습니다.

PHP에서 파일 이름 바꾸기

파일의 이름을 바꾸려면 PHP rename() 함수를 사용하십시오.

이름 바꾸기("파일1", "파일2");

File1은 대체할 파일의 이름( 이름을 바꾸다)
- file2 - 여기에서 새 파일 이름을 지정해야 합니다.

다음은 작성하는 예입니다.

이름 바꾸기("파일2..txt");

여기 완성된 코드:

파일 " file2.txt" 파일 이름이 "site.txt"로 변경되었습니다.

제 생각에는 이것으로 수업을 끝내야 합니다. 하지만 그게 다가 아닙니다. 다음 강의에서는 파일 작업을 계속할 것입니다.