在本地主机上,文件可以通过 ftp 正确下载,但在 Ubuntu 服务器上却不行

在本地主机上,文件可以通过 ftp 正确下载,但在 Ubuntu 服务器上却不行

localhost尝试从服务器获取 ftp 文件,本地文件已成功创建。但是当我在 Ubuntu 服务器上尝试时,它显示存在问题,文件未下载到服务器。这是代码。并且代码文件在此位置创建/var/www/html/

<?php
// define some variables
$local_file = 'local.csv';
$server_file = 'serverfile.csv';
$ftp_server="ip address";
$conn_id = ftp_connect($ftp_server)or die("Couldn't connect to $ftp_server");
$ftp_user_name="user anme";
$ftp_user_pass="pass";
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) {
echo "Successfully written to $local_file\n";
}
} else {
echo "There was a problem\n";
}
ftp_close($conn_id);
?>

请帮我解决这个问题,在本地主机上它运行良好,但在 Ubuntu 服务器本地文件无法创建/下载。

答案1

这似乎是权限问题。该目录/var/www/html最有可能归以下人员所有root

mirek@testsrv-ubuntu:/var/www/html$ ls -al
total 24
drwxr-xr-x  3 root  root   4096 dec 23  2015 .
drwxr-xr-x  3 root  root   4096 dec 22  2015 ..
-rw-r--r--  1 root  root  11510 dec 22  2015 index.html

运行 PHP 的用户必须被允许在该目录中写入。如果 PHP 由 Apache 运行,则需要允许用户www-data写入。以下命令将列出正在运行的 Apache 进程。用户名是第一列。

mirek@testsrv-ubuntu:/var/www/html$ ps -ef | grep apache
root      1605     1  0 jul20 ?       00:00:16 /usr/sbin/apache2 -k start
www-data  1963  1605  0 12:01 ?        00:00:04 /usr/sbin/apache2 -k start

由于root允许在任何地方写入,您只需将目录的所有者更改为,/var/www/html并且两者www-data就可以在那里写入。rootwww-data

sudo chown www-data:www-data /var/www/html

有关文件权限和所有者的更多信息:

答案2

ftp_pasv($conn_id, true); 是我的问题的解决方案

相关内容