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

首頁 > 開發(fā) > PHP > 正文

PHP.INI配置文件漫游

2024-05-04 23:04:59
字體:
供稿:網(wǎng)友
  • 網(wǎng)站運(yùn)營seo文章大全
  • 提供全面的站長運(yùn)營經(jīng)驗(yàn)及seo技術(shù)!
  •   php配置文件

      在開始瀏覽php配置文件之前,值得注意的是php配置文件的內(nèi)部結(jié)構(gòu)化。這個(gè)文件叫php.ini,它和許多windows應(yīng)用程序中廣泛使用的ini文件具有相同的結(jié)構(gòu)。php.ini是一個(gè)ascll文本文件,其分為多個(gè)部分,每一部分包括相關(guān)的參數(shù),如下所示:

      [mysection]
    variable="value"
    anothervariable="anothervalue

      每一部分的名稱位于最前面的方括號(hào)內(nèi),接著是名稱對(duì)數(shù)字,每一名稱對(duì)占單獨(dú)一行。因?yàn)橛靡?guī)則php代碼,參數(shù)名稱非常敏感,不能包含有空格.但是參數(shù)值可以是數(shù)字,字符串或者布爾邏輯數(shù)。

      分號(hào)位于每一行的開始,其作為指定標(biāo)記。這就使它很容易使用或者不使用php的這些特性;而無需通過刪除該行而實(shí)現(xiàn).你可以對(duì)其進(jìn)行注解,由此該行不會(huì)編譯。如果你想在以后數(shù)據(jù)庫中再次使用這一特性,這是非常方便,你不需要將其從文件中刪除。

      為了獲得php的識(shí)別,php.ini文件必須放置在當(dāng)前目錄下,而這一目錄是在$phprc環(huán)境參數(shù)中定義,或者是在編譯時(shí)間內(nèi)指定的目錄(對(duì)于windows php,就是首要windows目錄)。

      通過php.ini文件對(duì)php格式做出改變之后,你將需要重新啟動(dòng)web服務(wù)器,以便你的改變生效(當(dāng)然,這是假定你正在通過web服務(wù)器使用php的情況)。對(duì)于使用php的命令行情況,每調(diào)入一個(gè)php二進(jìn)制程序,配置文件就會(huì)被讀入一次。

      設(shè)置解析器選項(xiàng)

      在這一過程中,第一步是最為重要的一步,即與語言解釋程序相關(guān)的選項(xiàng)。這里首要選項(xiàng)為引擎參數(shù),其控制php服務(wù)器為“on”或者為“off”。關(guān)閉服務(wù)器表示嵌入的php代碼不會(huì)被web服務(wù)器解析。然而通常將服務(wù)器保持“on”狀態(tài)。

      engine = on

      short_open_tag參數(shù)控制語法分析器是否識(shí)別快捷鍵<?...?>,類似于識(shí)別標(biāo)準(zhǔn)鍵<?php...?>。如果這一參數(shù)與其它語言發(fā)生沖突,或者如果你想在php代碼中使用嚴(yán)格語法規(guī)則,就關(guān)閉該參數(shù)。

      short_open_tag = on

      通常情況下,在任何由程序產(chǎn)生輸出之前,cookie或者h(yuǎn)ttp數(shù)據(jù)必須被發(fā)送。如果在程序中無法實(shí)現(xiàn)這些,你可以通過使用輸出緩沖器(output_buffering)參數(shù),使php調(diào)用輸出緩沖器生效。

      通過輸出緩沖器為“on”狀態(tài),php將程序輸出存儲(chǔ)在一個(gè)專門的記憶緩沖器,且在明確指定發(fā)送的時(shí)間段發(fā)送。這就允許你在編寫程序過程或者是快要結(jié)束的時(shí)候,發(fā)送特殊的hiip標(biāo)題和重要數(shù)據(jù),但是,它也會(huì)下降一些重要的功能。

      output_buffering = off

       

      你也可以通過output_buffering參數(shù)值指明緩沖器大小,例如:

      output_buffering = 2048

       

      當(dāng)php啟動(dòng)時(shí),它添加一條有關(guān)版本號(hào)的信息到web服務(wù)器的標(biāo)準(zhǔn)標(biāo)題框。為了關(guān)閉這一特性,可以設(shè)定expose_php為false。這是非常有用,例如,你可以防止黑客而把你的網(wǎng)頁服務(wù)器容量隱藏起來。

      expose_php = on

       

      現(xiàn)在讓我們來看看怎樣設(shè)置搜索路徑和捕捉錯(cuò)誤。

      設(shè)置php搜索路徑

      你可以使用include_path參數(shù)設(shè)置php的搜索路徑,這一參數(shù)可以接收系列的目錄。當(dāng)php遇到?jīng)]有路徑的文件提示時(shí),它將會(huì)自動(dòng)檢測(cè)這些目錄。

      如果你頻繁使用函數(shù)庫或者類時(shí),可以列出它們當(dāng)前位置以簡化文件的查找。這也是增加路徑到php的pear目錄的一個(gè)好方法,pear目錄中包含許多可以重復(fù)使用的類。

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

       

      window用戶可以通過分號(hào)指定多個(gè)位置,而unix用戶必須用冒號(hào)隔開。

      對(duì)于這一小節(jié)內(nèi)容,最好的兩個(gè)參數(shù)是auto_prepend_file和auto_append_file。這些參數(shù)指定了一些文件,而這些文件在php啟動(dòng)和結(jié)束時(shí)自動(dòng)設(shè)置數(shù)據(jù)文件的搜索路徑。這一特性大多數(shù)用于設(shè)置php運(yùn)行中頁面的標(biāo)題和頁角的搜索路徑,這就使得你可以在編寫的每個(gè)php文件中省去幾行代碼。但是不足的是,指定的文件將會(huì)被添加*all* php文檔,因此,這些參數(shù)最適合于單一程序的服務(wù)器。

      這些文件既可以是php程序,也可以是html文件。嵌入的php代碼必須用標(biāo)準(zhǔn)的<?php...?標(biāo)簽包括:

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

       

      捕捉錯(cuò)誤

      php錯(cuò)誤分成四類:分析錯(cuò)誤,代碼錯(cuò)誤通知(比如沒有初始化的參數(shù)),警告(不是很嚴(yán)重的錯(cuò)誤),以及嚴(yán)重錯(cuò)誤。一般來說,php遇到分析錯(cuò)誤,或者一般錯(cuò)誤,或者是一個(gè)非常致命的錯(cuò)誤,它就顯示錯(cuò)誤。如果錯(cuò)誤非常嚴(yán)重,它就有可能停止程序處理。你可以用error_reporting參數(shù)改變這一特性,此參數(shù)可以識(shí)別一些錯(cuò)誤代碼,而且可以顯示對(duì)應(yīng)錯(cuò)誤的程序代碼。

      error_reporting = e_all

       

      為了關(guān)閉錯(cuò)誤的顯示,可以設(shè)置display_errors參數(shù)為false。相反,設(shè)置log_errors參數(shù)可以將錯(cuò)誤信息寫入錯(cuò)誤日志。

      從安全角度出發(fā),關(guān)閉錯(cuò)誤顯示是有好處的。隱藏系統(tǒng)的詳細(xì)信息,別有用意的用戶就不能打開和毀壞你的網(wǎng)頁或者程序。你應(yīng)該把這些錯(cuò)誤通過設(shè)置error_log參數(shù)指定一個(gè)文件名,寫在一個(gè)自定義日志文件中,或者通過指定特定參數(shù)“syslog”,把錯(cuò)誤寫入系統(tǒng)記錄中。請(qǐng)記住,你應(yīng)該有規(guī)律性的檢查這些日志文件,以查看日志文件發(fā)生的變化。

      display_errors = off
    log_errors = on
    error_log = "error.log"

       

      在這篇文章的第二部分,我將會(huì)更進(jìn)一步談到php.ini文件,討論諸如以下的設(shè)置,包括:文件上傳,表格解析,以受限模式運(yùn)行php以獲得更好的安全性,激發(fā)可擴(kuò)展功能,設(shè)置資源的內(nèi)存使用,以及使一些特性無效化以提高性能。

      文章第一部分已經(jīng)帶領(lǐng)你領(lǐng)略了php.ini文件的結(jié)構(gòu),并且說明了如何修改php查找路徑、差錯(cuò)處理,以及解析器的相關(guān)選項(xiàng)。第二部分將深入配置文件,內(nèi)容包括如何激活php擴(kuò)展選項(xiàng)、針對(duì)php腳本設(shè)置資源限制,以及通過php腳本動(dòng)態(tài)改變配置變量。

    激活擴(kuò)展選項(xiàng)

      php可以使用很多不同的擴(kuò)展選項(xiàng)。在unix系統(tǒng)中,擴(kuò)展選項(xiàng)需要在編譯時(shí)創(chuàng)建;而對(duì)于windows,二進(jìn)制dll文件將隨php發(fā)布而將自己包括進(jìn)去。變量extension_dir包括了php應(yīng)當(dāng)查看相關(guān)擴(kuò)展選項(xiàng)的目錄名。

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

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

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

      extension=php_domxml.dll

      extension=php_dbase.dll

    設(shè)置extension-specific變量

      變量extension-specific被存放在配置文件中一個(gè)單獨(dú)的區(qū)域。比如,所有同mysql擴(kuò)展功能相關(guān)的變量都應(yīng)當(dāng)存儲(chǔ)在php.ini中的[mysql]區(qū)域。

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

      smtp = myserver.localnet.com

      sendmail_from = [email protected]

      sendmail_path = /usr/sbin/sendmail

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

      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指定了保存會(huì)話信息所需的臨時(shí)目錄。通常而言,此目錄默認(rèn)為/tmp,但由于在windows系統(tǒng)中此默認(rèn)目錄并不存在,所以你必須將其重新設(shè)置為正確的windows臨時(shí)目錄,否則會(huì)話處理程序?qū)?huì)在調(diào)用session_start()函數(shù)時(shí)彈出討厭的出錯(cuò)信息。同時(shí)可以通過變量session.cookie_lifetime來控制會(huì)話cookie的有效期。

      session.save_path = c:/windows/temp

      session.cookie_lifetime = 1800

    安全設(shè)置

      在php.ini中,有很多同php安裝的安全問題相關(guān)的變量。其中最有趣的是safe_mode變量,建議針對(duì)isp以及共享主機(jī)服務(wù)(shared-hosting services)對(duì)其進(jìn)行設(shè)置,此變量將對(duì)用戶對(duì)php的使用范圍進(jìn)行限制。

      safe_mode = off

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

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

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

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

      open_basedir = /home/web/

      變量max_execution_time設(shè)置了在強(qiáng)制終止腳本前php等待腳本執(zhí)行完畢的時(shí)間,此時(shí)間以秒計(jì)算。當(dāng)腳本進(jìn)入了一個(gè)無限循環(huán)狀態(tài)時(shí)此變量非常有用。然而,當(dāng)存在一個(gè)需要很長時(shí)間完成的合法活動(dòng)時(shí)(例如上傳大型文件),這項(xiàng)功能也會(huì)導(dǎo)致操作失敗。在這樣的情況下必須考慮將此變量值增加,以避免php在腳本正在執(zhí)行某些重要過程的時(shí)候?qū)⒛_本關(guān)閉。

      max_execution_time = 90

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

    配置文件上載以及表單變量

      如果我們?cè)谖恼虑懊嫠懻摪踩渲盟峁┑陌踩珡?qiáng)度還不能滿足你的要求,可以通過關(guān)閉文件上傳或設(shè)置每次上傳最大文件尺寸限制來進(jìn)一步提高安全強(qiáng)度。以上兩種功能將分別通過變量file_uploads和upload_max_filesize來實(shí)現(xiàn)。通常來說,除非系統(tǒng)中有為接收文件而設(shè)計(jì)的應(yīng)用程序(例如基于web ftp服務(wù)的圖片冊(cè)),你應(yīng)當(dāng)設(shè)置一個(gè)相對(duì)較小的文件尺寸限制值。

      如果你對(duì)于上傳文件并不關(guān)心,但在php應(yīng)用程序中使用了大量的表單,這里有兩個(gè)變量將會(huì)讓你產(chǎn)生很大的興趣。首先是變量register_globals,它解決了php開發(fā)人員長期以來的心頭之痛。在php 3.x中,此變量默認(rèn)為on。由此當(dāng)提交表單時(shí)表單變量將自動(dòng)的轉(zhuǎn)換成php變量。

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

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

      register_globals = off

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

      post_max_size = 8m

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

      max_input_time = 90

    性能調(diào)整

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

      變量memory_limit的值應(yīng)當(dāng)適當(dāng)大于post_max_size的值。

      另一項(xiàng)可以用于提高性能的方法是禁用變量$argc以及$argv,這兩個(gè)值被用于存放在命令行中傳遞給應(yīng)用程序的參數(shù)數(shù)量以及實(shí)際參數(shù)值。

      register_argc_argv = false

      類似,還可以禁用$http_get_vars以及$http_post_vars,因?yàn)樵谑褂谩鏮get以及$_post的今天你不大可能用到前兩種方式。禁用此功能可以帶來性能上的提升,但這只能通過php 5中的變量register_long_arrays實(shí)現(xiàn)。

      register_long_arrays = false

      函數(shù)ini_set()

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

      <?php

      ini_set('max_execution_time', 600)

      // more code

      ?>

      這樣的設(shè)置將僅僅影響被設(shè)置的腳本。一旦腳本執(zhí)行完畢,該變量將自動(dòng)恢復(fù)到原始值。

      如果php應(yīng)用程序運(yùn)行在一個(gè)共享服務(wù)器上,你不大可能可以訪問到主php.ini配置文件。這時(shí),函數(shù)ini_set()就可以允許根據(jù)特殊要求對(duì)php配置做動(dòng)態(tài)修改,這將會(huì)給你帶來很大的方便。

    發(fā)表評(píng)論 共有條評(píng)論
    用戶名: 密碼:
    驗(yàn)證碼: 匿名發(fā)表
    主站蜘蛛池模板: 凤庆县| 铁岭市| 安乡县| 罗江县| 新乡县| 崇阳县| 北宁市| 本溪市| 邻水| 基隆市| 宁国市| 长垣县| 锦州市| 江油市| 绍兴市| 乐安县| 石嘴山市| 萝北县| 蒙自县| 科尔| 莒南县| 浪卡子县| 邹城市| 柏乡县| 南丰县| 杨浦区| 兴安县| 凌源市| 陈巴尔虎旗| 武平县| 博爱县| 阳原县| 辽阳市| 治县。| 万宁市| 鹤壁市| 厦门市| 宜丰县| 随州市| 平顶山市| 漾濞|