帮助将错误检查添加到此功能

时间:2010-10-14 16:15:18

标签: php gdlib

我需要为此函数添加一些错误检查,以确保imagegif()和imagecolorset()函数成功。失败的常见原因是权限问题,即spot2.gif文件不可写。

但是,当我将spot2.gif更改为只读时,应该触发“其他”条件的条件,回显的javascript警报不会触发。

function set_theme_color_spot2($hex)
{
    $info = hexToRGB($hex);
    $token = "../wp-content/themes/".get_option('template')."/styles/".get_option('myTheme')."/spot2.gif";
    $token2 = "../wp-content/themes/".get_option('template')."/styles/".get_option('myTheme')."/spot2-template.gif";
    if (file_exists($token2) && is_writable($token)) 
    {
        $img = imagecreatefromgif("../wp-content/themes/".get_option('template')."/styles/".get_option('myTheme')."/spot2-template.gif");
        $color = imagecolorallocate($img, $info["red"], $info["green"], $info["blue"]);
        imagecolorset($img, 0, $info["red"], $info["green"], $info["blue"]);
        imagegif($img, $token);
        $themecolor = get_option('myTheme').'_color4';
        update_option($themecolor, $hex);
    }
    else
    {   
        echo "<script type='text/javascript'>alert('The template colors could not be changed because your current file permissions are too restrictive. Make sure the files in the styles directory are set to 644');</script>";
    }
}

2 个答案:

答案 0 :(得分:0)

为什么在尝试访问之前不要在你的spot2.gif上调用“is_writable”?

http://php.net/manual/de/function.is-writable.php

答案 1 :(得分:0)

如果您有有效的图像处理,则imagecolorset()不应该失败。它只是在某个表格中设置一些值。另一方面,imagegif()可能会失败,因为它必须处理文件系统。不幸的是,它只返回true / false,而不是任何有用的诊断细节(知道它是否失败因为你的磁盘空间不足,写入文件的权限被拒绝,权限被拒绝访问目录会很有用,没有这样的文件/目录等...)。

所以,就这样做:

if (!imagegif($handle, 'testfile.gif')) {
    die("Unable to write gif out");
}

您需要保存的任何诊断信息。您也可以尝试使用error_get_last(),但无法保证GD会在失败时使用任何有用的东西填充。