适用于 php-5.2 的 php.ini 中文版
;;;;;;;;;;;;;;
;; 简介 ;;
;;;;;;;;;;;;;;
; 本文并非是对英文版 php.ini 的简单翻译,而是参考了众多资料以后,结合自己的理解,增加了许多内容,
; 包括在原有 php.ini 基础上增加了一些实用模块的配置说明,同时对文件内容的安排进行了调整。
; 由于作者不喜欢 no-free 的玩意儿,所以删除了除 MySQL 和 PostgreSQL 以外的其他数据库模块配置选项。
;;;;;;;;;;;;;;;;;
;; 关于php.ini ;;
;;;;;;;;;;;;;;;;;
; 这个文件必须命名为''php.ini''并放置在httpd.conf中的PHPIniDir指令指定的目录中。
; 最新版本的php.ini可以在下面两个位置查看:
; [url]http://cvs.php.net/viewvc.cgi/php-src/php.ini-recommended?view=co[/url]
; [url]http://cvs.php.net/viewvc.cgi/php-src/php.ini-dist?view=co[/url]
;;;;;;;;;;;;
;; 语法 ;;
;;;;;;;;;;;;
; 该文件的语法非常简单。空白字符和以分号开始的行被简单地忽略。
; 章节标题(例如: [php])也被简单地忽略,即使将来它们可能有某种意义。
;
; 设置指令的格式如下:
; directive = value
; 指令名(directive)是大小写敏感的!所以"foo=bar"不同于"FOO=bar"。
; 值(value)可以是:
; 1. 用引号界定的字符串(如:"foo")
; 2. 一个数字(整数或浮点数,如:0, 1, 34, -1, 33.55)
; 3. 一个PHP常量(如:E_ALL, M_PI)
; 4. 一个INI常量(On, Off, none)
; 5. 一个表达式(如:E_ALL & ~E_NOTICE)
;
; INI文件中的表达式仅使用:位运算符、逻辑非、圆括号:
; | 位或
; & 位与
; ~ 位非
; ! 逻辑非
;
; 布尔标志用 On 表示打开,用 Off 表示关闭。
;
; 一个空字符串可以用在等号后不写任何东西表示,或者用 none 关键字:
; foo = ; 将foo设为空字符串
; foo = none ; 将foo设为空字符串
; foo = "none" ; 将foo设为字符串''none''
;
; 如果你在指令值中使用动态扩展(PHP扩展或Zend扩展)中的常量,
; 那么你只能在加载这些动态扩展的指令行之后使用这些常量。
;;;;;;;;;;;;;;;;;;
;; httpd.conf ;;
;;;;;;;;;;;;;;;;;;
; 还可以在httpd.conf中覆盖php.ini的值,以进行更灵活的配置:
; php_value name value ;设置非bool型的指令,将value设为none则清除先前的设定
; php_flag name on|off ;仅用于设置bool型的指令
;
; PHP常量(如E_ALL)仅能在php.ini中使用,在httpd.conf中必须使用相应的掩码值。
; 带"SYS"标志的指令只能在httpd.conf中的全局配置部分使用,
; 带"ini"标志的指令不能在httpd.conf中使用,它们仅能用于php.ini中。
;==========================================================================================
;;=====================================配置指令详解========================================
;==========================================================================================
用星际快速入门PHP面向对象编程(修订版)
面向对象博大精深,对于从未接触过得的人,会觉得一头雾水。
学习的资料很多,但大多比较抽象,所以我用经典的游戏-星际争霸来讨论PHP面向对象。
PHP 截取字符串专题
PHP 截取字符串专题
作者: 不详 来源: 不详
1. 截取GB2312中文字符串
<?php
//截取中文字符串
function mysubstr($str, $start, $len) {
$tmpstr = "";
$strlen = $start + $len;
for($i = 0; $i < $strlen; $i++) {
if(ord(substr($str, $i, 1)) > 0xa0) {
$tmpstr .= substr($str, $i, 2);
$i++;
} else
$tmpstr .= substr($str, $i, 1);
}
return $tmpstr;
}
?>
2. 截取utf8编码的多字节字符串
<?php
//截取utf8字符串
function utf8Substr($str, $from, $len)
{
return preg_replace(''#^(?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0,''.$from.''}''.
''((?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0,''.$len.''}).*#s'',
''$1'',$str);
}
?>
3. UTF-8、GB2312都支持的汉字截取函数
<?php
/*
Utf-8、gb2312都支持的汉字截取函数
cut_str(字符串, 截取长度, 开始长度, 编码);
编码默认为 utf-8
开始长度默认为 0
*/
function cut_str($string, $sublen, $start = 0, $code = ''UTF-8'')
{
if($code == ''UTF-8'')
{
$pa = "/[x01-x7f]|[xc2-xdf][x80-xbf]|xe0[xa0-xbf][x80-xbf]|[xe1-xef][x80-xbf][x80-xbf]|xf0[x90-xbf][x80-xbf][x80-xbf]|[xf1-xf7][x80-xbf][x80-xbf][x80-xbf]/";
preg_match_all($pa, $string, $t_string);
if(count($t_string[0]) - $start > $sublen) return join('''', array_slice($t_string[0], $start, $sublen))."...";
return join('''',
PHP静态分析与跨站脚本检测(四)
今天继续提交读程序笔记,这次比较少,而且相对简单些。
ConnectorComputation
- compute()
如果workList还有元素,就继续循环,但是第一次进入循环时候根据构造方法来看workList只有一个元素<mainFunction, emptyCallString>。然后从workList中取出第一个元素,获取TacFunction和CallString(gamma),根据TacFunction(p)从function2ECS中得到ECS(ecs_p),实际上此时functions2ECS中第一个元素对应的TacFunction即为_main。得到gamma在ecs_p中的位置,即是在一个CallString的链表中的位置
随后,将p这个TacFunction包含的所有的CfgNodeCall迭代一遍,对于每一个callNode,得到其callee(即被调用的函数q),在q!=null的情况下,以callNode建立一个新的CallString(gamma_2),从function2ECS中得到q对应的ECS(ecs_q),获取ecs_q中gamma_2的位置,如果为-1,就将gamma_2添加到ecs_q的CallStrings队列中去,并以q和gamma_2建立元素添加到workList中去,expand it。
接下来扩充什么ConnectorFunction因为都在for循环里边,是对局部变量的操作,所以没有什么用处。
在while循环结束之后,调用makeCallGraph()方法。
- makeCallGraph()
首先以mainFunction初始化一个CallGraph,获得mainFunction所包含的方法调用列表processUs<CfgNodeCall>,并建立一个以访问的集合visited,将mainFunction添加进集合里边。
当processUs不为空,依次取出元素callNode,得到它的caller和callee,如果callee!=null,向callGraph中添加元素。如果callee还没有被处理过,则将其所包含的所有函数调用添加进processUs,并将其放进visited。
Checker
根据初始提供的run-all.bat的参数来看,实际上aliases analyze和literal analyze并没有进行,只是gta.analyze()进行了,实际上也就是只有dependance analyze执行了。通过以来关系最后决定vulns。
Zend Framework入门指引
安装篇(Windows平台)
* 安装PHP环境。Zend Framework(下面简称ZF)需要PHP 5.1.4+才能正常运行。如果你已经安装了PHP环境,跳过这一步。在Win下,我推荐使用WAMP做为开发环境。只要一路next,WAMP就把Apache、PHP5、MySQL5、phpMyAdmin等都装好了。(提醒:装好后mysql用户root默认密码为空)。点击WAMP的图标在ApacheModules下开启rewrite_module。如果你要使用Zend_Db以 Mysql为例,还得开启PHP Setting->;PHPExtensions下的php_pdo和php_pdo_mysql扩展。
* 安装TortoiseSVN。 TortoiseSVN是svn在win下的客户端。安装TortoiseSVN的目的是为了获取最新的ZF源码,如果你使用zend定期发布的zf的源码,可以跳过这一步。
* 获取ZF源码。如果使用TortoiseSVN,在你磁盘的某处建立一个文件夹(比如ZF),在文件夹上点击右键,选择SVNcheckout,在地址栏中输入http://framework.zend.com/svn/framework/trunk,点击确定,TortoiseSVN就开始工作获取zf的源码了。你也可以http://framework.zend.com/download下载源码。不过总得来说,还是使用SVN方便。
* 为ZF添加路径。编辑php.ini(wamp的php.ini在apache/bin目录下),编辑include_path字段(举例include_path = ".;G:你的ZF路径library")。
* 配置ZF项目。推荐使用Haohappy的方法http://www.phprm.com/bbs/thread-5730-1-4.html。
* 开始旅程。推荐论坛里的xgwork的新手学习 Zend Framework 框架连载(因为上一步中已经为ZF添加了路径,所以在该教程中的set_include_path可以省略),还有IBM的《理解Zend Framework》系列。
Apache的配置:
编辑httpd.conf文件
找到
#LoadModule rewrite_module modules/mod_rewrite.so 这行并将前面的”#”去掉
最后找到
AllowOverride None
更改为:
AllowOverride All,才能让/htaccess文件起作用
到此Apache的配置完成
zend studio for eclipse的ssh使用rsa
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息和本声明。否则将追究法律责任。http://www.phprm.com - 马永占,myz,mayongzhan
zend历程 之 ZendFramework-1.0.3
将从官方网上下载下来的ZendFramework-1.0.3,一试,发现不行,
较ZendFramework-1.0.2一比
原来是改动了一些如:
function __autoload($class){
Zend_Loader::loadClass($class);
}
已经不能再用,报错找不了控制器。
现在用的是:
Zend_Loader::registerAutoload(); //自动加载类,使用时,直接实例化使用
其它的都没有什么变,我就不多说了!
带上一网址:
http://www.diybl.com/course/4_webprogram/php/phpshil/200727/12436_3.html
Linux下源代码安装apache+mysql+php
Linux下源代码安装apache+mysql+php
/*******************************
* I am pefocus,pefocus is me !*
*******************************/
PHP静态分析与跨站脚本检测(二)
今天继续昨天的话题,这次仍然是为了理解php解析过程而做得工作。这次是将ProgramConverter中对PHP文件解析产生的ParseTree显示出来,使用JTree。
当然ProgramConverter中没有返回ParseTree的方法,如果另外在Checker中重新解析一遍,毫无疑问是不划算的,因而改写ProgramConverter,添加几行代码就行了。然后再Checker中调用具体产生JTree的类,将这个ParseTree作为参数传进去,然后OK。
zend框架关于基地址
今天发现自己原来上当啊,郁闷啊……
eclipse 快速建立PHP调试环境 eclipse 快速建立PHP调试环境
从网上下载wamp5_1.7,或者xampp-win32-1.6.5,参考地址: http://www.codepub.com/d/downpage.php?n=1&id=7656::1162764159 http://www.apachefriends.org/zh_cn/xampp-windows.html#1787 安装过程十分简单,wamp只需要点下一步下一步就可以,而xampp需要解压到盘符的根目录下,否则无法启动.
zend历程 之 初认控制器
从入门PHP的第二个星期,就开是接触Zend framework了,可是,后来就放了。当时没有做下笔记,接着就什么都忘了,回悔啊,现在重新学过吧!
今天要看的是控制器,这玩意太大,我也只是看看皮毛,由浅入深吧!