工作,学习,生活,这里将会有一些记录. 备用域名:http://meisw.wdlinux.cn 注册 | 登陆
浏览模式: 标准 | 列表分类:php

php5中加入了时区的设置,造成了我们中国的用户会差八个小时的问题

从php5.10开始,php中加入了时区的设置,在php中显示的时间都是格林威治标准时间,这就造成了我们中国的用户会差八个小时的问题!
相关设置是修改php.ini中的 date.timezone 参数:
[Date]
; Defines the default timezone used by the date functions
;date.timezone =

默认是关闭的,只需把注释去掉,改为即可
[Date]
; Defines the default timezone used by the date functions
date.timezone = PRC

其中PRC是“中华人民共和国”!
其他选项可以参考php手册。
不过这上面的亚洲地区漏掉了我们的首都北京,不知道老外是不是故意的!

如果没有修改php.ini的权限,只需要在调用时间日期函数的时候,调用 date_default_timezone_set(’PRC’) 即可!
也可以调用date_default_timezone_get()来查看当前的时区设置!

 

關於XXX,大陸內地可用的值是:
Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi (依次為重慶,上海,烏魯木齊)
港台地區可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依次為澳門,香港,台北)
台灣地区可設為:date.timezone = "Asia//Taipei"
還有新加坡:Asia/Singapore

dedecms笔记

模板制作帮助文档
http://www.dedecms.com/archives/templethelp/help/index.htm


1、默认底层模板
位置: cmspath/templets/system
功能:在没有指定标记的默认底层模板的时候,系统将自动调用这个文件夹的相应文件作为底层模板。
2、插件目录模板
位置: cmspath/templets/plus
功能:评论、友情链接、RSS地图等模板。
3、会员后台模板
位置: cmspath/member/templets
功能:会员后台的模板。


二次开发
  DedeCms主要的模板解析类是 include/inc_arcpart_view.php、include/inc_arclist_view.php、include/inc_archives_view.php,这些

类是与pub_dedetag.php一起工作的,如果你想为文档模板、列表模板、板块模板增加一些功能,可以直接修改这几个类的ParseTemplet()或

ParseTempletsFirst()这类的方法,把标记名称,属性对应试相应该的功能函数即时。


Dedecms标记入门(新手必读的模板教程)
http://bbs.dedecms.com/read.php?fid=4&tid=51186

Dedecms模型增加字段教程
http://bbs.dedecms.com/read.php?tid=40780

在网站首页调用显示最新加入企业
http://bbs.dedecms.com/read.php?tid=41172
http://www.yoursite.cn/?action=show&id=189

自定义宏标记的应用
http://bbs.dedecms.com/read.php?tid=23661

添加关键字链接的详细说明以及问题
http://bbs.dedecms.com/read.php?tid=59517

Dedecms默认模板用户评论扩展
http://bbs.dedecms.com/read.php?tid=50280

{dede:arclist}的学习心得,如何调用文章或者软件,你想调用的任何字段[已成功]
http://bbs.dedecms.com/read.php?tid=32358&fpage=3

如何得到当前 文章/栏目 对应的一级栏目id [似乎已解决]
http://bbs.dedecms.com/read.php?tid=1073&

DEDE V5一个简单实现栏目文章数统计的方法
http://bbs.dedecms.com/read.php?tid=61947

function @me用法总结 自定义函数
http://www.yoursite.cn/?action=show&id=187

【SQL标记】推荐会员(带用户头像)调用方法
http://bbs.dedecms.com/read.php?tid=55616

 首页调用会员头像排列怎么才能让间隙均衡?
http://bbs.dedecms.com/read.php?tid=59976

【4.0】修改让自定义标记支持position,title
http://bbs.dedecms.com/read.php?tid=15855

 

技巧和教程帮助文档索引【08.05.13整理】
http://bbs.dedecms.com/read.php?tid=60818

dedecms2007RC1 BUG修正及修改汇总贴
http://bbs.dedecms.com/read.php?tid=39793

快速安装 Pear

