仓酷云

标题: PHP网页编程之PHP5装置设置装备摆设和Zend Optimizer装置教程... [打印本页]

作者: 乐观    时间: 2015-2-3 23:43
标题: PHP网页编程之PHP5装置设置装备摆设和Zend Optimizer装置教程...
我假设你目前已经可以完成一个静态页面了,当然,做的好看难看是另外一说,皮皮我的第一个网页也没好看到哪去,但是“孩子”再丑,咱们做“爹妈”的也不能嫌弃不是?这毕竟是咱的成果。   </p> 装置

1.起首下载PHP 5.2.5 (http://www.php.net/downloads.php)
  1. 本文PHP装置
    途径
    取为c:\php
复制代码
2.下载后失掉php-5.1.2-Win32.zip,直接全体接压至c:\php\目次便可得PHP文件寄存目次c:\php;

PHP网页编程之PHP5装置设置装备摆设和Zend Optimizer装置教程...
登录/注册后可看大图



PHP网页编程之PHP5装置设置装备摆设和Zend Optimizer装置教程...
登录/注册后可看大图


3.再将c:\php\下的一切dll文件拷到c:\Windows\system32(win2000体系为 c:/winnt/system32/)下,掩盖已有的dll文件;

PHP网页编程之PHP5装置设置装备摆设和Zend Optimizer装置教程...
登录/注册后可看大图


4.将php.ini-dist用记事本翻开,使用记事本的查找功效搜刮并修正:
  1. 搜刮
    CODE: register_globals = Off
复制代码
将 Off 改成 On ,即失掉register_globals = On;
注:这个对应PHP的全局变量功效,思索有良多PHP法式需求全局变量功效故翻开,翻开后请注重-PHP法式的严谨性,假如不需求保举不修正坚持默许Off形态
  1. 再搜刮
    CODE: extension_dir =
复制代码
并将其途径指到你的 PHP 目次下的 ext 目次,修正为extension_dir = "c:/php/ext"
在c:\php下创立文件夹并定名为tmp
  1. 查找 CODE: ;upload_tmp_dir =
复制代码
将;upload_tmp_dir该行的正文符,即后面的分号“;”去失落,使该行在php.ini文档中起感化。upload_tmp_dir是用来界说上传文件寄存的一时途径,在这里你还可以修正并给其界说一个相对途径,这里设置的目次必需有读写权限。
这里我设置为upload_tmp_dir = c:/php/tmp (即后面创立的这个文件夹)
  1. 搜刮
    找到 CODE: ;Windows Extensions
复制代码
将上面一些经常使用的项后面的;去失落
  1. CODE: ;extension=php_mbstring.dll CODE: ;extension=php_curl.dll CODE: ;extension=php_dbase.dll CODE: ;extension=php_gd2.dll
复制代码
这个是用来撑持GD库的,普通需求,必选
  1. CODE: ;extension=php_ldap.dll CODE: extension=php_zip.dll CODE: ;extension=php_mysql.dll
复制代码
去失落后面的";"
  1. 查找 CODE: ;session.save_path =
复制代码
去失落后面;号,本文这里将其设置置为
  1. session.save_path = c:/php/tmp
复制代码
其他的你可以选择需求的去失落后面的;然后将该文件另存为为php.ini到C:\Windows ( Windows 2000 下为 C:\WINNT)目次下,注重更改文件后缀名为ini,失掉C:\Windows\php.ini ( Windows 2000 下为 C:\WINNT\php.ini)
经常使用平安设置

1、Web办事器平安
PHP其实不外是Web办事器的一个模块功效,所以起首要包管Web办事器的平安。固然Web办事器要平安又必需是先包管体系平安,如许就扯远了,无量无尽。PHP可以和各类Web办事器联合,这里也只会商Apache。十分建议以chroot体例装置启动Apache,如许即便Apache和PHP及其剧本呈现破绽,受影响的也只要这个禁锢的体系,不会伤害实践体系。然而利用chroot的Apache后,给使用也会带来必定的费事,好比毗连mysql时必需用127.0.0.1地址利用tcp毗连而不克不及用localhost完成socket毗连,这在效力上会略微差一点。还有mail函数发送邮件也是个成绩
  1. 由于
    php.ini里的: [mail function] ; For Win32 only. SMTP = localhost ; For Win32 only. sendmail_from = me@localhost.com
复制代码
都是针对Win32平台,所以需求在chroot情况下调剂好sendmail。
2、PHP自己成绩
1.近程溢出
PHP-4.1.2以下的一切版本都存在文件上传近程缓冲区溢露马脚,并且进击法式已普遍传播,胜利率十分高.
2.近程回绝办事
PHP-4.2.0和PHP-4.2.1存在PHP multipart/form-data POST恳求处置近程破绽,固然不克不及取得当地用户权限,然而也 能形成回绝办事。
3.safe_mode绕过破绽
还有PHP-4.2.2以下到PHP-4.0.5版本都存在PHP mail函数绕过safe_mode限制履行号令破绽,4.0.5版本入手下手mail函数增添了第五个参数,因为设计者思索不周可以冲破safe_mode的限制履行号令。个中4.0.5版本冲破十分复杂,只需用分号离隔前面加shell号令就能够了,好比存在PHP剧本evil.php:
  1. 搜刮
    CODE: register_globals = Off 0
复制代码
这将id履行的了局发送给evil@domain.com。
关于4.0.6至4.2.2的PHP冲破safe_mode限制实际上是使用了sendmail的-C参数,所以体系必需是利用sendmail。以下的代码可以冲破safe_mode限制履行号令:
  1. 搜刮
    CODE: register_globals = Off 1
复制代码
仍是利用以上有成绩版本PHP的用户必定要实时晋级到最新版本,如许才干消弭根基的平安成绩。
3、PHP自己的平安设置装备摆设
PHP的设置装备摆设十分天真,可以经由过程php.ini, httpd.conf, .htaccess文件(该目次必需设置了AllowOverride All或Options)停止设置,还可以在剧本法式里利用ini_set()及其他的特定的函数停止设置。经由过程phpinfo()和get_cfg_var()函数可以失掉设置装备摆设选项的各个值。
假如设置装备摆设选项是独一PHP_INI_SYSTEM属性的,必需经由过程php.ini和httpd.conf来修正,它们修正的是PHP的Master值,但修正以后必需重启apache才干失效。个中php.ini设置的选项是对Web办事器一切剧本失效,httpd.conf里设置的选项是对该界说的目次下一切剧本失效。
假如还有其他的PHP_INI_USER, PHP_INI_PERDIR, PHP_INI_ALL属性的选项就能够利用.htaccess文件设置,也能够经由过程在剧本法式本身用ini_set()函数设定,它们修正的是Local值,改了今后即刻失效。然而.htaccess只对以后目次的剧本法式失效,ini_set()函数只对该剧本法式设置ini_set()函数今后的代码失效。各个版本的选项属性能够不尽不异,可以用以下号令查找以后源代码的main.c文件失掉一切的选项,和它的属性:
  1. 搜刮
    CODE: register_globals = Off 2
复制代码
在会商PHP平安设置装备摆设之前,应当好好懂得PHP的safe_mode形式。
1.safe_mode
safe_mode是独一PHP_INI_SYSTEM属性,必需经由过程php.ini或httpd.conf来设置。要启用safe_mode,只需修正
  1. 搜刮
    CODE: register_globals = Off 3
复制代码
  1. 搜刮
    CODE: register_globals = Off 4
复制代码
重启apache后safe_mode就失效了。启动safe_mode,会对很多PHP函数停止限制,出格是和体系相干的文件翻开、号令履行等函数。
一切操作文件的函数将只能操作与剧本UID不异的文件,好比test.php剧本的内容为:
  1. 搜刮
    CODE: register_globals = Off 5
复制代码
在阅读器恳求test.php会提醒以下的毛病信息:
  1. 搜刮
    CODE: register_globals = Off 6
复制代码
假如被操作文件地点目次的UID和剧本UID分歧,那末该文件的UID即便和剧本分歧也能够会见的,不知这是不是是PHP的一个破绽仍是尚有隐情。所以php剧本属主这个用户最好就只作这个用处,相对制止利用root做为php剧本的属主,如许就达不到safe_mode的后果了。
假如想将其放宽到GID对照,则翻开 safe_mode_gid可以思索只对照文件的GID,可以设置以下选项:
  1. 搜刮
    CODE: register_globals = Off 7
复制代码
设置了safe_mode今后,一切号令履行的函数将被限制只能履行php.ini里safe_mode_exec_dir指定目次里的法式,并且shell_exec、`ls -l`这类履行号令的体例会被制止。假如的确需求挪用其它法式,可以在php.ini做以下设置:
  1. 搜刮
    CODE: register_globals = Off 8
复制代码
然后拷贝法式到该目次,那末php剧本就能够用system等函数来履行该法式。并且该目次里的shell剧本仍是可以挪用其它目次里的体系号令。
  1. 搜刮
    CODE: register_globals = Off 9
复制代码
当从此目次及其子目次(目次必需在 include_path 中或用完全途径来包括)包括文件时超出 UID/GID 反省。
从 PHP 4.2.0 入手下手,本指令可以承受和 include_path 指令相似的作风用分号离隔的途径,而不只是一个目次。 指定的限制实践上是一个前缀,而非一个目次名。这也就是说“safe_mode_include_dir = /dir/incl”将答应会见“/dir/include”和“/dir/incls”,假如它们存在。假如您但愿将会见掌握在一个指定的目次,那末请在开头加上一个斜线,
例如:“safe_mode_include_dir = /dir/incl/”。
  1. 再搜刮
    CODE: extension_dir = 0
复制代码
设置某些情况变量多是潜伏的平安缺口。本指令包括有一个逗号分隔的前缀列表。在平安形式下,用户只能改动那些名字具有在这里供应的前缀的情况变量。默许情形下,用户只能设置以 PHP_ 开首的情况变量(例如 PHP_FOO = BAR)。
注: 假如本指令为空,PHP 将利用户可以修正任何情况变量!
  1. 再搜刮
    CODE: extension_dir = 1
复制代码
本指令包括有一个逗号分隔的情况变量的列表,终究用户不克不及用 putenv() 来改动这些情况变量。乃至在
  1. 再搜刮
    CODE: extension_dir = 2
复制代码
固然safe_mode不是全能的(低版本的PHP可以绕过),但仍是激烈建议翻开平安形式,在必定水平上可以防止一些未知的进击。不外启用safe_mode会有良多限制,能够对使用带来影响,所以还需求调剂代码和设置装备摆设才干协调。被平安形式限制或屏障的函数可以参考PHP手册。
会商完safe_mode后,上面联合法式代码实践能够呈现的成绩会商若何经由过程对PHP办事器真个设置装备摆设来防止呈现的破绽。
2、变量滥用
PHP默许register_globals = On,关于GET, POST, Cookie, Environment, Session的变量可以直接注册玉成局变量。它们的注册按次是variables_order = "EGPCS"(可以经由过程php.ini修正),同名变量variables_order右侧的掩盖右边,所以变量的滥用极易形成法式的凌乱。并且剧本法式员常常没有对变量初始化的习气,像以下的法式片段就极易遭到进击:
  1. 再搜刮
    CODE: extension_dir = 3
复制代码
进击者只需用以下的恳求就可以绕过反省:
  1. 再搜刮
    CODE: extension_dir = 4
复制代码
这固然是一个很弱智的毛病,但一些有名的法式也有犯过这类毛病,好比phpnuke的近程文件拷贝破绽:http://www.securityfocus.com/bid/3361
PHP-4.1.0宣布的时分建议封闭register_globals,并供应了7个特别的数组变量来利用各类变量。关于从GET、POST、COOKIE等来的变量其实不会直接注册成变量,必须经由过程数组变量来存取。PHP-4.2.0宣布的时分,php.ini默许设置装备摆设就是register_globals = Off。这使得法式利用PHP本身初始化的默许值,通常是0,防止了进击者掌握判别变量。
  1. 再搜刮
    CODE: extension_dir = 5
复制代码
3、文件翻开
  1. 再搜刮
    CODE: extension_dir = 6
复制代码
因为进击者可以指定恣意的$filename,进击者用以下的恳求就能够看到/etc/passwd:
  1. 再搜刮
    CODE: extension_dir = 7
复制代码
以下恳求可以读php文件自己:
  1. 再搜刮
    CODE: extension_dir = 8
复制代码
PHP中文件翻开函数还有fopen(), file()等,假如对文件名变量反省不严就会形成办事重视要文件被会见读取。
  1. 再搜刮
    CODE: extension_dir = 9
复制代码
重启apache后,/usr/local/apache/htdocs目次下的PHP剧本就只能操作它本人目次下的文件了,不然PHP就会报错:
  1. 查找 CODE: ;upload_tmp_dir = 0
复制代码
利用safe_mode形式也能防止这类成绩,后面已会商过了。
  1. 查找 CODE: ;upload_tmp_dir = 1
复制代码
  1. 查找 CODE: ;upload_tmp_dir = 2
复制代码
这类不担任任的代码会形成相当大的伤害,进击者用以下恳求可以失掉/etc/passwd文件:
  1. 查找 CODE: ;upload_tmp_dir = 3
复制代码
假如关于Unix版的PHP(Win版的PHP不撑持近程翻开文件)进击者可以在本人开了http或ftp办事的机械上创立一个包括shell号令的文件,如http://attack/attack.txt 的内容是,那末以下的恳求就能够在方针主机履行号令ls /etc:
  1. 查找 CODE: ;upload_tmp_dir = 4
复制代码
进击者乃至可以经由过程包括apache的日记文件access.log和error.log来失掉履行号令的代码,不外因为搅扰信息太多,有时不容易胜利。
  1. 查找 CODE: ;upload_tmp_dir = 5
复制代码
进击者可以在本人的主机创立一个包括履行号令代码的config.php文件,然后用以下恳求也能够在方针主机履行号令:
  1. 查找 CODE: ;upload_tmp_dir = 6
复制代码
PHP的包括函数有include(), include_once(), require(), require_once。假如对包括文件名变量反省不严就会对体系形成严重风险,可以近程履行号令。
  1. 查找 CODE: ;upload_tmp_dir = 7
复制代码
重启apache。
5、文件上传
php的文件上传机制是把用户上传的文件保留在php.ini的upload_tmp_dir界说的一时目次(默许是体系的一时目次,如:/tmp)里的一个相似phpxXuoXG的随机一时文件,法式履行停止,该一时文件也被删除。PHP给上传的文件界说了四个变量:(如form变量名是file,并且register_globals翻开)
  1. 查找 CODE: ;upload_tmp_dir = 8
复制代码
这是一个最复杂的文件上传代码:
  1. 查找 CODE: ;upload_tmp_dir = 9
复制代码
如许的上传代码存在读取恣意文件和履行号令的严重成绩。


经常使用功能设置

1、咱们编纂/etc/php5/apache2/php.ini文件,先做普通设置装备摆设,在修改之前,请先将该设置装备摆设文件做个备份。以便在失足的时分可以恢复。


  1. 搜刮
    找到 CODE: ;Windows Extensions 0
复制代码


  1. 搜刮
    找到 CODE: ;Windows Extensions 1
复制代码

其其实Ubuntu下,假如你装置了php5-mysql和php5-gd以后,会主动修正以上二行的,咱们做的只不外是确认一下它们后面的正文符是不是去失落。
增补: 1.今朝大多半php的open source都是用php4写的,为了兼容之前的php版本,有时需求将register_long_arrays翻开,不然$HTTP_GET_VARS和$HTTP_POST_VARS等变量将没法利用,会呈现一些稀里糊涂的成绩。
2.别的,在装完php5后最好确认一下/etc/apache2/mods-enabled/下是不是有链接: php5.load -> /etc/apache2/mods-available/php5.load

2、加固PHP,以加强平安性。
注重,上面的平安性要因情形而定,所以我已把它们的功效写清晰了,假如有成绩的话,看看是不是因为上面哪一种限制前提所形成,可响应将其正文失落。
上面咱们入手下手加固php,咱们再次编纂/etc/php5/apache2/php.ini文件,之所以没有一次改完,次要是为了给人人一个明晰的思绪。
1.翻开平安形式,翻开他的优点就是PHP文件只能会见一切者和PHP文件一切着一样的文件,即便在chroot情况下也没法会见jail中属主纷歧样的文件,相似于php shell如许的后门就没用武之地了哦,phpshell是很盛行的php后门,他可以履行体系号令,就象他的名字一样,和shell很接近。
  1. 搜刮
    找到 CODE: ;Windows Extensions 2
复制代码
2.上面的设置就限制了fopen(), file()等函数可以操作的目次局限,防止了入侵者不法读取文件,必定要在/var/www前面加"/",不然/var/wwww下的文件也能被会见 。该选项会制止任何不在/var/www/目次下的PHP文件运转,包含任何故软链接体例链到/var/www/目次下的法式,如PhpMyAdmin包,就在该选项设定后没法正常运转。
  1. 搜刮
    找到 CODE: ;Windows Extensions 3
复制代码
3.制止利用phpinfo和get_cfg_var函数,如许可以免泄漏办事信息,普通在在确认PHP能正常任务以后再使之封闭
  1. 搜刮
    找到 CODE: ;Windows Extensions 4
复制代码
4.设置php法式毛病日记
  1. 搜刮
    找到 CODE: ;Windows Extensions 5
复制代码
5.假如php法式没有指明需求register_globals的话,最好把register_globals设置为Off,如许可以免良多平安成绩的。注重,假如你的法式是需求register_globals的话,可万万别关。Ubuntu默许是封闭的。
  1. 搜刮
    找到 CODE: ;Windows Extensions 6
复制代码
6.制止翻开近程地址,记得比来出的php include的谁人破绽吗?就是在一个php法式中include了变量,那末入侵者就能够使用这个掌握办事器在当地履行近程的一个php法式,例如phpshell,所以咱们封闭这个。
  1. 搜刮
    找到 CODE: ;Windows Extensions 7
复制代码
装置 Zend Optimizer

下载后失掉 ZendOptimizer-3.3.0a-Windows-i386.exe,直接双击装置便可,装置进程要你选择 Web Server 时,选择 Apache 2.x ,然后提醒你是不是 Restart Web Server,选择是,完成装置之条件示是不是备份 php.ini ,点肯定后装置完成。我这里装置到c:\php5\Zend,如图4.1所示

PHP网页编程之PHP5装置设置装备摆设和Zend Optimizer装置教程...
登录/注册后可看大图


图 4.1 装置途径

PHP网页编程之PHP5装置设置装备摆设和Zend Optimizer装置教程...
登录/注册后可看大图


图 4.2 办事器类型

PHP网页编程之PHP5装置设置装备摆设和Zend Optimizer装置教程...
登录/注册后可看大图


图 4.3 php.ini地点目次

PHP网页编程之PHP5装置设置装备摆设和Zend Optimizer装置教程...
登录/注册后可看大图


图 4.4 Apache地点目次

PHP网页编程之PHP5装置设置装备摆设和Zend Optimizer装置教程...
登录/注册后可看大图


图 4.5 完全装置信息

Zend Optimizer 的装置导游会主动依据你的选择来修正 php.ini 匡助你启动这个引擎。上面复杂引见一下 Zend Optimizer 的设置装备摆设选项。以下为自己装置完成后 php.ini 里的默许设置装备摆设代码:
Zend Optimizer 模块在硬盘上的装置途径
  1. 搜刮
    找到 CODE: ;Windows Extensions 8
复制代码
优化器地点目次,默许不必修正
  1. 搜刮
    找到 CODE: ;Windows Extensions 9
复制代码
优化水平,这里界说启动几何个优化进程,默许值是 15 ,暗示同时开启 10 个优化过程当中的 1-4 ,咱们可以将这个值改成 1023 ,暗示开启全体10个优化进程。
zend_optimizer.optimization_level=1023

挪用phpinfo()函数后显示:
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies with Zend Extension Manager v1.0.9, Copyright (c) 2003-2006, by Zend Technologies with Zend Optimizer v3.3.0a, Copyright (c) 1998-2006, by Zend Technologies
暗示装置胜利
取自"http://wiki.lupaworld.com/index.php/PHP_5.x"不断巩固,摸透大部分PHP常用函数,并可理解OOP,MYSQL优化,以及模板
作者: 分手快乐    时间: 2015-2-4 06:16
学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。
作者: 小妖女    时间: 2015-2-6 20:34
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
作者: 海妖    时间: 2015-2-18 15:22
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
作者: 爱飞    时间: 2015-2-24 19:55
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
作者: 若相依    时间: 2015-3-3 03:10
本文当是我的笔记啦,遇到的问题随时填充
作者: 老尸    时间: 2015-3-6 21:40
找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。
作者: 飘飘悠悠    时间: 2015-3-13 21:39
基础有没有对学习php没有太大区别,关键是兴趣。
作者: 莫相离    时间: 2015-3-15 16:34
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
作者: 仓酷云    时间: 2015-3-17 20:09
当然这种网站的会员费就几十块钱。
作者: 柔情似水    时间: 2015-3-22 18:30
如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,
作者: admin    时间: 2015-3-25 02:36
最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。
作者: 精灵巫婆    时间: 2015-4-1 15:10
如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,
作者: 只想知道    时间: 2015-4-14 14:55
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
作者: 谁可相欹    时间: 2015-4-15 11:26
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
作者: 小女巫    时间: 2015-4-18 00:20
最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。
作者: 透明    时间: 2015-4-26 10:10
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
作者: 变相怪杰    时间: 2015-5-12 10:33
建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。
作者: 不帅    时间: 2015-6-4 22:50
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
作者: 金色的骷髅    时间: 2015-6-12 13:59
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
作者: 若天明    时间: 2015-6-15 20:50
刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2