在openwrt上安装php

1.安装

确保你已经配置好了opkg源。

安装php及其扩展:

opkg update
opkg install php5 php5-cgi php5-mod-mcrypt php5-mod-curl php5-mod-hash php5-mod-json

2.配置

编辑php.ini

vi /etc/php.ini

;extension = curl.so
;extension = hash.so
;extension = json.so

三项前面的;去掉以启用扩展

并将;date.timezone =修改为date.timezone = Asia/Shanghai

如果你没有设置过系统时区的话还需要设置系统时区。打开LUCI界面,进入系统 – 系统属性 – 基本设置中将时区改为Asia/Shanghai

最后你需要安装一个时区信息软件包,否则系统无法识别时区。

opkg install zoneinfo-asia

3.可能遇到的问题

1.can’t load library ‘libpcre.so.0’

当我按照上述步骤安装/配置完成后访问浏览器却得到了一个无情的502,运行/usr/bin/php-cgi得到下面的错误:

/usr/bin/php-cgi: can't load library 'libpcre.so.0'

搜索一番后得出以下解决方案:

ln -s /usr/lib/libpcre.so.1 /usr/lib/libpcre.so.0

2.No input file specified.

解决了502,再次访问浏览器却提示”No input file specified.”。继续搜索后得出下面的方案:

