I'm trying to make the browser download a file from an FTP server, but whatever I try, I'm getting this error:
Warning: ftp_get(taak4.docx) [function.ftp-get]: failed to open stream: Permission denied in /home/jamesmr117/domains/notepark.be/public_html/classes/taak.php on line 231
Warning: ftp_get() [function.ftp-get]: Error opening taak4.docx in /home/jamesmr117/domains/notepark.be/public_html/classes/taak.php on line 231
I am however 100% sure my FTP server is working fine, as uploading files works correctly. I also set every folder to chmod 777. Does anyone know what the problem might be?
My php code:
$local_file="taak4.dockx";
$server_file="taak4.dockx";
ftp_get($FTPClient->connectionId, $local_file, $server_file, FTP_BINARY);
Thanks in advance !
you must specify the full path to the file. For example:
/var/home/victor/files/taak4.dockx
Use $_SERVER['DOCUMENT_ROOT'] for get document root dir path.
You need to have write permission on the $local_file path. Make it a full path. Example: chmod 777 /test and make $local_file be like /test/taak4.docx.
I was also suffering from this issue even after changing the file permissions on my remote server i was not able to download it on my local server:
Warning: ftp_get(): Can't open Capture.PNG: No such file or directory in C:\MAMP\htdocs\ftp.php on line 25
SOLUTION:
One must include '/' before writing any path in the $server_file variable so the whole example that works just perfect is here:
// This is the path and new file name on my server (name can be different from the remote server file )
// if i want to save it just where my current php file is running ,no need to enter any path just file name
$local_file = 'capture.png';
// This is the path and file name on my Remote server from which i am downloading from
// this should start with '/' and write 'public_html' or 'htdocs' afterwards
$server_file = '/public_html/Capture.PNG';
// ftp details
$ftp_server="example.host.com";
$ftp_user_name="username";
$ftp_user_pass="password";
// set up basic connection
$conn_id = ftp_connect($ftp_server);
// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// This is to so that we do not time out
ftp_pasv($conn_id, true);
// try to download $server_file and save to $local_file
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";
}
// close the connection
ftp_close($conn_id);
Related
I am doing an application for android and i need to upload to the server the profile picture of user i try to do it by ftp , but wen i send the path from android app of this picture it give me an error , and i dont understand much about path from android to web , what i do wrong?
Also forgot to coment i do a random strind with uniqid(); for the name of the file uploaded.
This is my error:
ftp_put(/storage/emulated/0/Download/red-bull-2384130__480.png): failed to open stream: No such file or directory in /home/nicetaxi/public_html/mobilapp/uploadfile.php on line 18
This is my code
<?php
$ftp_server="ftp.......";
$ftp_user_name="......";
$ftp_user_pass=".......";
$Random_str = uniqid();
$file = $_POST["path"];
echo $file;
$remote_file = $Random_str . ".jpg";
// set up basic connection
$conn_id = ftp_connect($ftp_server);
// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// upload a file
if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII)) {
echo "successfully uploaded $file\n";
exit;
} else {
echo "There was a problem while uploading $file\n";
exit;
}
// close the connection
ftp_close($conn_id);
?>
ftp_put(/storage/emulated/0/Download/red-bull-2384130__480.png): failed to open stream: No such file or directory in /home/nicetaxi/public_html/mobilapp/uploadfile.php on line 18
Your server is on the internet and you posted a file path for a file residing on your Android device.
Sorry, but that server connot access files on your Android device.
It does not even try as php thinks its a path on the server itself.
Well then it will not find it.
Instead you should post the file itself to to php server.
I search a lot on internet but i don't find a solution.
I need upload a file to an FTP server through PHP.
I tested various script PHP like this below but I always receive the same problem (I tries with absolute, normal and other path):
connected
Warning: ftp_put(): Can't open that file: No such file or directory in /web/htdocs/www.stanem.it/home/csv/importinnovacsv.php on line 20
There was a problem while uploading /web/htdocs/www.stanem.it/home/csv/test.csv
What I have to do?
<?php
$ftp_server="ftp.xxxx.it";
$ftp_user_name="user";
$ftp_user_pass="psw";
// connect and login to FTP server
$ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
$login = ftp_login($ftp_conn, $ftp_user_name, $ftp_user_pass);
if($login) {
echo 'connected<br>';
// Where I need to put file
$local_file = '/web/htdocs/www.stanem.it/home/csv/test.csv';
// Where I copy the file
$server_dir = 'ftp://15886:XDBbcFYQUs#ftp.innovaspa.it';
// upload a file
if (ftp_put($ftp_conn, $server_dir, $local_file, FTP_ASCII)) {
echo "successfully uploaded $local_file\n";
exit;
} else {
echo "There was a problem while uploading $local_file\n";
exit;
}
}
The $remote_file argument of ftp_put is a path to the file on the FTP server.
You are passing a URL (and it even misses any path or file name).
It should be like:
$remote_file = "/remote/path/test.csv";
Once you resolve the path problem, you will also likely face data connection problems, as your are using the default active mode. See PHP ftp_put fails.
When I run the code below the local file gets deleted, I cannot work out why:
$local_file = 'test.csv';
$server_file = 'test_directory/test2.csv';
$ftp_server="servername";
$ftp_user="test";
$ftp_pass="pass";
$conn_id = ftp_connect($ftp_server);
// login with username and password`
$login_result = ftp_login($conn_id, $ftp_user, $ftp_pass);
ftp_pasv($conn_id, TRUE);
// try to download $server_file and save to $local_file
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";
}
// close the connection
ftp_close($conn_id);
So I get an error on the console showing cannot open no file or directory.
Edit:
Renaming the file to something else other than I am getting from ftp does not delete the file but still doesn't work.
I am running this in XAMMP htdocs location.
Edit:
Problem is if I add a new file to the ftp server, it works with existing ones even though the permission is the same.
Problem is a corrupt file on the ftp server. I tried with a different file and it works.
i have following code for download file from ftp client is.
<?php
// connect and login to FTP server
$ftp_server = "IP";
$ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
$login = ftp_login($ftp_conn, "USER", "PASSWORD");
$local_file = "files/syslog.txt";
$server_file = "syslog/syslog.txt";
// download server file
if (ftp_get($ftp_conn, $local_file, $server_file, FTP_ASCII))
{
echo "Successfully written to $local_file.";
}
else
{
echo "Error downloading $server_file.";
}
// close connection
ftp_close($ftp_conn);
?>
but when i run this program i get following error.
Warning: ftp_get(files/syslog.txt): failed to open stream: Permission denied in C:\wamp\www\demo\schedule_readtxt.php on line 11
Warning: ftp_get(): Error opening files/syslog.txt in C:\wamp\www\demo\schedule_readtxt.php on line 11
Error downloading syslog/syslog.txt.
what am i doing wrong here?
I think you've a permission issue.
It seems to me that you are trying to write a file "syslog.txt" in a folder that's not existing: "files" or your script can't access.
Does the folder "files" exists beside your php script?
And if it does, does apache (or the user that runs the php script) has the right to write and access this folder?
change variable $local_file to full path "C:\path\to\file\syslog.txt" also make Apache have write permission to that folder
Just now I got an error with my FTP file upload part. I am not able to upload a file via ftp using PHP. the code which I entered is as follows :
<?php
$conn_id = ftp_connect(localhost);
$login_result = ftp_login($conn_id, 'newuser', 'wampp') or die("Could Not Connect To FTP Server");
$image = $_FILES['image']['tmp_name'];
$upload = ftp_put($conn_id, 'sri/image.jpg', $image, FTP_ASCII);
?>
The error that it shows is as follows :
Warning: ftp_put() [function.ftp-put]: Filename invalid in D:\xampp\htdocs\mycloud\edit.php on line 7
Please help me out of this stuff.
I think the process of uploading files via FTP has to be:
Connect to FTP Server
Login to the FTP Server (if applicable)
Change to the right directory - (I believe you need to do this before attempting to upload the file in the sri folder). So you will need to go to the sri folder.
Upload the file (so in your case it should be image.jpg only NOT sri/image.jp )
and then close the connection to the FTP Server.
To change to current directory to the right directory, I think you need to do the following:
if(ftp_chdir($conn_id, "sri"))
{
echo "Current directory is now: " . ftp_pwd($conn_id) ;
}
else
{
echo "Error could not change directory";
}
More info on changing directories