Pear 是 PHP 的类库集合,用 tarbal 安装 php 后不一定安装 pear ,这里介绍一个简单快速的办法安装 pear。

lynx -source http://pear.php.net/go-pear | php -q

安装完毕后用 pear -V 命令显示:

PEAR Version: 1.4.9
PHP Version: 4.4.2
Zend Engine Version: 1.3.0
Running on: SunOS hostname 5.10 Generic i86pc


pear install --alldeps channel://pear.php.net/Image_Graph-0.7.2

这样的格式可以安装所需要的包了。

Linux服务器下安装eAccelerator加速软件

http://www.eaccelerator.net/

  http://www.arnot.info/eaccelerator/

  ----------------------------------------------------------------------

  以下是网上找到的,关于eeaccelerator的教程

  获得源代码:

  wget http://internap.dl.sourceforge.net/sourceforge/eaccelerator/eaccelerator-0.9.4.tar.bz2

  tar jxf eaccelerator-0.9.4.tar.bz2

  编译:需要有autoconf支持

  /usr/local/bin/phpize

  ./configure --enable-eaccelerator=shared --with-php-config=/usr/local/bin/php-config

  make

  sudo make install

  配置增加如下:sudo vi php.ini

  extension="/PATH/TO/eaccelerator.so"

  eaccelerator.shm_size="16"

  eaccelerator.cache_dir="/tmp/eaccelerator"

  eaccelerator.enable="1"

  eaccelerator.optimizer="1"

  eaccelerator.check_mtime="1"

  eaccelerator.debug="0"

  eaccelerator.filter=""

  eaccelerator.shm_max="0"

  eaccelerator.shm_ttl="0"

  eaccelerator.shm_prune_period="0"

  eaccelerator.shm_only="0"

  eaccelerator.compress="1"

  eaccelerator.compress_level="9"

  2006-06-03更新

  在apache 2.2的升级过程中:发现php的相关模块都需要重新编译 需要注意包含哪个目录下的 eaccelerator.so 文件

  /usr/local/lib/php/extensions$ ls -1

  no-debug-non-zts-20020429

  no-debug-zts-20020429

  否则eAccelerator会无法生效, 我测试的结果在apache 2.2下eAccelerator的效果比apache 1.3下还差一些;

  创建专用的缓存目录:

  sudo mkdir /tmp/eaccelerator

  sudo chmod 0777 /tmp/eaccelerator

  重启一下apache:

  sudo /home/apache/bin/apachectl restart

  通过phpinfo()已经可以看到:eAccelerator启用了

  This program makes use of the Zend Scripting Language Engine:

  Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies

  with eAccelerator v0.9.4, Copyright (c) 2004-2004 eAccelerator, by eAccelerator

为php编译mcrypt函数(转)

为php编译mcrypt函数

网站的需要,php需要用到mcrypt函数,初步看了一下php的编译函数,很简单,就是增加--with-mcrypt编译参数就行,但你真的预编译的时候,他就会提示错误configure: error: mcrypt.h not found. Please reinstall libmcrypt,大致意思是你没有编译libmcrypt,我们只好先编译libmcrypt
 
到这里ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/下载libmcrypt-2.5.7.tar.gz,编译很简单,依旧是configure,make,make check,make install。

装完马上重新去编译php,安装非常顺利。

当然我是走了不少弯路,还以为要装mcrypt这个程序,装这个程序更加麻烦,除了要安装libmcrypt,还要安装mhash,装完这两个,记得修改ld.so.conf,这样mcrypt才能正常安装。由于可能php实际不需要这个,这里就不讲实际问题了,如果大家碰到问题,可来交流。

附:mcrypt-2.6.4的安装

1.先安装libmcrypt,前面已经阐述

2.安装mhash,去http://mhash.sourceforge.net/下载mhash,安装简单,不过我安装最新的0.9.4版本,在make check时候失败,所以我最后安装了个0.9.2版本。

