ftp.php program

 
Post new topic   Reply to topic    Aprelium Forum Index -> PHP
View previous topic :: View next topic  
Author Message
toomyg155
-


Joined: 03 May 2007
Posts: 47

PostPosted: Sat Apr 12, 2008 11:37 am    Post subject: ftp.php program Reply with quote

I was checking out a ftp program that is made with PHP below it worked good for couple times then I get the "HTTP 500 Internal Server Error" and I checked my server logs and found in the cgi.log this error
"CGI: ["C:\Program Files\PHP5\php-cgi.exe" ftp.php ] URI: /ftp.php Broken pipe"
I tried to email the author of the program but got no reply and the strange thing is my forum and every other php type page on my site works fine just this program stopped my powered by Abyss is here the idea for this program was to let people upload pictures the thing they were going to sell and like I said it worked really good afew time then it crapped out. Can anyone see what happened with this code below? I tried looking it over but I'm very new when it comes to figuring out php


Thanks for any help
Tom

Code:
<?php

/* $Id: ftp.php,v 2.2 2002/03/12 23:21:28 pauls Exp $ */

/* This software came from http://inebria.com/ */

/* Copyright (c) 2000
      Paul Southworth.  All rights reserved.

 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions
 are met:
 1. Redistributions of source code must retain the above copyright
    notice, this list of conditions and the following disclaimer.
 2. Redistributions in binary form must reproduce the above copyright
    notice, this list of conditions and the following disclaimer in the
    documentation and/or other materials provided with the distribution.
 3. The name of the author may not be used to endorse or promote
    products derived from this software without specific prior
    written permission.

 THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
 OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
 DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
 GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
 OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */

/* Configuration Options */

$phpftp_host="localhost";
$phpftp_version="2.2";

/* Comment this out if you don't want the version footer */

$show_version_footer=0;

/* How large a file will you accept?  You may also need to edit your
   php.ini file and change upload_max_filesize appropriately */

$max_file_size="1000000";

/* The temporary directory $phpftp_tmpdir must exist and be writable
   by your web server.
   Hint:  mkdir /var/tmp/xfers && chmod 1777 /var/tmp/xfers */



/* $use_mime_lookup
   Turning this on creates a dependency upon the
   http://www.inebria.com/mime_lookup/ MIME type lookup library.
   Setting this variable to "1" enables it.  "0" disables.
   If you turn it on, put the mime_lookup.php file in the same directory
   as ftp.php and uncomment the 'include("mime_lookup.php");' statement. */

$use_mime_lookup="0";
/* include("mime_lookup.php"); */

/* We enclose the top and bottom in functions because sometimes
   we might not send them (ie, in a file-download situation) */

function phpftp_top() {
   global $phpftp_version;
?>
<!-- function phpftp_top -->
<html>
<head>
<title>PHP FTP Client <?php echo $phpftp_version; ?></title>
</head>
<body bgcolor="#ffffff">
<?php
}

function phpftp_bottom() {
   global $phpftp_version;
   global $show_version_footer;
?>
<!-- function phpftp_bottom -->
<?php
if (isset($show_version_footer)) {
?>
<p><font size=-2>This is <a href="http://inebria.com/phpftp/">PHP FTP</a>
version <?php echo $phpftp_version; ?></font></p>
<?php
}
?>
</body>
</html>
<?php
}

/* This is the form used for initially collecting username/passwd */

function phpftp_login() {
   phpftp_top();
?>
<!-- function phpftp_login -->
<p>
<form action="ftp.php" method=post>
<p><table border=0>
<tr><td>
Login:
</td><td>
<input name="phpftp_user" type="text">
</td></tr>
<tr><td>
Password:
</td><td>
<input name="phpftp_passwd" type="password">
</td></tr>
<tr><td>
Directory:
</td><td>
<input name="phpftp_dir" type="text">
</td></tr>
</table>
</p><p>
<input type="hidden" name="function" value="dir">
<input type="submit" value="connect">
</p>
</form>
<p>
<?php
   phpftp_bottom();
}

/* This function does not return TRUE/FALSE - it returns the value of
   $ftp, the current FTP stream. */

function phpftp_connect($phpftp_user,$phpftp_passwd) {
   global $phpftp_host;
   $ftp = ftp_connect($phpftp_host);
   if ($ftp) {
      if (ftp_login($ftp,$phpftp_user,urldecode($phpftp_passwd))) {
         return $ftp;
      }
   }
}

function phpftp_list($phpftp_user,$phpftp_passwd,$phpftp_dir) {
   global $phpftp_host;
   phpftp_top();
?>
<!-- function phpftp_list -->
<?php
   $ftp = @phpftp_connect($phpftp_user,$phpftp_passwd);
   if (!$ftp) {
?>
<strong>FTP login failed!</strong>
<a href="ftp.php">Start over?</a>
<?php
      phpftp_bottom();
   } else {
      if (!$phpftp_dir) {
         $phpftp_dir=ftp_pwd($ftp);
      }
      if (!@ftp_chdir($ftp,$phpftp_dir)) {
?>
<font color="#ff0000"><strong>Can't enter that directory!</strong></font><p><p>
<?php
         $phpftp_dir=ftp_pwd($ftp);
      }
      echo "<strong>Current host:</strong> " . $phpftp_host . "<br>\n";
      echo "<strong>Current directory:</strong> " . $phpftp_dir . "<br>\n";
      if ($phpftp_dir == "/") {
         $phpftp_dir="";
      }

      if ($contents = ftp_rawlist($ftp,"")) {
         $d_i=0;
         $f_i=0;
         $l_i=0;
         $i=0;
         while ($contents[$i]) {
            $item[] = split("[ ]+",$contents[$i],9);
            $item_type=substr($item[$i][0],0,1);
            if ($item_type == "d") {
               /* it's a directory */
               $nlist_dirs[$d_i]=$item[$i][8];
               $d_i++;
            } elseif ($item_type == "l") {
               /* it's a symlink */
               $nlist_links[$l_i]=$item[$i][8];
               $l_i++;
            } elseif ($item_type == "-") {
               /* it's a file */
               $nlist_files[$f_i]=$item[$i][8];
               $nlist_filesize[$f_i]=$item[$i][4];
               $f_i++;
            } elseif ($item_type == "+") {
               /* it's something on an anonftp server */
               $eplf=split(",",implode(" ",$item[$i]),5);
               if ($eplf[2] == "r") {
                  /* it's a file */
                  $nlist_files[$f_i]=trim($eplf[4]);
                  $nlist_filesize[$f_i]=substr($eplf[3],1);
                  $f_i++;
               } elseif ($eplf[2] == "/") {
                  /* it's a directory */
                  $nlist_dirs[$d_i]=trim($eplf[3]);
                  $d_i++;
               }
            } /* ignore all others */
            $i++;
         }
?>
<table border=0 cellspacing=20>
<?php
         if (count($nlist_dirs)>0) {
?>
<tr><td align=left valign=top>
<strong>Directories</strong><br>
<form action="ftp.php" method=post>
<input type="hidden" name="function" value="cd">
<input type="hidden" name="phpftp_user" value="<?php echo $phpftp_user; ?>">
<input type="hidden" name="phpftp_passwd" value="<?php echo $phpftp_passwd; ?>">
<input type="hidden" name="phpftp_dir" value="<?php echo $phpftp_dir; ?>">
<select name="select_directory" size="10" width="100">
<?php
            for ($i=0; $i < count($nlist_dirs); $i++) {
               echo "<option value=\"" . $nlist_dirs[$i] . "\">" . $nlist_dirs[$i] . "</option>\n";
            }
?>
</select><br>
<input type="submit" value="Enter Directory">
</form>
</td>
<?php
         }

         if (count($nlist_files)>0) {
?>
<td align=left valign=top>
<strong>Files</strong><br>
<form action="ftp.php" method=post>
<input type="hidden" name="function" value="get">
<input type="hidden" name="phpftp_user" value="<?php echo $phpftp_user; ?>">
<input type="hidden" name="phpftp_passwd" value="<?php echo $phpftp_passwd; ?>">
<input type="hidden" name="phpftp_dir" value="<?php echo $phpftp_dir; ?>">
<select name="select_file" size="10">
<?php
            for ($i=0; $i < count($nlist_files); $i++) {
               echo "<option value=\"" . $nlist_files[$i] . "\">" . $nlist_files[$i] ."  ($nlist_filesize[$i] bytes)". "</option>\n";
            }
?>
</select><br>
<input type="submit" value="Download File">
</form>
</td></tr>
<?php
         }
      } else {
?>
<p><font color="#ff0000"><strong>Directory empty or not readable</strong></font><p>
<?php
      }
?>
</table>
<p>
<form action="ftp.php" method=post>
<?php
      $cdup=dirname($phpftp_dir);
      if ($cdup == "") {
         $cdup="/";
      }
?>
<input type="hidden" name="function" value="dir">
<input type="hidden" name="phpftp_user" value="<?php echo $phpftp_user; ?>">
<input type="hidden" name="phpftp_passwd" value="<?php echo $phpftp_passwd; ?>">
<input type="hidden" name="phpftp_dir" value="<?php echo $cdup; ?>">
<input type="submit" value="Go up one directory">
</form>
<p>
<form enctype="multipart/form-data" action="ftp.php" method=post>
<input type="hidden" name="max_file_size" value="<?php echo $max_file_size ?>">
<input type="hidden" name="phpftp_user" value="<?php echo $phpftp_user; ?>">
<input type="hidden" name="phpftp_passwd" value="<?php echo $phpftp_passwd; ?>">
<input type="hidden" name="phpftp_dir" value="<?php echo $phpftp_dir; ?>">
<input type="hidden" name="function" value="put">
<input type="submit" value="Upload this:">
<input name="userfile" type="file">
</form>
<p>
<form action="ftp.php" method=post>
<input type="hidden" name="function" value="mkdir">
<input type="hidden" name="phpftp_user" value="<?php echo $phpftp_user; ?>">
<input type="hidden" name="phpftp_passwd" value="<?php echo $phpftp_passwd; ?>">
<input type="hidden" name="phpftp_dir" value="<?php echo $phpftp_dir; ?>">
<input type="submit" value="Make subdirectory:">
<input name="new_dir" type="text">
<?php
      ftp_quit($ftp);
      phpftp_bottom();
   }
}

