一、簡介
PHP的配置項可以在配置文件php.ini中配置,也可以在腳本中使用ini_set()函數臨時配置。
二、常用配置項
1、錯誤信息相關配置
1)display_errors
設定PHP是否將任何錯誤信息包含在返回給Web服務器的數據流中。(PHP將任何由error_reporting所定義的錯誤信息作為錯誤數據流返回給Web服務器)
如:display_errors = On
2)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 ; 除提示外,顯示所有錯誤
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 = 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配置使用,否則無效
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"