duanpin2034 2015-06-27 15:45
浏览 466
已采纳

使用php imagejpeg创建缩略图 - 获取错误“无法打开流:权限被拒绝”

I am trying to create thumbnail of previously uploaded images using this function.

Original images are uploaded to mysite/used_uploads and thumbnails should be created at mysite/used_uploads_thb.

The thumbnail function is triggered directly after upload of the original.

I have also changed permissions with the directory, as follows, but the problem persists.

chmod("used_uploads_thb", 0777);

The directories are as follows:

mysite/used_uploads

mysite/used_uploads_thb

This is the whole script. The last step is giving the above error.

<?php
$src = substr($filePath, 1);

//$src example: used_uploads/252-558ec2e5dc45c-alfa-romeo-giulia - 2.jpg
chmod("used_uploads_thb", 0777);

$dest = '/used_uploads_thb';
$desired_width="100";

function make_thumb($src, $dest, $desired_width) {

/* read the source image */    
    $source_image = imagecreatefromjpeg($src);

$width = imagesx($source_image);
$height = imagesy($source_image);
/* find the "desired height" of this thumbnail, relative to the desired width  */
$desired_height = floor($height * ($desired_width / $width));

/* create a new, "virtual" image */
$virtual_image = imagecreatetruecolor($desired_width, $desired_height);

/* copy source image at a resized size */
imagecopyresampled($virtual_image, $source_image, 0, 0, 0, 0, $desired_width, $desired_height, $width, $height);

/* create the physical thumbnail image to its destination */
imagejpeg($virtual_image, $dest);
                  print_r(error_get_last());              
}

make_thumb($src, $dest, $desired_width);
?>

This is the error message:

Array
(
[type] => 2
[message] => imagejpeg(/used_uploads_thb): failed to open stream:    Permission denied
[file] => /Applications/MAMP/htdocs/SiteCar/used_thumbnail.php
[line] => 26
)

I appreciate your help.

  • 写回答

2条回答 默认 最新

  • douzhuiqing1151 2015-06-29 21:20
    关注

    Just for the record.

    The issue was with the destination path for the thumbnail. My original code had only the directory. I was wrongly assuming that the name would be the same as the original file and would be automatically created. Not so.

    So here it is the working code: The preg_replace is there only because I am placing the thumbnails in a separate directory to the original image.

    <?php
    $src = $new_name = $filePath;
    $new_name = preg_replace('/used_uploads\/(.*)$/', '$1', $new_name);
    $src = $_SERVER['DOCUMENT_ROOT'] . $src;
    $dest = 'used_uploads_thb'. $new_name;
    $desired_width="100";
    
    
    function make_thumb($src, $dest, $desired_width) {
    
    /* read the source image */    
        $source_image = imagecreatefromjpeg($src);
    
    $width = imagesx($source_image);
    $height = imagesy($source_image);
    /* find the "desired height" of this thumbnail, relative to the desired width  */
    $desired_height = floor($height * ($desired_width / $width));
    
    /* create a new, "virtual" image */
    $virtual_image = imagecreatetruecolor($desired_width, $desired_height);
    
    /* copy source image at a resized size */
    imagecopyresampled($virtual_image, $source_image, 0, 0, 0, 0, $desired_width, $desired_height, $width, $height);
    
    /* create the physical thumbnail image to its destination */
    
    imagejpeg($virtual_image,$dest);
        //print_r(error_get_last());
    }
    
     make_thumb($src, $dest, $desired_width);
    ?>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化