Debian7+Nginx+php-fpm

最近又开始折腾VPS,原来用的是centos+apache或这debian+apache,nginx太折腾人了,原来偶尔也会照着网上教程来装一个耍下。现在typecho0.9发布了,顺便就在vps上搭建一个debian+Nginx的平台安装一下typecho。

原来的centos和debian6好像都是nginx0.7,现在用了debian7,源里的nginx已经是1.2.1了,配置和以前的不一样,现在支持php-fastcgi和php-fpm,好像后者性能更佳。安装倒是很简单

apt-get install nginx php-fpm

阅读剩余部分...

php上传的问题

这两天折腾VPS,把原来的Typecho插件弄上去折腾,发现麻烦问题,没法通过php上传了。无论是php+flash还是通过iframe都不行。尤其蛋疼的是flash上传,错误就一个 #2038 ,完全不知道具体原因,折腾人啊。搜索引擎都用得冒烟了都没解决好。

先是typecho的附件都没法上传,肯定是服务器配置出了问题,后来找到原因是apache配置了mod_security引起的,通过.htaccess文件关掉mod_security

<IfModule mod_security.c>
SecFilterEngine Off
</IfModule>

附件上传没问题了,但是自己写的上传代码总是没法,用chrome和firefox的调试工具总算知道了是403错误,处理上传的php文件被禁止访问了,网上找了一大圈,都没发现解决办法。最后偶然才发现在typecho的usr目录下有个.htaccess文件,一查看就找到问题的根本了。原来typecho为了安全,禁止了对usr目录下的所以php文件的直接访问。我的插件在usr/plugins目录下,处理上传的php文件在插件目录下,需要单独执行处理上传,被禁止访问就没法上传了。所以那个邮件提醒插件CommentToMail也会出现问题,因为也有独立的php文件需要执行,如果.htaccess文件禁止了usr目录下的php文件访问,肯定发不出邮件。

阅读剩余部分...

php的ZipArchive 类

php5.2开始支持ZipArchive类,php4只能使用zip函数。其实在官方实现zip类之前,已经有大牛贡献了打包解压zip文件的方法。现在php包含了ZipArchive类,当然优先使用。使用该类能创建和解压zip文件,也能直接读取zip压缩包内的内容,很方便,这里主要总结下读取和解压的过程。

解压一个包到指定目录

<?php
$zip = new ZipArchive;
if ($zip->open('test.zip') === TRUE) {
    $zip->extractTo('/my/destination/dir/');
    $zip->close();
    echo 'ok';
} else {
    echo 'failed';
}
?> 

如果只是需要读取包中某个文件的内容,需要文件名或者文件的索引值。

阅读剩余部分...

CommentToMail更新1.2.2版,改用异步方式发送邮件

费了半天劲终于把CommentToMail的邮件发送方式改为异步,不用在前台等待邮件发送完毕才结束评论。PHP的异步很麻烦,google了不少时间才找到解决的办法,就是fsockopen()加自写header模仿post把发邮件的任务提交到另外一个页面。参考《PHP异步工作,提升用户体验》。

跨页面参数本来选取session传递,在本地测试没问题,但是一上服务器就出问题,后来就改为临时文件保存,发送成功后删除,作为小博客来讲应该没有多大影响。

插件下载:http://dl.dbank.com/c02z6im55x#

阅读剩余部分...