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