【问题标题】:PHP imagejpeg() Not Working On ServerPHP imagejpeg()在服务器上不起作用
【发布时间】:2025-12-14 18:15:01
【问题描述】:

我正在为我的网站开发图像裁剪功能。我向我的 PHP 脚本发送了一组裁剪后的图像尺寸(x、y、宽度、高度);

脚本在我的本地主机上成功裁剪图像,但在推送到我的网络服务器时不起作用。

<?php
    $array = json_decode(file_get_contents('php://input'));

    $targ_w = 542;
    $targ_h = 671;

    $src = $array[0];
    $img_r = imagecreatefromjpeg($src);
    $dst_r = ImageCreateTrueColor( $targ_w, $targ_h );

    imagecopyresampled($dst_r,$img_r,0,0,$array[1],$array[2],
    $targ_w,$targ_h,$array[3],$array[4]);

    $time = time();

    if (imagejpeg($dst_r, 'temp_crops/temp_'.$time.'.jpg'))
        echo "made it";
    else
        echo "didnt make it :(";

    //echo $time;
?>

AJAX 帖子:

$('#crop_modal').on('hidden.bs.modal', function () {
            var array = [$('#profile_preview').attr('src'), $('#x').val(), $('#y').val(), $('#w').val(), $('#h').val()];
            if (checkCoords()) {
                $.ajax({
                    url : '../../application/views/poster/crop.php',
                    type: 'POST',
                    data : JSON.stringify(array),
                    success: function(data) {
                        console.log(data)
                        $('#profile_preview').attr('src', '../../application/views/poster/temp_crops/temp_'+data+".jpg");
                        $('#final_img_src').val('temp_'+data+'.jpg');
                    }
                });
            }
        });

本地主机响应为:made it。 Web 服务器响应为:didnt make it :(

谁能帮助我并告诉我为什么这不起作用?谢谢!

【问题讨论】:

  • 服务器是否安装了GD?仔细检查服务器上的错误日志,看看是否发生了一些错误。
  • 我不确定错误日志在哪里。我检查了var/log/apache2,但我没有 apache2 文件夹。

标签: javascript php jquery ajax image


【解决方案1】:

检查 GD 库 - 在脚本中使用 if(!function_exists('imagejpeg')) ... 否则错误日志可能在 /var/log/httpd/

【讨论】:

  • debian/ubuntu 系统日志在/var/log/apache2
【解决方案2】:

该错误表明您的 PHP 脚本无权写入服务器上的该位置。使用您的 FTP 软件进行 CHMOD(更改权限)以允许写入您尝试存储这些文件的目录。除非您的虚拟主机完全禁止 PHP 在本地写入文件(在这种情况下,您应该与他们交谈)并查看可用的选项)。

【讨论】: