1. 程式人生 > >PHP參數調優

PHP參數調優

php.ini參數調優 PHP-fpm.conf參數調優

一 基礎簡介

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 默認

最大的進程數量
技術分享圖片
啟動服務進程數量
技術分享圖片
服務最小進程數量,當沒有流量時的服務數量
技術分享圖片
最大空間數
技術分享圖片

2 修改

技術分享圖片
修改參數結果
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
當該進程不使用時銷毀時間
技術分享圖片
每個子進程服務請求的數量
技術分享圖片

9 PHP的訪問日誌

技術分享圖片

10 慢查詢相關日誌開啟

技術分享圖片

PHP參數調優