2008-08-12 2 views
5

PEAR HTTP 클래스를 사용하여 HTTP 서버의 응답을 확인하는 스크립트가 있습니다. 그러나, 나는 최근에 FTP 서버 (그리고 아마도 HTTP 나 HTTPS가 아닌)에서 스크립트가 실패하는 것을 발견했습니다. Google을 사용해 보았지만 HTTP 서버 이외의 서버에서 서버 상태 코드를 반환 한 스크립트 나 코드를 보지 못했습니다.PHP 스크립트로 FTP 상태 코드 확인

PHP를 사용하여 뉴스 그룹 또는 FTP 서버의 상태를 어떻게 알 수 있습니까?

편집 : 나는 FTP 서버와 내가 지정한 디렉토리에서 읽을 수있는 기능에만 관심이 있다는 것을 분명히해야한다. 서버가 죽었는지, 사라 졌는지, 읽을 권한이 없는지를 알아야합니다.

대부분의 시간은 언어에 구애받지 않지만 전체 웹 사이트는 PHP로 구동되므로 PHP 솔루션은 미래의 유지 보수성과 확장 성을 용이하게하는 데 가장 적합합니다.

답변

2

HTTP 불행히도 비록 FTP 약간 다르게 작동을 참조하십시오. 브라우저에서 둘 다 똑같이 보일 수도 있지만 HTTP는 URI를 기반으로 작동합니다 (즉, 리소스 A에 액세스하기 위해 액세스하는 방법을 알려주는 식별자가 있습니다).

FTP는 매우 오래된 학교용 서버입니다. 익명의 FTP조차도 약간의 해킹입니다. 여전히 사용자 이름과 암호를 제공하기 때문에 "익명 성"과 이메일 주소로 정의됩니다.

: FTP 서버는 당신이 서버에 로그인 할 수있는 FTP 서버

if (!($ftpfd = ftp_connect($hostname))) { ... }

  • 에 연결할 수

    1. 확인 수단까지 인 경우

      확인 if (!ftp_login($ftpfd, $username, $password)) { ... }

    2. 그런 다음 특정 사이트의 작동 여부를 테스트하기 위해 액세스해야하는 기본 리소스가 더 있으면 해당 사이트에 적절한 작업을 사용하십시오. 예 : 파일에서 마지막으로 수정 한 시간 또는 디렉토리에서 ftp_mdtm()을 사용하여 ftp_nlist()이 작동하는지 확인하십시오.

  • +0

    기본적으로이 FTP 함수는 PHP를 컴파일 할 때, 적어도 내가 사용했던 시스템에서는 사용할 수 없습니다. –

    0

    자신 만의 PHP FTP 기능을 사용하는 것이 더 간단하지 않을까요? URI가 컨트롤 외부의 출처에서 오는 경우 사용할 기능을 결정하기 위해 프로토콜 정의 (http : // 또는 ftp : // 등)를 확인해야하지만 이는 매우 사소한 것입니다. 이제 protocal을 지정하면 (실제로 있어야합니다!) http로 기본값을 설정할 수 있습니다.

    0

    특정 응답을 읽으려면 소켓을 열고 수동으로 데이터를 읽거나 쓸 필요가 있습니다.

    <?php 
    $sock = fsockopen($hostname, $port); 
    ?> 
    

    그러면 데이터를 앞뒤로 처리해야합니다.
    이렇게하면 FTP 프로토콜을 읽어야합니다.