仓酷云

标题: PHP编程:php中的平安形式是指的甚么? [打印本页]

作者: 爱飞    时间: 2015-2-3 23:58
标题: PHP编程:php中的平安形式是指的甚么?
你的确对PHP有兴趣,那么选择教材也是很重要的。   手册如是说:
章 24. 平安形式
目次
被平安形式限制或屏障的函数
PHP 的平安形式是为了试图处理同享办事器(shared-server)平安成绩而设立的。在布局上,试图在 PHP 层上处理这个成绩是不公道的,但修正 WEB 办事器层和操作体系层显得十分不实际。因而很多人,出格是 ISP,今朝利用平安形式。


表格 24-1. 掌握平安形式的设置选项有:

设置选项 默许值
safe_mode Off
safe_mode_gid 0
safe_mode_include_dir ""
safe_mode_exec_dir 1
open_basedir ""
safe_mode_allowed_env_vars PHP_
safe_mode_protected_env_vars LD_LIBRARY_PATH
disable_functions ""


当 safe_mode 设置为 on,PHP 将反省以后剧本的具有者是不是和将被文件函数操作的文件的具有者相婚配。例如: -rw-rw-r-- 1 rasmus rasmus 33 Jul 1 19:20 script.php
-rw-r--r-- 1 root root 1116 May 26 18:01 /etc/passwd

运转 script.php <?php
readfile('/etc/passwd');
?>

假如平安形式被激活,则将会招致以下毛病: Warning: SAFE MODE Restriction in effect. The script whose uid is 500 is not
allowed to access /etc/passwd owned by uid 0 in /docroot/script.php on line 2



同时,也许会存在如许的情况,在该情况下,宽松的 GID 反省已足够,但严厉的 UID 反省反而是不合适的。您可以用 safe_mode_gid 选项来掌握这类反省。假如设置为 On 则停止宽松的 GID 反省;设置为 Off(默许值)则停止 UID 反省。

除 safe_mode 之外,假如您设置了 open_basedir 选项,则一切的文件操作将被限制在您指定的目次下。例如: <Directory /docroot>
php_admin_value open_basedir /docroot
</Directory>

假如您在设置了 open_basedir 选项后运转一样的 script.php,则其了局会是: Warning: open_basedir restriction in effect. File is in wrong directory in
/docroot/script.php on line 2



您也能够独自地屏障某些函数。请注重 disable_functions 选项不克不及在 php.ini 文件内部利用,也就是说您没法在 httpd.conf 文件的按分歧虚拟主机或分歧目次的体例来屏障函数。 假如咱们将以下内容到场到 php.ini 文件: disable_functions readfile,system

则咱们会失掉以下的输入: Warning: readfile() has been disabled for security reasons in
/docroot/script.php on line 2



被平安形式限制或屏障的函数
以下平安形式列表能够不完全或不准确。

表格 24-2. 平安形式限制函数

