Talha Bin Shakir
Talha Bin Shakir

Reputation: 2561

Image upload PHP

Here is my code;

<?php

 define ("MAX_SIZE","500"); 

 function getExtension($str) {
         $i = strrpos($str,".");
         if (!$i) { return ""; }
         $l = strlen($str) - $i;
         $ext = substr($str,$i+1,$l);
         return $ext;
 }

 $errors=0;
 if(isset($_POST['Submit'])) 
 {

    $image=$_FILES['image']['name'];
    if ($image) 
    {
        $filename = stripslashes($_FILES['image']['name']);

        $extension = getExtension($filename);
        $extension = strtolower($extension);

 if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif")) 
        {
        //print error message
            echo '<h1>Unknown extension!</h1>';
            $errors=1;
        }
        else
        {

 $size=filesize($_FILES['image']['tmp_name']);

if ($size > MAX_SIZE*1024)
{
    echo '<h1>You have exceeded the size limit!</h1>';
    $errors=1;
}

$image_name=time().'.'.$extension;
$newname="user_img/".$image_name;
$copied = copy($_FILES['image']['tmp_name'], $newname);
if (!$copied) 
{
    echo '<h1>Copy unsuccessful!</h1>';
    $errors=1;
}}}}

 if(isset($_POST['Submit']) && !$errors) 
 {
    echo "<h1>File Uploaded Successfully! Try again!</h1>";
 }

?>

This is working fine at my localhost but when i uploaded it on server it wont works at all and not showing any error as well just showing message of unsuccessful. Whats could be the problem and solution Thanks

Upvotes: 0

Views: 542

Answers (6)

Natrium
Natrium

Reputation: 31204

you prolly need to chmod the folder you are uploading to in order to get the proper permissions

You can do this very easy with FileZilla.

Upvotes: 2

Steve Claridge
Steve Claridge

Reputation: 11090

Apart from checking file permission:

  1. I've always used move_uploaded_file() rather than copy()
  2. Your destination file is "user_img/".$image_name - is that relative directory valid on your server as well as localhost? You may want to convert to a fully qualified path

Upvotes: 0

Corey Ballou
Corey Ballou

Reputation: 43537

You might also consider using the absolute path to your user_img folder which would alleviate any issues regarding the actual relative path to the folder:

$newname="user_img/".$image_name;

switches to:

$newname="/path/to/www/user_img/".$image_name;

Upvotes: 0

Alex Sexton
Alex Sexton

Reputation: 10451

This is likely a permissions error, make sure you have adequate permissions for the user that php runs on in the directory that you writing the images. Another possibility is that you are exceeding the maximum POST size that is set in your php.ini file.

Upvotes: 0

TheHippo
TheHippo

Reputation: 63179

There could be several issues:

  • at first make sure you have error_reporting enabled, to see errors if they appear
  • check you php settings: file_uploads, upload_max_filesize (description)
  • check the permissions for the folder you want to write the files
  • also try move_uploaded_file function

Upvotes: 0

Check that the user your script is running as on your host has permission to write to the user_img directory.

Upvotes: 0

Related Questions