Home mail me! Syndicate this site using RSS

Archive for General


Howto Install Oracle Berkeley DB on Linux

Berkeley DB是由美国Sleepycat Software公司开发的一套开放源代码的嵌入式数据库管理系统(已被Oracle收购),它为应用程序提供可伸缩的、高性能的、有事务保护功能的数据管理服务。

Berkeley DB为许多编程语言提供了实用的api接口,包括c、c++、java、perl、tcl、python和php等。所有同数据库相关的操作都由Berkeley DB函数库负责统一完成。

官方地址为:http://www.oracle.com/technology/products/berkeley-db/db/index.html

本文就先讲一下如何在CentOS下安装Berkeley DB数据库(其他系统类似)。

1、安装Berkeley DB

# cd /usr/local/src
# wget http://download.oracle.com/berkeley-db/db-4.6.18.tar.gz
# tar -zxvf db-4.6.18.tar.gz
# cd db-4.6.18
# cd build_unix

Berkeley DB默认是安装在/usr/local/BerkeleyDB.4.6目录下,其中4.6就是版本号,你也可以指定–prefix参数来设置安装目录。

# ../dist/configure --prefix=/usr/local/berkeleydb --enable-cxx

其中–enable-cxx就是编译C++库,这样才能编译Berkeley DB数据库的PHP扩展php_db4。

# make
# make install
# echo '/usr/local/berkeleydb/lib/' >> /etc/ld.so.conf
# ldconfig

这2句的作用就是通知系统Berkeley DB的动态链接库在/usr/local/berkeleydb/lib/目录。

至此,Berkeley DB数据库已经安装完成。

Read more…

[小技巧]记录PHP错误日志

对于PHP开发人员来说,一旦某个产品投入使用,那么第一件事就是应该将display_errors选项关闭,以免因为这些错误所透露的路径、数据库连接、数据表等信息而遭到黑客攻击。

某个产品投入使用后,难免会有错误信息,那么如何记录这些对开发人员非常有用的信息呢?

将PHP的log_errors开启即可,默认是记录到WEB服务器的日志文件里,比如Apache的error.log文件。

当然也可以记录错误日志到指定的文件中。

# vim /etc/php.ini
display_errors = Off
log_errors = On
error_log = /var/log/php-error.log

另外也可以设定error_log = syslog,使这些错误信息记录到操作系统的日志里。

PHP COM应用之WPS篇

本文仅仅是一个简单的例子来演示PHP通过COM扩展来调用WPS二次开发接口.

<?php
$wps = new COM("WPS.application") or die("Can't start WPS");
try {
	$wps->Visible = true;
 
	// Create Document
	$doc = $wps->Documents->Add();
	$doc->Range->Text = "WPS v{$wps->Version} Example";
	$doc->Paragraphs[1]->Alignment = 1;
	$doc->Shapes->AddPicture("http://img.kingsoft.com/publish/kingsoft/images/gb/sy/logo.gif", 80, 50, 148, 60);
 
	$doc->SaveAs("c:/php.wps");
 
	// Close
	$wps->Quit();
} catch (com_exception $e) {
	echo $e;
}
?>

这段代码的执行结果是会在C盘下创建一个php.wps文件,文件内容如下图所示:
php_com_wps

使用PHP的GD库来实现截屏

PHP5.2.2以上版本的GD库实现了两个截屏函数imagegrabscreen和imagegrabwindow,分别用于截取整个屏幕和截取某个窗口(同ALT+PrintScreen)的屏幕。

调用方法也很简单,请看下面两个例子:
Read more…

PHP namespaces came back!

近期PHP邮件列表最引人注目的应该就是namespace的开发了,Dmitry Stogov已经为PHP6打了个补丁,不过看上去已经很完美了。具体可以点这里看他发的帖子:Simple Namespace Proposal

还记得以前PHP 5.0.0 alpha或beta的时候就已经支持namespace了,可后来推出正式版后却因为种种原因还是去掉了。现在想想namespace是越来越有用了,特别是针对Zend Framework这类框架的应用,颇有感触!希望经过这次的讨论之后会正式把这个功能加进来。
Read more…

自行编译安装PHP

实际上这种文章已经很多了,网上也到处都是,之所以写这篇文章,目的是为了解决其中一个问题。

