123 lines
13 KiB
HTML
123 lines
13 KiB
HTML
|
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Troubleshooting the installation</title><link rel="stylesheet" type="text/css" href="manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.0"><link rel="home" href="index.html" title="JpGraph Manual"><link rel="up" href="ch03.html" title="Chapter 3. The Long Version: Installing the Library"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Troubleshooting the installation</th></tr><tr><td width="20%" align="left"> </td><th width="60%" align="center">Chapter 3. The Long Version: Installing the Library</th><td width="20%" align="right"> </td></tr></table><hr></div><div class="sect1" title="Troubleshooting the installation"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2492535"></a>Troubleshooting the installation</h2></div></div></div>
|
|||
|
|
|||
|
<p>Unfortunately there are many parameters in a server installation that may affect
|
|||
|
the execution of PHP so the steps below can only give some indications of how to
|
|||
|
further investigate some potential problems.</p>
|
|||
|
<p>Experience shows that most of the trouble are caused by either an old buggy
|
|||
|
version of the free-type TTF library or using an old antiquated version of the GD
|
|||
|
library. So before starting trouble shooting the scripts please make sure that you
|
|||
|
have an up to date PHP installation with the bundled version of the GD library (as
|
|||
|
describe in the previous sections) and a working FreeType library installed.</p>
|
|||
|
<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
|
|||
|
<p><span class="bold"><strong>No image is displayed.</strong></span></p>
|
|||
|
<p>The first thing you should do is to isolate the problem by calling
|
|||
|
your graph script directly in the browser. There are then two variants
|
|||
|
of this problem. </p>
|
|||
|
<p>
|
|||
|
</p><div class="orderedlist"><ol class="orderedlist" type="a"><li class="listitem">
|
|||
|
<p>No data is sent back from the server.</p>
|
|||
|
<p>You can verify this by calling your graph script directly
|
|||
|
in the browser and then check the source (click "view
|
|||
|
source" menu item in the browser). If this is a truly blank
|
|||
|
image then no data was sent back from the browser.</p>
|
|||
|
<p>This means that the PHP process has been terminated
|
|||
|
prematurely before it could send any data back. This could
|
|||
|
be caused by either the PHP process crashing (due to a bug
|
|||
|
in either PHP or your HTTP server) or the HTTP server
|
|||
|
crashed. This is often due to a broken PHP installation and
|
|||
|
more than often a problem with the True Type libraries. </p>
|
|||
|
<p>It could also be caused by the PHP script running longer
|
|||
|
than the maximum allowed execution time (as specified in
|
|||
|
<code class="filename">php.ini</code>). The first thing you
|
|||
|
should do is to increase the maximum allowed execution time.
|
|||
|
If this does not solve the problem you should look in the
|
|||
|
log files for both your HTTP server and PHP to try to find
|
|||
|
clues to if the PHP process really crashed. Another
|
|||
|
possibility is that the PHP process uses more than the
|
|||
|
maximum allowed memory (as set in
|
|||
|
<code class="filename">php.ini</code>) and then it is terminated.
|
|||
|
So a good first step is to put some really high values for
|
|||
|
memory and time just to take away these parameters.</p>
|
|||
|
</li><li class="listitem">
|
|||
|
<p>The data sent back is corrupt.</p>
|
|||
|
<p>Depending on your browser this can show up differently but
|
|||
|
a common symptom is a "red X" in the browser. In order to
|
|||
|
debug this you should make sure that you have followed the
|
|||
|
steps in <a class="xref" href="ch03s03.html#sec2.config-dev-server" title="Configuring JpGraph/PHP on a development server">Configuring JpGraph/PHP on a development server</a> to make sure you
|
|||
|
have output buffering disabled and have maximum error
|
|||
|
checking enabled in PHP. The most common cases for this type
|
|||
|
of problem is having enabled output buffering and some minor
|
|||
|
errors in the script which causes PHP to emit warnings which
|
|||
|
gets included in the image data. </p>
|
|||
|
<p>A very common mistake is to have some white spaces in the
|
|||
|
script before the opening "<code class="code"><?php</code>". This
|
|||
|
white space will be added to the output buffer and then get
|
|||
|
mixed up with the image data causing the image data to be
|
|||
|
corrupt. A similar problem can occur if multiple newlines
|
|||
|
are added after the final <code class="code">"?>"</code>
|
|||
|
</p>
|
|||
|
</li></ol></div><p>
|
|||
|
</p>
|
|||
|
</li><li class="listitem">
|
|||
|
<p><span class="bold"><strong>An error message saying "Fonts are not available or not
|
|||
|
readable" </strong></span></p>
|
|||
|
<p>When an image contains TTF fonts you might get an error message saying
|
|||
|
that the fonts are not available or not readable. If this is the case it
|
|||
|
is first necessary to check that the font files really exist in the
|
|||
|
directory that is specified in <code class="filename">jpg-config.inc.php</code>
|
|||
|
and that they are also readable by the HTTP/PHP process. If this is the
|
|||
|
case then it is necessary to check that the names of the font files are
|
|||
|
the one that JpGraph assumes, see <a class="xref" href="ch03s02.html#sec3.name-of-ttf-files" title="Name of TTF font files">Name of TTF font files</a>. Another problem can be if
|
|||
|
the PHP installation is running in "safe mode" (See <code class="uri"><a class="uri" href="http://se.php.net/manual/en/ini.sect.safe-mode.php" target="_top">PHP
|
|||
|
Manual: Security and safe mode</a></code>) and has enabled strict
|
|||
|
directory policy via an "<code class="code">open_basedir</code>" restriction. This
|
|||
|
will prevent the PHP process from reading any files outside the
|
|||
|
specified base directory. If this is enabled there is no way around for
|
|||
|
PHP to read any files outside this restriction and any TTF files
|
|||
|
necessary must be moved so that they can be accessed within the realms
|
|||
|
of the specified basedirectory.</p>
|
|||
|
<p>If you are running IIS and Win2k and get the error "Can't find font"
|
|||
|
when trying to use TTF fonts then try to change the paths to UNIX style,
|
|||
|
i.e. "<code class="filename">/usr/local/fonts/ttf/</code>". Remember that the
|
|||
|
path is absolute and not relative to the <code class="filename">htdocs</code>
|
|||
|
catalogue.</p>
|
|||
|
<p>If you are running on Unix server please keep in mind that file names
|
|||
|
are case sensitive.</p>
|
|||
|
</li><li class="listitem">
|
|||
|
<p><span class="bold"><strong>An error message saying "Headers have already been
|
|||
|
sent"</strong></span></p>
|
|||
|
<p>A common mistake is to have a space in the beginning of the image
|
|||
|
script which the HTTP server will send back to the browser. The browser
|
|||
|
now assumes that the data coming back from this script is text since it
|
|||
|
hasn't received an explicit header. When then the image headers get sent
|
|||
|
back to the browser to forewarn the browser of the forthcoming image
|
|||
|
data the browser will not like that as it has already assumed the data
|
|||
|
stream was a text stream. The browser will then give the infamous
|
|||
|
"Headers already sent error".</p>
|
|||
|
<p>Make sure that your script has no white space before the opening
|
|||
|
"<code class="code"><?php</code>" statement or a number of blank lines after
|
|||
|
the concluding "<code class="code">?></code>"</p>
|
|||
|
</li><li class="listitem">
|
|||
|
<p><span class="bold"><strong>Issues specific to Windows and IIS</strong></span></p>
|
|||
|
<p>Some windows installations seems to have a problem with a PHP script
|
|||
|
ending in more than one newline (This newline seems to be sent to the
|
|||
|
browser and will cause a <span class="italic">Header already sent error</span>). To correct this
|
|||
|
problem check all your scripts for more than one empty newline after the
|
|||
|
ending "<code class="code">?></code>" statement. All files provided with the library
|
|||
|
end in exactly one final newline and should not be a problem.</p>
|
|||
|
</li><li class="listitem">
|
|||
|
<p><span class="bold"><strong>TTF fonts are not displayed correctly</strong></span></p>
|
|||
|
<p>If the TTF fonts only shows up as yellow then the installation is used
|
|||
|
a buggy (too old) installation of the FreeType font library and the only
|
|||
|
thing to do is to re-install and setup PHP+GD again with a newer version
|
|||
|
of the FreeType library. Another symptom of a an (old) buggy FreeType
|
|||
|
library is that the fonts are not correctly rotated (the text string is
|
|||
|
rotated but not the individual characters).</p>
|
|||
|
</li></ol></div><p>As a final advise you should read the FAQ (available in this manual
|
|||
|
see <a class="xref" href="apc.html" title="Appendix C. FAQ">Appendix C. <i>FAQ</i></a>) or on the JpGraph website at <code class="uri"><a class="uri" href="http://jpgraph.net/doc/faq.php" target="_top">http://jpgraph.net/doc/faq.php</a></code></p>
|
|||
|
<p>Depending on your sever it might also help to recompile PHP yourself instead of
|
|||
|
the version included with the system. You can find typical configuration scripts to
|
|||
|
compile PHP4 and PHP5 in the appendices, see <a class="xref" href="api.html" title="Appendix I. Compiling PHP">Appendix I. <i>Compiling PHP</i></a>
|
|||
|
</p>
|
|||
|
</div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"><a accesskey="u" href="ch03.html">Up</a></td><td width="40%" align="right"> </td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>
|