一 基礎簡介
PHP.ini 适合于nginx和apache,如php-fpm适合于nginx+fastcgi的配置
php.ini PHP引擎 php.fpm PHP的程序
PHP的配置檔案由兩個,一個是development,另一個是production
兩個的差別:
生産場景php.ini的日志都是關閉或者輸出到檔案中的,是以我們在生産環境中把非程式上的輸出都關閉或隐藏
二 php.ini 參數調優
日志的關閉與隐藏就是PHP的基本調優
1 打開PHP的安全模式
PHP的安全模式是PHP内嵌的安全機制,能夠控制一些PHP中的函數執行,同時把很多檔案操作的函數進行權限控制,如果通過PHP來調用rm而删除一些伺服器資源,則安全不複存在
2 使用者組安全
當safe_mode 打開時,safe_mode_gid被關閉,那麼PHP腳本能夠對檔案進行通路,而且相同組的使用者也能對檔案進行通路,建議設定為:safe_mode_gid=off
如果不設定,則有可能我發對伺服器網站目錄下的檔案進行操作
3 關閉危險函數
例如可以通過phpinfo()檢視PHP的版本和基礎資訊,進而對系統有一個了解
4 關閉PHP版本資訊在HTTP頭中的洩露
5 關閉注冊全局變量
在PHP中送出的變量,包括使用POST或者GET送出的變量,都将自動注冊為全局變量,能夠直接通路,這對伺服器是非常不安全的,所有我們不能讓他注冊為全局變量,就把注冊全局變量的選項關閉,此處涉及到程式開發
6 打開magic_quotes_gpc 來防止SQL注入
SQL注入是非常危險的,輕則網站背景被修改,重則整個伺服器淪陷
SQL注入防範:
apache中mod_security和mod_enasive
nginx 中 nginx lua vaf
7 錯誤資訊控制
一般的PHP在沒有連接配接到資料庫或者其他情況下會有提示錯誤,一般錯誤資訊中會包含PHP腳本目前的路徑資訊或者查詢的SQL語句等資訊,這樣不安全
如果自己想看日志,則首先需要設定日志的級别
設定日志打開并提供一個路徑
8 部分資源參數限制優化
1 設定每個腳本運作的最長時間
當無法上傳較大的檔案或者背景備份資料經常逾時,需要調整,此參數是預設
2 每個腳本使用的最大記憶體
3 每個腳本等待輸入資料的最長時間
其中-1表示無限制
4 上載檔案的最大許可大小
9 部分安全參數優化
1 禁止打開遠端位址
2 設定 cgi.fix_pathinfo=0放置nginx檔案類型錯誤解析漏洞
10 調整PHP session 資訊存放類型和位置
預設位置
一般的,在資料進行再次通路如果會話存放在本地,通路被調用到另一台裝置上,則會導緻重新需要再次進行會話的儲存
其預設的儲存方式是檔案,一般需要将檔案修改為memcached
搭建memcached
路徑修改為memcached伺服器的位址
重新開機服務
檢視info是否存在
二 php-fpm
1 pid
打開pid 通過pid進行管理
2 開啟錯誤日志
3 開啟日志級别
4 最大的FPM fork 程序的數量。如果并發比較大,可以開大一點
5 調整最大打開檔案數量
6 使用者群組,要和nginx的使用者群組相同
7 修改監聽别的端口和IP位址
8 程序相關
1 預設
最大的程序數量
啟動服務程序數量
服務最小程序數量,當沒有流量時的服務數量
最大空間數