На 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 локальный файл, не создающий/загружающий.
Это, кажется, проблема разрешения. Каталог /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
и и root
и www-data
сможет записать там.
sudo chown www-data:www-data /var/www/html
[еще 1118] информация о полномочиях файла и владельцах:
ftp_pasv ($conn_id, верный); решение для моего выпуска