function phpftp_cd($phpftp_user,$phpftp_passwd,$phpftp_dir,$select_directory) {
?>
<!-- function phpftp_cd -->
<?php
   $new_directory=$phpftp_dir . "/" . $select_directory;
   phpftp_list($phpftp_user,$phpftp_passwd,$new_directory);
}

function phpftp_mkdir($phpftp_user,$phpftp_passwd,$phpftp_dir,$new_dir) {
?>
<!-- function phpftp_mkdir -->
<?php
   $ftp = @phpftp_connect($phpftp_user,$phpftp_passwd);
   if ($phpftp_dir == "") {
      $phpftp_dir="/";
   }
   if (!$ftp) {
      @ftp_quit($ftp);
      phpftp_top();
?>
<font color="#ff0000"><strong>FTP login failed!</strong></font><p><p>
<a href="ftp.php">Start over?</a>
<?php
      phpftp_bottom();
   } else {
      $dir_path = $phpftp_dir . "/" . $new_dir;
      @ftp_mkdir($ftp,$dir_path);
      @ftp_quit($ftp);
      phpftp_list($phpftp_user,$phpftp_passwd,$phpftp_dir);
   }
};
   

function phpftp_get($phpftp_user,$phpftp_passwd,$phpftp_dir,$select_file) {
   $ftp = @phpftp_connect($phpftp_user,$phpftp_passwd);
   if ($phpftp_dir == "") {
      $phpftp_dir="/";
   }
   if ((!$ftp) || (!@ftp_chdir($ftp,$phpftp_dir))) {
      @ftp_quit($ftp);
      phpftp_top();
?>
<font color="#ff0000"><strong>FTP login failed!</strong></font><p><p>
<a href="ftp.php">Start over?</a>
<?php
      phpftp_bottom();
   } else {
      srand((double)microtime()*1000000);
      $randval = rand();
      $tmpfile=$phpftp_tmpdir . "/" . $select_file . "." . $randval;
      if (!ftp_get($ftp,$tmpfile,$select_file,FTP_BINARY)) {
         ftp_quit($ftp);
         phpftp_top();
?>
<font color="#ff0000"><strong>FTP get failed!</strong></font><p><p>
<a href="ftp.php">Start over?</a>
<?php
         phpftp_bottom();
      } else {
         ftp_quit($ftp);
         global $use_mime_lookup;
         if ($use_mime_lookup == "1") {
            $file_mime_type=mime_lookup(substr(strrchr($select_file,"."),1));
         }
         if (!$file_mime_type) {
            $file_mime_type="application/octet-stream";
         }
         header("Content-Type: " . $file_mime_type);
         header("Content-Disposition: attachment; filename=" . $select_file);
         readfile($tmpfile);
      }
      @unlink($tmpfile);
   }
}

