标签 php 下的文章

使用Suhosin保护PHP

1、下载
PHP 5.2.X:https://download.suhosin.org/suhosin-0.9.37.1.tar.gz
PHP 5.X:https://download.suhosin.org/suhosin-0.9.38.tar.gz
2、安装

wget http://download.suhosin.org/suhosin-0.9.37.1.tar.gz
tar zxvf suhosin-0.9.37.1.tar.gz
cd suhosin-0.9.37.1/
phpize
./configure  --with-php-config=/usr/local/php/bin/php-config
make
make install

编辑/usr/local/php/etc/php.ini文件,在最后一行下方插入:

[Suhosin]
extension = suhosin.so
;禁用一些危险函数
suhosin.executor.eval.blacklist = base64_decode,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
suhosin.log.file.name = /usr/local/php/logs/suhosin-alert.log

SeaCMS打开程序错误提示,输出报错信息

为了安全和方便运营,海洋cms默认屏蔽了所有报错系统,如有调试需要,可以手动修改打开报错提示。

第一步:修改文件 include/common.php 删除第2,3行代码

error_reporting(0);
require_once('webscan/360webscan.php');

第二步:编辑环境配置文件php.ini

;显示错误信息  
display_errors = On  
;显示php开始错误信息  
display_startup_errors = On  
;日志记录错误信息  
log_errors = On

PHP天数计算

<?PHP
//今天与2012年11月29日相差多少天
$Date_1=date("Y-m-d");
$Date_2="2012-11-29";
$d1=strtotime($Date_1);
$d2=strtotime($Date_2);
$Days=round(($d1-$d2)/3600/24);
Echo "宝宝出生已经".$Days."天";
Echo "<br>";

//今天到2013年11月29日还有多少天
$Date_1=date("Y-m-d");
$Date_2="2013-11-29";
$d1=strtotime($Date_1);
$d2=strtotime($Date_2);
$Days=round(($d2-$d1)/3600/24);
Echo "离宝宝生日还有".$Days."天";

?>

ini_set(

今天在查看messages日志文件时,发现存在大量的错误:

Jan  4 14:41:08 myhost suhosin[954]: ALERT - script tried to disable memory_limit by setting it to a negative value -1 bytes which is not allowed (attacker '110.75.173.*', file '/home/wwwroot/2dan.cc/index.php', line 5)

后来发现原因是:index.php文件中有这么一行:

// 取消内存限制
ini_set("memory_limit",'-1');

而php.ini中

memory_limit = 128M

解决方法:

  1. 删除index.php中的

    ini_set("memory_limit",'-1');
    
  2. 将二处的值改为相同。
  3. 卸载 suhosin
  4. 修改php.ini

    memory_limit = -1
    

不推荐4,原因是可能内存会被吃光。