国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP學習研究:PHP.INI配置文件漫游

2024-05-04 23:04:05
字體:
來源:轉載
供稿:網友

  一般來說你不需要改變php設置,它根據默認的配置通常就能很好的工作。但作為php設計者的開發人員們考慮到用戶可能偶爾需要針對特定應用程序對php語言的一些功能進行調整。因此,他們將一些php變量通過名為php.ini的配置文件顯示出來。此配置文件允許用戶調整php多項功能,包括設置文件路徑以及目錄、改變會話以及數據庫參數,以及激活擴展選項(activating extensions)等。

  在開始我們的介紹之前,我們將對php配置文件的組織方式進行簡要的說明。文件命名為php.ini的原因之一就是它遵循許多windows應用程序中ini文件的常見結構。它是一個ascii文本文件,并且被分成幾個不同名稱的部分,每一部分包括與之相關的各種變量。每一部分類似于如下結構:

  [mysection]

  variable="value"

  anothervariable="anothervalue"

  各部分的名稱通過方括號括起來放在頂部,然后將是一對對任意數量的“變量名——值”,每一對占單獨一行。同常規的php代碼要求一樣,變量名區分大小寫且不能包含空格,變量的值可以是數字、字符串,或者布朗型(boolean)。

  每一行如果以分號開頭則表明該行是注釋語句。這也使得允許或禁止php功能變得非常簡單。你只需要將相關語句注釋而無需刪除,該語句就不會被系統解析。特別是當你希望在一段時間以后重新打開某種功能的時候特別方便,因為你不需要在配置文件中將此行刪除。

  為了便于php識別,php.ini文件必須要么放在當前目錄,要么放在$phprc環境變量所定義的目錄中,或者是在編譯時所指定的目錄(對windows php來說即windows主目錄)。

  在通過修改php.ini文件改變php配置之后,需要重啟web服務器以使配置改變生效(當然這是在通過web服務器使用php的情況下)。對于php命令行使用模式,每次只要涉及到php二進制程序的時候系統都會讀取配置文件。

  這是配置文件漫游的第一站也是非常重要的一站:語言解釋程序相關選項。第一行是引擎變量,它將控制php引擎是“on”還是“off”。關閉引擎則意味著嵌入的php代碼將不會被web服務器所解析。通常將其關閉是毫無意義的,所以保持開啟狀態。

   
 
engine = on

  short_open_tag則控制解析器是否識別簡寫的<?...?>標志,即將其等價為標準<?php...?>標志。如果預計簡寫標志會和別的語言產生沖突,或者希望對php代碼采用嚴格的語法規則,那么可以將其關閉。

  short_open_tag = on

  通常而言,在php腳本中的會話、cookie或者http文件頭數據必須在腳本產生任何輸出之前發送出去。如果在你的應用程序中不可能實現,你可以通過允許php稱之為output buffering功能來達到這一目的,此功能通過output_buffering變量進行控制。

  如果打開output buffering,php將把腳本產生的運行結果存放在特殊的內存緩沖區域內,并在得到明確指示時才將其發送出去。通過這樣的方式,你甚至可以在腳本中部或者腳本尾部發送特殊的http文件頭以及cookie數據。當然,這樣會造成腳本運行性能一定程度的下降。

  output_buffering = off

  你還可以為output_buffering變量賦值以指定緩沖區域大小,例如:

  output_buffering = 2048

  當php啟動的時候,它將在web服務器標準頭信息中添加php版本號信息。如果希望關閉此功能,可以將expose_php設置為false。這項功能非常有用,例如,可以在web服務器上屏蔽此信息以防范潛在的黑客攻擊。

  expose_php = on

  現在來看看如何設置查找路徑以及差錯控制。

  可以通過include_path變量設置php查找路徑。它允許包括一系列目錄。在相關文件調用缺少指定路徑的情況下,php將自動檢查這些目錄。

  如果有頻繁使用的函數庫或類,也可以將其位置寫在這里以方便查找。這也是一個很好的添加php的pear目錄路徑的地方,此路徑將包括很多可重用的類。

  include_path = ".:/usr/local/lib/php/pear:"

  windows用戶可以通過分號分割路徑名來指定多路徑;unix用戶則需要使用冒號。

  另外兩個有趣的變量是auto_prepend_file以及auto_append_file。這些變量指定php自動添加到任何php文檔文件頭或文件尾的其他文件。這對于為php產生的頁面添加頁眉或頁腳非常有用,可以節省為每個php文檔添加代碼的時間。但需要注意這里的指定文件將會添加到所有的php文檔中,所以這些變量必須適合單應用程序(single-application)的服務器。

  所包含的文件要么是php腳本,要么是普通的html文檔。嵌入式php代碼必須用標準<?php...?>標記括起來。

  auto_prepend_file = /home/web/includes/header.php

  auto_append_file = /home/web/includes/legal.php

  php的差錯可以分為四類:解析錯誤、關于代碼小問題的提示(notice)(例如變量未初始化)、警告(除了非致命錯誤),以及致命錯誤(fatal errors)。通常而言,當php遇到除第二種(關于代碼小問題的提示)以外的錯誤時,將顯示錯誤信息,并且如果屬于致命錯誤則會立即停止代碼處理。你可以通過修改error_reporting變量來對此功能進行修改。此變量可以接收一比特位的錯誤代碼,且只顯示同這些代碼相同的錯誤。

  error_reporting = e_all

  要關閉顯示所有錯誤——在產品代碼中通常建議這么做——可以將display_errors變量設置為false,并使用log_errors變量將信息寫入錯誤日志(error log)。

  此舉可以提高系統的安全性能——通過關閉錯誤顯示,你可以將系統的特定信息隱藏起來,惡意用戶就無法利用這些信息試圖入侵站點或應用程序。但你應當通過將error_log變量指定為文件名或特殊值“syslog”,從而將這些錯誤信息寫入到自定義日志文件或者系統日志中。請記住定期檢查這些文件,以知道在應用程序內部到底發生了什么。

  display_errors = off

  log_errors = on

  error_log = "error.log"

  php可以使用很多不同的擴展選項。在unix系統中,擴展選項需要在編譯時創建;而對于windows,二進制dll文件將隨php發布而將自己包括進去。變量extension_dir包括了php應當查看相關擴展選項的目錄名。

  extension_dir = "c:/program files/internet tools/apache/bin/php4/extensions"

  windows下的php包括了20種不同的擴展選項,并且全部都列在了php.ini文件中(通過注釋)。要激活某個特定的擴展選項只需要將相應行首的分號去掉并重啟服務器就可以了。如果要禁用某個擴展選項(比如在需要提升系統性能的情況下),只需要在行首重新添加分號。

  如果擴展選項沒有列在php.ini文件中,可以使用變量extension,然后將相應dll文件名傳遞給此變量。

  extension=php_domxml.dll

  extension=php_dbase.dll

  設置extension-specific變量
