php
wordpress WP_Image_Editor_Imagick 指令注入漏洞之临时修复
星期四, 五月 19th, 2016 | php, wordpress | 2 Comments
imagick的漏洞最近闹的沸沸扬扬,我自己一直也没有特别关注,主要是我也没有对应的使用此功能做在线web图片的处理.
有用的情况下也是之前的一个内网项目做过图片的快速处理.
耐不住阿里云的安骑士的 友情提醒我的此漏洞,我惶恐的去查了下服务器的配置根本就没有发现 imagick 的扩展.
具体PHP支持开启 imagick 的扩展可以参照这篇文章 Centos 下编译PHP图片扩展库 ImageMagick、MagickWandForPHP、imagick
但是漏洞还是要修复的,要不老是 邮件 短信提醒的多可怕
提示如下:
漏洞名称:wordpress WP_Image_Editor_Imagick
指令注入漏洞补丁编号:4547205
补丁文件:../wp-includes/media.php
补丁来源:云盾自研
更新时间:2016-05-19 11:06:18
漏洞描述:该修复方案为临时修复方案,可能存在兼容性风险,为了防止WP_Image_Editor_Imagick扩展的指令注入风险,将wordpress的默认图片处理库优先顺序改为GD优先,用户可在/wp-includes/media.php的_wp_image_editor_choose()函数中看到被修改的部分
解决方法:
其实提示的临时修复方式也很简单,我自己没有购买付费服务就按照他的提示自己手工修复下,然后验证下,OK 显示已经修复
1 2 3 4 | $implementations = apply_filters( 'wp_image_editors', array( 'WP_Image_Editor_GD', 'WP_Image_Editor_GD' ) ); //注释掉下面一行,换成上面一行即可,其实就是关闭了Imagick的作为备选项的功能了 easy吧 //$implementations = apply_filters( 'wp_image_editors', array( 'WP_Image_Editor_Imagick', 'WP_Image_Editor_GD' ) ); |
CentOS6.5安装配置postfix邮件系统 启用并配置SMTP虚拟账户
星期三, 三月 9th, 2016 | JAVA-and-J2EE, linux, php | 一条评论
CentOS6.5_64位系统下安装配置postfix邮件系统 启用并配置SMTP虚拟账户 实录
开启用户注册的邮件检验功能,需要发送邮件,使用其他服务商的邮件服务总有每日和发送间隔发送邮件限制.
废话不多说主要实现功能为设置postfix配置,启用smtp服务帐号,只用来发送邮件验证和newsletter邮件
一:配置postfix及简单简介
开始之前,先介绍几个枯燥的名词:
MUA:用户代理端,即用户使用的写信、收信客户端软件。比如:outlook、foxmail等客户端软件,乃至通过浏览器登录邮箱并发送邮件的BS架构网页也算是MUA。
MTA:邮件传送端,即常说的邮件服务器,用于转发、收取用户邮件。本文之中的postfix实现的就是MTA,当然postfix也是一种特殊的MUA,不再深入介绍,本文之中仅把postfix当做MTA使用。
MDA:邮件代理端,相当于MUA和MTA的中间人,可用于过滤垃圾邮件。
POP:邮局协议,当前是第三版,也就是POP3,用于MUA连接服务器收取用户邮件,通信端口110。
IMAP:互联网应用协议,功能与POP类似:也用于MUA连接服务器收取用户邮件;功能较POP多,通信端口143。
SMTP:简单邮件传送协议,MUA连接MTA或MTA连接MTA发送邮件使用此协议,通信端口25,启用ssl/tls的情况下端口为465或587。
一般发邮件的步骤流程是:
1、MUA通过POP、IMAP或SMTP协议连接MTA(称之为mta1);本文之中php通过phpmailer请求发送邮件的php脚本就扮演了MUA的角色,而postfix就是MTA;
2、MUA发送邮件给mta1(或者说MUA通过mta1发送邮件);本文中postfix就是这个mta1;
3、mta1与其他的MTA自主沟通连接将邮件传送至指定域下的指定用户(此时mta1就扮演了MUA的角色功能,这种交互是由邮件系统软件自主实现,与用户端无关)。
本次搭建postfix目的很明确:
› Continue reading
windows下配置nginx1.9.x+php7开发环境
星期四, 二月 4th, 2016 | php | 没有评论
还是跑不掉在windows下配置对应的开发环境,准备:
1.下载对应的软件
nginx-1.9.10/Windows-1.9.10
PHP 7.0 (7.0.3)/php-7.0.3-nts-Win32-VC14-x86.zip
2.安装配置nginx和php
分别解压到 D:/web/nginx-1.9.10/ 和D:/web/php7/
修改php.ini-recommended文件为php.ini
打开 一堆扩展尽量打开这里示例2个
1 2 3 | extension_dir = "D:/web/php7/ext" extension=php_mysqli.dll cgi.fix_pathinfo=1 ##这个启用cgi核心关键 |
nginx.cnf 打开php支持 同时修改fastcgi_param 参数由/scripts$fastcgi_script_name; 修改为$document_root$fastcgi_script_name;
1 2 3 4 5 6 7 8 9 | # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { root D:/web/www; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } |
3.编辑php的脚本 (phpinfo.php)
<?php phpinfo(); ?> |
4.启动和关闭的脚本文件
启动脚本文件 start_nginx.bat
1 2 3 4 5 6 7 8 9 10 | @echo off echo starting nginx... D: cd D:/web/nginx-1.9.10/ start nginx echo starting PHP FastCGI... D: cd D:/web/php7/ php-cgi.exe -b 127.0.0.1:9000 -c D:/web/php7/php.ini exit |
关闭脚本文件 stop_nginx.bat
1 2 3 4 5 6 | @echo off echo Stopping nginx... taskkill /F /IM nginx.exe > nul echo Stopping PHP FastCGI... taskkill /F /IM php-cgi.exe > nul exit |
搞定配置
Mac下配置Apache和修改hosts文件
星期二, 一月 26th, 2016 | mac, php | 没有评论
Mac自带了Apache环境
可以使用指令查看Apache的版本
sudo apachectl -v |
设置虚拟主机
1.在终端运行“sudo vi /etc/apache2/httpd.conf”,打开Apche的配置文件
2.在httpd.conf中找到“#Include /private/etc/apache2/extra/httpd-vhosts.conf”,去掉前面的“#”,保存并退出。
› Continue reading
PHP中获取当前页面的URL的方法
星期五, 五月 1st, 2015 | php | 没有评论
脚本语言就是方便,随便写随便更新
要做以前的域名调整要把参数也调用过来,又设计到指定的不能直接转,有点绕了,废话不说了;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 测试网址: http://localhost/blog/testurl.php?id=359 //获取域名或主机地址 echo $_SERVER['HTTP_HOST']."<br>"; #localhost //获取网页地址 echo $_SERVER['PHP_SELF']."<br>"; #/blog/testurl.php //获取网址参数 echo $_SERVER["QUERY_STRING"]."<br>"; #id=359 //获取用户代理 echo $_SERVER['HTTP_REFERER']."<br>"; //获取完整的url echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']; #http://localhost/blog/testurl.php?id=359 //包含端口号的完整url echo 'http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; #http://localhost:80/blog/testurl.php?id=359 //只取路径 $url='http://'.$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"]; echo dirname($url); #http://localhost/blog |
Navicat 导出mysql数据库的时候出现 “Cannot proceed because system tables used by Event Scheduler
星期六, 二月 14th, 2015 | linux, php | 没有评论
用navicat 遭遇 “Cannot proceed because system tables used by Event Scheduler were found damaged at server start” .
使用的APMServ MySQL的集成环境(工具是好用但是找对应的文件是有点麻烦,我还是比较喜欢独立安装各个的支持,追求效率的话可以忽略)
在网上找了下要用什么upgrade什么exe升级下即可,没有找到对应的执行文件,在网上找到一个对应的执行sql即可的方法,如下:
进入mysql的系统库,执行sql:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | DROP TABLE IF EXISTS `event`; CREATE TABLE `event` ( `db` CHAR(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', `name` CHAR(64) NOT NULL DEFAULT '', `body` longblob NOT NULL, `definer` CHAR(77) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', `execute_at` datetime DEFAULT NULL, `interval_value` INT(11) DEFAULT NULL, `interval_field` enum('YEAR','QUARTER','MONTH','DAY','HOUR','MINUTE','WEEK','SECOND','MICROSECOND','YEAR_MONTH','DAY_HOUR','DAY_MINUTE','DAY_SECOND','HOUR_MINUTE','HOUR_SECOND','MINUTE_SECOND','DAY_MICROSECOND','HOUR_MICROSECOND','MINUTE_MICROSECOND','SECOND_MICROSECOND') DEFAULT NULL, `created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `modified` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00', `last_executed` datetime DEFAULT NULL, `starts` datetime DEFAULT NULL, `ends` datetime DEFAULT NULL, `status` enum('ENABLED','DISABLED','SLAVESIDE_DISABLED') NOT NULL DEFAULT 'ENABLED', `on_completion` enum('DROP','PRESERVE') NOT NULL DEFAULT 'DROP', `sql_mode` SET('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') NOT NULL DEFAULT '', `comment` CHAR(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', `originator` INT(10) UNSIGNED NOT NULL, `time_zone` CHAR(64) CHARACTER SET latin1 NOT NULL DEFAULT 'SYSTEM', `character_set_client` CHAR(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, `collation_connection` CHAR(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, `db_collation` CHAR(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, `body_utf8` longblob, PRIMARY KEY (`db`,`name`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Events'; |
出现Undefined variable: 引发的几个操作php-fpm等
星期三, 五月 28th, 2014 | linux, php | 没有评论
以前写的一个php脚本,在换成php5.5.8的版本的时候出现了 PHP Notice: undefined index xxx 的警告信息,感觉不舒服解决方法
方法1:服务器配置修改 修改php.ini配置文件,error_reporting = E_ALL & ~E_NOTICE
方法2:页面头部新增 error_reporting(E_ERROR | E_WARNING | E_PARSE); 或者 error_reporting(E_ALL & E_NOTICE); 或者 error_reporting(0);
检测参数方法:(在PHP5.5.8依然无效 Undefined variable: param)
定义一个函数: function _get($str){ $val = !empty($_GET[$str]) ? $_GET[$str] : null; return $val; } |
延伸问题:
1.修改在php.ini的参数后重启 php-fpm 网上的那种 php5.4下的 kill 等都无效(在5.5下无php-fpm.pid,kill对应进程也是无效的,我的默认起了3个php-fpm进程)
› Continue reading
Nginx 502 Bad Gateway 自动重启shell脚本
星期三, 八月 14th, 2013 | JAVA-and-J2EE, linux, php | 2 Comments
Nginx 502 Bad Gateway 自动重启shell脚本,启动 php 和重启nginx
新建 php文件 200_ok.php 文件(这个随便,内容也随便只要是想使用curl的访问方式)
<?php echo "200"; ?> |
建立一个脚本 vi web_monitor.sh (里面还有重启tomcate 的指令,后来发现使用正常关闭shutdown 有文件后台进程相关,可以直接杀掉进程的方式 ps -ef|grep java)
内容如下:
#!/bin/bash #author:Pomelo Lee #website://www.pomelolee.com CheckUrl="//www.pomelolee.com/200_ok.php" STATUS_CODE=`curl -o /dev/null -m 10 --connect-timeout 10 -s -w %{http_code} $CheckUrl` #echo "$CheckURL Status Code:\t$STATUS_CODE" if [ "$STATUS_CODE" != "200" ]; then /usr/local/webserver/php/sbin/php-fpm stop sleep 1 /usr/local/webserver/php/sbin/php-fpm start sleep 1 pkill -9 nginx sleep 1 /usr/local/webserver/nginx/sbin/nginx #sleep 1 #/usr/local/tomcat7/bin/shutdown.sh #sleep 2 #/usr/local/tomcat7/bin/startup.sh fi |
然后是设定权限:chmod 755 /root/web_monitor.sh
运行定时程序:crontab -e
输入以下内容每隔5分钟检测一次:*/5 * * * * /root/web_monitor.sh
修改PHP配置文件上传大文件
星期三, 四月 3rd, 2013 | php | 没有评论
要上传大文件到服务器,推荐使用flash长传组件(100M以内还是不错的)swfupload
PHP上传文件默认不能满足这个需求需要修改
1. 一般的php文件上传,除非文件很小.就像一个5M的文件,很可能要超过一分钟才能上传完.
但在php中,默认的该页最久执行时间为 30 秒.就是说超过30秒,该脚本就停止执行.
这就导致出现 无法打开网页的情况.这时我们可以修改 max_execution_time
在php.ini里查找
max_execution_time
默认是30秒.改为
max_execution_time = 0
0表示没有限制
以上修改的是php上传文件中脚本执行超时时间
2. 修改 post_max_size 设定 POST 数据所允许的最大大小。此设定也影响到php上传文件。
php默认的post_max_size 为2M.如果 POST 数据尺寸大于 post_max_size $_POST 和 $_FILES superglobals 便会为空.
查找 post_max_size .改为
post_max_size = 150M
› Continue reading
遭遇要执行请求的操作,wordpress需要访问您网页服务器的权限
星期三, 十一月 28th, 2012 | php, wordpress | 一条评论
最近折腾了下wordpress,记录碰到的各种问题的解决之法:
换了独立的vps机器后,在后台自动升级的时候遭遇 到要执行请求的操作,wordpress需要访问您网页服务器的权限 到这个;
这个界面只会出现在PHP进程不是以用户身份来运行的主机上,也就是你的服务器运行PHP的用户和WP文件夹的所有者不一样,
目的就是为了安全,wordpress在升级时会创建一个临时文件看看owner是不是和当前运行的php是否一样,如果不一样,就会出现这个界面。
› Continue reading
Search
相关文章
热门文章
最新文章
文章分类
- ajax (10)
- algorithm-learn (3)
- Android (6)
- as (3)
- computer (85)
- Database (30)
- disucz (4)
- enterprise (1)
- erlang (2)
- flash (5)
- golang (3)
- html5 (18)
- ios (4)
- JAVA-and-J2EE (186)
- linux (143)
- mac (10)
- movie-music (11)
- pagemaker (36)
- php (50)
- spring-boot (2)
- Synology群晖 (2)
- Uncategorized (6)
- unity (1)
- webgame (15)
- wordpress (33)
- work-other (2)
- 低代码 (1)
- 体味生活 (40)
- 前端 (21)
- 大数据 (8)
- 游戏开发 (9)
- 爱上海 (19)
- 读书 (4)
- 软件 (3)