# cd /usr/local/src
# wget http://cn.php.net/distributions/php-5.2.3.tar.gz
# tar -zxvf php-5.2.3.tar.gz
# cd php-5.2.3
# ./configure --build=x86_64-redhat-linux-gnu --host=x86_64-redhat-linux-gnu --target=x86_64-redhat-linux-gnu --program-prefix= --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/usr/com --mandir=/usr/share/man --infodir=/usr/share/info --cache-file=../config.cache --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --enable-force-cgi-redirect --disable-debug --enable-pic --disable-rpath --enable-inline-optimization --with-exec-dir=/usr/bin --with-freetype-dir --with-png-dir=/usr/local --with-gd=shared --enable-gd-native-ttf --with-iconv --with-jpeg-dir=/usr/local --with-openssl --with-png --with-pcre-regex --with-zlib --with-layout=GNU --enable-magic-quotes --enable-sockets --enable-sysvsem --enable-sysvshm --enable-track-vars --enable-trans-sid --enable-memory-limit --enable-shmop --with-mime-magic=/usr/share/file/magic.mime --with-apxs2=/usr/sbin/apxs --with-sqlite --with-pdo-sqlite --without-pear --disable-xmlwriter --disable-xmlreader --disable-xml --disable-simplexml --disable-libxml --disable-dom --disable-ipv6 --disable-json --disable-hash --with-mysql --with-pdo-mysql

很多人在执行到这一步的时候,会出现以下问题:
Read more…

发布最新编译的PHP中文手册

一直觉得很奇怪,为什么PHP官方编译的PHP中文手册的索引是乱码,而自己编译的就没问题,难道那人是台湾人?或是比较喜欢用繁体字?搞的那么多国内用户看着繁体不爽,主要是索引乱码不爽。

因为自己前几年写的自己动手编译PHP手册的底稿已不存在,故在网上搜了一下,发现多如牛毛,几乎都是转载偶的那篇文章,同时也觉得可笑,以后自己的文章要是不见了,到网上一搜没准都能找到,不管有多老,呵呵。

下面附上2007年6月20日编译的PHP中文手册下载。php_manual_zh.chm.tar.gz

备注:请大家下载后,将文件名改为php_manual_zh.chm.tar.gz再解压缩,因为WordPress的原因自动将.tar.gz后缀的文件名改为tar.gz了。

[老文章 ]PHP5 & Web Services 系统架构图

注:此文章由本人CSDN上的BLOG迁移过来

最近在做一个项目,有大量的数据需要实时更新,同时要求多台服务器可共享这些数据,类似于股票系统,因此决定使用B/S+中间层三层架构,其中使用Web Services作为中间层,原因在于,从长远角度来考虑,以后可能会增加C/S结构,所以采用Web Services是个绝好的选择。

系统架构图如下:
Read more…

[老文章]SQLite数据库安全

相信使用PHP开发的人员一定不会对SQLite感到陌生了,PHP5已经集成了这个轻量型的数据库。SQLite�任何限制的授权协议以及支持大部分标准的SQL 92语句,相信会有越来越多的人使用这个数据库。作为WEB开发而言,PHP与SQLite的结合就如同当年的ASP与ACCESS结合一样,ACCESS可以遭遇被人下载,SQLite同样不能幸免,毕竟SQLite也是一个二进制文件,只要WEB能访问到的,就能被下载。ACCESS可以采用一些诡计来防止用户下载,SQLite同样可以,下面偶就将一些网上收集过来的解决方案贴在这里。
1、将SQLite放在WEB不能访问到的地方。
有些虚拟主机一般也都会提供一个单独目录,供用户放一些不想被下载或访问的文件,所以放在这个目录很安全。

2、如果PHP是作为CGI或者APACHE的单独进程运行,那么可以修改一下SQLite数据库文件的权限,比如0600。

3、假如WEB服务器是APACHE,并且支持自定义.htaccess,那么可在.htaccess文件中加入以下内容:

<FilesMatch ".sqlite$">
Deny from all
</FilesMatch>

其中.sqlite即为他的数据库文件的扩展名。

4、Ilia<还提供了另一种,该方法有点类似ACCESS的做法。
就是将SQLite数据库文件扩展名改为.php,并在该数据库中使用如下方法建立一个表:
create table ‘ SQLite security

[老文章]PHP & XUL

很早就知道XUL是什么东西,但一直未用过,直到今天在David Sklar的BLOG上看到这篇关于XUL的文章(Creating Rich Applications with Mozilla, XUL, and AMP Technology)。

一、什么是XUL?

XUL即XML-based User Interface Language的缩写,是一种基于XML的界面设计语言,提供了各种各样的元件(elements)和物件(widgets)。它可以在 Mozilla 家族的所有产品中运行。

其实就跟微软大势宣扬的XAML一样,未来没有C/S或者B/S可言。至于XUL和XAML这两者谁效仿谁,就不是我们这些最终用户该研究的了:)
Read more…


Next Page »