首頁 php教程 php手册 jpgraph安装配置教程详细介绍

jpgraph安装配置教程详细介绍

Jun 21, 2016 am 08:53 AM
errors include ini jpgraph php

  在学习了之前两篇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版权所有,转载时请以链接形式注明原始出处及本声明,谢谢。



本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

php程序在字符串中計數元音 php程序在字符串中計數元音 Feb 07, 2025 pm 12:12 PM

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? 什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? Apr 03, 2025 am 12:03 AM

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。

解釋PHP中的晚期靜態綁定(靜態::)。 解釋PHP中的晚期靜態綁定(靜態::)。 Apr 03, 2025 am 12:04 AM

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

PHP和Python:比較兩種流行的編程語言 PHP和Python:比較兩種流行的編程語言 Apr 14, 2025 am 12:13 AM

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP行動:現實世界中的示例和應用程序 PHP行動:現實世界中的示例和應用程序 Apr 14, 2025 am 12:19 AM

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP:網絡開發的關鍵語言 PHP:網絡開發的關鍵語言 Apr 13, 2025 am 12:08 AM

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP的持久相關性:它還活著嗎? PHP的持久相關性:它還活著嗎? Apr 14, 2025 am 12:12 AM

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。

See all articles