Jump to content

Archived

This topic is now archived and is closed to further replies.

Chips

FTP php issues... UNSOLVED

Recommended Posts

Another problem:

I can connect to my server via ftp, indeed - i can not only login with ftp, but create a new folder as well - so it is working in [i]that[/i] respect, i can delete files, delete folders too... But i cannot download or upload files via ftp.

[code]
<?php
$ftp_server = 'servername';
$ftp_user_name = 'username;
$ftp_user_pass = 'password';
$conn_id = ftp_connect($ftp_server) or die("Couldn't connect to server");
$ftp_login = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass) or die("Cannot login to the ftp server");
if($ftp_login){
  echo "logged in!<br />";
  ftp_mkdir($conn_id, "testdir");
} else {
  echo "not logged in<br />";
}
ftp_close($conn_id); 
?>
[/code]
Now it prints out the logged in!, and also creates the testdir - so it does log in without issue.

However, remove that part and insert the more required function: Upload a file. This is related to my earlier http upload issue, which worked on apache but not windows (and couldn't get it working either  ???). Swapped to ftp thinking it would be simple to use that instead, but when trying - it doesn't work.
[code]
$file = $_FILES['userfile']['name']; // comes from a form that submits to this file, the filename is correct and working just fine
$endfile = 'file.txt';

if(ftp_put($conn_id, $endfile, $file, FTP_ASCII)) {
echo "file upload successful";
} else {
echo "file not uploaded";
}
ftp_close($conn_id); 
?>
[/code]

Now it always says "file not uploaded". I've tried binary transfer, tried changing filenames, paths, etc. The file is selected via input type="file" and this is the method as per my previous post that successfully uploaded via http transfer to my apache server. Therefore I know that the file to upload [i]is[/i] selected correctly, obviously it's the actual upload that isn't working and I cannot find any php.ini settings that are relevant to it. The filesize is small, under 2kb - so it doesn't exceed any settings in php.ini for max filesize.

Does anyone have any bright ideas, clues, experiences etc with this sort of thing? Running a local windows server IIS 6, and like I said - I can make folders (suggest any other functions if you wish).
Oh yes, I can log into the local server with ipswitch ftp program, and copy/upload/download files all day - so the userlogin etc is perfectly fine, and the permissions must be fine too...

Share this post


Link to post
Share on other sites
[quote]<?php
$ftp_server = 'servername';
$ftp_user_name = 'username;
$ftp_user_pass = 'password';
$conn_id = ftp_connect($ftp_server) or die("Couldn't connect to server");
$ftp_login = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass) or die("Cannot login to the ftp server");
if($ftp_login){
  echo "logged in!<br />";
  ftp_mkdir($conn_id, "testdir");
} else {
  echo "not logged in<br />";
}
ftp_close($conn_id); 
?>[/quote]

there is one parse error...
$ftp_user_name = 'username; replace this line with $ftp_user_name = 'username';

Thank you,
Karthikeyan

Share this post


Link to post
Share on other sites
Fraid that was a "copy paste" error, as the username/password (and host) were all changed from the real values.

Share this post


Link to post
Share on other sites
Can you kindly exspalin the issue slowly please cheers.

and the first problam was corrected by a member so include the code properly cheers.

Share this post


Link to post
Share on other sites
The problem is this:

I am trying to use php for ftp uploads. I can connect and log into the server. Once logged in, I can return  the list of files in the directory, I can delete files, I can create a directory and I can delete said directory - all without any trouble or issues at all.
What I am failing to do is to upload or download files via the ftp connection using ftp_put, ftp_get methods.
Here is the code I am trying to use - its taken from php.net's example under ftp_put. The filename is coming from an <input type="file"> as given under http uploads, in the $_FILES['userfile']['name'].

[code]
<?php
$file = $_FILES['userfile']['name'];
$endfile = 'file.txt';
$ftp_server = 'servername';
$ftp_user_name = 'username';
$ftp_user_pass = 'password';
$conn_id = ftp_connect($ftp_server) or die("Couldn't connect to server");
$ftp_login = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass) or die("Cannot login to the ftp server");
if($ftp_login){
  echo "logged in!<br />";
  if(ftp_put($conn_id, $endfile, $file, FTP_ASCII)) {
  echo "file upload successful";
  } else {
  echo "file not uploaded";
  }
}
ftp_close($conn_id); 
?>
[/code]

I have changed the FTP_ASCII to binary instead, and still no joy. The file i am trying to upload is a txt file, called mike.txt for now, although I have also renamed it to match the "endfile" name specified. I am running on a windows webserver, with iis 6 and mssql as my database (although that obviously has no bearing on this issue :D). As I say, I can do other functions, just not upload/download files.

Thanks for anyone taking the time to read/think/suggest/point anything that they can think of to me, and help is much appreciated. Any further info needed will be posted on request ;)

Share this post


Link to post
Share on other sites
Hoping that someone can still help, sorry for the bump... just a little bit desperate.

Share this post


Link to post
Share on other sites
this is probably a dumb question, but when you create your directory, what is the default read/write permissions? maybe it won't upload because it does not have the proper permissions on the directory.

Share this post


Link to post
Share on other sites
When running IIS you have to give the web account access to the folder you wish to write to. By default the web account is IUSR_[i]computername[/i]. You need to give this account modify access to the folder. when giving access you should also click advance and make sure you click the option to make it recursive.

Share this post


Link to post
Share on other sites
[quote author=craygo link=topic=99533.msg392567#msg392567 date=1152199413]
When running IIS you have to give the web account access to the folder you wish to write to. By default the web account is IUSR_[i]computername[/i]. You need to give this account modify access to the folder. when giving access you should also click advance and make sure you click the option to make it recursive.
[/quote]
Thanks, I have tried this - but it still fails to make any changes/difference at the moment. I've pretty much granted (as it's a local server, not available to the internet) everything access to everything in order to try and get it to work - all security settings on folders have been set to allow for modify (and the others that go with it), and still no joy.

Has reached the point that we are about to install linux on a partition instead - as to be honest, working with windows has been non stop headaches from day one...

Many thanks for putting things forward though, sadly its impossible to see whether I actually did things right or not, but I think i did :)

Share this post


Link to post
Share on other sites

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.