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



我有一个小问题与ftp_get。该脚本在运行Centos 6的本地开发服务器上运行时将无法工作。

我对Stack Overflow做了一些研究,并尝试了大多数解决方案,但没有使其工作。

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

我想知道什么可能导致这在本地服务器上?

是否有文件传输工作的特定设置?

这是我到目前为止尝试过的事情:

  • Errors, error_reporting(E_ALL),查看是否有错误。

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

  • 传输模式,尝试过FTP_BINARY和FTP_ASCII。没有什么变化。

  • 尝试使用文件处理程序在本地服务器上保存,也不工作。

原始脚本批量运行(下载指定文件名文件夹中的所有文件)。当运行该脚本时,我可以说3/4的文件被成功地传输到"dev"服务器。

说大约只有四分之一的人得到了"失败"。因此,使用以下脚本对批处理传输过程中失败的一些文件进行故障排除/测试下载。

他们使用这个脚本也失败了。

我检查了远程服务器上的所有权限(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 />";
}

感谢您的宝贵时间,

首先尝试从本地centos机器的命令行/shell检查相同的事情。使用"ftp "命令,看看它是否在那里工作。

最新更新