php ftp_put不会创建文件

时间:2012-07-17 08:08:13

标签: php ftp

我正在尝试将图像文件从本地PC上传到远程服务器。图像来自简单的html输入(type = file),文件数组包含以下内容:

Array ( [name] => image42.jpg [type] => image/jpeg [tmp_name] => C:\wamp\tmp\phpBB52.tmp [error] => 0 [size] => 6051 ) 

如您所见,我的本地PC正在使用Windows。尝试上传图像文件的代码如下:

$conn_id = ftp_connect($ftp_server, $ftp_port);

$login_result = ftp_login($conn_id, $ftp_username, $ftp_password);

if(!ftp_chdir($conn_id, $folder_path))
{
    $create_folder = ftp_mkdir($conn_id, $folder_path);
    ftp_chmod($conn_id, 0777, $folder_path);
}

这完美地连接到服务器,甚至创建一个文件夹(如果它不存在)。然后,当我们到达上传部分时,

ftp_pasv($conn_id, true);

// upload a file
$upload = ftp_put($conn_id, $new_dir, $file_dir, FTP_BINARY);

变量$upload获得false

$file_dir包含C:\wamp\tmp\phpBB52.tmp(即文件tmp_name)。

$new_dir包含具有图片路径的远程目录:img.example.com/data/images/blabla.jpg

此外,返回的错误是:

Warning: ftp_put() [<a href='function.ftp-put'>function.ftp-put</a>]: Could not create file. in C:\wamp\www\example\example.php on line 95

我在谷歌和StackOverflow上都没有找到任何有用的东西。可能是什么原因?

2 个答案:

答案 0 :(得分:3)

这对我有用。它可能是服务器的根目录与FTP根目录不同。

尝试使用其他程序登录您的FTP帐户并检查根目录。例如,我的FTP根目录是/public_html/,但服务器是/home/cms/public_html/。因此,如果我的文件的远程目标设置为/home/cms/public_html/images/82.jpg,只需将其更改为/public_html/images/82.jpg

答案 1 :(得分:0)

我的脚本试图定期将文件上传到FTP位置(覆盖以前上传的同名文件)并且工作正常。

它现在开始显示此错误,我确实从FTP位置删除了该文件并使用该脚本再次上传,错误消失了。

该文件必须已被FTP位置中的任何其他应用程序锁定,以防止其被覆盖或可能已损坏。