ID:               23035
 Updated by:       [EMAIL PROTECTED]
 Reported By:      richard dot quadling at carval dot co dot uk
-Status:           Open
+Status:           Feedback
 Bug Type:         GD related
 Operating System: Windows 2000
 PHP Version:      4.3.1
 New Comment:

Please try using this CVS snapshot:

  http://snaps.php.net/php4-STABLE-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php4-win32-STABLE-latest.zip


And can you please shorten the example script to
max. 10-15 lines.




Previous Comments:
------------------------------------------------------------------------

[2003-04-03 08:37:58] richard dot quadling at carval dot co dot uk

I am using Sambar Server V5.4 Production as a webserver and getting
...

[2003-04-03 14:58:12] PHP4ISAPI.DLL: WriteClient(51 bytes) PHP has
encountered an Access Violation at 0144B261

in the ISAPI.LOG file (with logging set to full).

This is the complete entry.

[2003-04-03 14:57:34] Loading PHP4ISAPI.DLL: isapi
[2003-04-03 14:58:01] PHP4ISAPI.DLL: Run for 10.0.0.24
[2003-04-03 14:58:01] PHP4ISAPI.DLL: GetServerVariable 'HTTP_COOKIE'
returned: Balls=38%6044%6032%6047%6023%6031%6043
[2003-04-03 14:58:01] PHP4ISAPI.DLL: GetServerVariable 'ALL_HTTP'
returned: HTTP_CONNECTION:Keep-Alive
HTTP_ACCEPT_LANGUAGE:en-gb
HTTP_HOST:richard-dev.pfl
HTTP_ACCEPT:image/gi
[2003-04-03 14:58:01] PHP4ISAPI.DLL: GetServerVariable 'HTTPS'
returned: off
[2003-04-03 14:58:01] PHP4ISAPI.DLL: GetServerVariable 'SCRIPT_NAME'
returned: /ttf.php
[2003-04-03 14:58:01] PHP4ISAPI.DLL: GetServerVariable 'AUTH_PASSWORD'
returned: 
[2003-04-03 14:58:01] PHP4ISAPI.DLL: GetServerVariable 'AUTH_TYPE'
returned: 
[2003-04-03 14:58:01] PHP4ISAPI.DLL: GetServerVariable 'AUTH_USER'
returned: 
[2003-04-03 14:58:01] PHP4ISAPI.DLL: GetServerVariable 'CONTENT_LENGTH'
returned: 0
[2003-04-03 14:58:01] PHP4ISAPI.DLL: GetServerVariable 'CONTENT_TYPE'
returned: 
[2003-04-03 14:58:01] PHP4ISAPI.DLL: GetServerVariable
'PATH_TRANSLATED' returned:
C:/Personal/WebSites/PFL/public_html/ttf.php
[2003-04-03 14:58:01] PHP4ISAPI.DLL: GetServerVariable 'QUERY_STRING'
returned: 
[2003-04-03 14:58:01] PHP4ISAPI.DLL: GetServerVariable 'REMOTE_ADDR'
returned: 10.0.0.24
[2003-04-03 14:58:01] PHP4ISAPI.DLL: GetServerVariable 'REMOTE_HOST'
returned: 10.0.0.24
[2003-04-03 14:58:01] PHP4ISAPI.DLL: GetServerVariable 'REMOTE_USER'
returned: 
[2003-04-03 14:58:01] PHP4ISAPI.DLL: GetServerVariable 'REQUEST_METHOD'
returned: GET
[2003-04-03 14:58:01] PHP4ISAPI.DLL: GetServerVariable 'SERVER_NAME'
returned: richard-dev.pfl
[2003-04-03 14:58:01] PHP4ISAPI.DLL: GetServerVariable 'SERVER_PORT'
returned: 80
[2003-04-03 14:58:01] PHP4ISAPI.DLL: GetServerVariable
'SERVER_PROTOCOL' returned: HTTP/1.1
[2003-04-03 14:58:01] PHP4ISAPI.DLL: GetServerVariable
'SERVER_SOFTWARE' returned: SAMBAR
[2003-04-03 14:58:01] PHP4ISAPI.DLL: GetServerVariable 'APPL_MD_PATH'
not found
[2003-04-03 14:58:01] PHP4ISAPI.DLL: GetServerVariable
'APPL_PHYSICAL_PATH' not found
[2003-04-03 14:58:01] PHP4ISAPI.DLL: GetServerVariable 'INSTANCE_ID'
not found
[2003-04-03 14:58:01] PHP4ISAPI.DLL: GetServerVariable
'INSTANCE_META_PATH' not found
[2003-04-03 14:58:01] PHP4ISAPI.DLL: GetServerVariable 'LOGON_USER'
returned: 
[2003-04-03 14:58:01] PHP4ISAPI.DLL: GetServerVariable 'REQUEST_URI'
returned: /ttf.php
[2003-04-03 14:58:01] PHP4ISAPI.DLL: GetServerVariable 'URL' returned:
/ttf.php
[2003-04-03 14:58:01] PHP4ISAPI.DLL: ServerFunc() 
HSE_REQ_MAP_URL_TO_PATH_EX '/'
[2003-04-03 14:58:12] PHP4ISAPI.DLL: ServerFunc() 
HSE_REQ_SEND_RESPONSE_HEADER_EX '500 Internal Server Error'
[2003-04-03 14:58:12] PHP4ISAPI.DLL: WriteClient(51 bytes) PHP has
encountered an Access Violation at 0144B261
[2003-04-03 14:58:12] PHP4ISAPI.DLL: WriteClient(433 bytes) ‹
[2003-04-03 14:58:12] PHP4ISAPI.DLL: Returned HSE_STATUS_SUCCESS

