Php配置文件:php.ini(使用‘;’表示註釋)php
Php的配置項能夠在配置文件中配置,也能夠在腳本中使用ini_set()函數臨時配置。html
語言相關配置:mysql
1. engine:設置PHP引擎是否可用,默認值爲On,若設置爲Off則沒法使用PHP。sql
配置示例:shell
engine = On數據庫
2. short_open_tag:是否容許PHP腳本使用短開放標記,將「<?php ?>」改成「<? ?>」。但這個語法與XML相同,這在某些狀況下可能會致使問題,因此通常建議關閉該項。apache
配置示例:數組
short_open_tag = Off瀏覽器
3. asp_tags:是否支持ASP風格的腳本定界,即「<% %>」。緩存
配置示例:
asp_tags = On
4. precision:指定在浮點數表示中顯示的有效數字。該項在Win32系統中設置爲14,在Linux中設置爲12.
配置示例:
precision = 14
5. output_buffering:設置是否使用輸出緩衝,或者設置輸出緩衝區的大小。使用輸出緩衝會使性能稍稍降低。
配置示例:
output_buffering = 4096
output_buffering = On
6. output_handler:設置將輸出返回給請求用戶以前要把全部輸出傳遞給一個函數。例如,假設你但願將輸出返回給瀏覽器以前先對全部輸出進行壓縮,能夠將該項配置爲PHP的壓縮處理函數「ob_gzhandler」。
配置示例:
output_handler = 「ob_gzhandler」
注意,不能在將output_handler設置爲ob_gzhandler的同時啓用zlib.output_compression。
7. zlib.output_compression:經過設置爲「On」或「Off」決定是否在輸出返回給瀏覽器之前先自動壓縮,經過賦一個整數值,能夠啓用輸出壓縮,同時設置壓縮緩衝區大小。
配置示例:
zlib.output_compression = Off
8. zlib.output_handler:若是zlib庫不可用,zlib.output_handler將指定一個特定的壓縮庫。
9. implicit_flush:啓用時,每次調用print()或echo(),以及完成各個嵌入的HTML塊後,將自動清除或刷新其內容的輸出緩衝區。當服務器須要很是長的時間來編譯結果或完成某些計算時,這可能頗有用。在這些狀況下,能夠利用這個特性想用戶輸出狀態更新,而不是等待服務器完成整個過程後才輸出。
配置示例:
implicit_flush = Off
10. ignore_user_abort:是否設置即便在用戶停止請求後也堅持完成整個請求。在執行一個長請求的時候應當考慮打開它,由於長請求可能會致使用戶中途停止或瀏覽器超時。該配置項能夠用於實現相似Unix下的crontab(定時任務計劃)功能。
配置示例:
ignore_user_abort=On
11.zend.enable_gc:設置是否開啓PHP的垃圾回收機制。
配置示例:
zend.enable_gc=On
安全相關配置:
1. safe_mode:是否啓用安全模式。
配置示例:
safe_mode = On
打開時,PHP將檢查當前腳本的擁有者是否和被操做的文件的擁有者相同,相同則容許操做,不一樣則拒絕操做。開啓安全模式的前提是你的目錄文件權限已徹底分配正確。開啓該項會減慢程序執行效率。
2. safe_mode_gid:開啓時表示修改安全模式的行爲,從執行前驗證UID改成驗證組ID。
配置示例:
safe_mode_gid = On
3. safe_mode_include_dir:指示多個路徑,啓動安全模式時在這些路徑中將忽略安全模式。
配置示例:
safe_mode_include_dir = 「/chsfc/data;/chsfc/log」 (在基於UNIX的系統多個路徑之間使用冒號分隔,在Windows中使用分號分隔)
4. safe_mode_env_vars:當啓用安全模式時,能夠只用此指令容許執行用戶的腳本修改某些環境變量。能夠容許修改多個變量,每一個變量之間用逗號分隔。
5. safe_mode_exec_dir:此指令指定一些目錄,其中的系統程序能夠經過諸如system()、exec()或passthru()等函數執行。爲此必須啓用安全模式。在全部操做系統中(包括Windows),都必須使用斜線(/)做爲目錄的分隔符。
6. safe_mode_protected_env_vars:此指令保護某些環境變量不能被putenv()函數修改。默認狀況下,變量LD_LIBRARY_PATH是受保護的,由於若是在運行時修改這個變量可能導致不可預知的結果。本項中聲明的全部變量都覆蓋 safe_mode_allowed_env_vars指令中聲明的變量。
7. open_basedir:指定容許PHP進行文件系統操做的目錄,任何對這些目錄之外的文件操做都會致使錯誤。
配置示例:
openbasedir="C:\inetpub\wwwroot;C:\inetpub\temp"(目錄之間由分號分隔)
(實際上「C:\inetpub\temp」指定的是目錄前綴,「C:\inetpub\temp\」指定的纔是特定的目錄)
8. disable_functions:該指令接受一個用逗號分隔的函數名列表,以禁用特定的函數。
配置示例:
disable_functions = 「chown,chroot」
出於安全緣由考慮,禁止使用一些特定的函數,此時若在程序中調用其中的任何一個函數都會出現Warning: ..... has been disabled for security reasons in .....
9. disable_classes:出於安全緣由,禁用特定的類。禁用多個類時,類名之間使用逗號分隔。
配置示例:
disable_classes=」vector,graph」
10. allow_url_include:PHP經過此選項控制是否容許經過include/require來執行一個遠程文件。
配置示例:
allow_url_include = Off
此項配置爲On存在安全漏洞:首先,遠程文件可能包含可運行的PHP木馬,其次,若將遠程文件url做爲參數傳遞,用戶能夠經過傳遞一個不存在的文件url來訪問使得服務器報錯,而後從報錯信息中獲得服務器的文檔路徑,經過必定手段獲取服務器上的敏感文件。
11. allow_url_fopen:是否容許打開遠程文件。
配置示例:
allow_url_fopen = Off
該項配置爲On存在安全漏洞。
12. register_globals:PHP在進程啓動時,會根據register_globals的設置,判斷是否將$_GET、$_POST、$_COOKIE、$_ENV、$_SERVER、$REQUEST等數組變量裏的內容自動註冊爲全局變量。
配置示例:
register_globals = Off
建議關閉該配置項,開啓會增長安全漏洞的數量,並隱藏了數據的來源。若是必需要開發一個在register_globals開啓的環境中佈署的應用,必需要讓全部變量在使用前進行初始化,當register_globals開啓時,任何使用未初始化變量的行爲都意味着安全漏洞。
13. enable_dl:設置是否容許使用dl()函數在腳本運行時加載PHP擴展。dl()函數僅在將PHP做爲apache模塊安裝時纔有效,在除apache之外的多線程服務器上不能正確工做。禁用dl()函數主要是出於安全考慮,由於它能夠繞過open_basedir指令的限制。在安全模式下始終禁用dl()函數,而無論此處如何設置。
配置示例:
enable_dl = Off
14. cgi.force_redirect:打開cgi強制重定向爲以CGI方式運行的php提供了必要的安全保護,php默認打開了該參數。
配置示例:
cgi.force_redirect=1
注意:在IIS/OmniHTTPD/Xitami上則必須關閉它!
性能相關配置:
1. realpath_cache_size:指定PHP使用的realpath(規範化的絕對路徑名)緩衝區大小。在PHP打開大量文件的系統上應當增大該值以提升性能。
配置示例:
realpath_cache_size=16k
注意:這個realpath_cache_size是每一個Apache進程獨佔的,因此很耗內存,不能設置的太大。
2. realpath_cache_ttl:realpath緩衝區中信息的有效期(單位:秒)。對文件不多變更的系統,能夠增大該值以提升性能。
配置示例:
realpath_cache_ttl=120
3. auto_globals_jit:是否僅在使用到$_SERVER和$_ENV變量時才建立(而不是在腳本一啓動自動建立)。若是並未在腳本中使用這兩個數組,打開該指令將會得到性能上的提高。要想該指令生效,必須關閉register_globals和register_long_arrays、register_argc_argv指令。
配置示例:
auto_globals_jit = On
錯誤信息相關配置:
1. log_errors:PHP錯誤報告日誌功能開關。
配置示例:
log_errors = On // 打開PHP錯誤報告日誌功能
2. error_log:PHP錯誤報告日誌文件路徑。
配置示例:
error_log = "D:\wamp\bin\Php7.0.9\php_errors.log"
3. error_reporting:設置PHP的報錯級別。
報錯級別參數列表:
E_ALL:全部的錯誤和警告(不包括 E_STRICT)
E_ERROR:致命性的運行時錯誤
E_WARNING:運行時警告(非致命性錯誤)
E_PARSE:編譯時解析錯誤
E_NOTICE:運行時提醒(這些常常是你代碼中的bug引發的,也多是有意的行爲形成的。)
E_STRICT:編碼標準化警告,容許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 // 除提示外,顯示全部錯誤
4. display_errors:設定PHP是否將任何錯誤信息包含在返回給Web服務器的數據流中。
配置示例:
display_errors = On
(PHP將任何由error_reporting所定義的錯誤信息做爲錯誤數據流返回給Web服務器)
5. display_startup_errors :是否打印php啓動時產生的錯誤。
配置示例:
display_startup_errors = Off
6. html_errors:是否在出錯信息中使用HTML標記。若是打開了html_errors指令,PHP將會在出錯信息上顯示超連接,直接連接到一個說明或者致使這個錯誤的函數的頁面。你能夠在網上下載php手冊,並將docref_root指令指向你本地的手冊所在的URL目錄中,你還必須設置docref_ext指令來指定文件的擴展名。
注意:不要在發佈的站點上使用這個特性。
配置示例:
html_errors = On
docref_root = "http://localhost/phpmanual/"
docref_ext = ".html"
7. track_errors:保存最近一個錯誤/警告消息於變量$php_errormsg中。$php_errormsg這個變量只在錯誤發生的做用域內可用,而且要求track_errors是開啓的。
配置示例:
track_errors = On
8. log_errors_max_len:設置錯誤日誌文件中每條錯誤消息的最大長度。
配置示例:
log_errors_max_len=1024
9. ignore_repeated_errors:是否忽略重複的錯誤信息。若是關閉這個參數,錯誤信息必須出如今同一個文件的同一行纔會被忽略。
配置示例:
ignore_repeated_errors=Off
10. ignore_repeated_source:忽略重複消息時,也忽略消息的來源,重複信息將不會記錄它是由不一樣的文件仍是不一樣的源代碼產生的。
配置示例:
ignore_repeated_source=Off
11. report_memleaks:設置是否報告內存泄露信息。這個參數只在調試編譯中起做用,而且必須在error_reporting中包含E_WARNING。
配置示例:
report_memleaks=On
12. error_prepend_string:錯誤信息以前輸出的內容。
配置示例:
error_prepend_string = "<span style='color: #ff0000'>"
13. error_append_string:錯誤信息以後輸出的內容。
配置示例:
error_append_string = "</span>"
資源限制相關配置:
1. max_execution_time:設定任何腳本所可以運行的最長時間,默認值是30秒。
配置示例:
max_execution_time = 30
2. memory_limit:PHP進程可以佔用的內存,單位是M,默認值是128M。
配置示例:
memory_limit = 128M
3. max_input_nesting_level:設置輸入變量的嵌套深度(例如$_GET、$_POST、$_COOKIE等)。
配置示例:
max_input_nesting_level=64
4. max_input_vars:設置輸入變量的最大數量(限制分別應用於$_GET、$_POST、$_COOKIE)。
配置示例:
max_input_vars=1000
5. max_input_time:設置每一個腳本接收POST、GET及PUT等方式輸入數據的最大時間限制。
配置示例:
max_input_time = 60
6. default_socket_timeout:設置socket超時時間。Socket流從建立到傳輸再到關閉整個過程必需要在這個參數設置的時間內完成,若是不能完成,PHP將會自動結束這個socket並返回一個警告。例如:使用file_get_contents()函數獲取文件內容的時間會受到限制。
配置示例:
default_socket_timeout=60
7. pcre.backtrack_limit:PCRE的最大回溯步數限制。該參數影響非貪婪模式的正則匹配。
配置示例:
pcre.backtrack_limit=100000
注意:若是將這個值設置爲一個很大的數字,可能會消耗掉全部的進程可用棧,最終致使php崩潰。
8. pcre.recursion_limit:PCRE的最大遞歸深度限制。
配置示例:
pcre.recursion_limit=100000
實際項目應用中,最好也對內存進行限定設置memory_limit,這樣比較穩妥。
9. post_max_size:POST方法提交數據的最大大小限制。
配置示例:
post_max_size = 8M
(若PHP程序須要上傳大型數據例如照片和視頻文件,則應提升upload_max_filesize和post_max_size的值)
數據處理相關配置:
1. allow_calltime_pass_reference:是否強制全部參數在函數調用時都按引用傳遞,不推薦。建議在函數定義中指定每一個參數在函數調用時的傳遞方式,傳值或傳引用。
配置示例:
allow_calltime_pass_reference = Off
2. register_argc_argv:是否聲明$argv和$argc變量。命令行運行PHP腳本格式:php php腳本路徑 參數1 參數2 參數3 ... 參數n。$argv是一個數組,存儲命令行參數,其中第一個元素是腳本文件路徑名稱。$argc保存$argv數組元素的個數。若不想使用這兩個變量,應當關閉它以提升性能。
配置示例:
register_argc_argv = Off
3. request_order:設置超全局變量$_REQUEST的值。默認值爲「GP」,只包含$_GET和$_POST而不包括$_COOKIE。G,P,C的前後順序就是設置的array的覆蓋順序(後者覆蓋前者)。
配置示例:
request_order = "GP"
4. variables_order:設置PHP變量解析順序,包括$_GET,$_POST,$_COOKIE,$_ENV ,$_SERVER 數組,解析順序從左到右,後解析新值覆蓋舊值。默認設定爲EGPCS(Environment,GET,POST,Cookie,Server)。
配置示例:
variables_order = "GPCS"
5. arg_separator.output:設置PHP所產生的URL中來分隔參數的分隔符,默認是「&」。
配置示例:
arg_separator.output = "&"
PHP產生URL的函數:http_build_query
6. arg_separator.input:PHP解析URL中的變量時使用的分隔符列表,默認是「&」。
配置示例:
arg_separator.input = ";&"(字符串中的任何字符都將被當作分隔符)
7. auto_prepend_file和auto_append_file:分別指定在主文件以前和以後自動解析的文件名。這些文件就像調用了include()函數被包含進來同樣,所以會使用include_path指令的值。
注意:若是腳本經過exit()終止,那麼自動後綴將不會發生。
8. default_mimetype和default_charset:分別設置PHP文檔的MIME類型和字符集的編碼
方式。這兩個信息會在數據包頭部字段「Content-Type」中輸出。
配置示例:
default_mimetype = "text/html"
default_charset = "UTF-8"
文件上傳相關配置:
1. file_uploads:是否容許HTTP文件上傳。
配置示例:
file_uploads=On
2. max_file_uploads:一個請求容許上傳的最大文件數量限制。
配置示例:
max_file_uploads=20
3. upload_tmp_dir:文件上傳時存放文件的臨時目錄(必須是PHP進程用戶可寫的目錄)。
配置示例:
upload_tmp_dir = "D:/wamp/phpfileuploadtmp"
4. upload_max_filesize:上傳文件的最大大小限制。
配置示例:
upload_max_filesize = 2M
Session相關配置:
1. session.save_path:設置session文件存放的位置(文件夾應該是已經存在的)。
配置示例:
session.save_path = "D:/wamp/phpsessiontmp"
爲了保證服務器的安全,最好設置爲外網沒法訪問的目錄。
2. session.save_handler:設置session數據的存取方式。默認以文件方式存取。
配置示例:
session.save_handler = files // 文件方式
session.save_handler = user // 數據庫方式
3. session.use_cookies:是否使用cookies在客戶端保存會話sessionid,默認爲採用cookies。
配置示例:
session.use_cookies = 1
4. session.use_only_cookies:是否僅僅使用cookie在客戶端保存會話sessionid,這個選項可使管理員禁止用戶經過URL來傳遞sessionid,默認爲0,若是禁用的話,客戶端如果禁用cookie將使session沒法工做。
配置示例:
session.use_only_cookies = 1
5. session.name:設置session名稱。
配置示例:
session.name = PHPSESSID
6. session.auto_start:是否自動啓動session,默認不啓動。若不自動啓動,每一個PHP腳本頭部都須要經過session_start()函數來啓動session。
配置示例:
session.auto_start = 0
7. session.cookie_lifetime:傳遞sessionid的cookie有效期,0表示僅在瀏覽器打開期間有效。
配置示例:
session.cookie_lifetime = 0
8. session.gc_probability和session.gc_divisor:定義每次初始化會話時,啓動垃圾回收程序的機率。計算公式:session.gc_probability / session.gc_divisor。對會話頁面訪問越頻繁,機率就應當越小。
配置示例:
session.gc_probability = 1
session.gc_divisor = 1000
9. session.gc_maxlifetime:設定保存的session文件生存期,超過此參數設定秒數後,保存的數據將被視爲’垃圾’並由垃圾回收程序清理。若是你在session.save_path選項中設定使用子目錄來存儲session數據文件,垃圾回收程序不會自動啓動,你必須使用本身編寫的shell腳本、cron項或者其餘辦法來執行垃圾蒐集。
配置示例:
session.gc_maxlifetime = 1440
10. session.use_trans_sid:設置當客戶端禁用Cookie時,是否將sessionid以參數的形式自動附加到URL末尾。
配置示例:
session.use_trans_sid = 1
(注意:要配合session.use_only_cookies=0配置使用,不然無效)
11. session.bug_compat_42和session.bug_compat_warn:PHP4.2以前的版本有一個未註明的"特性"(也可看做bug):即便在"register_globals = Off"的狀況下也容許初始化全局session變量,在4.2.3之後, 爲了兼容之前的模式, PHP引入了bug_compat_42, 當啓用這個選項之後(默認啓用), PHP將允許自動將SESSION中的變量作爲全局變量使用. 只不過若是bug_compat_warn選項開啓的狀況下, 會報告這個特性的被使用.
配置示例:
session.bug_compat_42 = On
session.bug_compat_warn = On
12. session.hash_bits_per_character:指定在session_id字符串中的每一個字符內保存多少位二進制數,這些二進制數是hash函數的運算結果。影響session id的長度,該值減少時session id長度增大。
配置示例:
session.hash_bits_per_character = 5
13. url_rewriter.tags:指定重寫哪些HTML標籤來包含session_id。(僅在"session.use_trans_sid"打開的狀況下有效)form和fieldset比較特殊,若是你包含他們,URL重寫器將添加一個隱藏的"<input>",它包含了本應當額外追加到URL上的信息。若是你想兼容XHTML標準,請使用"fieldset"代替"form"。
注意:全部合法的項都須要一個等號——即便後面沒有值。
配置示例:
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
其餘配置:
1. extension_dir:存放擴展庫(模塊)的目錄,也就是PHP用來尋找動態鏈接擴展庫的目錄。PHP擴展庫文件都存放在PHP安裝目錄下的ext目錄下。
配置示例:
extension_dir = "D:\wamp\bin\Php7.0.9\ext"
2. extension:對於每一個須要激活的擴展,都須要一行相應的「extension=」語句來講明PHP啓動時須要加載哪些擴展。
配置示例:
配置一個文件名:
extension=php_mysqli.dll
或者配置一個路徑:
extension="D:\wamp\bin\Php7.0.9\ext\php_mysqli.dll"
(若是隻是配置文件名,PHP會在extension_dir配置的目錄下查找)
3. date.timezone:設置時區。該設置影響PHP中全部的日期、時間函數。
配置示例:
date.timezone = Asia/Shanghai
4. doc_root:PHP頁面在服務器上的根目錄。
配置示例:
doc_root = "D:\wamp\www"
5. magic_quotes_gpc:PHP根據其配置決定是否將對全部GPC參數($_GET,$_POST,$_COOKIE)進行addslashes處理[既轉義單引號、雙引號、反斜線和nullbyte]
配置示例:
magic_quotes_gpc = On
將magic_quotes_gpc設置爲On時存在性能損耗。
6. expose_php:是否隱藏PHP版本信息。
配置示例:
expose_php = Off
若將該配置項開啓,服務器發出的http包頭部都會包含PHP的版本信息,如:X-Powered-By:PHP/7.0.9,若關閉則不會出現。
7. user_ini.filename和user_ini.cache_ttl:user_ini.filename設置用戶能夠自定義的php.ini文件的名稱;讀取文件後會緩存起來,user_ini.cache_ttl設置從新讀取的時間間隔。
配置示例:
user_ini.filename = ".user.ini"
user_ini.cache_ttl = 300
8. include_path:指定一組目錄用於require(),include(),fopen_with_path()函數尋找文件。目錄之間Unix下用冒號分隔,Windows用分號分隔。
配置示例:
Unix:include_path=".:/php/includes"
Windows:include_path=".;c:\php\includes"
9. sys_temp_dir:PHP用於存放臨時文件的目錄。
配置示例:
sys_temp_dir = "C:\Windows\TEMP"
10. cgi.nph:若是該參數打開,那麼它會強制cgi對每一個http請求始終發送狀態碼200.
配置示例:
cgi.nph=1
11. SMTP:mail()函數中用來發送郵件的SMTP服務器的主機名或IP地址,僅用於win32.
配置示例:
SMTP=localhost
12. smtp_port:SMTP服務器的端口號,僅用於win32.
配置示例:
smtp_port=25
13. sendmail_from:發送郵件時使用的「From:」頭中的郵件地址,僅用於win32。
配置示例:
sendmail_from = me@example.com
14. cgi.force_redirect:這是個在許多Web服務器中都須要被激活的目錄安全功能,不設置時服務器默認開啓。可是在IIS服務器中必定要把這個功能關閉,不然會致使PHP引擎在Windows中出錯。
配置示例:
cgi.force_redirect = 1 // 1開啓,0關閉
15. cgi.fix_pathinfo:此指令能夠容許PHP聽從CGI規則訪問真實路徑信息。IIS的FastCGI實現須要激活此指令。
配置示例:
cgi.fix_pathinfo = 1
16. Fastcgi.impersonate: IIS 下的 FastCGI 支持模擬呼叫用戶方安全令牌的能力。這使得IIS能夠定義請求方的安全上下文。
配置示例:
Fastcgi.impersonate = 1
17. Fastcgi.logging:FastCGI 日誌在 IIS 下應被關閉。若是激活,則任何類的任何消息都被FastCGI 視爲錯誤條件從而致使 IIS 產生 HTTP 500 錯誤。
配置示例:
Fastcgi.logging:FastCGI = 0