Php

PHP 的 FTP 不能在 Amazon linux EC2 實例上執行?

  • December 8, 2011

我設置了一個 m1.large EC2 實例,並想用它從 CDN 的伺服器上下載日誌。我的程式碼在我的 ubuntu 筆記型電腦上執行良好,但是一旦上傳到伺服器,ftp_rawlist() 函式就停止工作了。據我所知,程式碼仍在登錄 ftp 伺服器,但 rawlist 沒有返回任何文件。

這是範常式式碼:

<?php

$FTP_USERNAME = 'username';
$FTP_PASSWORD = 'pass';
$FTP_SERVER   = 'cdn.server';
$FTP_LOGDIR   = 'logs';

$conn_id = ftp_connect($FTP_SERVER) or die('Couldn\'t connect to '.$FTP_SERVER);

if(!ftp_login($conn_id, $FTP_USERNAME, $FTP_PASSWORD)) {
       die('Couldn\'t connect as '.$FTP_USERNAME);
}

ftp_chdir($conn_id, $FTP_LOGDIR);

$rawlist = ftp_rawlist($conn_id, '.');

ftp_close($conn_id);

var_dump($rawlist);
?>

輸出是這樣的:

bool(false)

即使我知道目錄不是空的。

設置伺服器時,這些是我用來安裝所有內容的命令:

sudo yum install php
sudo yum install php-mysql
sudo yum install php-pear
sudo pear channel-discover pear.amazonwebservices.com
sudo pear install aws/sdk

我什至打開了安全組的所有埠,但即便如此,輸出仍然是 bool(false)。並且 php -i 顯示 ftp 已啟用。

任何幫助將不勝感激,我整天都在絞盡腦汁試圖弄清楚這一點。

需要在被動模式下執行它

ftp_pasv($conn_id, true);

引用自:https://serverfault.com/questions/338775