The code generating this error is a small program to produce thumbnails
of the fonts installed in my C:\winnt\fonts directory.

If I hardcode the exclusion of particular fonts, then the program will
work as expected.

The font names are SYMBOL, MARLETT, OUTLOOK, WINGDING, WEBDINGS,
WEBDNGS2, WEBDNGS3.

These are all symbol fonts.

BUT. If I ONLY tell it to deal with MARLETT.TTF then the code seems to
work without a problem.

My script for all of this is ...

<?php
error_reporting(E_ALL);

// Allow a debug log to be produced.
$bDebug = False;

// Where are the fonts?
$sFontDir = 'C:/WINNT/FONTS';

// A function to create the PNG file for the supplied font.
function MakePNG ($sFontDir,$sFontName)
{
global $fp;

// What text to show in the PNG.
$aTexts = array(
         'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
         'abcdefghijklmnopqrstuvwxyz',
         '1234567890',
         'The quick brown fox jumps over the lazy dog.',
         'The big jackdaws love my sphinx of quartz.'
         );

// What height and width should I make?
$aDim = array ('Width' => 0, 'Height' => 0);

// Font size.
$iFontSize = 12;

// Get the dimensions for each of the strings.
foreach ($aTexts as $v)
        {
        if ($bDebug) { fputs($fp, "About to : \$aSizes = ImageTTFBBox
($iFontSize,0,\"$sFontDir/$sFontName\",\"$v\");<br>\n"); }
        $aSizes = ImageTTFBBox ($iFontSize,0,"$sFontDir/$sFontName","$v");
        if ($bDebug) { fputs($fp, "Complete : \$aSizes = ImageTTFBBox
($iFontSize,0,\"$sFontDir/$sFontName\",\"$v\");<br>\n\n"); }

// Work out the biggest so far.
        $aDim['Width'] = max ($aDim['Width'], 5 + ($aSizes[2] - $aSizes[0])
);
        $aDim['Height'] = max ($aDim['Height'], 5 + abs($aSizes[7] -
$aSizes[1]) );
        }

// Create the blank image to the correct size.
if ($bDebug) { fputs($fp, "About to : \$gImage = ImageCreate
(\$aDim['Width'] + 6, (3 + \$aDim['Height']) * count (\$aTexts)
);<br>\n"); }
$gImage = ImageCreate ($aDim['Width'] + 6, (3 + $aDim['Height']) *
count ($aTexts) );
if ($bDebug) { fputs($fp, "Complete : \$gImage = ImageCreate
(\$aDim['Width'] + 6, (3 + \$aDim['Height']) * count (\$aTexts)
);<br>\n\n"); }

// Set up the background colour.
if ($bDebug) { fputs($fp, "About to : \$gcolBackground =
ImageColorAllocate (\$gImage, 255, 255, 255);<br>\n"); }
$gcolBackground = ImageColorAllocate ($gImage, 255, 255, 255);
if ($bDebug) { fputs($fp, "Complete : \$gcolBackground =
ImageColorAllocate (\$gImage, 255, 255, 255);<br>\n\n"); }

// Set up the font colour.
if ($bDebug) { fputs($fp, "About to : \$gcolFont = ImageColorAllocate
(\$gImage, 0, 0, 0);<br>\n"); }
$gcolFont = ImageColorAllocate ($gImage, 0, 0, 0);
if ($bDebug) { fputs($fp, "Complete : \$gcolFont = ImageColorAllocate
(\$gImage, 0, 0, 0);<br>\n\n"); }

// Add the texts into the image.
foreach ($aTexts as $k => $v)
        {
        if ($bDebug) { fputs($fp, "About to : ImageTTFText (\$gImage,
\$iFontSize, 0, 5, \$aDim['Height'] * ($k + 1), \$gcolFont,
\"$sFontDir/$sFontName\", \"$v\");<br>\n"); }
        ImageTTFText ($gImage, $iFontSize, 0, 5, $aDim['Height'] * ($k + 1),
$gcolFont, "$sFontDir/$sFontName", "$v");
        if ($bDebug) { fputs($fp, "Complete : ImageTTFText (\$gImage,
\$iFontSize, 0, 5, \$aDim['Height'] * ($k + 1), \$gcolFont,
\"$sFontDir/$sFontName\", \"$v\");<br>\n\n"); }
        }

// Save the image.
if ($bDebug) { fputs($fp, "About to : Imagepng
(\$gImage,\"./pngs/$sFontName.png\");<br>\n"); }
Imagepng ($gImage,"./pngs/$sFontName.png");
if ($bDebug) { fputs($fp, "Complete : Imagepng
(\$gImage,\"./pngs/$sFontName.png\");<br>\n\n"); }

// Destroy the image.
if ($bDebug) { fputs($fp, "About to : ImageDestroy (\$gImage);<br>\n");
}
ImageDestroy ($gImage);
if ($bDebug) { fputs($fp, "Complete : ImageDestroy
(\$gImage);<br>\n\n"); }
}

// Build the page of fonts and images.
echo '<html><head><title>Fonts</title></head><body>';
$aFiles[0] = glob("$sFontDir/*.ttf");
$aFiles[1] = glob("$sFontDir/*.TTF");
$aFonts = array_merge($aFiles[0],$aFiles[1]);
natcasesort($aFonts);
if ($bDebug) { $fp = fopen('./log.txt','wt'); }
foreach ($aFonts as $sFont)
        {
        $sFont = strtoupper(end(explode('/',$sFont)));
// Allow for the exclusion of nasty fonts.
        if ((!$bDebug) && ($sFont != 'MARLETT.TTF') && ($sFont !=
'OUTLOOK.TTF') && ($sFont != 'SYMBOL.TTF') && ($sFont !=
'WEBDINGS.TTF') && ($sFont != 'WINGDING.TTF'))
                {
                MakePNG($sFontDir,$sFont);
                echo "$sFont<br><img src=\"./pngs/$sFont.png\"><br>";
                }
        }
echo '</body></html>';
if ($bDebug) { fclose($fp); }
?>

Altering the $bDebug flag will toggle the logging.

The line with the font names in can be commented out to show the
error.

Regards,

Richard Quadling.

------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=23035&edit=1

Reply via email to