變量extension-specific被存放在配置文件中一個單獨的區域。比如,所有同mysql擴展功能相關的變量都應當存儲在php.ini中的[mysql]區域。

  如果需要使用php的mail()函數,則需要設置以下三個變量。當通過php mail()函數發送電子郵件信息時需要使用smtp以及變量sendmail_from(windows系統)或變量sendmail_path(unix系統)。對于windows,這些變量設置了所用到的smtp服務器以及顯示在電子郵件信息中的“from:”地址;而對于unix,變量sendmail_path則對郵件傳輸設置了mta(郵件傳輸代理,mail transfer agent)的路徑。

  smtp = myserver.localnet.com

  sendmail_from = <a href="mailto:[email protected]">[email protected]</a>

  sendmail_path = /usr/sbin/sendmail

  變量java.class.path、java.home、java.library以及java.library.path全部用來設置查找java類以及庫的路徑。這些值將被java擴展所使用,所以如果希望php能正確的同java程序進行集成,則必須確保這些變量被正確的設置。

  java.class.path = ./php_java.jar

  java.home = c:/jdk

  java.library = c:/jdk/jre/bin/hotspot/jvm.dll

  java.library.path= ./

  變量session.save_path指定了保存會話信息所需的臨時目錄。通常而言,此目錄默認為/tmp,但由于在windows系統中此默認目錄并不存在,所以你必須將其重新設置為正確的windows臨時目錄,否則會話處理程序將會在調用session_start()函數時彈出討厭的出錯信息。同時可以通過變量session.cookie_lifetime來控制會話cookie的有效期。

  session.save_path = c:/windows/temp

  session.cookie_lifetime = 1800

  在php.ini中,有很多同php安裝的安全問題相關的變量。其中最有趣的是safe_mode變量,建議針對isp以及共享主機服務(shared-hosting services)對其進行設置,此變量將對用戶對php的使用范圍進行限制。
