禁用php函数的设置

打开PHP.INI,找到这行:
disable_functions =

在后面那里加上要禁用的函数,如禁用多个函数,要用半角逗号 , 分开 

给个例子:

disable_functions = passthru,exec,system,popen,chroot,scandir,chgrp,chown,escapesh

ellcmd,escapeshellarg,shell_exec,proc_open,proc_get_status


建议在主机上禁用的函数:

disable_functions = system,exec,shell_exec,passthru,proc_open,proc_close, proc_get_status,checkdnsrr,getmxrr,getservbyname,getservbyport, syslog,popen,show_source,highlight_file,dl,socket_listen,socket_create,socket_bind,socket_accept, socket_connect, stream_socket_server, stream_socket_accept,stream_socket_client,ftp_connect, ftp_login,ftp_pasv,ftp_get,sys_getloadavg,disk_total_space, disk_free_space,posix_ctermid,posix_get_last_error,posix_getcwd, posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname


在主机上面如何查看禁用的函数列表,我从网上找了一个非常不错的探针

[php]  view plain copy
  1. header("content-Type: text/html; charset=utf-8");  
  2. header("Cache-Control: no-cache, must-revalidate");    
  3. header("Pragma: no-cache");  
  4. error_reporting(0);  
  5. ob_end_flush();  
  6.   
  7. ?>  
  8. "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  9. "http://www.w3.org/1999/xhtml">  
  10.   
  11. "Pragma" content="No-cache" />  
  12. "Expires" content="0" />  
  13. "cache-control" content="private" />  
  14. "Content-Type" content="text/html; charset=utf-8" />//[color=red]加了这句,看看能不能解决linux下显示乱码的问题?[/color]  
  15. PHP 探针 v1.0  
  16. "text/css">  
  17.   
  18.   
  19.   
  20.   
  21.   
  22. "overview">  
  23. "copyright">版权信息  
  24. "hello.php?typ=baseinfo">[基本信息] "hello.php?typ=superinfo">[高级信息]  
  25. if (function_exists("phpinfo")){  
  26.     echo'[phpinfo]';}  
  27.   
  28. echo'php探针v1.0 by MKDuse(blueidea-id)此程序代码,可免费使用;但不得用于商业用途;完全转载或使用此代码,请保留版权信息;欢迎指正错误提建议,QQ:122712355
