PHP - 원격 서버에서 파일 읽기

PHP - 원격 서버에서 파일 읽기

그래서 두 개의 CentOS 서버가 있습니다.

server1의 디렉토리에 로그가 있습니다/home/something/logs/latest.log

server2에는 Apache 서버가 있고 server1의 로그를 읽으려고 합니다.

server1의 로그 데이터를 표시하는 실시간 콘솔을 만들고 싶기 때문에 이 작업을 수행해야 합니다.

하나의 PHP 파일에 있는 로그에서 데이터를 가져온 다음 다른 파일에서 일부 Ajax를 수행하면 실시간 로그가 생성됩니다.

내 질문:

PHP를 사용하여 원격 서버에서 파일을 어떻게 읽을 수 있습니까?

더 나은 해결책을 아는 사람이 있습니까?

답변1

PHP 문서를 빠르게 방문하면 이 작업이 매우 쉽다는 것을 알 수 있습니다 :-)

하지만 요약하자면, 여러분이 해야 할 일은 다음과 같습니다:

$myfile = file_get_contents("http://server1/blah/blah/file.log");

참고: 하지만... 이것이 작동하려면 해당 파일이 정적 파일이기 때문에 server1에서 실행되는 웹 서버를 통해 액세스할 수 있어야 하며 NginX와 같은 것을 설치하고 문서를 기본 루트(또는 홈 폴더의 기본 루트를 가리키는 것만으로도 PHP 파일 내용 가져오기 호출을 사용할 수 있습니다.

server1에 웹 서버를 배치하는 것이 옵션이 아닌 경우 기본적으로 다음 단계를 따라야 합니다.

  • SSH/Telnet과 같은 도구나 원격 복사 유틸리티 중 하나를 사용하여 server1에 연결하거나 FTP 서버를 설정하고 홈 폴더를 가리키도록 합니다.

  • PHP의 다양한 연결 방법 중 하나를 사용하십시오(어떤 방법은 위에서 선택한 서비스에 따라 다름).

  • 그런 다음 2단계에서 선택한 연결 방법을 사용하여 연결하고 필요한 모든 매개 변수를 자동화한 후 연결하는 스크립트를 만듭니다.

  • 연결되면 필요한 명령을 실행하여(사용된 연결 방법에 따라) 파일과 내용을 가져옵니다.

  • 서버와의 연결을 끊고 파일을 처리합니다.

SSH를 사용하려면 PHP에 내장된 SSH2 기능을 사용해야 하며(문서는 php.net에 있음) 사용할 수 있는 클래스가 문서화되어 있습니다.

Telnet의 경우 비슷한 차이가 있지만 A) 권장하지 않으며 B) 원시 소켓을 통해 Telnet 프로토콜을 지원하려면 많은 코드를 작성해야 합니다.

FTP의 경우, PHP는 오랫동안 FTP를 지원해 왔습니다. 하지만 웹 서버와 마찬가지로 FTP를 설치하고 설정한 다음 보안을 유지해야 합니다. 이렇게 하면 웹 서버에서 작업하는 것이 더 쉽습니다.

그 외에도 많은 작은 도구의 *nix 철학을 채택하고 exec 및 시스템 호출을 사용하여 Linux 배포판에서 'rcopy', 'sftp' 및 기타 여러 프로그램을 실행할 수 있지만 이는 다시 상당한 작업입니다. 무엇을, 어디서, 어떻게 자동화할지 알아야 합니다.

또한 소켓에서 수신 대기하고 연결이 이루어질 때 로그를 보내는 자체 임시 서버를 작성할 수도 있습니다.

마지막으로, NFS 또는 Samba를 사용하여 폴더를 공유한 다음 파일이 로컬인 것처럼 일반적인 파일 열기/읽기/닫기 호출을 사용할 수도 있지만 그런 다음 사용자, 공유, 인증 및 로드를 설정해야 합니다. 다른 것들.

어느 경로로 갈지는 귀하가 수행하려는 작업의 양과 여기에 설명된 방법을 사용하는 데 방해가 되는 제한 사항이 무엇인지/없는지에 따라 달라집니다.

하지만 내 조언은 웹 서버 방법으로 가서 NginX, 최소 구성을 사용하고 로그 파일 서버를 닫힌 문 뒤에 봉인하고 PHP가 잘하는 일을 하게 한 다음 http를 통해 파일을 가져오는 것입니다.

관련 정보