Page 1 of 1

upload image error

Posted: Fri Nov 17, 2006 5:57 am
by laughinglarry
JayBird | Please use

Code: Select all

,

Code: Select all

and [syntax="..."] tags where appropriate when posting code. Your post has been edited to reflect how we'd like it posted. Please read:  [url=http://forums.devnetwork.net/viewtopic.php?t=21171]Posting Code in the Forums[/url] to learn how to do it too.[/color]


Hi mate. Its Larry from your old workplace. 
I am fairly new to php. I am trying to do a php photo gallery at 
http://www.saytee.biz/dev/blake/image-gallery/ and things seems ok. However when I try to add an image in the admin section at http://www.saytee.biz/dev/blake/image-g ... =add-image I get the below error...

Code: Select all

Warning: move_uploaded_file(): open_basedir restriction in effect. File(/images/gallery/cba1545a7fb7fe212106c9d945d261df.jpg) is not within the allowed path(s): (/usr/local/psa/home/vhosts/saytee.biz/httpdocs:/tmp) in /usr/local/psa/home/vhosts/saytee.biz/httpdocs/dev/blake/image-gallery/library/functions.php on line 21
Error uploading file
Now, I have looked at line 21 ($result = move_uploaded_file($image['tmp_name'], $uploadDir . $imagePath);) of the functions.php code and can not find anything wrong. The whole code is listed below...
Basially, I lost. Does anyone know what the problem is? Is it to do with permissions on the folder?
Code of the functions.php page...

Code: Select all

