使用 PHP 通过 FTP 将文件从本地上传到服务器


Uploading a file from local to server through FTP using PHP

我想从本地上传文件到服务器。我已经尝试了以下代码,但它给出了一些错误。请帮我解决

<?php 
$server="115.120.147.261";
$ftp_user_name="root";
$ftp_user_pass="3424dd";
$dest="/home/root/web/Price-War/";
$source="/home/root/sample.txt";
$connection = ftp_connect($server);
if($connection)
{
echo "Connection Established";
}
$login = ftp_login($connection, $ftp_user_name, $ftp_user_pass);
if (!$connection || !$login) { die('Connection attempt failed!'); }
$upload = ftp_put($connection, $dest, $source, FTP_ASCII);
if (!$upload) { echo 'FTP upload failed!'; }
ftp_close($connection);
?>

它的抛出以下错误。

Connection Established
PHP Warning:  ftp_put(): Could not create file. in /home/root/Desktop/upload.php on line 16

$dest="/home/root/web/Price-War/";

您需要设置文件名。

$dest="/home/root/web/Price-War/sample.txt"

把这个 LOC 放在 ftp_put() 之上。您可能需要将上传模式分配给被动才能上传文件。

ftp_pasv($connection, true);

我也在使用PHP和FTP,除了我下载而不是上传。我的本地路径需要是文件的绝对路径(完整路径),我的FTP路径必须是相对的。有点像这样:

$ftp_path = "/foldername/filename.txt";
$local_path = "C:'wamp'www'my_website'files'file_to_upload.txt"

获取本地路径,如下所示:

$path_to_root   = dirname(__FILE__);
$local_folder   = "'my_website'files'";
$local_full_path= $path_to_root.$local_folder."file_to_upload.txt";

我也使用 ftp_nb_get() 而不是 ftp_get(),所以我可以在下载时运行其他代码(例如检查部分下载文件的文件大小)。在这里看看我的代码:

PHP ftp_nb_get下载时获取本地部分文件大小

看起来您(或者更确切地说是您的脚本)没有创建文件所需的访问权限。检查目录是否归执行脚本的用户所有。您可能需要使用 chmod 命令授予上传目录的特定权限(相对于您的脚本)。

很多人会告诉你使用chmod 777 directorynamechmod 755 directoryname来允许脚本创建和编辑文件。但是,这可能会带来严重的安全问题,因为它允许所有用户访问和编辑目录中的文件。