• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 527
  • Last Modified:


I have a script that i'm writing for an image upload website that will host images and give the user back a URL where they can be linked to at. The URL will be the Image ID in the Database. Here is my script:

                  // 1. Get largest ID from DB.

                  $sql      =      "SELECT * FROM FILE_UPLOADS ORDER BY ID DESC LIMIT 1";
                  $result      =      mysql_query($sql);
                  $DirNum =      mysql_fetch_assoc($result);                  

                  // 2. Increment the ID returned by 1 and save into variable $DirID.
                  $CurrentID = $DirNum['ID'];
                  $DirID      =      $CurrentID + 1;
                  // 3. On the file share, MkDir with the name contained in $DirID.
                  $oldmask = umask(0);
                  mkdir ("/" . $DirID);
                  umask ($oldmask);
                  // 4. Upload the file to the new $DirID directory.
                  $filename = $HTTP_POST_FILES['userfile']['name'];
                  if ( $userfile == "none" )
                        echo "Problem: No file uploaded";
                  if ( $userfile_size == 0 )
                        echo "Problem: Uploaded File is Zero Length";
                  if ( $userfile_type != "image/gif" || $userfile_type != "image/jpg" )
                        echo "Problem: File is not a valid JPG or GIF file";
                  if ( !is_uploaded_file($userfile) )
                        echo "Problem: File already exists in this directory.";

                  $tempfile = $HTTP_POST_FILES['userfile']['tmp_name'];
                  $destination = $DirID . "/" . $HTTP_POST_FILES['userfile']['name'];
                  if ( !copy($tempfile, $destination))
                        echo "Problem: Could not move file into this directory";
                  // 5. Save this new index.php file into the new $DirID directory.
                  $original      =      "/templates/index.php";
                  $new            =      "/" . $DirID . "/index.php";
                  copy ($original, $new);                  
                  // 6. Create and write a new file named "index.php" in the $DirID folder that displays the uploaded file from userfile.
                  $fp      =      "/" . $DirID . "/index.php";
                  $descriptor            =      fopen ($fp, "w+");
                  $image                  =      $HTTP_POST_FILES['userfile']['name'];
                  $content            =      do_index_output($DirID, $image);
                  fwrite($fp, $content);
                  // 7. Build the URL and store the URL and ID # in the DB.
                  $filename      =      $HTTP_POST_FILES['userfile']['name'];                  
                  $url            =      "http://www.diverse-networks.com/" . $DirID;
                  $sql2            =      "INSERT into FILE_UPLOADS ('ID', 'url', 'filename') VALUES('$DirID', '$url', '$filename')";
                  $result            =      mysql_query($sql2);
                  // 8. Return URL to screen for user to log.
                        echo "Problem with storing new Image in the Database.";
                        echo "Your image was uploaded successfully and can be found at: " . $url;

When I click the upload button on the form, I get this error message:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/diverse/public_html/friz/upload.php on line 8

Warning: mkdir(): open_basedir restriction in effect. File(/1) is not within the allowed path(s): (/home/diverse:/usr/lib/php:/usr/local/lib/php:/tmp) in /home/diverse/public_html/friz/upload.php on line 17
Problem: Uploaded File is Zero Length



  • 3
  • 2
1 Solution
Muhammad WasifCommented:
what are the lines 8 and 17?
UmeshMySQL Principle Technical Support EngineerCommented:

First check whether the mysql is returning any values...

Change this line
    mkdir ("/" . $DirID);
mkdir("/".$DirID,0755); // try with this also mkdir("/" . $DirID,0777);

Hope this helps!
Lance_FrisbeeAuthor Commented:
$DirNum =     mysql_fetch_assoc($result); // THAT IS LINE 8
mkdir ("/" . $DirID); // THAT IS LINE 17

ushastry: I originally coded this script using mkdir("/" . $DirID, 0777);

Same result though. I'll give 0755 a try.

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

UmeshMySQL Principle Technical Support EngineerCommented:
Hi Lance_Frisbee,

Before creatign direcory check the current working directory..& prefix that path to the

Try this ..

$currDir = getcwd();
mkdir("$curDir/$DirID", 0777);

Also please check this link..

Lance_FrisbeeAuthor Commented:
My apologies on the delay... I haven't had time to get to this. I'm posting just to keep the question active. I'll reply soon.


Lance_FrisbeeAuthor Commented:
Alright... during my absence, a solution has been found. I didn't CHMOD my folders and I also was trying to create these folders in the root directory. I just re-coded where i was creating these ID folders to an "upload" folder and it works.

Because of the long delay, I will award the points anyways to Ushastry... Thank you for your patience, and I again apologize for the delay.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now