2007年08月31日
xapian是啥玩意?
xapian 是一个“Xapian 是一个开源概率论信息检索库,基于GPL发布。它是用C++编写的,提供的绑定可以支持其它语言(支持Perl, Python, PHP, Java, and TCL )的开发。 Xapian 设计为一个高度可适应的工具集,可以让开发人员方便地为他们自己的应用程序增加高级索引和搜索功能。”
在网上找到这段介绍后,俺手痒痒就想试试xapian —- 一定要给php整个这东东上去.参考了若干文档以后,这就开始动手了(我的环境仍然是freebsd + apache 2.2 + php 5.1.2,apache和php原来就已经安装好):
1.下载xapian
cd /usr/local/srcwget http://www.oligarchy.co.uk/xapian/0.9.4/xapian-core-0.9.4.tar.gzwget http://www.oligarchy.co.uk/xapian/0.9.4/xapian-bindings-0.9.4.tar.gz
前者是xapian的核心lib代码,后者是给其它语言调用的接口
2.安装Xapian-core
cd /usr/local/srctar xzvf xapian-core-0.9.4.tar.gzcd xapian-core-0.9.4./configure –prefix=/usr/local/xapianmakemake install
3.安装Xapian-bindings
cd /usr/local/srctar xzvf xapian-bindings-0.9.4.tar.gzcd xapian-bindings-0.9.4ln -s /usr/local/xapian/bin/xapian-config /usr/local/bin/xapian-config #这里需要做个软连接,编译的时候需要用到./configure –without-python #我没用到python,就不编译了makemake install
进行到这一步,Xapian-bindings应该算是安装好了,但是不知道为何,编译好的xapian.so没有按说明文档所说的自动复制到php的extension目录,于是我手工完成这一步骤
cp php/.libs/xapian.so /usr/local/lib/php #/usr/local/lib/php是我在php.ini设置的extension目录
然后修改php.iniextension_dir = “/usr/local/lib/php/” #没有就加上extension=xapian.so
安装全部完成,重启apache看看phpinfo:
一切ok:)
| 标签:
PHP, xapian
留言 » | 位于:
PHP编程相关, 搜索技术 |
2007年08月21日
由于从开发服务器转移代码到测试服务器上,发现原来设置的discuz的passport_key与原来的不匹配,造成无法登录。虽然,可以通过简单的修改自己开发的代码来解决这个问题,但是想知道如果通过修改discuz的本身内容来进行修正,因此做了一些摸索。发现需要修改两处地方
数据库中cdb_settings搜索%passport%,修改其中的参数
/forumdata/cache/cache_settings.php是设置的一个缓存文件,也需要进行相应的修改。
修改完成之后即可正常使用。
| 标签:
discuz, PHP
留言 » | 位于:
PHP编程相关 |
2007年08月21日
一篇描述如何通过PHP开发qmail邮件系统的文章
http://linux.e800.com.cn/articles/2007/12/1167705869595656118_1.html
电子邮件在网络中占有很重要的地位。目前,在企业中运行的邮件服务器均用各自独立的管理系统来实现账号创建、口令修改、邮箱扩容、删除邮箱等功能。当邮箱用户达到一定数量时,邮件管理员的日常维护工作显得极为繁重,这就需要将一部分管理任务(如账号申请)实现自动化处理;同时将一部分任务(如口令修改)由多个分组管理员来负责,从而使邮件管理员从繁琐的维护工作中解脱出来,真正对邮件服务器起到监管作用。
| 标签:
PHP, qmail
留言 » | 位于:
PHP编程相关 |
2007年08月01日
Discuz 5.0 不在使用自己的IP数据,而是使用纯真IP的数据格式, 存取纯真IP数据库稍微有点麻烦,它的存储格式比较特殊也很有趣,具体的格式分析参考下面两个链接,其他语言实现参考文章末的链接。
《纯真IP数据库格式详解》
链接一:http://blog.csdn.net/heiyeshuwu/archive/2006/05/12/725675.aspx
链接二:http://lumaqq.linuxsir.org/article/qqwry_format_detail.html
纯真IP数据库官网:http://www.cz88.net/ip/
纯真IP数据库下载:http://update.cz88.net/soft/qqwry.rar
以下函数conrvertip()位于 Discuz!5_GBK/upload/include/misc.func.php 路径中,有兴趣可以具体去阅读分析。(下面代码我做了简单的修改,更便于阅读,核心没有修改)
<?
//===================================
//
// 功能:IP地址获取真实地址函数
// 参数:$ip - IP地址
// 作者:[Discuz!] (C) Comsenz Inc.
//
//===================================
function convertip($ip) {
//IP数据文件路径
$dat_path = ‘QQWry.Dat’;
//检查IP地址
if(!preg_match("/^d{1,3}.d{1,3}.d{1,3}.d{1,3}$/", $ip)) {
return ‘IP Address Error’;
}
//打开IP数据文件
if(!$fd = @fopen($dat_path, ‘rb’)){
return ‘IP date file not exists or access denied’;
}
//分解IP进行运算,得出整形数
$ip = explode(’.', $ip);
$ipNum […]
| 标签:
ip数据库, PHP
留言 » | 位于:
PHP编程相关 |
2007年07月29日
写一个测试的脚本,发现不知道为什么IE下死活都设置不上cookie,而firefox完全正常。
之后在我个人的几个站点下发现该部分脚本是正确的。检查之后发现只有测试用的主机名不行,再仔细回想一下,终于找到原因:
正确的域名是不带下划线“_”的,而我使用的测试主机名带了下划线,因此在IE下,认为是非法的,从而无法设置COOKIE,而在这方面firefox没有相应的限制。
最后,我将主机名改为一个不带下划线的,就完全正常了。
| 标签:
cookie, PHP
留言 » | 位于:
PHP编程相关 |
2007年04月15日
本文描述了通过PHP来读写配置信息的几种办法,其中包括:PHP.INI、php包含文件、*.ini、数据库和XML的方法。
原文:《PHP 配置模式》
| 标签:
PHP, php.ini, xml
留言 » | 位于:
PHP编程相关 |
2007年04月15日
本文介绍了如果通过PHP进行加密和解密的过程,这里面特别提到了如何使用GPG来进行基于公钥密钥体系的加密和解密过程。
文章链接:《面向普通人的 PHP 加密》
| 标签:
md5, pgg, PHP
留言 » | 位于:
PHP编程相关, 加密解密 |
2007年04月15日
以下文章来自“IBM developerWorks 中国”
面向 PHP 开发人员的 XML,第 1 部分: PHP XML 开发 15 分钟快速入门
面向 PHP 开发人员的 XML,第 2 部分: 高级 XML 解析技术
| 标签:
PHP, xml
留言 » | 位于:
PHP编程相关, XML & XSL |
2007年03月07日
原文点击这里查看:(1), (2), (3)。
DBXML for PHP 并没有提供全部的 for C 方法
XmlManager
XmlManager::existsContainer()
XmlManager::createContainer()
XmlManager::openContainer()
XmlManager::removeContainer()
XmlManager::renameContainer()
XmlManager::createMemBufInputStream()
XmlManager::createDocument()
XmlManager::createQueryContext()
XmlManager::createUpdateContext()
XmlManager::prepare()
XmlManager::query()
XmlManager::createResults()
XmlManager::createModify()
XmlManager::createTransaction()
XmlManager::createIndexLookup()
XmlManager::upgradeContainer()
XmlContainer
XmlContainer::addAlias()
XmlContainer::addDefaultIndex()
XmlContainer::addIndex()
XmlContainer::close()
XmlContainer::deleteDefaultIndex()
XmlContainer::deleteDocument()
XmlContainer::deleteIndex()
XmlContainer::getAllDocuments()
XmlContainer::getContainerType()
XmlContainer::getDocument()
XmlContainer::getIndexNodes()
XmlContainer::getIndexSpecification()
XmlContainer::getName()
XmlContainer::getNumDocuments()
XmlContainer::lookupIndex()
XmlContainer::lookupStatistics()
XmlContainer::putDocument()
XmlContainer::removeAlias()
XmlContainer::replaceDefaultIndex()
XmlContainer::replaceIndex()
XmlContainer::setIndexSpecification()
XmlContainer::updateDocument()
XmlIndexLookup
XmlIndexLookup::execute()
XmlIndexLookup::getContainer()
XmlIndexLookup::getHighBoundOperation()
XmlIndexLookup::getHighBoundValue()
XmlIndexLookup::getIndex()
XmlIndexLookup::getLowBoundOperation()
XmlIndexLookup::getLowBoundValue()
XmlIndexLookup::getNodeName()
XmlIndexLookup::getNodeURI()
XmlIndexLookup::getParentName()
XmlIndexLookup::getParentURI()
XmlIndexLookup::setContainer()
XmlIndexLookup::setHighBound()
XmlIndexLookup::setIndex()
XmlIndexLookup::setLowBound()
XmlIndexLookup::setNode()
XmlIndexLookup::setParent()
附:安装PHP的dbxml扩展(windows下的暂时没有找到)
载 wget http://download.oracle.com/berkeley-db/dbxml-2.2.13.tar.gz
tar zxvf dbxml-2.2.13.tar.gz
cd dbxml-2.2.13
./buildall.sh
编译 Berkeley DB for php 模块
cd dbxml-2.2.13/db-4.3.29/php_db4
phpize
./configure –with-db4
make
make install
编译 Berkeley DB XML for php 模块
cd dbxml-2.2.13/dbxml/src/php
phpize
make
make install
修改php.ini
extension=db4.so
extension=dbxml.so
重启 apache
| 标签:
Berkeley DB, PHP, xml
留言 » | 位于:
PHP编程相关, XML & XSL |
2007年02月06日
当用户请求网站不存在的页面或者数据时候,需要给用户提供一个友好的错误提示页面,这就要求定制原来由Apache提供的默认404页面。
404错误主要会表现在以下两种情况:
1、用户请求网站上不存在的页面,该错误的处理机制由Apache提供;
2、用户请求网站存在的页面,但是说请求的信息内容不存在,该错误需要编程来输出404错误;
由上可知,我们需要做两方面的工作以便达到定制404错误页码的目的。
| 标签:
错误页, PHP
留言 » | 位于:
PHP编程相关, Linux/Unix |