&nbsp;
safe_mode = off

  當safe mode打開的時候,可以通過變量safe_mode_include_dir指定在何目錄中查找相關文件。通過將二進制程序放在特定目錄并使用safe_mode_include_dir變量將目錄告之php,php將對可使用exec()命令運行php腳本的程序種類進行限制。在此目錄中僅二進制文件可以通過exec()命令進行訪問。

  safe_mode_include_dir = /usr/local/lib/php/safe-include

  safe_mode_exec_dir = /usr/local/lib/php/safe-bin

  還可以通過變量open_basedir來限制文件操作。此變量將設置作為文件操作根(root)的目錄名。此變量設置后,對于php來說,存放在此目錄樹以外的文件將無法訪問。這對于在共享系統中將用戶限制在各自的home或者web目錄是一種很好的方法。

  open_basedir = /home/web/

  變量max_execution_time設置了在強制終止腳本前php等待腳本執行完畢的時間,此時間以秒計算。當腳本進入了一個無限循環狀態時此變量非常有用。然而,當存在一個需要很長時間完成的合法活動時(例如上傳大型文件),這項功能也會導致操作失敗。在這樣的情況下必須考慮將此變量值增加,以避免php在腳本正在執行某些重要過程的時候將腳本關閉。

  max_execution_time = 90

  剛提到了上傳,現在來看看如何配置uploads變量以及form變量。

  如果我們在文章前面所討論安全配置所提供的安全強度還不能滿足你的要求,可以通過關閉文件上傳或設置每次上傳最大文件尺寸限制來進一步提高安全強度。以上兩種功能將分別通過變量file_uploads和upload_max_filesize來實現。通常來說,除非系統中有為接收文件而設計的應用程序(例如基于web ftp服務的圖片冊),你應當設置一個相對較小的文件尺寸限制值。

  file_uploads = on

  upload_max_filesize = 2m

  如果你對于上傳文件并不關心,但在php應用程序中使用了大量的表單,這里有兩個變量將會讓你產生很大的興趣。首先是變量register_globals,它解決了php開發人員長期以來的心頭之痛。在php 3.x中,此變量默認為on。由此當提交表單時表單變量將自動的轉換成php變量。

  在php 4.x中,出于安全考慮,此變量默認設置為off。由此,表單變量將只能通過特定的$_get以及$_post進行訪問。這也造成了很多用php 3.x編寫的腳本在運行時出現問題,要求開發人員重寫腳本并對其重新測試。比如,輸入到表單域&lt;input type="text" name="email"&gt;中的值對于php 3.x腳本來說將可以理解為$email;而在php 4.x腳本中卻被作為$_post['email']或者$_get['email']。

  通常情況下可以將此變量設置為off,這樣可以對通過表單進行的腳本攻擊提供更為安全的防范措施。如果需要考慮到對早期php 3.x腳本的兼容問題,則應當置于on。

  register_globals = off

  同表單提交相關的一個變量是post_max_size,它將控制在采用post方法進行一次表單提交中php所能夠接收的最大數據量。似乎不大可能需要將默認的8 mb改得更大。相反,應當適當將其降到更為實際的數值。但如果希望使用php文件上傳功能,則需要將此值改為比upload_max_filesize還要大。

  post_max_size = 8m

  在php 5中增加了max_input_time變量。此變量可以以秒為單位對通過post、get以及put方式接收數據時間進行限制。如果應用程序所運行環境處在低速鏈路上,則需要增加此值以適應接收數據所需的更多時間。

  max_input_time = 90

  你還可以通過調整一些變量值來提升php解析器的性能。為了避免正在運行的腳本大量使用系統可用內存,php允許定義內存使用限額。通過memory_limit變量來指定單個腳本程序可以使用的最大內存容量:

  memory_limit = 8m

  變量memory_limit的值應當適當大于post_max_size的值。

  另一項可以用于提高性能的方法是禁用變量$argc以及$argv,這兩個值被用于存放在命令行中傳遞給應用程序的參數數量以及實際參數值。

  register_argc_argv = false

  類似,還可以禁用$http_get_vars以及$http_post_vars,因為在使用$_get以及$_post的今天你不大可能用到前兩種方式。禁用此功能可以帶來性能上的提升,但這只能通過php 5中的變量register_long_arrays實現。

  register_long_arrays = false

  函數ini_set()

  最后,需要注意ini_set()函數。當php讀取php.ini配置文件中的所有設置信息的同時,它還提供了采用ini_set()函數根據per-script原則更改這些設置的功能。此函數接收兩個參數:需要調整的配置變量名,以及變量的新值。例如,在某腳本出現時增加最大執行時間(maximum execution time):

  &lt;?php

  ini_set('max_execution_time', 600)

  // more code

  ?&gt;

  這樣的設置將僅僅影響被設置的腳本。一旦腳本執行完畢,該變量將自動恢復到原始值。

  如果php應用程序運行在一個共享服務器上,你不大可能可以訪問到主php.ini配置文件。這時,函數ini_set()就可以允許根據特殊要求對php配置做動態修改,這將會給你帶來很大的方便。

,歡迎訪問網頁設計愛好者web開發。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 景泰县| 湖北省| 平阳县| 墨竹工卡县| 玉屏| 峨山| 东港市| 高要市| 环江| 清水河县| 时尚| 定远县| 美姑县| 鱼台县| 九龙坡区| 临潭县| 济南市| 新密市| 于都县| 黎城县| 三穗县| 林口县| 灵台县| 玉林市| 抚松县| 甘洛县| 额济纳旗| 新竹市| 沁源县| 三江| 汉沽区| 阿城市| 安乡县| 新密市| 乌拉特前旗| 双辽市| 新沂市| 灌云县| 平邑县| 比如县| 乌兰察布市|