PHP有不少的配置參數,能夠直接訪問系統和操做目錄的。
好比system命令(該命令可讓php直接訪問Linux系統,作一些登陸後的操做)在默認的php-fpm程序裏,是默認關掉了的。
1.php-fpm的php.ini查看(默認的php目錄)
切換到/usr/local/php/etc 目錄下面,能夠看到php的基本配置在該目錄下
若是沒有找到 能夠用命令查找語句
find /usr/local/php -name php.ini
會將對應的位置列出來
2.關閉掉正在運行的php-fpm(主要做用是重啓php-fpm,解決一些崩潰BUG)
killall php-fpm(關閉掉全部叫php-fpm的運行進程)
若是要從新開始運行
/usr/local/php/sbin/php-fpm(超級管理員命令)
3.爲了防止對面查看php版本
expose_php=on (開啓這個後,攻擊者將沒法查看php的版本信息)
3.開啓後 能夠直接調用system(和system相似的包括exec命令,一個輸出命令運行的結果,一個不輸出運行的結果)
system("pwd");
直接調用了Linux的pwd命令。
該命令默認狀況是被禁止掉了的,在php.ini的
disable_functions = 後面能夠填寫一大串的禁止使用函數,(多個禁用函數的時候,須要用逗號分割)好比
禁止掉phpinfo() 函數,這樣系統就沒法查看phpinfo()的信息了。
若是要用系統的命令,須要開放system命令(該命令不安全,可是在恰當的場合使用卻能大幅度提高效率)
4.開啓了一些不安全的指令,須要用一些配置來限制其訪問目錄權限
open_basedir= .:/home/www/
open_basedir 限定當前用戶的訪問目錄 .表明當前目錄 /home/www表明容許訪問的全部目錄 超過限定目錄後,會直接報錯
5.在正式的運行環境上,須要對php.ini的一些東西進行新配置(生效的做用範圍僅僅是當前php腳本)
關閉錯誤顯示
error_reporting(E_ALL);
ini_set( 'display_errors', 'On' );
error_reporting(0);
ini_set( 'display_errors', 'Off' );
6.當開啓了safe_mode的時候 ini_set 也是沒有用的
ini_set('post_max_size','10M');
ini_set('upload_max_filesize','8M');//文件上傳最大
須要在.htaccess進行配置(要求設置是 AllowOverride All)
php_value upload_max_filesize 8M
php_value post_max_size 10M
PS:在大型項目部署中,全部環境都是統一的,通常都是開啓安全模式,這個時候是不容許單獨改變php的某個配置參數(PHP的配置是運維部肯定了配置,不容許程序員擅自改動運行環境,只能經過本身內部完成)要完成該功能就須要.htaccess 進行配置php