首页 > php框架

PHP数据缓存技术之三

 

PHP应用程序的性能优化
使用PHP编程的最大好处是学习这种编程语言非常容易以及其丰富的库。即使对需要使用的函数不是十分了解,我们也能够猜测出如何完成一个特定的任务。
尽管PHP非常简单易学,但我们仍然需要花费一点时间来学习PHP的一些编程技巧,尤其是与性能和内存占用相关的技巧。在PHP中,有许多小技巧能够使我们减少内存的占用,并提高应用程序的性能。在本篇文章中,我们将对PHP应用程序的分析、如何改变脚本代码以及比较优化前后的各种参数值进行简要的介绍。

阅读全文

PHP与其它CGI的比较

无可置疑的,写 CGI 的方式有很多种,而 PHP 只是其中的一种选择罢了。对资深的 Webmaster 而言,CGI 的写作界面应是随着需求而改动。毕竟,在一个对系统反映速度要求极严格的系统而言,恐怕只有 NSAPI 界面写的 CGI 程序才能符合要求了。在其它的场合,相信使用 PHP 来作为 CGI 的界面是游刃有余,而且是最适合的。

程序界面PHPASPCGINSAPI ISAPI
操作系统均可 Win32 均可 均可 Win32
Web服务器数种 IIS 均可 Netscape Server IIS
执行效率极快 极快
稳定性中等 最高
开发时间中等
修改时间中等
程序语言PHP VB 不限 C/C++ C/ Delphi
网页结合
学习门槛极高
函数支持不定 中等
系统安全极差 最佳 尚可
使用网站超多 极少
改版速度


阅读全文

php.ini 配置详细选项

php.ini 或 php3.ini 是 PHP 在启动时会读取的配置文件。该文件的存放路径为 /usr/local/lib/。在 PHP 3.x 版的配置文件为 php3.ini;而在 PHP 4.x 版改为 php.ini。若 PHP 安装成服务器的模块,则在 Web 服务器启动执行时会读取,之后就不再读取,因此改动配置的话要重新启动 Web 服务器。若使用独立 PHP CGI 方式,则每次都读一次。

要看目前的系统配置,可以用phpinfo()看到。以下为选项配置

php_value name value 配置变量名称和值。本选项需 PHP 4.x 版之后才能使用。

php_flag name on|off 配置标志布尔变量选项。本选项需 PHP 4.x 版之后才能使用。

php_admin_value name value 配置 Apache 的配置文件变量。原来在 .htaccess 的配置改到这个选项配置。本选项需 PHP 4.x 版之后才能使用。

php_admin_flag name on|off 配置布尔变量当标志。本选项需 PHP 4.x 版之后才能使用。

asp_tags boolean 配置 PHP 程序是否解析以 ASP Script 语法 <% %> 的标记 (tag)。本选项在 PHP 3.0.4 之后才可使用。更多的细节可以参考>嵌入方法的部份。

auto_append_file string 配置本选项可以让指定的文件附加在原 PHP 程序后面自动执行。若 PHP 程序中有用到 exit() 函数,则指定的文件不会执行。参数 string 即为指定自动执行的文件。

auto_prepend_file string 配置本选项可以让指定的文件在原 PHP 程序之前自动执行。参数 string 即为指定自动执行的文件。

cgi_ext string 本选项配置 CGI 程序的扩展名。

display_errors boolean 本选项配置是否要将执行的错误信息显示在用户的浏览器上。

doc_root string 配置服务器的文件及 PHP 文件放置的根目录。

engine boolean 本选项需要使用apache的模块方式使用 PHP。可配置是否要使用 PHP 引擎。在 httpd.conf 中加入 php3_engine on/off 亦可配置某目录或某虚拟网站是否要用 PHP 解析器。

error_log string 本选项用来配置错误记录文件。在 UNIX 系统上参数 string 即为文件名。Windows NT 会将记录记在事件检视器的日志之中。Windows 95/98 则不支持系统记录。

error_reporting integer 本选项用来配置系统记录的等级。参数 integer 即为等级的级数标志,可以加在一起,默认值为 7,见下表
 
级数说明
1一般的错误
2一般的警告
4解析错误
8非关键的警告

open_basedir string 本选项用来配置提供 PHP 存取的最底层目录。从该指定目录之下的文件或目录,PHP 程序才能存取。使用本选项主要是为了系统安全性的考虑。参数 string 即为要限制的最底层目录节点。值得注意的是在 UNIX 系统中,若该节点之下的文件或目录有符号链结 (symbolic link),则可能会让使用本选项的目的打折,因此在目录的设计上考虑,也是 Webmaster 的重要任务。默认值是所有文件均可存取。在 PHP 3.0.7 版之后,可以配置多个底层目录。

