我需要为此函数添加一些错误检查,以确保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>";
}
}
答案 0 :(得分:0)
为什么在尝试访问之前不要在你的spot2.gif上调用“is_writable”?
答案 1 :(得分:0)
如果您有有效的图像处理,则imagecolorset()
不应该失败。它只是在某个表格中设置一些值。另一方面,imagegif()
可能会失败,因为它必须处理文件系统。不幸的是,它只返回true / false,而不是任何有用的诊断细节(知道它是否失败因为你的磁盘空间不足,写入文件的权限被拒绝,权限被拒绝访问目录会很有用,没有这样的文件/目录等...)。
所以,就这样做:
if (!imagegif($handle, 'testfile.gif')) {
die("Unable to write gif out");
}
您需要保存的任何诊断信息。您也可以尝试使用error_get_last()
,但无法保证GD会在失败时使用任何有用的东西填充。