function phpftp_put($phpftp_user,$phpftp_passwd,$phpftp_dir,$userfile,$userfile_name) {
   srand((double)microtime()*1000000);
   $randval = rand();
   $tmpfile=$phpftp_tmpdir . "/" . $userfile_name . "." . $randval;
   if (!@move_uploaded_file($userfile,$tmpfile)) {
      phpftp_top();
?>
<font color="#ff0000"><strong>Upload failed!  Can't create temp file?</strong></font>
<p><p>
<a href="ftp.php">Start over?</a>
<?php
      phpftp_bottom();
   } else {
      if (!$ftp = @phpftp_connect($phpftp_user,$phpftp_passwd)) {
         unlink($tmpfile);
         phpftp_top();
?>
<font color="#ff0000"><strong>FTP login failed!</strong></font><p><p>
<a href="ftp.php">Start over?</a>
<?php
         phpftp_bottom();
      } else {
         ftp_chdir($ftp,$phpftp_dir);
         ftp_put($ftp,$userfile_name,$tmpfile,FTP_BINARY);
         ftp_quit($ftp);
         unlink($tmpfile);
         phpftp_list($phpftp_user,$phpftp_passwd,$phpftp_dir);
      }
   }
}

switch($function) {
   case "dir";
      phpftp_list($phpftp_user,$phpftp_passwd,$phpftp_dir);
      break;
   case "cd";
      phpftp_cd($phpftp_user,$phpftp_passwd,$phpftp_dir,$select_directory);
      break;
   case "get";
      phpftp_get($phpftp_user,$phpftp_passwd,$phpftp_dir,$select_file);
      break;
   case "put";
      phpftp_put($phpftp_user,$phpftp_passwd,$phpftp_dir,$userfile,$userfile_name);
      break;
   case "mkdir";
      phpftp_mkdir($phpftp_user,$phpftp_passwd,$phpftp_dir,$new_dir);
      break;
   case "";
      phpftp_login();
      break;
}
 
?>

Back to top View user's profile Send private message
Toasty
-


Joined: 21 Feb 2008
Posts: 298
Location: Chicago, IL

PostPosted: Sat Apr 12, 2008 3:29 pm    Post subject: Reply with quote

What URL caused this (with what variables on the end)?

Generally a 500 error is a malformed URL...
_________________
Audit the secure configuration of your server headers!
Back to top View user's profile Send private message Visit poster's website
toomyg155
-


Joined: 03 May 2007
Posts: 47

PostPosted: Sat Apr 12, 2008 3:42 pm    Post subject: Reply with quote

It was http://tomswebplace.dyndns.org/ftp.php but I removed it from my htdocs folder because it stopped working.

Hope this is what you mean.
Back to top View user's profile Send private message
aprelium
-


Joined: 22 Mar 2002
Posts: 6800

PostPosted: Fri Apr 18, 2008 5:49 pm    Post subject: Re: ftp.php program Reply with quote

toomyg155,

Are other PHP scripts working? If so, do you get error 500 after a delay or immediately after browsing the script? Have you enabled the FTP extension in PHP?
_________________
Support Team
Aprelium - http://www.aprelium.com
Back to top View user's profile Send private message Send e-mail
toomyg155
-


Joined: 03 May 2007
Posts: 47

PostPosted: Fri Apr 18, 2008 8:19 pm    Post subject: Re: ftp.php program Reply with quote

aprelium wrote:
toomyg155,

Are other PHP scripts working? If so, do you get error 500 after a delay or immediately after browsing the script? Have you enabled the FTP extension in PHP?


Everything else works but the ftp program but funny thing is it did work for awhile! How do I enable FTP in PHP?
Back to top View user's profile Send private message
aprelium
-


Joined: 22 Mar 2002
Posts: 6800

PostPosted: Mon Apr 21, 2008 4:43 pm    Post subject: Re: ftp.php program Reply with quote

