Lance_Frisbee
asked on
UPLOAD SCRIPT (MKDIR)
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:
<?php
require("db_fns.php");
// 1. Get largest ID from DB.
db_connect();
$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";
exit;
}
if ( $userfile_size == 0 )
{
echo "Problem: Uploaded File is Zero Length";
exit;
}
if ( $userfile_type != "image/gif" || $userfile_type != "image/jpg" )
{
echo "Problem: File is not a valid JPG or GIF file";
exit;
}
if ( !is_uploaded_file($userfil e) )
{
echo "Problem: File already exists in this directory.";
exit;
}
$tempfile = $HTTP_POST_FILES['userfile ']['tmp_na me'];
$destination = $DirID . "/" . $HTTP_POST_FILES['userfile ']['name'] ;
if ( !copy($tempfile, $destination))
{
echo "Problem: Could not move file into this directory";
exit;
}
// 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.
if(!result)
{
echo "Problem with storing new Image in the Database.";
}
else
{
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/uploa d.php on line 8
Warning: mkdir(): open_basedir restriction in effect. File(/1) is not within the allowed path(s): (/home/diverse:/usr/lib/ph p:/usr/loc al/lib/php :/tmp) in /home/diverse/public_html/ friz/uploa d.php on line 17
Problem: Uploaded File is Zero Length
WHAT IS IT THAT I'M DOING WRONG?
Thanks,
Lance
<?php
require("db_fns.php");
// 1. Get largest ID from DB.
db_connect();
$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
if ( $userfile == "none" )
{
echo "Problem: No file uploaded";
exit;
}
if ( $userfile_size == 0 )
{
echo "Problem: Uploaded File is Zero Length";
exit;
}
if ( $userfile_type != "image/gif" || $userfile_type != "image/jpg" )
{
echo "Problem: File is not a valid JPG or GIF file";
exit;
}
if ( !is_uploaded_file($userfil
{
echo "Problem: File already exists in this directory.";
exit;
}
$tempfile = $HTTP_POST_FILES['userfile
$destination = $DirID . "/" . $HTTP_POST_FILES['userfile
if ( !copy($tempfile, $destination))
{
echo "Problem: Could not move file into this directory";
exit;
}
// 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
$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
$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.
if(!result)
{
echo "Problem with storing new Image in the Database.";
}
else
{
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/
Warning: mkdir(): open_basedir restriction in effect. File(/1) is not within the allowed path(s): (/home/diverse:/usr/lib/ph
Problem: Uploaded File is Zero Length
WHAT IS IT THAT I'M DOING WRONG?
Thanks,
Lance
what are the lines 8 and 17?
Hi,
First check whether the mysql is returning any values...
Change this line
mkdir ("/" . $DirID);
with
mkdir("/".$DirID,0755); // try with this also mkdir("/" . $DirID,0777);
Hope this helps!
First check whether the mysql is returning any values...
Change this line
mkdir ("/" . $DirID);
with
mkdir("/".$DirID,0755); // try with this also mkdir("/" . $DirID,0777);
Hope this helps!
ASKER
$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.
Thanks.
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.
Thanks.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
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.
Thanks
Lance
Thanks
Lance
ASKER
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.
Lance
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.
Lance