函数名 限制
dbmopen() 将反省您将要操作的文件/目次与正在履行的剧本是不是有不异的 UID。
dbase_open() 将反省您将要操作的文件/目次与正在履行的剧本是不是有不异的 UID。
filepro() 将反省您将要操作的文件/目次与正在履行的剧本是不是有不异的 UID。
filepro_rowcount() 将反省您将要操作的文件/目次与正在履行的剧本是不是有不异的 UID。
filepro_retrieve() 将反省您将要操作的文件/目次与正在履行的剧本是不是有不异的 UID。
ifx_*() sql_safe_mode 限制, (!= safe mode)
ingres_*() sql_safe_mode 限制, (!= safe mode)
mysql_*() sql_safe_mode 限制, (!= safe mode)
pg_loimport() 将反省您将要操作的文件/目次与正在履行的剧本是不是有不异的 UID。
posix_mkfifo() 将反省您将要操作的目次和正在履行的剧本是不是有不异的 UID。
putenv() 遵守 ini 设置的 safe_mode_protected_env_vars 和 safe_mode_allowed_env_vars 选项。请参考 putenv() 函数的有关文档。
move_uploaded_file() 将反省您将要操作的文件/目次与正在履行的剧本是不是有不异的 UID。
chdir() 将反省您将要操作的目次和正在履行的剧本是不是有不异的 UID。
dl() 该函数在平安形式中已被屏障。
backtick operator 该函数在平安形式中已被屏障。
shell_exec()(在功效上和 backticks 函数不异) 该函数在平安形式中已被屏障。
exec() 您只能在 safe_mode_exec_dir 设置的目次下停止履行操作。基于某些缘由,今朝不克不及在可履行对象的途径中利用 ..。
system() 您只能在 safe_mode_exec_dir 设置的目次下停止履行操作。基于某些缘由,今朝不克不及在可履行对象的途径中利用 ..。
passthru() 您只能在 safe_mode_exec_dir 设置的目次下停止履行操作。基于某些缘由,今朝不克不及在可履行对象的途径中利用 ..。
popen() 您只能在 safe_mode_exec_dir 设置的目次下停止履行操作。基于某些缘由,今朝不克不及在可履行对象的途径中利用 ..。
mkdir() 将反省您将要操作的目次和正在履行的剧本是不是有不异的 UID。
rmdir() 将反省您将要操作的文件/目次与正在履行的剧本是不是有不异的 UID。
rename() 将反省您将要操作的文件/目次与正在履行的剧本是不是有不异的 UID。 将反省您将要操作的目次和正在履行的剧本是不是有不异的 UID。
unlink() 将反省您将要操作的文件/目次与正在履行的剧本是不是有不异的 UID。 将反省您将要操作的目次和正在履行的剧本是不是有不异的 UID。
copy() 将反省您将要操作的文件/目次与正在履行的剧本是不是有不异的 UID。 将反省您将要操作的目次和正在履行的剧本是不是有不异的 UID。 (on source and target)
chgrp() 将反省您将要操作的文件/目次与正在履行的剧本是不是有不异的 UID。
chown() 将反省您将要操作的文件/目次与正在履行的剧本是不是有不异的 UID。
chmod() 将反省您将要操作的文件/目次与正在履行的剧本是不是有不异的 UID。 别的,您不克不及设置 SUID、SGID 和 sticky bits
touch() 将反省您将要操作的文件/目次与正在履行的剧本是不是有不异的 UID。 将反省您将要操作的目次和正在履行的剧本是不是有不异的 UID。
symlink() 将反省您将要操作的文件/目次与正在履行的剧本是不是有不异的 UID。 将反省您将要操作的目次和正在履行的剧本是不是有不异的 UID。 (注重:仅测试 target)
link() 将反省您将要操作的文件/目次与正在履行的剧本是不是有不异的 UID。 将反省您将要操作的目次和正在履行的剧本是不是有不异的 UID。 (注重:仅测试 target)
getallheaders() 在平安形式下,以“authorization”(辨别巨细写)开首的头信息将不会被前往。正告:getallheaders() 没法在 aol-server 下完成!
header() 在平安形式下,假如您设置了 WWW-Authenticate,以后剧本的 uid 将被添加到该头信息的 realm 局部。
highlight_file(), show_source() 将反省您将要操作的文件/目次与正在履行的剧本是不是有不异的 UID。 将反省您将要操作的目次和正在履行的剧本是不是有不异的 UID。 (注重,仅在 4.2.1 版本后无效)
parse_ini_file() 将反省您将要操作的文件/目次与正在履行的剧本是不是有不异的 UID。 将反省您将要操作的目次和正在履行的剧本是不是有不异的 UID。 (注重,仅在 4.2.1 版本后无效)
任何利用 php4/main/fopen_wrappers.c 的函数 ??
《PHP+MYSQL WEB开发(第三版)》号称圣经级,(也许是个不错的选择(声明:作者没给我啥好处费,我也不是书托,隔着大老远,我连他老兄的面都没见过的说-_-)
作者: 小妖女    时间: 2015-2-4 07:48
Ps:以上纯属原创,如有雷同,纯属巧合
作者: 小魔女    时间: 2015-2-6 07:35
刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
作者: 再见西城    时间: 2015-2-14 08:52
爱上php,他也会爱上你。
作者: 海妖    时间: 2015-2-22 23:52
装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。
作者: 飘灵儿    时间: 2015-3-7 04:19
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
作者: 飘飘悠悠    时间: 2015-3-11 11:37
当然这种网站的会员费就几十块钱。
作者: 活着的死人    时间: 2015-3-14 16:51
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
作者: 因胸联盟    时间: 2015-3-17 23:09
最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。
作者: 不帅    时间: 2015-3-23 00:48
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
作者: 冷月葬花魂    时间: 2015-4-1 15:09
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
作者: admin    时间: 2015-4-12 15:27
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
作者: 爱飞    时间: 2015-4-15 22:46
实践是检验自己会不会的真理。
作者: 分手快乐    时间: 2015-4-22 11:44
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年  具体的记不清啦,囧。
作者: 柔情似水    时间: 2015-5-1 22:11
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
作者: 变相怪杰    时间: 2015-5-6 18:10
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
作者: 第二个灵魂    时间: 2015-5-12 00:52
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
作者: 精灵巫婆    时间: 2015-6-21 12:10
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
作者: 谁可相欹    时间: 2015-6-26 14:25
做为1门年轻的语言,php一直很努力。




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