PHP的FTP无法在Amazon linux EC2实例上运行?

时间:2011-12-07 23:26:38

标签: php ftp amazon-ec2 amazon-web-services

我设置了一个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已启用。

任何帮助都会非常感激,我一整天都在试图解决这个问题。

1 个答案:

答案 0 :(得分:2)

需要以被动模式运行

ftp_pasv($conn_id, true);