1、簡介php
PHP的配置項能夠在配置文件php.ini中配置,也能夠在腳本中使用ini_set()函數臨時配置。mysql
2、經常使用配置項sql
1、錯誤信息相關配置shell
1)display_errors數組
設定PHP是否將任何錯誤信息包含在返回給Web服務器的數據流中。(PHP將任何由error_reporting所定義的錯誤信息做爲錯誤數據流返回給Web服務器)瀏覽器
如:display_errors = On安全
2)error_reporting服務器
設置PHP的報錯級別。cookie
報錯級別參數列表:session
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 ; 除提示外,顯示全部錯誤
3)log_errors
PHP錯誤報告日誌功能開關。
如:log_errors = On
4)error_log
PHP錯誤報告日誌文件路徑。
如:error_log = "D:\www\php\php_errors.log"
5)display_startup_errors
是否打印php啓動時產生的錯誤。
如:display_startup_errors = On
6)track_errors
保存最近一個錯誤/警告消息於變量
php_errormsg這個變量只在錯誤發生的做用域內可用,而且要求track_errors是開啓的。
7)report_memleaks
設置是否報告內存泄露信息。這個參數只在調試編譯中起做用,而且必須在error_reporting中包含E_WARNING。
8)error_prepend_string
錯誤信息以前輸出的內容。
如:error_prepend_string = "<span style='color: #ff0000'>"
9)error_append_string
錯誤信息以後輸出的內容。
如:error_append_string = "</span>"
2、資源限制相關配置
1)post_max_size
POST方法提交數據的最大大小限制。
容許的POST數據最大字節長度。此設定也影響到文件上傳。若是POST數據超出限制,那麼$_POST和$_FILES將會爲空。要上傳大文件,該值必須大於upload_max_filesize指令的值。若是啓用了內存限制,那麼該值應當小於memory_limit指令的值。
如:post_max_size = 8M
若PHP程序須要上傳大型數據例如照片和視頻文件,則應提升upload_max_filesize和post_max_size的值
2)memory_limit
PHP進程可以佔用的最大內存,單位是M,默認值是128M。
如:memory_limit = 128M
3)max_execution_time
設定任何腳本所可以運行的最長時間,默認值是30秒。
如:max_execution_time = 30
4)max_input_nesting_level
設置輸入變量的嵌套深度(例如
_POST、$_COOKIE等)。
如:max_input_nesting_level = 64
5)max_input_vars
設置輸入變量的最大數量(限制分別應用於
_POST、$_COOKIE)。
如:max_input_vars = 1000
6)max_input_time
設置每一個腳本接收POST、GET及PUT等方式輸入數據的最大時間限制。
如:max_input_time = 60
7)default_socket_timeout
設置socket超時時間。Socket流從建立到傳輸再到關閉整個過程必需要在這個參數設置的時間內完成,若是不能完成,PHP將會自動結束這個socket並返回一個警告。例如:使用file_get_contents()函數獲取文件內容的時間會受到限制。
如:default_socket_timeout = 60
3、文件上傳相關配置
1)file_uploads
是否容許HTTP文件上傳。
如:file_uploads = On
2)upload_max_filesize
容許上傳的文件的最大尺寸。
如:upload_max_filesize = 2M
3)max_file_uploads
一個請求容許上傳的最大文件數量限制。
如:max_file_uploads = 20
4)upload_tmp_dir
文件上傳時存放文件的臨時目錄(必須是PHP進程用戶可寫的目錄)。
如:upload_tmp_dir = "D:/wamp/phpfileuploadtmp"
4、Session相關配置
1)session.save_path
設置session文件存放的位置(文件夾應該是已經存在的)。
如:session.save_path = "D:/www/phpsessiontmp"
2)session.save_handler
設置session數據的存取方式。默認以文件方式存取。
如:session.save_handler = files
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 = 一、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配置使用,不然無效
5、安全相關配置
1)register_globals
PHP在進程啓動時,會根據register_globals的設置,判斷是否將$_GET、$_POST、$_COOKIE、$_ENV、$_SERVER、$REQUEST等數組變量裏的內容自動註冊爲全局變量。(注:Removed in PHP 5.4.0.)
建議關閉該配置項,開啓會增長安全漏洞的數量,並隱藏了數據的來源。若是必需要開發一個在register_globals開啓的環境中佈署的應用,必需要讓全部變量在使用前進行初始化,當register_globals開啓時,任何使用未初始化變量的行爲都意味着安全漏洞。
2)allow_url_fopen
是否容許打開遠程文件。(出於安全性考慮,此選項只能在 php.ini 中設置。)
本選項激活了 URL 形式的 fopen 封裝協議使得能夠訪問 URL 對象例如文件。默認的封裝協議提供用 ftp 和 http協議來訪問遠程文件,一些擴展庫例如 zlib 可能會註冊更多的封裝協議。
3)allow_url_include
此選項容許有如下功能使用URL識別的fopen封裝:包括,include,include_once,require,require_once。此設置要求allow_url_fopen選項要開啓。
4)safe_mode
是否啓用安全模式。
打開時,PHP將檢查當前腳本的擁有者是否和被操做的文件的擁有者相同,相同則容許操做,不一樣則拒絕操做。開啓安全模式的前提是你的目錄文件權限已徹底分配正確。開啓該項會減慢程序執行效率。
6、語言相關配置
1)engine
設置PHP引擎是否可用,默認值爲On,若設置爲Off則沒法使用PHP。
2)short_open_tag
是否容許PHP腳本使用短開放標記,將「<?php ?>」改成「<? ?>」。但這個語法與XML相同,這在某些狀況下可能會致使問題,因此通常建議關閉該項。
3)output_buffering
設置是否使用輸出緩衝,或者設置輸出緩衝區的大小。使用輸出緩衝會使性能稍稍降低。
如:output_buffering = 4096
4)zend.enable_gc
設置是否開啓PHP的垃圾回收機制。
默認:zend.enable_gc = On
7、其它配置
1)date.timezone
定義日期函數使用的默認時區。
如:date.timezone = Asia/Shanghai
2)extension_dir
存放擴展庫(模塊)的目錄,也就是PHP用來尋找動態鏈接擴展庫的目錄。PHP擴展庫文件都存放在PHP安裝目錄下的ext目錄下。
如:extension_dir = "D:\www\bin\php7.0.9\ext"
3)extension
對於每一個須要激活的擴展,都須要一行相應的「extension=」語句來講明PHP啓動時須要加載哪些擴展。
如:extension=php_mysqli.dll
4)doc_root
PHP頁面在服務器上的根目錄。
如:doc_root = "D:\www"
5)include_path
指定一組目錄用於require(),include(),fopen_with_path()函數尋找文件。目錄之間Unix下用冒號分隔,Windows用分號分隔。
如:include_path=".:/php/includes"、include_path=".;c:\php\includes"
6)sys_temp_dir
PHP用於存放臨時文件的目錄。
如:sys_temp_dir = "/tmp"