编辑php.ini,注释掉doc_root=”/www”这一行(在前面加上;

 

大功告成!现在访问浏览器一切正常。

安装迅雷精简版出现[已经阻止此发布者在你的计算机上运行软件]

今天打算在机子上装一个迅雷精简版,结果可能是太久未更新导致证书过期的缘故,win10弹出了如下提示阻止安装:

请自行忽略迷之马赛克

网上给出的解决方案如下:

在属性里如下设置,应用即可。

然而似乎并没有解决问题,又出现了“管理员已阻止你运行此应用。有关详细信息,请与管理员联系。”:

带着疑惑,我查看了证书信息:

 

。。。。。。

 

可以啊迅雷,良心产品直接吊销证书?也亏你们想得出来

又继续一番查找之后,找到了真正的解决方案:

右键WIN图标,选择命令提示符(管理员):

同时复制安装文件的路径:

在新打开的命令提示符窗口里输入下面的命令:

cd 安装文件路径

最后输入文件名全名:

回车,成功~

openwrt科学那啥排查记

前两天路由器的科学那啥突然挂了,后来花了很大功夫才解决好,亦在此记录一下。

1.服务端篇

很奇怪,shadowsocks怎么都连不上服务器。看日志是“服务器拒绝了连接”,可防火墙又一切正常。仔细检查后发现服务端的地址设置为一个域名,而openwrt上我却是用IP连接的,将服务端地址也换为服务器IP即可。

2.Pdnsd篇

老问题了,pdnsd地址没填对。传送门:https://www.zhoushangren.com/archives/521

3.ChinaDNS篇

很诡异的,chinadns突然无法解析了!国内国外域名全部无法解析!在考虑了多种可能后得出结论:应该是自动更新脚本更新的IP段文件出了问题,将chinadns_chnroute.txt恢复为出厂版本即可。

(附上那段更新脚本:

curl ‘http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest’ | grep ipv4 | grep CN | awk -F\| ‘{ printf(“%s/%d\n”, $4, 32-log($5)/log(2)) }’ > /etc/chinadns_chnroute.txt

4.openwrt系统篇

按理说现在也折腾的差不多了啊,可是还是有问题:一开始还连的上,等个半分钟左右就掉线了。这实在是令我百思不得其解,直到最后发现原来罪魁祸首是【虚拟WAN接口】!

如图所示,虽然我关闭了它,但是虚拟WAN接口数量还是2,而最低在线接口数是1。这就触发了一个奇怪的bug:系统要求最少要有一个接口在线,而我又根本没有开启这个功能。于是WAN便会不断重连以尝试使那个不存在的接口在线,如此反复…

解决方案也很简单,将虚拟WAN接口数量改为0即可~

Pdnsd问题排查记

今天突然就无法访问国外所有的网站了。对,是所有的国外网站,包括那些没被墙的。

第一反应是又抽风了,重启了ChinaDns+Pdnsd+ShadowSocks,重启浏览器,问题依旧。

难道是dns服务器抽风了?使用dig @192.168.1.1 -p 1253 www.google.com正常(我的pdnsd开在1253端口上)。

(我的解析流程大概是:pdnsd/1253 —— chinadns/1053 —— dnsmasq/53)

这实在是太奇怪了!有意识到不会是chinadns有问题了吧?尝试直接使用dnsmasq转发所有解析到127.0.0.1#1253上,结果连国内域名都无法解析了…

为什么会这样呢?

突然!我意识到一个问题:

我将chinadns处的dns服务器由127.0.0.1:1253换成了192.168.1.1:1253,再次尝试,正常了!

原来在配置pdnsd时我将global里的server_ip设置成了192.168.1.1,导致路由器无法通过127.0.0.1解析域名,将任意一项改为一致即可。

如何应对运营商劫持

这段时间访问某些网站总会出现特定的广告:

而且该广告极其狡猾,只有当浏览器ua为手机时才会显示。

经判断,该广告为运营商劫持流量所致。经过一段时间的奋斗,总结出下列解决方案:

1.投诉当地运营商

成功率:10%

如果你所在地区的运营商非常良心,那么该方法可能会有效(喂喂真良心的话就不会投广告了好吗)

2.投诉运营商总部

成功率:20%

投诉总部就显得厉害多了,一天会来好多电话。不过到底是自己人,所以可能效果还是不尽人意。

3.投诉工信部

成功率:80%

工信部的成功率要高得多,不过代价是工信部的处理速度时快时慢,几天到一个月都是有可能的。

4.投诉通信管理局

成功率:60%

在打电话询问后得知通信管理局最终也会将投诉发至工信部,所以可能还没有工信部效率高 。

5.通过技术手段屏蔽(推荐)

成功率:100%

没办法,在投诉上述部门无效后只能自己动手了~

可以看到上图中图片地址来自ggfeng.com,所以查找全部来自ggfeng.com的脚本:

抓包:

找到第一个来自ggfeng.com的脚本

该脚本又向页面动态插入了四个脚本

所以将ssp.ggfeng.com、ax.ggfeng.com、sc.ggfeng.com这三个域名通过hosts文件屏蔽即可。

Ubuntu+Apache部署Let’s Encrypt免费证书

这两天沃通可真是捅了个大娄子,废了自己不说还顺带把Startcom也带进去了…

(喏,就这个:谷歌也不再信任沃通的证书 StartCom CA一并受到同等处罚

而刚好,我的博客用的就是Startcom的免费证书orz…废话不说,既然已经到了这个地步,只好赶紧换证书了……

早就听过Let’s Encrypt,全自动证书签发项目,还是免费的…于是决定就用这个啦!(免费的也只有这个了…)


Let’s Encrypt有三种签发方式,分别是

  • apache插件模式
  • 自己开个web服务器验证模式
  • 把文件放在webroot文件夹验证模式

第一种我的apache版本不支持,第三种需要所有子域名在同一目录内,所以只能用第二种了…


首先停止apache,否则会冲突:

/etc/init.d/httpd stop

获取Let’s Encrypt:

我用的是ubuntu,其它系统可以去这儿看看:https://certbot.eff.org/

wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
./certbot-auto

然后就可以开始签发了:

./certbot-auto certonly --email [email protected] --agree-tos --standalone -d www.zhoushangren.com -d zhoushangren.com

其中把邮件地址换成你自己的,快到期时貌似会有邮件提醒。-d参数后跟一个域名,最多可以跟100个。

对了,还有就是所有要签发的域名都需要解析到当前服务器IP上~

如果不出意外的话,很快就能看到类似下面的信息:

IMPORTANT NOTES:
– Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/www.zhoushangren.com/fullchain.pem. Your cert
will expire on 2017-02-01. To obtain a new version of the
certificate in the future, simply run Let’s Encrypt again.

现在去重新配置证书路径吧~证书位于/etc/letsencrypt/live/yourdomain.com/,其中yourdomain.com为刚才生成证书时第一个-d参数后面的域名。
最后启动apache:
/etc/init.d/httpd start
大功告成!

证书的续期也非常方便,执行./certbot-auto renew即可。

git push每次都需要输入用户名和密码

记得当时我是保存ssh密钥了的,可是git push时仍需要输入用户名和密码,很奇怪。于是查了一下,原来是绑定的时候误选成了Https方式,改成ssh就行了。


首先cd到仓库目录下

删除当前绑定的远程库:

git remote rm origin

重新绑定远程库:

git remote add origin [email protected]:username/name.git #username和name.git请自行替换

关于子元素应用float后父元素没有高度的解决方案

今天遇到一个小问题:子div应用了float后父div没有高度了。一般首先想到的解决方案是给父元素设置一个固定高度,但是如果高度是变化的就不可行了。于是赶紧Google了一番,找到以下解决方案:

<div id="big">
<div id="small" style="float:left;"></div>
</div>

如果这样排列,id为big的div将失去高度,解决方案如下:

<div id="big">
<div id="small" style="float:left;"></div>
<div style="clear:both;"></div>
</div>

在id为small的悬浮子div后面增加一个div,并设置css属性clear为both即可解决问题。

巧用cat命令制作系统安装盘

cat命令一般用于处理文件等操作,不过你知道吗?cat命令还有一些特别的功能…比如制作系统安装盘:

首先列出所有设备,记下u盘的设备名

fdisk -l

假设u盘为”/dev/sdb”

然后按照下列格式就可以向u盘内写入系统镜像啦

cat [镜像文件] > [设备]

例如我们的镜像文件名为”windows_8.iso”,要写入到名为”/dev/sdb”的设备里,则是:

cat windows_8.iso > /dev/sdb

耐心等待一会儿,直到写入完成。

我为什么拒绝使用百度云

百度,如今在某种力量的驱使下,已经成为大部分中国人生活中不可缺少的一部分。

百度云,百度旗下的云存储服务,因容量大+有百度撑腰得到了很多年轻人的喜爱。

不过今天,我们要说说百度云背后的那点事….


用过百度云的人都知道百度有一个[急速秒传]的功能,大文件一秒就传完了。可能大家会觉得很神奇,不知道是什么黑科技,那么今天我们就来讨论讨论这个话题。

其实急速秒传的原理很简单,通过匹配每个文件唯一的特征码(md5)。如果你要上传的文件已经在云端存在了,则”秒传成功”,其实就是把别人的相同文件给你一份罢了。

可以给大家演示一下:

首先提示需要安装一个秒传插件,其实就是方便在本地获取文件的md5,然后上传到云端进行匹配

(那啥…别在意里面那么多文件…都是我以前不懂…所以才.. 🙁 )

现在可以”急速秒传”了

现在我们先在本地创建一个文件,在里面随便写入一些东西,确保这个文件是独一无二

现在我们上传这个文件,可以看到,文件并不是以”秒传”的形式上传

现在我们切换了一个账号,然后再次尝试上传刚才那个文件,发现这次”秒传”成功

由此看来,”秒传”的原理的确就是通过查找云端已有文件是否存在,存在则直接转存,免去了漫长的上传过程。

可是,你有没有想过:如果你删除了刚才上传的文件,服务器还会在云端吗?还能秒传成功吗?

我们来试试看:

首先,删除刚才两个账号上传的文件

 

现在再次尝试上传该文件,秒传成功

现在可以解答上面的疑惑了

就算你”删除”了你上传的文件,服务器还是将其保存在云端,并没有实际删除。当然这可能是百度公司为了提高”秒传”的效率,也可能是….这个我们就不得而知了 ➡ 

所以请大家尽量不要向百度云上传私密文件,或直接停止使用百度云。毕竟一个偷偷留你文件的公司谁也不能保证下一秒会抖出什么大新闻来 😀


题外话:百度云网页版全程(包括登录-浏览文件-上传文件)均没有使用HTTPS安全链接,所以你文件的私密性也只能看黑客的心情了(-: