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

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

我设置了一个 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

需要以被动模式运行

ftp_pasv ($conn_id, true);

相关内容