0

我在使用 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 />";
}

谢谢你的时间,

4

1 回答 1

1

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

于 2013-01-17T19:05:54.120 回答