3.安装mcrypt-2.6.4.tar.gz
如果你顺利安装了前2者,你才可以安装mcrypt-2.6.4.tar.gz,但在预编译的时候,你可能会碰到以下错误:configure: error: "You need at least libmhash 0.8.15 to compile this program. http://mhash.sf.net/" 按理你应该是安装了mhash,之所以他提这么的错误,我们可以初步分析为预编译的时候没找到lib文件所在的地址,所以我们可以这么做
cd mcrypt-2.6.4
LD_LIBRARY_PATH=/usr/local/lib ./configure
make
make install

php虚拟主机多用户安全问题处理

1.全局设定
修改php.ini

 

safe_mode on
open_basedir on

 

2.单独用户设定
除了php.ini中的全局设置以外...在虚拟主机中还可以通过上面的设置,把php的权限设置在每个用户的特殊目录中...

 

httpd.conf中的设置

 

<directory /usr/local/apache1.3/htdocs/i_amok>
php_admin_value open_basedir /usr/local/apache1.3/htdocs/i_amok
php_admin_value safe_mode 0
#0表示取消safe_mode
#open_basedir表示把/usr/local/apache1.3/htdocs/i_amok这个目录下的php
#打开文件的权利限制在/usr/local/apache1.3/htdocs/i_amok目录了
</directory>

 

还有safe_mode on的时候权限是有用的...就是说php在执行的时候会检查php文件的属主和被操作文件的属主是否一致(uid),如果不一致就不会执行...所以建立php文件的时候不要用root帐户.....一不小心..你的机子就废了...

 

3.vhost的设置

 

<VirtualHost *>
DocumentRoot /usr/local/apache1.3/htdocs/i_amok
ServerName iamok.be10.net
CustomLog "|/usr/local/sbin/cronolog /usr/local/apache1.3/logs/access_log_iamok.net_%W" common
php_admin_value safe_mode 0
php_admin_value open_basedir /usr/local/apache1.3/htdocs/i_amok:/tmp:/proc
</virtualhost>

 

在vhost中这样设置..不要用directory框住php_admin_value了..因为vhost标签就替代了directory的作用了

 

4.禁止php
http://www.php.net/manual/en/ref.apache.php

 

在httpd.conf中的适当位置,放一个
engine off

php_flag engine off

就可以了

使 eaccelerator 与 Zend Optimizer 和平相处

Zend Optimizer 是Zend官方发布的免费PHP优化器,国内外大多数用户对这一产品的唯一评价是“Zend Loader”。这种说法是因为该产品所谓的优化只是提供了一个页面压缩输出功能,其最主要的目的是为Zend相继推出的PHP代码“混淆器”铺桥搭路,让混淆后的PHP代码可以在计算机上得到执行。如果您打算真正获得高效PHP缓存,建议您选择 eaccelerator 。

Zend的市场推广能力非常之强,这样致使国内外大多数人采用Zend混淆器加密PHP代码。如果想使用被Zend混淆器加密过的代码,那么你必须安装Zend Optimizer。这就引出了我们的主要问题,如何既可以获得执行Zend混淆器加密代码的能力,又可以获得 eaccelerator 的高效率优化

值得庆幸的是 eaccelerator 提供了对Zend扩展界面的支持,它可以和Zend Optimizer和平相处。让您轻松达到 “既可以获得执行Zend混淆器加密代码的能力,又可以获得 eaccelerator 的高效率优化”的目的。

我习惯性以ZEND扩展的方式配置该模块,下面是我使用的配置(官方标配):



在PHP.INI文件段,eaccelerator的配置内容写在Zend Optimizer之前,并做如下配置:

[Zend]
zend_extension_ts="d:\xampp\xampp\php\ext\eAccelerator.dll"
;eAccelerator加速器路径部分PHP版本此处使用 zend_extension
eaccelerator.shm_size="16"
;eAccelerator使用的内存
eaccelerator.cache_dir="D:\xampp\xampp\tmp"
;eAccelerator缓冲目录,记得给web server可读写权限。
eaccelerator.enable="1"
;eAccelerator是否启用
eaccelerator.optimizer="1"
;eAccelerator优化功能
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
zend_extension_ts = "d:\xampp\xampp\php\zendOptimizer\lib\ZendExtensionManager.dll"
zend_extension_manager.optimizer_ts = "d:\xampp\xampp\php\zendOptimizer\lib\Optimizer"
;zend_optimizer.enable_loader = 1
;开启Zend Loader以解析Zend混淆器加密过的PHP代码。默认开启,此行配置只是起到说明作用。
zend_optimizer.optimization_level=0
;禁止优化功能,避免冲突。
;zend_optimizer.optimization_level=15
;zend_optimizer.license_path =

 

 