gpc_order string 配置 GET/POST/COOKIE 三种模块的顺序及规则。参数 string 即为要配置的规则,例如:配置成 GP 表示忽视 cookie,并在存取方法 (method) 相同时,以 POST 取代 GET。

ignore_user_abort string 默认值为 Off。用来配置当传输未完成时,用户端断线是要继续处理。

include_path string 为 PHP 程序中 require、include 及 fopen_with_path 等函数的文件搜寻路径。在 UNIX 或 Windows 中的斜线方向不同。

log_errors boolean 指定程序错误时是否要记录在 log 文件中。

magic_quotes_gpc boolean 配置 GET/POST/COOKIE 三种模块的特殊字符,包含单引号、双引号、反斜线、及空字符 (NUL) 是否要自动加入反斜线当溢出字符。

magic_quotes_runtime boolean 配置返回资料是否自动加入反斜线当溢出字符。

magic_quotes_sybase boolean 配置 sybase 资料中单引号要自动加上反斜线当溢出字符。

max_execution_time integer 配置程序最久执行时间。单位是秒。

memory_limit integer 配置程序最多使用多少内存。

short_open_tag boolean 配置是否使用短的 PHP 标记 ()。若不使用,则必须要用

track_errors boolean 打开本选项可使最后的错误信息跟着全局变量 $php_errormsg。

track_vars boolean 打开本选项可让用户输入的字符串自动解析到变量之中,而不用自己处理。

upload_tmp_dir string 指定上传文件临时路径。

user_dir string 指定用户根目录的路径。

warn_plus_overloading boolean 若打开本选项,字符串间就只能用英文的句号 (.) 链接,而不能用加号 (+) 链接字符串。

SMTP string 在 Windows 系列操作系统中,用来指定 SMTP 服务器,供 mail 函数使用。参数 string 为 SMTP 服务器名字。

sendmail_from string 配置 From: 字符串供 Windows 系列操作系统使用 mail 函数。

sendmail_path string 配置 sendmail 程序的放置路径。例如 /usr/sbin/sendmail。

safe_mode boolean 配置 PHP 在安全模式下执行。

safe_mode_exec_dir string 配置安全模式程序执行的路径。

debugger.host string 指定远端调试的服务器名称,可以是 IP 或 Domain Name。

debugger.port string 配置远端调试服务器的端口 (port)。

debugger.enabled boolean 配置是否可以为调试模式。

enable_dl boolean 本选项要使用apache模块 (Apache module) 的方式才有效。用来配置 PHP 的函数可否作用。当系统处于安全模式 (safe-mode) 时,本选项 enable 也无法使用 dl() 函数。

extension_dir string 配置动态函数的路径。

extension string PHP 启动时所要载入的动态扩充功能。

mysql.allow_persistent boolean 配置是否允许 MySQL 数据库持续连接 (persistent connections),会影响函数。

mysql.max_persistent integer 配置每个处理程序最多保持几个 MySQL 持续连接。

mysql.max_links integer 配置每个处理程序最多开几个 MySQL 连接,包括持续连接。

msql.allow_persistent boolean 配置是否允许 mSQL 数据库持续连接 (persistent connections),会影响函数。

msql.max_persistent integer 配置每个处理程序最多保持几个 mSQL 持续连接。

msql.max_links integer 配置每个处理程序最多开几个 mSQL 连接,包括持续连接。

pgsql.allow_persistent boolean 配置是否允许 Postgres 数据库持续连接 (persistent connections),会影响函数。

pgsql.max_persistent integer 配置每个处理程序最多保持几个 Postgres 持续连接。

pgsql.max_links integer 配置每个处理程序最多开几个 Postgres 连接,包括持续连接。

sybase.allow_persistent boolean 配置是否允许 Sybase 数据库持续连接 (persistent connections),会影响函数。

sybase.max_persistent integer 配置每个处理程序最多保持几个 Sybase 持续连接。

sybase.max_links integer
配置每个处理程序最多开几个 Sybase 连接,包括持续连接。

sybct.allow_persistent boolean 配置是否允许 Sybase-CT 数据库持续连接 (persistent connections),默认值是打开的。

sybct.max_persistent integer 配置每个处理程序最多保持几个 Sybase-CT 持续连接。默认值为 -1 表示无限制。

sybct.max_links integer 配置每个处理程序最多开几个 Sybase-CT 连接,包括持续连接。默认值为 -1,表示没有限制。

sybct.min_server_severity integer 配置 Sybase-CT 服务器错误报告的最少笔数。默认值为 10。

sybct.min_client_severity integer 配置 Sybase-CT 客户端错误报告的最少笔数。默认值为 10。

