PHP / FTP - 简单的ftp_get在本地服务器上不起作用,但在生产中也是如此 - 故障排除

时间:2013-01-17 19:00:25

标签: php ftp centos

我对ftp_get有一点问题。在Centos 6上运行的本地开发服务器上运行时,该脚本不起作用。

我已经完成了对Stack Overflow的一些研究,并尝试了大部分解决方案而没有让它发挥作用。

我在运行Centos 5.x + cPanel的生产服务器上测试了相同的脚本并且它正在运行。

我想知道在本地服务器上会出现什么情况?

是否有任何特定的文件传输设置可以使用?

这是我到目前为止所尝试的事项列表:

  • 错误,error_reporting(E_ALL)并查看是否有任何错误。他们没有。

  • 被动连接,ftp_pasv($connection, true)但它没有任何改变。

  • 传输模式,尝试了FTP_BINARY和FTP_ASCII。什么都没有改变。

  • 尝试使用文件处理程序保存在本地服务器上,但也没有。

原始脚本批量运行(下载具有指定文件名的文件夹中的所有文件)。在运行该脚本时,我可以说3/4的文件成功转移到了“开发”文件中。服务器。

说只有1/4的人会失败'。因此,以下脚本用于对批量传输期间失败的某些文件进行故障排除/测试下载。

他们也无法使用此脚本进行传输。

我检查了远程服务器上的所有权限(chmod)。一切都设定为666。

这是我正在使用的代码。它与php.net上的示例非常相似

// Connection to ftp
$connection = ftp_connect($hostname);

// Login to the FTP
$login = ftp_login($connection, $username, $password);

// Passive might help?
ftp_pasv($connection, true);

// Test login
if ((!$connection) || (!$login)) {
    echo "FTP Connection failed<br /><br />";
    exit;
} else {
    echo "Connection success<br /><br />";
}

$local_file = 'file.zip';
$server_file = 'file.zip';

// Download and save file
if (ftp_get($connection, $local_file, $server_file, FTP_ASCII)){
    echo "Download win <br />";
} else {
    echo "Download failed <br />";
}

感谢您的时间,

1 个答案:

答案 0 :(得分:1)

首先尝试从当地centos机器的命令行/ shell检查相同的东西。使用“ftp”命令,看看它是否在那里工作。大多数情况下,对我来说这似乎是一个防火墙问题。