Entries Tagged ‘PHP/ web’:

CI框架下使用smarty模板引擎方法(原创)

CodeIgniter(CI) 是一个小巧但功能强大的 PHP 框架,是一个简单而“优雅”的工具包,是进口的哦,但是他默认没有静态模板引擎,而smarty模板引擎是个非常优秀的模板引擎,拥有非常多的用户,许多开发者都熟悉他。这里就讲讲怎么在CI框架下添加smarty类,来使用smarty模板引擎。
1.下载smarty,官网:http://www.smarty.net/download.php 
把smarty的函数库(libs文件夹)解压放到ci框架下的application文件夹下的libraries里,/applicaton/libraries/smarty/
2.在根目录下的index.php里加入下面一句:

define(’APPNAME’, ‘application’);

3.在smarty文件夹里建cache、templates_c、configs文件夹(模板引擎的放缓存的文件夹,也可以放在其他地方,但要注意下一步SmartyExtended.php里做相应的修改)
4.在/application/libraries/下建smarty类文件SmartyExtended.php
SmartyExtended.php(代码)

<!–p
if (!defined(’BASEPATH’)) exit(’No direct script access allowed’);
 
define(’SMARTY_DIR’, BASEPATH . ‘../’ . APPNAME . ‘/libraries/smarty/’);
require(SMARTY_DIR . ‘Smarty.class.php’);
 
class SmartyExtended extends Smarty {
 
var $CI;
var $lang_code;
 
/**
* Constructor
*
* Loads the smarty class
*
* @access public
*/
function SmartyExtended() {
 
if (!file_exists(BASEPATH . ‘../’ . APPNAME . ‘/libraries/smarty/cache’))
{
mkdir(BASEPATH . ‘../’ . APPNAME . ‘/libraries/smarty/cache’, 0777);
}
 
$thi–>CI =&amp; get_instance();
$this-&gt;lang_code = [...]

Tags: , , , ,

Leave a Comment

502 Bad Gateway

今天想放到服务器(nginx+php)上调试一段php代码,突然发现网页上显示
502 Bad Gateway
上网搜了一下,网上说是可能是:后端的php-cgi有问题。编译php的时候在./configure和make的时候,请仔细检查是否有出错提示。因为PHP依赖的库比较多,如果这些被依赖的包找不到,编译时出错的几率较大。
可我记得前端时间都是有用的啊。
登上服务器ps aux发现根本没有php进程,启动php提示:
error to open /home/dir/test/W-cyclone/data/orgdata/.info
突然想起来前几天试一个ftp搜索引擎的时候需要填一个cgi路径,我填了php的路径,可能那个程序修改了php执行文件?
没办法,重新编译了一下php,发现能正常启动,并运行了!

Tags: , ,

Leave a Comment

php下安全执行root命令

最近写的一个程序里需要用php添加iptables防火墙规则。但是我们都知道iptables命令需要root权限才能执行。而默认php的权限只有apache的user权限。上网搜了搜,发现绝大多数都是http://www.chinaunix.net/jh/27/784289.html这篇文章里将到的方法,思路是:调用setreuid后 将有效用户id 和实际用户id互换了.使apache当前的 uid为0 这样就能执行root命令了。
但我在fedora下测试发现iptables命令没有执行成功。查了好多资料都没找到原因,后来老师提醒我可能是SELinux的原因。我把SELinux关了(/etc/sysconfig/selinux),发现执行成功了。竟然是SELinux在作怪。
但是用写c代码调换用户id的方法发现有个问题,我的ip是个变量,用这种方法并不方便。后来发现最佳的方法是在php下通过sudo执行iptables命令,既方便,又安全。具体方法:先用sprintf函数把要执行命令生成一个变量,然后调用system函数执行sudo+命令。

Tags: , , ,

Leave a Comment