CentOS 서버가 PHP를 통해 다른 Windows 기반 서버와 FTP 연결을 설정하도록 활성화

CentOS 서버가 PHP를 통해 다른 Windows 기반 서버와 FTP 연결을 설정하도록 활성화

로컬 wamp에서 이 코드를 실행하면 제대로 작동하고 결과가 인쇄됩니다.

//connection to a ftp server across proxy
putenv('TMPDIR=/tmp/');
$ftp_server = "SERVER IP"; 
$ftp_user_name = "XXXXXX"; 
$ftp_user_pass = "XXXXXX";

$destination_path = "/sanketik/";
$remote_file = $destination_path.$file;

// set up basic connection
$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// enabling passive mode
ftp_pasv( $conn_id, true );

// get contents of the current directory
$contents = ftp_nlist($conn_id, "/sanketik");

// output $contents
var_dump($contents);

산출:

array (size=5)
  0 => string '/sanketik/bittu' (length=15)
  1 => string '/sanketik/mysql.png' (length=19)
  2 => string '/sanketik/shakun' (length=16)
  3 => string '/sanketik/shakun.txt' (length=20)
  4 => string '/sanketik/TTTTT.txt' (length=19)

하지만 CentOS 기반 서버에서 동일한 코드를 실행하면 NULL.

감사해요

답변1

감사 로그를 확인하셨나요? SELinux로 인해 웹 서버가 FTP 서버에 대한 아웃바운드 연결을 열지 못하는 것 같습니다. httpd_can_network_connect부울 값을 설정해야 할 수도 있습니다 . ausearch -m avc -ts recent웹페이지 로드를 시도한 후 루트로 또는 sudo를 통해 다음을 실행하여 감사 로그를 확인합니다. 를 사용하여 SELinux 부울을 설정할 수 있습니다 setsebool -P httpd_can_network_connect on. SELinux 부울에 대해 자세히 읽어보세요.여기.

관련 정보