一贪薪、簡介
PHP的配置項(xiàng)可以在配置文件php.ini中配置吨艇,也可以在腳本中使用ini_set()函數(shù)臨時配置徒爹。
二嘉蕾、常用配置項(xiàng)
1贺奠、錯誤信息相關(guān)配置
1)display_errors
設(shè)定PHP是否將任何錯誤信息包含在返回給Web服務(wù)器的數(shù)據(jù)流中。(PHP將任何由error_reporting所定義的錯誤信息作為錯誤數(shù)據(jù)流返回給Web服務(wù)器)
如:display_errors = On
2)error_reporting
設(shè)置PHP的報錯級別错忱。
報錯級別參數(shù)列表:
E_ALL:所有的錯誤和警告(不包括 E_STRICT)
E_ERROR:致命性的運(yùn)行時錯誤
E_WARNING:運(yùn)行時警告(非致命性錯誤)
E_PARSE:編譯時解析錯誤
E_NOTICE:運(yùn)行時提醒(這些經(jīng)常是你代碼中的bug引起的儡率,也可能是有意的行為造成的。)
E_STRICT:編碼標(biāo)準(zhǔn)化警告以清,允許PHP建議如何修改代碼以確保最佳的互操作性向前兼容性儿普。
E_CORE_ERROR :PHP啟動時初始化過程中的致命錯誤
E_CORE_WARNING:PHP啟動時初始化過程中的警告(非致命性錯)
E_COMPILE_ERROR:編譯時致命性錯
E_COMPILE_WARNING:編譯時警告(非致命性錯)
E_USER_ERROR:用戶自定義的錯誤消息
E_USER_WARNING:用戶自定義的警告消息
E_USER_NOTICE:用戶自定義的提醒消息
如:
Error_reporting = E_ALL & ~E_NOTICE ; 除提示外,顯示所有錯誤
3)log_errors
PHP錯誤報告日志功能開關(guān)掷倔。
如:log_errors = On
4)error_log
PHP錯誤報告日志文件路徑眉孩。
如:error_log = "D:\www\php\php_errors.log"
5)display_startup_errors
是否打印php啟動時產(chǎn)生的錯誤。
如:display_startup_errors = On
6)track_errors
保存最近一個錯誤/警告消息于變量php_errormsg這個變量只在錯誤發(fā)生的作用域內(nèi)可用浪汪,并且要求track_errors是開啟的障贸。
7)report_memleaks
設(shè)置是否報告內(nèi)存泄露信息。這個參數(shù)只在調(diào)試編譯中起作用吟宦,并且必須在error_reporting中包含E_WARNING篮洁。
8)error_prepend_string
錯誤信息之前輸出的內(nèi)容。
如:error_prepend_string = "<span style='color: #ff0000'>"
9)error_append_string
錯誤信息之后輸出的內(nèi)容殃姓。
如:error_append_string = "</span>"
2袁波、資源限制相關(guān)配置
1)post_max_size
POST方法提交數(shù)據(jù)的最大大小限制。
允許的POST數(shù)據(jù)最大字節(jié)長度蜗侈。此設(shè)定也影響到文件上傳篷牌。如果POST數(shù)據(jù)超出限制,那么$_POST和$_FILES將會為空踏幻。要上傳大文件枷颊,該值必須大于upload_max_filesize指令的值。如果啟用了內(nèi)存限制该面,那么該值應(yīng)當(dāng)小于memory_limit指令的值夭苗。
如:post_max_size = 8M
若PHP程序需要上傳大型數(shù)據(jù)例如照片和視頻文件,則應(yīng)提高upload_max_filesize和post_max_size的值
2)memory_limit
PHP進(jìn)程能夠占用的最大內(nèi)存隔缀,單位是M题造,默認(rèn)值是128M。
如:memory_limit = 128M
3)max_execution_time
設(shè)定任何腳本所能夠運(yùn)行的最長時間猾瘸,默認(rèn)值是30秒界赔。
如:max_execution_time = 30
4)max_input_nesting_level
設(shè)置輸入變量的嵌套深度(例如_POST牵触、$_COOKIE等)淮悼。
如:max_input_nesting_level = 64
5)max_input_vars
設(shè)置輸入變量的最大數(shù)量(限制分別應(yīng)用于_POST揽思、$_COOKIE)袜腥。
如:max_input_vars = 1000
6)max_input_time
設(shè)置每個腳本接收POST、GET及PUT等方式輸入數(shù)據(jù)的最大時間限制绰更。
如:max_input_time = 60
7)default_socket_timeout
設(shè)置socket超時時間瞧挤。Socket流從創(chuàng)建到傳輸再到關(guān)閉整個過程必須要在這個參數(shù)設(shè)置的時間內(nèi)完成,如果不能完成儡湾,PHP將會自動結(jié)束這個socket并返回一個警告特恬。例如:使用file_get_contents()函數(shù)獲取文件內(nèi)容的時間會受到限制。
如:default_socket_timeout = 60
3徐钠、文件上傳相關(guān)配置
1)file_uploads
是否允許HTTP文件上傳癌刽。
如:file_uploads = On
2)upload_max_filesize
允許上傳的文件的最大尺寸。
如:upload_max_filesize = 2M
3)max_file_uploads
一個請求允許上傳的最大文件數(shù)量限制。
如:max_file_uploads = 20
4)upload_tmp_dir
文件上傳時存放文件的臨時目錄(必須是PHP進(jìn)程用戶可寫的目錄)显拜。
如:upload_tmp_dir = "D:/wamp/phpfileuploadtmp"
4衡奥、Session相關(guān)配置
1)session.save_path
設(shè)置session文件存放的位置(文件夾應(yīng)該是已經(jīng)存在的)。
如:session.save_path = "D:/www/phpsessiontmp"
2)session.save_handler
設(shè)置session數(shù)據(jù)的存取方式远荠。默認(rèn)以文件方式存取矮固。
如:session.save_handler = files
3)session.use_cookies
是否使用cookies在客戶端保存會話sessionid,默認(rèn)為采用cookies譬淳。
如:session.use_cookies = 1
4)session.use_only_cookies
是否僅僅使用cookie在客戶端保存會話sessionid档址,這個選項(xiàng)可以使管理員禁止用戶通過URL來傳遞sessionid,默認(rèn)為0邻梆,如果禁用的話守伸,客戶端如果禁用cookie將使session無法工作。
如:session.use_only_cookies = 1
5)session.name
設(shè)置session名稱浦妄。
如:session.name = PHPSESSID
6)session.auto_start
是否自動啟動session尼摹,默認(rèn)不啟動。若不自動啟動剂娄,每個PHP腳本頭部都需要通過session_start()函數(shù)來啟動session蠢涝。
如:session.auto_start = 0
7)session.cookie_lifetime
傳遞sessionid的cookie有效期,0表示僅在瀏覽器打開期間有效宜咒。
如:session.cookie_lifetime = 0
8) session.gc_probability與session.gc_divisor
定義每次初始化會話時惠赫,啟動垃圾回收程序的概率。
計(jì)算公式:session.gc_probability / session.gc_divisor故黑。對會話頁面訪問越頻繁,概率就應(yīng)當(dāng)越小庭砍。
如:session.gc_probability = 1
场晶、session.gc_divisor = 1000
9)session.gc_maxlifetime
設(shè)定保存的session文件生存期,超過此參數(shù)設(shè)定秒數(shù)后怠缸,保存的數(shù)據(jù)將被視為’垃圾’并由垃圾回收程序清理诗轻。如果你在session.save_path選項(xiàng)中設(shè)定使用子目錄來存儲session數(shù)據(jù)文件,垃圾回收程序不會自動啟動揭北,你必須使用自己編寫的shell腳本扳炬、cron項(xiàng)或者其他辦法來執(zhí)行垃圾搜集。
如:session.gc_maxlifetime = 1440
10) session.use_trans_sid
設(shè)置當(dāng)客戶端禁用Cookie時搔体,是否將sessionid以參數(shù)的形式自動附加到URL末尾恨樟。
如:session.use_trans_sid = 1
注意:要配合session.use_only_cookies=0配置使用,否則無效
5疚俱、安全相關(guān)配置
1)register_globals
PHP在進(jìn)程啟動時劝术,會根據(jù)register_globals的設(shè)置,判斷是否將$_GET、$_POST养晋、$_COOKIE衬吆、$_ENV、$_SERVER绳泉、$REQUEST等數(shù)組變量里的內(nèi)容自動注冊為全局變量逊抡。(注:Removed in PHP 5.4.0.)
建議關(guān)閉該配置項(xiàng),開啟會增加安全漏洞的數(shù)量零酪,并隱藏了數(shù)據(jù)的來源冒嫡。如果必須要開發(fā)一個在register_globals開啟的環(huán)境中布署的應(yīng)用,必須要讓所有變量在使用前進(jìn)行初始化蛾娶,當(dāng)register_globals開啟時灯谣,任何使用未初始化變量的行為都意味著安全漏洞。
2)allow_url_fopen
是否允許打開遠(yuǎn)程文件蛔琅。(出于安全性考慮胎许,此選項(xiàng)只能在 php.ini 中設(shè)置。)
本選項(xiàng)激活了 URL 形式的 fopen 封裝協(xié)議使得可以訪問 URL 對象例如文件罗售。默認(rèn)的封裝協(xié)議提供用 ftp 和 http協(xié)議來訪問遠(yuǎn)程文件辜窑,一些擴(kuò)展庫例如 zlib 可能會注冊更多的封裝協(xié)議。
3)allow_url_include
此選項(xiàng)允許有以下功能使用URL識別的fopen封裝:包括寨躁,include穆碎,include_once,require职恳,require_once所禀。此設(shè)置要求allow_url_fopen選項(xiàng)要開啟。
4)safe_mode
是否啟用安全模式放钦。
打開時色徘,PHP將檢查當(dāng)前腳本的擁有者是否和被操作的文件的擁有者相同,相同則允許操作操禀,不同則拒絕操作褂策。開啟安全模式的前提是你的目錄文件權(quán)限已完全分配正確。開啟該項(xiàng)會減慢程序執(zhí)行效率颓屑。
6斤寂、語言相關(guān)配置
1)engine
設(shè)置PHP引擎是否可用,默認(rèn)值為On揪惦,若設(shè)置為Off則無法使用PHP遍搞。
2)short_open_tag
是否允許PHP腳本使用短開放標(biāo)記,將“<?php ?>”改為“<? ?>”丹擎。但這個語法與XML相同尾抑,這在某些情況下可能會導(dǎo)致問題歇父,所以一般建議關(guān)閉該項(xiàng)。
3)output_buffering
設(shè)置是否使用輸出緩沖再愈,或者設(shè)置輸出緩沖區(qū)的大小榜苫。使用輸出緩沖會使性能稍稍下降。
如:output_buffering = 4096
4)zend.enable_gc
設(shè)置是否開啟PHP的垃圾回收機(jī)制翎冲。
默認(rèn):zend.enable_gc = On
7垂睬、其它配置
1)date.timezone
定義日期函數(shù)使用的默認(rèn)時區(qū)。
如:date.timezone = Asia/Shanghai
2)extension_dir
存放擴(kuò)展庫(模塊)的目錄抗悍,也就是PHP用來尋找動態(tài)連接擴(kuò)展庫的目錄驹饺。PHP擴(kuò)展庫文件都存放在PHP安裝目錄下的ext目錄下楣嘁。
如:extension_dir = "D:\www\bin\php7.0.9\ext"
3)extension
對于每個需要激活的擴(kuò)展币叹,都需要一行相應(yīng)的“extension=”語句來說明PHP啟動時需要加載哪些擴(kuò)展。
如:extension=php_mysqli.dll
4)doc_root
PHP頁面在服務(wù)器上的根目錄泥彤。
如:doc_root = "D:\www"
5)include_path
指定一組目錄用于require()衔沼,include()蝌借,fopen_with_path()函數(shù)尋找文件。目錄之間Unix下用冒號分隔指蚁,Windows用分號分隔菩佑。
如:include_path=".:/php/includes"
、include_path=".;c:\php\includes"
6)sys_temp_dir
PHP用于存放臨時文件的目錄凝化。
如:sys_temp_dir = "/tmp"