正在查看: 2015年03月日志归档(第 1 页 / 共 9 篇)

php exec函数无法执行的问题

本文的测试环境为windows7+php5+apache,使用casperjs对网页进行截图。主要症状是在windows的dos窗口执行casperjs --version命令没有问题,但是在php文件中,使用:

exec('casperjs ' . $filename . $argments. ' 2>&1', $output, $val);

总是没有结果。可以使用以下方法排查:

首先在命令行之后加入 2>&1 把控制台显示的提示信息输出来,查看到底是什么错误。设置后发现是系统无法识别casperjs命令,提示不是有效的命令。

检查windows的环境变量,确保系统下的PATH而不是用户下的PATH中包含casperjs和phantomjs的命令路径,windows xp的系统环境变量需要重启电脑后才能生效,另外此时也需要重启apache服务器才能看到修改后的效果,可以使用:

echo exec('echo %PATH% 2>&1', $output);

查看是否含有casperjs和phantomjs的路径,如果存在就进行下一步。

再次执行上一个命令,如果仍然提示不是有效的命令,需要将caperjs.exe的用户组中加入IUSR_***,并赋予执行和读取权限。

再次执行,结果出现,完美。

Linux下如何给nologin的系统用户设置环境变量

如root帐户,可以在/etc/profile下为系统添加 PATH环境变量,如:

export PATH=$PATH:/alidata/server/mysql/bin:/alidata/server/nginx/sbin:/alidata/server/php/sbin:/alidata/server/php/bin:/usr/local/src/phantomjs/bin:/usr/local/src/casperjs/bin
export PHANTOMJS_EXECUTABLE=/usr/local/src/phantomjs/bin

但是,这些设置在www帐户下无用。在nginx+php环境下使用:

»阅读全文

使用CI更新数据库时的一个转义错误

Ci中在更新数据库时有这样一个方法:

$this->db->set('field', 'field+1', FALSE);
$this->db->insert('mytable'); 
// 得到 INSERT INTO mytable (field) VALUES (field+1)

$this->db->set('field', 'field+1');
$this->db->insert('mytable'); 
// 得到 INSERT INTO mytable (field) VALUES ('field+1')

有时拒绝转义是非常有必要的,特别是针对某篇文章的阅读量加1的情形

»阅读全文

在CI中加入辨识微信客户端的user agent

在CI中,可以载入user_agent类库,使用此类库判断客户端的浏览器版本、手机型号或者是操作系统等。具体可用如:

$this->load->library('user_agent');
$this->agent->is_mobile();

如果你正在使用CI开发微信接口API,可能需要判断是否是来自微信客户端的请求。

<?php
echo $_SERVER["HTTP_USER_AGENT"];
?>

在iPhone下,返回

»阅读全文

使用rem设置字体大小的优劣

随着响应式设计的理念深入人心,在各个不同终端下显示最佳效果得到重视。在设置字体时,向来使用px或者em,px是绝对值,em是相对值。em的相对值是相对其父元素。如果ul下有li设置为font-size:1.4em;则li的字体可不一定是14px。

body {
    font-size: 62.5%;/*10 ÷ 16 × 100% = 62.5%*/
}
h1 {
 font-size: 2.4em; /*2.4em × 10 = 24px */
}
p{
 font-size: 1.4em; /*1.4em × 10 = 14px */
}
li {
 font-size: 1.4em; /*1.4 × ? = 14px ? */
}

»阅读全文

即时语音问答服务平台

我在实现网发布的一个项目:http://shixian.com/projects/1832

生活中常常遇到各种各样的问题,大多时候可以在互联网上找到答案,但你总是在寻找的过程中遇到各种各样的问题:
1. 你需要付出很多的精力才能找到你需要的准确答案,比如,辞职后我的五险一金断交后会有哪些问题。
2. 你没有太多时间去寻找答案,比如,你身处某地,马上要找一个比较偏僻的地方,还比如,你想路过去天坛医院,又不知道它春季下班的时间是几点。

有些问题你是无法在互联网找到准确答案的,有时候它们不是知识,而是资讯,有时效性。这时候,你需要一种准确的、即时的回答。相信有很多人在网上找到过错误的、失效的信息,导致你坐车坐错、办事不顺、根本不是那么回事……

但这种平台的建立实在很困难,不能迅速积累人气就玩不下去了,平台基本是死的。所以我的想法是用微信,微信的圈子足够大,只要运营推广的好,再加上社交功能,成功的可能性比较大。

整个服务平台的定位是:

»阅读全文

CI的CSRF防范原理及注意事项

首先我们谈谈什么是CSRF,它就是Cross-Site Request Forgery跨站请求伪造的简称。很多开发者甚至不够重视这个问题,认为这不是安全漏洞,而不过是恶意访问而已,它的攻击原理我在这里简单地描述一下:

有一天你打开你简单优雅逼格十足的谷歌浏览器,首先打开了一个tab页,登录并访问了你的微博首页。我们这里假设weibo.cn有这样一个网址: http://www.weibo.cn?follow_uid=123 ,意思是关注id为123的一个用户。这是一个正常的地址,访问也没有问题。
紧接着你的QQ群里发来了一个让你感到好奇的链接,http://www.comeonbaby.com, 你禁不住诱惑打开了这个链接,并在浏览器里的另一个tab页里显示出来。紧接着,你打开你的微博tab页,发现无故关注了一个新的用户。咦,这是为何?

»阅读全文

CI的captcha替代类库

CI的captcha使用起来不是特别好用,可以用这个替代类库:

»阅读全文

在CodeIgniter中使用微信开发类库

在CI中国论坛里,Hex老大很早就写了一个微信开发的类库,原文地址:http://codeigniter.org.cn/forums/forum.php?mod=viewthread&tid=16665

这个类库很简洁,符合CI开发模式,不过功能过于简单,所以要使用一些高级的微信开发接口,推荐使用这个比较收欢迎的微信开发类库: https://github.com/dodgepudding/wechat-php-sdk

不过这个类库不是CI的,需要封装一下,下面讲讲我的封装,封装的有点过度,你可以按照自己的意愿稍加改造。

1.首先git clone https://github.com/dodgepudding/wechat-php-sdk.git 源代码wechat.php,放到CI的library文件夹下;

»阅读全文