toomyg155 wrote:
Everything else works but the ftp program but funny thing is it did work for awhile! How do I enable FTP in PHP?


To enable the FTP extension in PHP, please follow the instructions in the last section "Notes about php.ini" in http://www.aprelium.com/abyssws/php5win.html .
_________________
Support Team
Aprelium - http://www.aprelium.com
Back to top View user's profile Send private message Send e-mail
toomyg155
-


Joined: 03 May 2007
Posts: 47

PostPosted: Mon Apr 21, 2008 9:32 pm    Post subject: Re: ftp.php program Reply with quote

aprelium wrote:
toomyg155 wrote:
Everything else works but the ftp program but funny thing is it did work for awhile! How do I enable FTP in PHP?


To enable the FTP extension in PHP, please follow the instructions in the last section "Notes about php.ini" in http://www.aprelium.com/abyssws/php5win.html .



I tried that and could not find anything todo with FTPing and I checked my PHPinfo and it says it is enabled.
Back to top View user's profile Send private message
aprelium
-


Joined: 22 Mar 2002
Posts: 6800

PostPosted: Tue Apr 22, 2008 4:15 pm    Post subject: Re: ftp.php program Reply with quote

toomyg155,

Do you get error 500 after a delay or immediately after browsing the script?
Are there errors in your cgi.log and/or fastcgi.log files?
_________________
Support Team
Aprelium - http://www.aprelium.com
Back to top View user's profile Send private message Send e-mail
toomyg155
-


Joined: 03 May 2007
Posts: 47

PostPosted: Tue Apr 22, 2008 9:16 pm    Post subject: Re: ftp.php program Reply with quote

aprelium wrote:
toomyg155,

Do you get error 500 after a delay or immediately after browsing the script?
Are there errors in your cgi.log and/or fastcgi.log files?



Yes there is big delay in the error showing up and the errors show up in the cgi.log.
Back to top View user's profile Send private message
aprelium
-


Joined: 22 Mar 2002
Posts: 6800

PostPosted: Wed Apr 23, 2008 11:06 am    Post subject: Re: ftp.php program Reply with quote

toomyg155 wrote:
aprelium wrote:
toomyg155,

Do you get error 500 after a delay or immediately after browsing the script?
Are there errors in your cgi.log and/or fastcgi.log files?



Yes there is big delay in the error showing up and the errors show up in the cgi.log.


So error 500 is here caused by a timeout. By default Abyss Web Server will wait for 30 seconds for a CGI script to run. PHP enforces another limit on its own and is controlled through a parameter in php.ini.

Since FTP operations can take a relatively long time, it recommended to increase these timeout values.

Abyss Web Server's is in "Scripting Parameters" > CGI Parameters. PHP's is the parameter max_execution_time in php.ini.
_________________
Support Team
Aprelium - http://www.aprelium.com
Back to top View user's profile Send private message Send e-mail
toomyg155
-


Joined: 03 May 2007
Posts: 47

PostPosted: Sun Apr 27, 2008 1:13 pm    Post subject: Reply with quote

Thanks I'll let you know when I try it again thanks for the help!


EDIT: No it didnt work but thanks anyways
Back to top View user's profile Send private message
aprelium
-


Joined: 22 Mar 2002
Posts: 6800

PostPosted: Wed Apr 30, 2008 2:30 pm    Post subject: Reply with quote

toomyg155 wrote:
EDIT: No it didnt work but thanks anyways


Th other end of the connection (the FTP server) may be having problems or is probably closing the connection for some reason. Your script does not seem to handle error cases and thus remains silent when such failures occur (in which case, nothing is sent back to Abyss, which at its turn reports Error 500).
_________________
Support Team
Aprelium - http://www.aprelium.com
Back to top View user's profile Send private message Send e-mail
toomyg155
-


Joined: 03 May 2007
Posts: 47

PostPosted: Thu May 01, 2008 12:25 am    Post subject: Reply with quote

Hmm thats one thing I didn't think of was the server it self and I use or should say USED Cerberus FTP Server so I found another I had heard about FileZilla and tried it and the program works :) so all this time I had thought it was the PHP it self and it was not


Thanks for all the help in this matter
Back to top View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Aprelium Forum Index -> PHP All times are GMT + 1 Hour
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB phpBB Group