PHP Upload Not Working... $_FILES is empty

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
hago325
Forum Newbie
Posts: 2
Joined: Wed Mar 26, 2008 7:20 pm

PHP Upload Not Working... $_FILES is empty

Post by hago325 »

Hello everyone... I am not a PHP expert but I can understand some code from the language.
I am trying to do a simple file upload on a server (not local). My code works locally but once I put it on the server it does not work.

I know for a fact that $_FILES is empty because I did a var_dump and nothing showed up.
My form does have the enctpye="multipart\data-form". I have been searching all over for the solution to this problem and I can not find it. I believe that it is a server/settings problem but I am not sure.

Here is my form upload.html:

Code: Select all

<html>
<head>
</head>
<body>
<form action="./upload.php" method="post" enctype="multipart/form-data">
   <p>
      <label for="file">Select a file:</label> <input type="file" name="userfile" id="file"> <br />
      <button>Upload File</button>
   <p>
</form>
</body>
</html>
And here is my PHP script (upload.php):

Code: Select all

<?php
   // Configuration - Your Options
      $allowed_filetypes = array('.jpg','.gif','.bmp','.png'); // These will be the types of file that will pass the validation.
      $max_filesize = 524288; // Maximum filesize in BYTES (currently 0.5MB).
      $upload_path = './filed/'; // The place the files will be uploaded to (currently a 'files' directory).
 
if(empty($_FILES))
  echo "The file is empty...";
    else
    echo "The file was sent";
 
   $filename = $_FILES['userfile']['name']; // Get the name of the file (including file extension).
   $ext = substr($filename, strpos($filename,'.'), strlen($filename)-1); // Get the extension from the filename.
 
   // Check if the filetype is allowed, if not DIE and inform the user.
   if(!in_array($ext,$allowed_filetypes))
      die('The file you attempted to upload is not allowed.');
 
   // Now check the filesize, if it is too large then DIE and inform the user.
   if(filesize($_FILES['userfile']['tmp_name']) > $max_filesize)
      die('The file you attempted to upload is too large.');
 
   // Check if we can upload to the specified path, if not DIE and inform the user.
   if(!is_writable($upload_path))
      die('You cannot upload to the specified directory, please CHMOD it to 777.');
 
   // Upload the file to your specified path.
   if(move_uploaded_file($_FILES['userfile']['tmp_name'],$upload_path . $filename))
         echo 'Your file upload was successful, view the file <a href="' . $upload_path . $filename . '" title="Your File">here</a>'; // It worked.
      else
         echo 'There was an error during the file upload.  Please try again.'; // It failed :(.
?>
Edit: I am getting the following error:
[client 216.40.45.131] PHP Notice: Undefined index: userfile in /var/www/vhosts/eightcrown.com/httpdocs/admin/upload.php on line 12
samb0057
Forum Commoner
Posts: 27
Joined: Wed Mar 26, 2008 9:51 am

Re: PHP Upload Not Working... $_FILES is empty

Post by samb0057 »

It's probably the Apache or PHP settings on maximum uploaded file size, these can cause silent failures.
thaynejo
Forum Newbie
Posts: 14
Joined: Tue Apr 01, 2008 9:06 am

Re: PHP Upload Not Working... $_FILES is empty

Post by thaynejo »

You also should alter your first if statement as follows:

Code: Select all

if(empty($_FILES))
die('The file you attempted to upload is not allowed.');
    else
    echo "The file was sent";
That way you do not try to access the empty array. Another option would be:

Code: Select all

if(empty($_FILES))
header("Location: upload.html");
    else
    echo "The file was sent";
This option will redirect you to the upload form. Just make sure you don't output anything to the screen before running this command. :wink:
samb0057 wrote:It's probably the Apache or PHP settings on maximum uploaded file size, these can cause silent failures.
I believe he is correct in this that you need to check the maximum size value in both Apache and PHP on the server.
hago325
Forum Newbie
Posts: 2
Joined: Wed Mar 26, 2008 7:20 pm

Re: PHP Upload Not Working... $_FILES is empty

Post by hago325 »

Thanks for the replies... The only problem is that I am using IYD.com and they have not responded to my ticket yet. I checked the values using phpinfo() and the maxfilesize is fine.
I can't edit the php.ini because I don't have access to the server.
thaynejo
Forum Newbie
Posts: 14
Joined: Tue Apr 01, 2008 9:06 am

Re: PHP Upload Not Working... $_FILES is empty

Post by thaynejo »

hago325 wrote:Thanks for the replies... The only problem is that I am using IYD.com and they have not responded to my ticket yet. I checked the values using phpinfo() and the maxfilesize is fine.
I can't edit the php.ini because I don't have access to the server.
Let us know what you hear from IYD, and we can go further from there.
Post Reply