PHP5 ini配置檔案優化

2022-07-01 21:51:16 字數 3427 閱讀 1478

[root@php-node1 ~]# mount -t tmpfs tmpfs /dev/shm/ -o size=256m

[root@php-node1 ~]# mount -t tmpfs /dev/shm/ /tmp/eaccelerator/

2、其他加速器臨時目錄/tmp/eaccelerator/

無論是apache還是nginx,php.ini都是適合的。而php-fpm.conf適合nginx+fastcgi方式配置。首先選擇產品環境的php.ini(php.ini-production)

兩者的區別:生產場景php.ini的日誌都是關閉或者輸出到檔案中的。所以我們生產場景把非程式(php引擎)上的輸出都關閉或者隱藏。

php的安全模式是個非常重要的php內嵌的安全機制,能夠控制一些php中的函式執行,比如system(),同時把很多檔案操作的函式進行了許可權控制。

該引數配置如下:

safe_mode = off

;是否啟用安全模式。

;開啟時,php將檢查當前指令碼的擁有者是否是被操作的檔案的擁有者相同

如上,預設的php.ini是沒有開啟安全模式的,我們把它開啟如下:

safe_mode = on

當safe_mode開啟時,safe_mode_gid被關閉,那麼php指令碼能夠對檔案進行訪問,而且相同組的使用者也能夠對檔案進行訪問。建議設定為:

safe_mode_gid = off

如果不進行設定,可能我們無法對伺服器**目錄下的檔案進行操作了,比如我們需要對檔案進行操作的時候。php5.3.27預設為safe_mode_gid = off

如果開啟了安全模式,那麼函式禁止是可以不需要的,但是我們為了安全還是考慮進去。比如,我們覺得不希望執行包括system()等在那的能夠執行命令的php函式,或者能夠檢視php的資訊的phpinfo()等函式,那麼我們就可以禁止它們,方法如下:

disable_functions = system,passthru,exec,shell_exec,popen,phpinfo

如果你要禁止任何檔案和目錄的操作,那麼可以關閉很多檔案操作

disable_functions = chdir,chroot,dir,getcwd,opendir,readdir,scandir,fopen,unlink,delete,copy,mkdir,rmdir.rename,

file,file_get_contets,fputs,fwrite,chgrp,chmod,chown

以上只是列了部分不常見的檔案處理函式,你也可以把上面執行命令函式和這個函式結合,就能夠抵制大部分的phpshell了。該引數預設為disable_functions=

我們為了防止黑客獲取伺服器中的php版本的資訊,可以關閉該資訊在http頭中。

expose_php = on

;是否暴露php被安裝在伺服器上的事實(在http頭中加上其簽名)。

;它不會有安全上的直接威脅,但它使得客戶端知道伺服器上安裝了php。

建議設定為

expose_php = off

這樣當黑客執行telnet xuliangwei.com 80的時候,那麼將無法看到php的資訊。

在php中提交的變數,包括使用post或者get提交的變數,都將自動註冊為全域性變數,能夠直接訪問,這是對伺服器非常不安全的,所以我們不能讓它註冊為全域性變數,就把註冊全域性變數選項關閉:

該引數預設配置如下:

register_globals = off

;是否將e,g,p,c,s變數註冊為全域性變數。

;開啟該指令可能會導致嚴重的安全問題,除非你的指令碼經過非常仔細的檢查。

;該指令受variables_order指令的影響。

;php6中已經刪除此指令。

建議設定為:

register_globals = off

magic_quotes_gpc = off

magic_quotes_gpc = on

sql注入防範:

apache中的mod_security和mod_evasive

nginx lua waf

一般php在沒有連線到資料庫或者其他情況下會又提示錯誤,一般錯誤資訊中會包含php指令碼當前的路徑資訊或者查詢的sql語句等資訊,這類資訊提供給黑客後,是不安全的,所以一般伺服器建議禁止錯誤提示。

該引數預設配置如下:

display_errors = off

;是否將錯誤資訊作為輸出的一部分顯示給終端使用者。應用除錯時,可以開啟,方便檢視錯誤。

;在最終發布的web站點上,強烈建議你關掉這個特性,並使用錯誤日誌代替。

;在最終發布的web站點開啟這個特性可能暴露一些安全資訊。

;例如你的web伺服器上的檔案路徑、資料庫規劃或別的資訊。

設定為:

display_error = off (php5.3.27預設即為off狀態)

如果確實需要顯示錯誤資訊,一定要要設定顯示錯誤的級別,比如只顯示警告以上的資訊。

error_reporting = e_warning & e_error   #當然最好是關閉

建議在關閉display_errors後能夠把錯誤資訊記錄下來,便於查詢伺服器執行的原因:

log_errors = on (php5.3.27預設即為on)

同時也要設定錯誤日誌存放的目錄,建議跟web服務的日誌存在一起。

當無法上傳較大的檔案或者後台備份資料經常超時,此時需要調整如下設定:

max_execution_time = 30

;每個指令碼最大允許執行時間(秒),0 表示沒有限制。

;這個引數有助於劣質指令碼無休止的占用伺服器資源。

;該指令僅影響指令碼本身的執行時間,任何其他花費在指令碼執行之外的時間。

;如果system()/sleep()函式的使用、資料庫查詢、檔案上傳等,都不包括在內。

;在安全模式下,你不能用ini_set()在執行時改變這個設定。

memory_limit = 128m

;乙個叫本能所能夠申請到的最大記憶體位元組數(可以使用k和m作為單位)。

;這有助於防止劣質指令碼消耗完伺服器上的所有記憶體。

;要能夠使用指令必須在編譯時時間--enable-memory-limit配置選項。

;如果要取消記憶體限制,則必須將其設為 -1。

;設定了該指令後,memory_get_usage()函式將變為可用。

max_input_time = -1

;每個指令碼解析輸入資料(post,get,upload)的最大允許時間(秒)。

;-1 表示不限制。

設定為:

max_input_time = 60;

當上傳較大檔案時,需要調整如下引數:

upload_max_filesize = 2m;

;上傳檔案的最大許可大小,根據公司業務進行調整。

allow_url_fopen = off

2、設定:cgi.fix_pathinfo=0防止nginx檔案型別錯誤解析漏洞。

讀寫配置檔案 ini

配置檔案中經常用到ini檔案,在vc中其函式分別為 其中個引數的意思 lpctstr lpstring 是鍵值,也就是變數的值,必須為lpctstr或cstring型別 lpctstr lpfilename 完整的ini檔案路徑名 lpctstr lpdefaut 如果沒有其前兩個引數值,則將此值賦...

讀寫配置檔案 ini

在我們寫的程式當中,總有一些配置資訊需要儲存下來,以便完成程式的功能,最簡單的辦法就是將這些資訊寫入ini檔案中,程式初始化時再讀入.具體應用如下 一.將資訊寫入.ini檔案中.1.所用的winapi函式原型為 bool writeprivateprofilestring lpctstr lpkey...

讀寫INI配置檔案

在一些c s程式中我們經常會使用ini配置檔案 優點 1.靈活。2.相對於一些資料量的程式,相對使用資料庫更節約資源。配置檔案操作類 internal static class operconfigfile path.getdirectoryname assembly.getexecutingass...