推荐按照Zend的扩展,打开php.ini文件, 找到extension=php_zip.dll, 在下面添加
win版

zend_extension_ts="c:\php\extensions\eaccelerator.dll"     //路径根据您系统的情况而定,文件扩展名也是
eaccelerator.shm_size="16"                               //根据你的系统内存来,默认16M,可以改成64M
eaccelerator.cache_dir="C:\php\tmp"     //需要手动创建,WIN下例如C:\php\tmp,确保他的权限为可读写,并且以后不要动这个目录哦
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

linux版
#tar zxvf  eaccelerator-0.9.4.tar.gz
# cd eaccelerator-0.9.4
# /usr/local/php/bin/phpize
# ./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php/bin/php-config
# make
# make install

zend_extension="/usr/local/php/lib/php/extensions/no-debug-zts-20020429/eaccelerator.so" 
eaccelerator.shm_size="16"                               //根据你的系统内存来,默认16M,可以改成64M
eaccelerator.cache_dir="/tmp/eaccelerator"     //需要手动创建,确保他的权限为可读写,
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

如果打开了安全模式,必须使用, "zend_extension_ts" 取代 "zend_extension".
查看php.ini 如果 "safe_mode"为off就不是安全模式

附:linux下创建缓存目录

mkdir /tmp/eaccelerator
chmod 0777 /tmp/eaccelerator

PHP扩展安装模式,打开php.ini文件, 找到extension=php_zip.dll, 在下面添加

extension="eaccelerator.so"     //路径根据您系统的情况而定,文件扩展名也是,Win系统下是dll(例如c:\php\extensions\eaccelerator.dll)
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/tmp/eaccelerator"     //需要手动创建,WIN下例如C:\php\tmp,确保他的权限为可读写,并且以后不要动这个目录哦
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

eAccelerator可以和Zend兼容,但是上面的代码在 php.ini 必须定义与 Zend 的相关代码之前,虽然官方强烈建议,除非您必须使用Zend过的代码,否则最好不同时使用Zend和eAccelerator,但是两个一起用也不冲突,还能加速,为什么不用呢,呵呵

完成上面的工作以后保存您的 php.ini , 然后重新启动 apache或者IIS, 看看 phpinfo 是不是不一样了?然后看看 phpwind 页脚的执行时间是不是快了许多?
正确安装后,可以在phpinfo上的Zend部分看到类似如下的信息:(PHP版本不同,信息可能不同,我的是PHP4.3.11,一般出现with eAccelerator就是成功了)

This program makes use of the Zend Scripting Language Engine:
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies with eAccelerator v0.9.3, Copyright (c) 2004-2005 eAccelerator, by eAccelerator with Zend Extension Manager v1.0.6, Copyright (c) 2003-2004, by Zend Technologies with Zend Optimizer v2.5.7, Copyright (c) 1998-2004, by Zend Technologies

很简单的。操作前只要做好php.ini的备份即可,失败了大不了将备份的恢复过去。重起 apache或者IIS服务就行,呵呵,风险不是很大。


再看论坛经过加载eAccelerator以后运行,页脚执行时间由 0.02X 秒缩短至 0.01X秒...快了一倍多^_^
特别说明 :

1、如果您的系统已经装了ZEND加速器,那么上述配置在PHP.INI中必须放在ZEND的前面,否则Apache不能启动;
2、eAccelerator.shm_size="64",这里的64是加速系统使用做CACHE的内存,默认是16M;根据您系统内存调整;
3、eAccelerator.cache_dir="C:\php\tmp",这个是加速器工作时候产生临时文件的目录,

Records:71123456789