jpgraph安装配置教程详细介绍
jpgraph安装配置教程详细介绍
在学习了之前两篇php jpgraph安装教程后,只要jpgraph类库通过了PHP安装环境的验证后,就可以正式安装jpgraph类库了,其实jpgraph类库的安装非常方便,只要将下载的jpgraph类库解压缩至已搭建的PHP环境下的相关目录下即可。jpgraph安装过程的关键在于PHP配置文件php.ini与jpgraph配置文件jpg-config.inc.php配置。下面我根据jpgraph类库的英文文档进行说明,希望对使用jpgraph类库的PHP开发者有所帮助。
jpgraph类库安装
当通过之前的jpgraph类库安装条件的验证后,就可以安装jpgraph类库了。所谓的安装其实就是将文件解压拷贝到一个你的PHP程序可以找到的目录结构中,在Unix系统中很常见的安装目录是/usr/share/php/,在Windows系统中没有标准的安装目录,你需要根据你安装配置PHP环境时设定的目录自行决定。
这里非常重要的一点是当你使用PHP语句require_once或include时能够找到jpgraph类库。推荐jpgraph的安装目录结构为jpgraph/。
假设你已将下载jpgraph类库之Unix系统的tmp目录下,那么在Unix服务器上的安装命令如下
root:/tmp>tar xzf jpgraph-2.5.tar.gz
root:/tmp>cp-r jpgraph-2.5/usr/shar/php/
root:/tmp>ln-s/usr/shar/php/jpgraph-2.5/usr/shar/php/jpgraph
最后一条Unix命令的意思是为实际的jpgraph版本类库目录位置建立一个连接。当我们需要在不同的目录用到jpgraph类库时,就不需要在每个目录下都放一个jpgraph类库,只需要在固定目录中存放jpgraph类库,然后在其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。
PHP开发服务器上配置jpgraph类库的说明
配置php.ini配置文件
配置PHP的内存
在绝大多数默认配置的PHP环境中,都没有足够的内存供jpgraph程序使用,由于其需要很多内存,所以在配置时最少需要32M内存。打开php.ini配置文件并定位到
memory_limit=xx
xx是具体的数字,将其修改为32MB,即
memory_limit=32M
jpgraph类库使用内存特别说明:当你需要创建非常大的图片时,这些内存可能是不够的,比如,假设你需要创建一个1200*1024大小的图片。意味着,就光其自身就需要1200*1024*4字节,即4.7MB RAM,当php jpgraph类库在内部处理时大约需要三倍的内存,也就是说最少需要15MB RAM。如果再需要内存加载PHP和整个jpgraph类库并动态执行和解析,那意味着另外需要至少15MB RAM。如果图片非常复杂,需要创建更多的对象(一个典型的例子是大甘特图)那么就需要双倍的内存即64MB RAM。(其实个人觉得这段是告诉你使用jpgraph类库时如何根据需要处理的图片大小计算出大致的内存)。
配置PHP最大执行时间
默认配置的PHP最大执行时间非常短。通常都在10秒左右。对于一般的互动或纯文本处理是足够的。但是处理大型复杂的图片需要更多时间。正因为这个理由,PHP最大执行时间最少需要增加到20秒。(根据你的图片复杂度和相关数据的处理,需要增加到30-40秒)
与之相对应需要修改php.ini配置文件中的max_execution_time选项,即将
max_execution_time=xx
修改为
max_execution_time=30
禁止缓存输出
打开php.ini配置文件,找到output_buffering选项,并将选项修改为
;output_buffering=xx
也就是注释掉缓存输出。
禁止缓存输出的原因是在PHP开发期间,我们需要能够看到jpgraph类库潜在的错误信息,而开启缓存会阻止错误信息及时出现。要理解这些需要知道一些HTTP协议的基本原则。特别是MIME编码数据是如何工作的。
下面简单描述下HTTP协议:
1、当你在游览器中输入一个URI地址时,游览器主要通过GET或POST命令从服务器上请求数据。
2、服务器回复一个数据流(或者数据不可用时会返回一个错误信息)。数据流中的前缀MIME信息告知游览器如何解析数据。最常用的类型是text/html。即告知游览器以嵌入HTML编码的纯文本方式解析数据。
当数据要求被解析为图片时,数据流的前缀MIME信息是image/png或image/jpeg。当游览器受到MIME信息时就会以指示的图片编码格式解析下面的图像数据。
这里需要特别注意的是每台服务器只能回复一个MIME类型。这是进一步理解生成动态图形的关键。这就解释了为什么运行PHP程序的服务器发送的头部信息首先显示其数据需要被解释为图片而不是同时发送图片和文字。
现在来解释下为何输出缓冲会使得调试jpgraph类库会更加困难。
通常PHP程序的所有输出都是有顺序的,比如首先必须发送头部信息然后再发送数据。如果没有头部信息输出或输出了没有头部信息的文本,游览器会解析为text/html格式。缓存的一个目的是允许数据存放一段时间,当决定发送什么类型的头部信息时,发送完头部信息后再将数据输出。
开启缓存可能会发送下面的情况
1、程序开始执行,图片开始生成。
2、此时你的PHP程序可能会产生一些小问题。这些错误信息没有被直接输出至游览器而是允许你将这些错误信息存放至缓存区中。当之后程序开始输出图片头部信息和图片数据时其会将这些数据添加至之前存放那些错误信息的缓存区中。
3、当游览器受到这个头部信息显示需要将下面的数据解析为图片时,由于这些图片数据混合了之前的错误信息,解析这些数据时就会失败同时出现红叉(FireFox)。
当关闭缓存后,调试jpgraph程序时出错信息会及时输出至游览器,以便于你及时处理。
开启适当的错误检查
在这部分需要调整PHP错误报告级别。即使开启所有PHP错误报告等级,jpgraph类库也可以安全运行。
错误等级设置为最高,即
error_reporting=E_ALL|E_STRICT
注意:除了错误等级之外,最好下面的选项也进行配置
zend.ze1_compatibility_mode=Off
zend引擎的兼容性可能会在使用jpgraph类库时出现问题
implicit_flush=On
此选项会降低性能同时在产品服务器上不应该使用。但是开启此选项会将所有输出尽可能输出至游览器编译尽快调试。
allow_call_time_pass_reference=Off
display_errors=On
确认显示所有错误信息
display_startup_errors=On
确保PHP抛出的任何初始化错误可及时报告。
设置默认时区
自PHP5.2开始如果没有设定默认时区时使用jpgraph类库会出现错误。你只需要打开php.ini配置文件,定位到date.timezone=修改为Asia/Shanghai即可。
配置jpg-config.inc.php
除了jpgraph标准配置中所说的安装和配置字体支持等,这里只有一个重要的jpgraph配置是专门针对开发服务器的,那就是配置错误信息输出的本地化。
jpgraph3.x版本支持三种选项
1、en(英文错误信息)
2、de(德文错误信息)
3、prod(应用在产品服务器上)
只需要打开jpgraph类库配置文件jpg-config.inc.php,定位到
<?
define('DEFAULT_ERR_LOCALE','en');
?>
进行修改即可。
除了通过修改jpgraph类库配置文件还可通过在每个程序代码中动态调用进行修改,方法如下
<?
JpGraphError::SetErrLocale($aLocale);
?>
产品服务器上的jpgraph类库及PHP配置说明
在这部分由于面向的最终用户是访问者,所以需要进行部分修改,大部分和在开发服务器上的jpgraph配置一致,主要有两方面的jpgraph配置不同
开启适当的错误等级
在产品服务器上显示所有错误信息不是一个明智的决定,应该禁止显示所有错误信息并将其保存在日记文件中。
所以修改php.ini配置文件中的如下选项
display_errors=Off
display_startup_errors=Off
log_errors=On
error_log=<name-of-log-file>
指定log日志文件的存放目录。
配置jpg-config-.inc.php
主要是将jpgraph类库的错误信息选项配置为prod,即
<?
define('DEFAULT_ERR_LOCALE','prod');
?>
调整PHP include path
主要通过两种方式修改,一种是修改PHP配置文件php.ini并定位到include_path选项,增加jpgraph类库的安装目录,另一种是通过php_ini_set函数在PHP代码头部增加include_path。
修改include_path主要是为了使用include或require_once包含jpgraph.php文件的便捷性和统一性。
至此,jpgraph类库的详细安装配置教程就介绍完了,通过修改PHP配置文件和jpgraph配置文件可以为今后使用jpgraph类库打下坚实的基础。