<?php
/*
    Upload an image and create the thumbnail. The thumbnail is stored
    under the thumbnail sub-directory of $uploadDir.
    Return the uploaded image name and the thumbnail also.
*/
function uploadImage($inputName, $uploadDir)
{
    $image     = $_FILES[$inputName];
    $imagePath = 'images/gallery/';
    $thumbnailPath = 'thumbnail/';
    // if a file is given
    if (trim($image['tmp_name']) != '') {
        $ext = substr(strrchr($image['name'], "."), 1);
        // generate a random new file name to avoid name conflict
        // then save the image under the new file name
        $imagePath = md5(rand() * time()) . ".$ext";
        $result    = move_uploaded_file($image['tmp_name'], $uploadDir . $imagePath);
        if ($result) {
            // create thumbnail
            $thumbnailPath =  md5(rand() * time()) . ".$ext";
            $result = createThumbnail($uploadDir . $imagePath, $uploadDir . 'thumbnail/' . $thumbnailPath, THUMBNAIL_WIDTH);
            // create thumbnail failed, delete the image
            if (!$result) {
                unlink($uploadDir . $imagePath);
                $imagePath = $thumbnailPath = '';
            } else {
                $thumbnailPath = $result;
            }
        } else {
            // the image cannot be uploaded
            $imagePath = $thumbnailPath = '';
        }
    }

    return array('image' => $imagePath, 'thumbnail' => $thumbnailPath);
}
/*
    Create a thumbnail of $srcFile and save it to $destFile.
    The thumbnail will be $width pixels.
*/
function createThumbnail($srcFile, $destFile, $width, $quality = 75)
{
    $thumbnail = '';
    if (file_exists($srcFile)  && isset($destFile))
    {
        $size        = getimagesize($srcFile);
        $w           = number_format($width, 0, ',', '');
        $h           = number_format(($size[1] / $size[0]) * $width, 0, ',', '');
        $thumbnail =  copyImage($srcFile, $destFile, $w, $h, $quality);
    }
    // return the thumbnail file name on sucess or blank on fail
    return basename($thumbnail);
}
/*
    Copy an image to a destination file. The destination
    image size will be $w X $h pixels
*/
function copyImage($srcFile, $destFile, $w, $h, $quality = 75)
{
    $tmpSrc     = pathinfo(strtolower($srcFile));
    $tmpDest    = pathinfo(strtolower($destFile));
    $size       = getimagesize($srcFile);
    if ($tmpDest['extension'] == "gif" || $tmpDest['extension'] == "jpg")
    {
       $destFile  = substr_replace($destFile, 'jpg', -3);
       $dest      = imagecreatetruecolor($w, $h);
       //imageantialias($dest, TRUE);
    } elseif ($tmpDest['extension'] == "png") {
       $dest = imagecreatetruecolor($w, $h);
       //imageantialias($dest, TRUE);
    } else {
      return false;
    }
    switch($size[2])
    {
       case 1:       //GIF
           $src = imagecreatefromgif($srcFile);
           break;
       case 2:       //JPEG
           $src = imagecreatefromjpeg($srcFile);
           break;
       case 3:       //PNG
           $src = imagecreatefrompng($srcFile);
           break;
       default:
           return false;
           break;
    }
    imagecopyresampled($dest, $src, 0, 0, 0, 0, $w, $h, $size[0], $size[1]);
    switch($size[2])
    {
       case 1:
       case 2:
           imagejpeg($dest,$destFile, $quality);
           break;
       case 3:
           imagepng($dest,$destFile);
    }
    return $destFile;
}
/*
    Check if the user is logged in or not
*/
function checkLogin()
{
    if (!isset($_SESSION['isLogin']) || $_SESSION['isLogin'] == false) {
        header('Location: login.php');
        exit;
    }
}
/*
    Create the link for moving from one page to another
*/
function getPagingLink($totalResults, $pageNumber, $itemPerPage = 10, $strGet = '')
{
    $pagingLink    = '';
    $totalPages    = ceil($totalResults / $itemPerPage);
    // how many link pages to show
    $numLinks      = 10;
    // create the paging links only if we have more than one page of results
    if ($totalPages > 1) {
        $self = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] ;
        // print 'previous' link only if we're not
        // on page one
        if ($pageNumber > 1) {
            $page = $pageNumber - 1;
            if ($page > 1) {
                $prev = " <a href=\"$self?pageNum=$page&$strGet\">[Prev]</a> ";
            } else {
                $prev = " <a href=\"$self?$strGet\">[Prev]</a> ";
            }
            $first = " <a href=\"$self?$strGet\">[First]</a> ";
        } else {
            $prev  = ''; // we're on page one, don't show 'previous' link
            $first = ''; // nor 'first page' link
        }
        // print 'next' link only if we're not
        // on the last page
        if ($pageNumber < $totalPages) {
            $page = $pageNumber + 1;
            $next = " <a href=\"$self?pageNum=$page&$strGet\">[Next]</a> ";
            $last = " <a href=\"$self?pageNum=$totalPages&$strGet\">[Last]</a> ";
        } else {
            $next = ''; // we're on the last page, don't show 'next' link
            $last = ''; // nor 'last page' link
        }
        $start = $pageNumber - ($pageNumber % $numLinks) + 1;
        $end   = $start + $numLinks - 1;
        $end   = min($totalPages, $end);
        $pagingLink = array();
        for($page = $start; $page <= $end; $page++)    {
            if ($page == $pageNumber) {
                $pagingLink[] = " $page ";   // no need to create a link to current page
            } else {
                if ($page == 1) {
                    $pagingLink[] = " <a href=\"$self?$strGet\">$page</a> ";
                } else {
                    $pagingLink[] = " <a href=\"$self?pageNum=$page&$strGet\">$page</a> ";
                }
            }
        }
        $pagingLink = implode(' | ', $pagingLink);
        // return the page navigation link
        $pagingLink = $first . $prev . $pagingLink . $next . $last;
    }
    return $pagingLink;
}
/*
    Display the breadcrumb navigation on top of the gallery page
*/
function showBreadcrumb()
{
    if (isset($_GET['album'])) {
        $album = $_GET['album'];
        $sql  = "SELECT al_name
                 FROM tbl_album
                 WHERE al_id = $album";
        $result = mysql_query($sql) or die('Error, get album name failed. ' . mysql_error());
        $row = mysql_fetch_assoc($result);
        echo ' > <a href="index.php?page=list-image&album=' . $album . '">' . $row['al_name'] . '</a>';
        if (isset($_GET['image'])) {
            $image = $_GET['image'];
            $sql  = "SELECT im_title
                     FROM tbl_image
                     WHERE im_id = $image";
            $result = mysql_query($sql) or die('Error, get image name failed. ' . mysql_error());
            $row = mysql_fetch_assoc($result);
            echo ' > <a href="index.php?page=image-detail&album=' . $album . '&image=' . $image . '">' . $row['im_title'] . '</a>';
        }
    }
}
?>
Can anyone help?


JayBird | Please use

Code: Select all

,

Code: Select all

and [syntax="..."] tags where appropriate when posting code. Your post has been edited to reflect how we'd like it posted. Please read:  [url=http://forums.devnetwork.net/viewtopic.php?t=21171]Posting Code in the Forums[/url] to learn how to do it too.[/color]

Posted: Fri Nov 17, 2006 6:15 am
by volka
You passed /images/gallery/ to the function uploadImage(). But your provider does not allow you to access /images

Posted: Fri Nov 17, 2006 6:35 am
by JayBird
Read the following message, read it again, then read it one more time! :twisted:

JayBird | Please use

Code: Select all

,

Code: Select all

and [syntax="..."] tags where appropriate when posting code. Your post has been edited to reflect how we'd like it posted. Please read:  [url=http://forums.devnetwork.net/viewtopic.php?t=21171]Posting Code in the Forums[/url] to learn how to do it too.[/color]