';  
  •   
  • if (empty($_GET['typ'])){  
  •     baseinfo();}  
  • else{  
  • switch ($_GET['typ']){  
  • case 'phpinfo':  
  • phpinfoview();  
  • break;  
  • case 'superinfo':  
  • superinfo();  
  • break;  
  • case 'baseinfo':  
  • baseinfo();  
  • break;  
  • default:  
  • baseinfo();}  
  • }  
  •   
  • function getime()  
  • {  
  •   $t = gettimeofday();  
  •   return (float)($t['sec'] + $t['usec']/1000000);  
  • }  
  •   
  •   
  • function baseinfo(){  
  • echo '

    基本信息

    '
    ;  
  • $arr[]=array("Current PHP version:",phpversion());  
  • $arr[]=array("Zend engine version:",zend_version());  
  • $arr[]=array("服务器版本",$_SERVER['SERVER_SOFTWARE']);  
  • $arr[]=array("ip地址",$_SERVER['REMOTE_HOST']);//ip  
  • $arr[]=array("域名",$_SERVER['HTTP_HOST']);  
  • $arr[]=array("协议端口",$_SERVER['SERVER_PROTOCOL'].'  '.$_SERVER['SERVER_PORT']);  
  • $arr[]=array("站点根目录",$_SERVER['PATH_TRANSLATED']);  
  • $arr[]=array("服务器时间",date('Y年m月d日,H:i:s,D'));  
  • $arr[]=array("当前用户",get_current_user());  
  • $arr[]=array("操作系统",php_uname('s').php_uname('r').php_uname('v'));  
  • $arr[]=array("include_path",ini_get('include_path'));  
  • $arr[]=array("Server API",php_sapi_name());  
  •   
  • $arr[]=array("error_reporting level",ini_get("display_errors"));  
  • $arr[]=array("POST提交限制",ini_get('post_max_size'));  
  • $arr[]=array("upload_max_filesize",ini_get('upload_max_filesize'));  
  • $arr[]=array("脚本超时时间",ini_get('max_execution_time').'秒');  
  •   
  • if (ini_get("safe_mode")==0){  
  • $arr[]=array("PHP安全模式(Safe_mode)",'off');}  
  • else{  
  • $arr[]=array("PHP安全模式(Safe_mode)",'on');}  
  •   
  • if (function_exists('memory_get_usage')){  
  • $arr[]=array("memory_get_usage",ini_get('memory_get_usage'));}  
  •   
  • //$arr[]=array("可用空间",intval(diskfreespace('/')/(1024 * 1024))."M");  
  • echo'';  
  • for($i=0;$i<count($arr);$i++)  
  • {  
  •     $overview='
  • '.$arr[$i][0].'';  
  •     echo $overview;  
  • }  
  • echo'
  • '.$arr[$i][1].'
    '
    ;  
  • echo '

    服务器性能测试

    '
    ;  
  • echo'';  
  • echo'
  • ';  
  • $time_start=getime();  
  • for($i=0;$i<=500000;$i++);  
  • {$count=1+1;}  
  • $timea=round((getime()-$time_start)*1000,2);  
  • echo '
  • ';  
  •   
  • $time_start=getime();  
  • for($i=0;$i<=500000;$i++);  
  • {sqrt(3.14);}  
  • $timea=round((getime()-$time_start)*1000,2);  
  • echo '
  • 服务器整数运算50万次加法(1+1)浮点运算50万次平方根(3.14开方)
    MKDuse的机子(P4 1.5G 256DDR winxp sp2)465.08ms466.66ms
    当前服务器'.$timea.'ms '.$timea.'ms
    '
    ;  
  •   
  •   
  • ?>  
  • "javascript" type="text/javascript">  
  • function gettime()  
  • {    
  •   var time;    
  •   time=new Date();  
  •   return time.getTime();    
  • }  
  • start_time=gettime();  
  •   
  • echo '

    带宽测试

    '
    ;  
  • for ($i=0;$i<100;$i++){  
  • print "";}  
  •   
  • ?>  
  • "dk">

      
  • "javascript" type='text/javascript'>  
  • var timea;  
  • var netspeed;  
  • timea=gettime()-start_time;  
  • netspeed=Math.round(10/timea*1000);  
  • document.getElementByIdx("dk").innerHTML="向客户端发送10KB数据,耗时"+timea+"ms您与此服务器的连接速度为"+netspeed+"kb/s";  
  •   
  •   
  •   
  • echo'

    已加载的扩展库(enable)

    ';  
  • $arr =get_loaded_extensions();  
  • foreach($arr as $value){  
  •     echo $value.'';}  
  •   
  • echo'
  • 禁用的函数

    ';  

  • $disfun=ini_get('disable_functions');  
  • if (empty($disfun)){  
  •     echo'没有禁用

    '
    ;}  
  • else{  
  • echo ini_get('disable_functions').'

    '
    ;}  
  •   
  • }//关闭  
  •   
  •   
  •   
  • function superinfo(){  
  • echo'

    高级信息

    PHP_INI_USER 1 配置选项可用在用户的 PHP 脚本或Windows 注册表中
     PHP_INI_PERDIR 2 配置选项可在 php.ini, .htaccess 或 httpd.conf 中设置 
    PHP_INI_SYSTEM 4 配置选项可在 php.ini or httpd.conf 中设置 
    PHP_INI_ALL 7 配置选项可在各处设置

    '
    ;  
  •   
  • $arr1=ini_get_all();  
  • for ($i=0;$i<count($arr1);$i++)  
  •     {  
  • $arr2=array_slice($arr1,$i,1);  
  • print_r($arr2);  
  • echo '';  
  • }  
  •   
  • }  
  •   
  • function phpinfoview(){  
  •     phpinfo();  
  • }  
  • ?>  
  •   
  •   
  •   

  • phpinfo() 
    功能描述:输出 PHP 环境信息以及相关的模块、WEB 环境等信息。 
    危险等级:中 

    passthru() 
    功能描述:允许执行一个外部程序并回显输出,类似于 exec()。 
    危险等级:高 

    exec() 
    功能描述:允许执行一个外部程序(如 UNIX Shell 或 CMD 命令等)。 
    危险等级:高 

    system() 
    功能描述:允许执行一个外部程序并回显输出,类似于 passthru()。 
    危险等级:高 

    chroot() 
    功能描述:可改变当前 PHP 进程的工作根目录,仅当系统支持 CLI 模式 
    PHP 时才能工作,且该函数不适用于 Windows 系统。 
    危险等级:高 

    scandir() 
    功能描述:列出指定路径中的文件和目录。 
    危险等级:中 

    chgrp() 
    功能描述:改变文件或目录所属的用户组。 
    危险等级:高 

    chown() 
    功能描述:改变文件或目录的所有者。 
    危险等级:高 

    shell_exec() 
    功能描述:通过 Shell 执行命令,并将执行结果作为字符串返回。 
    危险等级:高 

    proc_open() 
    功能描述:执行一个命令并打开文件指针用于读取以及写入。 
    危险等级:高 

    proc_get_status() 
    功能描述:获取使用 proc_open() 所打开进程的信息。 
    危险等级:高 

    error_log() 
    功能描述:将错误信息发送到指定位置(文件)。 
    安全备注:在某些版本的 PHP 中,可使用 error_log() 绕过 PHP safe mode, 
    执行任意命令。 
    危险等级:低 

    ini_alter() 
    功能描述:是 ini_set() 函数的一个别名函数,功能与 ini_set() 相同。 
    具体参见 ini_set()。 
    危险等级:高 

    ini_set() 
    功能描述:可用于修改、设置 PHP 环境配置参数。 
    危险等级:高 

    ini_restore() 
    功能描述:可用于恢复 PHP 环境配置参数到其初始值。 
    危险等级:高 

    dl() 
    功能描述:在 PHP 进行运行过程当中(而非启动时)加载一个 PHP 外部模块。 
    危险等级:高 

    pfsockopen() 
    功能描述:建立一个 Internet 或 UNIX 域的 socket 持久连接。 
    危险等级:高 

    syslog() 
    功能描述:可调用 UNIX 系统的系统层 syslog() 函数。 
    危险等级:中 

    readlink() 
    功能描述:返回符号连接指向的目标文件内容。 
    危险等级:中 

    symlink() 
    功能描述:在 UNIX 系统中建立一个符号链接。 
    危险等级:高 

    popen() 
    功能描述:可通过 popen() 的参数传递一条命令,并对 popen() 所打开的文件进行执行。 
    危险等级:高 

    stream_socket_server() 
    功能描述:建立一个 Internet 或 UNIX 服务器连接。 
    危险等级:中 

    putenv() 
    功能描述:用于在 PHP 运行时改变系统字符集环境。在低于 5.2.6 版本的 PHP 中,可利用该函数 
    修改系统字符集环境后,利用 sendmail 指令发送特殊参数执行系统 SHELL 命令。 
    危险等级:高 

    禁用方法如下: 
    打开/etc/php.ini文件, 
    查找到 disable_functions ,添加需禁用的函数名,如下: 
    phpinfo,eval,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,fsockopen

    你可能感兴趣的:(PHP)