sybct.login_timeout integer 配置 Sybase-CT 最久可以使用的登入时间。默认值为 1 分钟。

sybct.timeout integer 配置 Sybase-CT 的 query 操作时间限制。默认值为无限制。

sybct.hostname string 配置 Sybase-CT 可连接机器名称。默认值不设限

ifx.allow_persistent boolean 配置是否允许 Informix 数据库持续连接 (persistent connections),会影响函数。

ifx.max_persistent integer 配置每个处理程序最多保持几个 Informix 持续连接。

ifx.max_links integer 配置每个处理程序最多开几个 Informix 连接,包括持续连接。

ifx.default_host string 配置 Informix 默认连接的服务器名称,供ifx_connect()或ifx_pconnect()函数使用。

ifx.default_user string 配置 Informix 默认连接的用户帐号,供ifx_connect()或ifx_pconnect( 函数使用。

ifx.default_password string 配置 Informix 默认连接的用户密码,供ifx_connect()或ifx_pconnect() 函数使用。

ifx.blobinfile boolean 配置 Informix 长位类模式,0 表在内存;1 表在文件中。亦可以在 PHP 程序中使用ifx_blobinfile_mode()函数来修改。

ifx.textasvarchar boolean 配置 Informix 文字模式默认值,0 表返回 blob 的代码;1 表返回 varchar 字符串。亦可在 PHP 程序中使用ifx_textasvarchar() 函数来修改配置。

ifx.byteasvarchar boolean 配置 Informix 位组模式默认值,0 表返回 blob 的代码;1 表返回 varchar 字符串。亦可在 PHP 程序中使用ifx_byteasvarchar() 来修改配置。

ifx.charasvarchar boolean 配置 Informix 返回字符串的字尾空格是否要自动去除。

ifx.nullformat boolean 配置 NULL 字段的返回方式,true 表示返回字符串 NULL,false 表格返回字符串 。亦可在 PHP 程序中以ifx_nullformat() 修改。

bcmath.scale integer 配置 BC 高精确度函数库的小数点位数。

browscap string 配置浏览器的开文件能力名。

uodbc.default_db string 配置 ODBC 默认连接的数据库名称,供odbc_connect()或odbc_pconnect()函数使用。

uodbc.default_user string 配置 ODBC 默认连接的用户帐号,供odbc_connect()或odbc_pconnect()函数使用。

uodbc.default_pw string 配置 ODBC 默认连接的用户密码,供odbc_connect()或函数使用。

uodbc.allow_persistent boolean 配置是否允许 ODBC 数据库持续连接 (persistent connections),会影响odbc_pconnect()函数。

uodbc.max_persistent integer 配置每个处理程序最多保持几个 ODBC 持续连接。

uodbc.max_links integer 配置每个处理程序最多开几个 ODBC 连接,包括持续连接。

以下和 session 有关的配置值,都在 PHP 4.x 以上的版本方支持。在 php.ini 的配置文件中。

session.save_handler 定义 session 储存资料的文件名称。默认值为 files。

session.save_path 定义 session 储存资料的文件路径。默认值为 /tmp。

session.name 配置 session 所使用的 cookie 名称。默认值为 PHPSESSID。

session.auto_start 配置 session 是否自动打开。默认值为 0 (否)。

session.lifetime配置 cookie 送到浏览器后的保存时间,单位为秒。默认值为 0,表示直到浏览器关闭。

session.serialize_handler 定义连续/解连续资料的标头,本功能只有 WDDX 模块或 PHP 内部使用。默认值为 php。

session.gc_probability 配置每笔要求回应时的废物蒐集 (gc, garbage collection) 处理机率。默认值为 1。

session.gc_maxlifetime 配置废物被清除前的存活秒数。

session.extern_referer_check 决定参照到客户端的 Session 代码是否要删除。有时在安全或其它考虑时,会配置不删除。默认值为 0。

session.entropy_file 配置 session 代码建立时,使用外部高熵值资源或文件来建立,例如 UNIX 系统上的 /dev/random 或 /dev/urandom。

session.entropy_length 配置 session 从高熵值资源读取的位组数。默认值为 0。

session.use_cookies 配置是否要将 session 变成 cookie 存在用户端。默认值为 1,表是打开本功能。



阅读全文

PHP站点安全配置教程

本文通过介绍一些技巧介绍了针对PHP木马攻击的防御之道,通过这些方面你可以更好的防范木马程序。
1、防止跳出web目录
首先修改httpd.conf,如果你只允许你的php脚本程序在web目录里操作,还可以修改httpd.conf文件限制php的操作路径。比如你的web目录是/usr/local/apache/htdocs,那么在httpd.conf里加上这么几行:
php_admin_value open_basedir /usr/local/apache
/htdocs
这样,如果脚本要读取/usr/local/apache/htdocs以外的文件将不会被允许,如果错误显示打开的话会提示这样的错误: 
Warning: open_basedir restriction in effect. File is in wrong directory in 
/usr/local/apache/htdocs/open.php on line 4 
等等。 
2、防止php木马执行webshell 
打开safe_mode, 
在,php.ini中设置 
disable_functions= passthru,exec,shell_exec,system
二者选一即可,也可都选
3、防止php木马读写文件目录 
在php.ini中的 
disable_functions= passthru,exec,shell_exec,system
后面加上php处理文件的函数 
主要有 
fopen,mkdir,rmdir,chmod,unlink,dir 
fopen,fread,fclose,fwrite,file_exists 
closedir,is_dir,readdir.opendir 
fileperms.copy,unlink,delfile 
即成为 
disable_functions= passthru,exec,shell_exec,system,fopen,mkdir,rmdir,chmod,unlink,dir 
,fopen,fread,fclose,fwrite,file_exists 
,closedir,is_dir,readdir.opendir 
,fileperms.copy,unlink,delfile 
ok,大功告成,php木马拿我们没辙了,遗憾的是这样的话,利用文本数据库的那些东西就都不能用了。
如果是在windos平台下搭建的apache我们还需要注意一点,apache默认运行是system权限,这很恐怖,这让人感觉很不爽.那我们就给apache降降权限吧。
net user apache fuckmicrosoft /add
net localgroup users apache /del
ok.我们建立了一个不属于任何组的用户apche。
我们打开计算机管理器,选服务,点apache服务的属性,我们选择log on,选择this account,我们填入上面所建立的账户和密码,重启apache服务,ok,apache运行在低权限下了。 
实际上我们还可以通过设置各个文件夹的权限,来让apache用户只能执行我们想让它能干的事情,给每一个目录建立一个单独能读写的用户。这也是当前很多虚拟主机提供商的流行配置方法哦,不过这种方法用于防止这里就显的有点大材小用了。

阅读全文

多PHP服务器实现多session并发运行

首先介绍一下session的概念:所谓session是微软首先提出的,在asp中最先集成。由于session的采用,大大方便了web开发员的工作。一时间asp风靡全球。现在php4也加入session的支持,再度显示出open source 的强大力量。和Cookie类似,设计Session的目的也是为了在一个访问期间在不同的页面间传输数据以解决http协议无状态的问题,但Session更加简单、更加安全。Session 中文没有一个统一的译法,我习惯上译为会话。关于session的意义大家都应该清楚: 其实是在浏览某个网站时,在浏览器没有关闭的情形之下,一个web应用的开始和结束。一个...
阅读全文

如何对PHP程序中的常见漏洞进行攻击

之所以翻译这篇文章,是因为目前关于CGI安全性的文章都是拿Perl作为例子,而专门介绍ASP,PHP或者JSP安全性的文章则很少。Shaun Clowes的这篇文章比较全面地介绍了PHP的安全问题,原文可以http://www.securereality.com.au/studyinscarlet.txt找到。

由于原文比较长,而且有相当一部分是介绍文章的背景或PHP的基础知识,没有涉及到PHP安全方面的内容,因此我没有翻译。如果你想了解这方面的知识,请参考原文。

阅读全文

IIS环境下安装PHP5

1

.要下载2个php的安装包:一个是install版本的,另一个是zip版本的 。

.运行install版本,按照标准模式安装就可以了,安装过程中注意正确选择你的iIS版本。
2000server 选iis4或更高版本 ,2003server选择iis 6.
关联.php,.phtml.php3等文件类型。这里设定d:php作为安装目录

阅读全文

PHP中操作MySQL的需注意的问题

1.每一行命令都是用分号 (;) 作为结束

对于 MySQL ,第一件你必须牢记的是它的每一行命令都是用分号 (;) 作为结束的,但……没有完全绝对的事,在这儿也是一样,当一行 MySQL 被插入在 PHP 代码中时,最好把后面的分号省略掉,例如:

阅读全文

PHP 和 MySQL 开发的8个技巧

LAMP 架构的网站,我以前注重的多是安装/配置方面的,讲述开发的相对较少,因为自己从事开发也少。本文的原文当然也来自:
Published on The OReilly Network (http://www.oreillynet.com/)
http://www.oreillynet.com/pub/a/onlamp/2002/04/04/webdb.html
看了以后,颇有启发,以前开发中遇到的一些问题,迎刃而解。所以翻译出来和大家共享。
1. PHP 中数组的使用

阅读全文