search
Homephp教程php手册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服务器上的安装命令如下

1
2
3
4
5

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配置文件并定位到

1

memory_limit = xx

xx是具体的数字,将其修改为32MB,即

1

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选项,即将

1

max_execution_time = xx

修改为

1

max_execution_time = 30

  禁止缓存输出

  打开php.ini配置文件,找到output_buffering选项,并将选项修改为

1

; 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类库也可以安全运行。

  错误等级设置为最高,即

1

error_reporting = E_ALL E_STRICT

  注意:除了错误等级之外,最好下面的选项也进行配置

1
2
3
4
5
6
7
8
9
10
11
12
13

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配置是专门针对开发服务器的,那就是配置错误信息输出的本地化。

  jpgraph 3.x版本支持三种选项

  1、en(英文错误信息)

  2、de(德文错误信息)

  3、prod(应用在产品服务器上)

  只需要打开jpgraph类库配置文件jpg-config.inc.php,定位到

1
2
3


define('DEFAULT_ERR_LOCALE','en');
?>

进行修改即可。

  除了通过修改jpgraph类库配置文件还可通过在每个程序代码中动态调用进行修改,方法如下

1
2
3


JpGraphError::SetErrLocale($aLocale);
?>

  产品服务器上的jpgraph类库及PHP配置说明

  在这部分由于面向的最终用户是访问者,所以需要进行部分修改,大部分和在开发服务器上的jpgraph配置一致,主要有两方面的jpgraph配置不同

  开启适当的错误等级

  在产品服务器上显示所有错误信息不是一个明智的决定,应该禁止显示所有错误信息并将其保存在日记文件中。

  所以修改php.ini配置文件中的如下选项

1
2
3
4
5
6
7

display_errors = Off

display_startup_errors = Off

log_errors = On

error_log =

指定log日志文件的存放目录。

  配置jpg-config-.inc.php

  主要是将jpgraph类库的错误信息选项配置为prod,即

1
2
3


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类库打下坚实的基础。

  :PHP网站开发教程-leapsoul.cn版权所有,转载时请以链接形式注明原始出处及本声明,谢谢。



Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
php怎么把负数转为正整数php怎么把负数转为正整数Apr 19, 2022 pm 08:59 PM

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

php怎么实现几秒后执行一个函数php怎么实现几秒后执行一个函数Apr 24, 2022 pm 01:12 PM

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php怎么除以100保留两位小数php怎么除以100保留两位小数Apr 22, 2022 pm 06:23 PM

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

php怎么根据年月日判断是一年的第几天php怎么根据年月日判断是一年的第几天Apr 22, 2022 pm 05:02 PM

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

php字符串有没有下标php字符串有没有下标Apr 24, 2022 am 11:49 AM

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php怎么替换nbsp空格符php怎么替换nbsp空格符Apr 24, 2022 pm 02:55 PM

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\&nbsp\;||\xc2\xa0)/","其他字符",$str)”语句。

php怎么读取字符串后几个字符php怎么读取字符串后几个字符Apr 22, 2022 pm 08:31 PM

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

php怎么判断有没有小数点php怎么判断有没有小数点Apr 20, 2022 pm 08:12 PM

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
1 months agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.