您的位置:

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 假如安全模式被激活,则将会导致以下错误: 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 您也可以单独地屏蔽某些函数。

php调用shell的方法技巧

php调用shell的方法技巧

一、配置

查看php.ini中配置是否打开安全模式,主要是以下三个地方

safe_mode = (这个如果为off下面两个就不用管了)

disable_functions =

safe_mode_exec_dir=

二、使用

由于PHP基本是用于WEB程序开发的,所以安全性成了人们考虑的一个重要方面。于是PHP的设计者们给PHP加了一个门:安全模式。如果运行在安全模式下,那么PHP脚本中将受到如下四个方面的限制:

① 执行外部命令

② 在打开文件时有些限制

③ 连接MySQL数据库

④ 基于HTTP的认证

在安全模式下,只有在特定目录中的外部程序才可以被执行,对其它程序的调用将被拒绝。这个目录可以在php.ini文件中用 safe_mode_exec_dir指令,或在编译PHP是加上--with-exec-dir选项来指定,默认是/usr/local/php /bin。

如果你调用一个应该可以输出结果的外部命令(意思是PHP脚本没有错误),得到的'却是一片空白,那么很可能你的网管已经把PHP运行在安全模式下了。

三、如何做?

在PHP中调用外部命令,可以用如下三种方法来实现:

1) 用PHP提供的专门函数

PHP提供共了3个专门的执行外部命令的函数:system(),exec(),passthru()。

system()

原型:string system (string command [, int return_var])

system()函数很其它语言中的差不多,它执行给定的命令,输出和返回结果。第二个参数是可选的,用来得到命令执行后的状态码。

例子:

复制代码 代码如下:system("/usr/local/bin/webalizer/webalizer");

exec()

原型:string exec (string command [, string array [, int return_var]])

exec() 函数与system()类似,也执行给定的命令,但不输出结果,而是返回结果的最后一行。虽然它只返回命令结果的最后一行,但用第二个参数array可以得到完整的结果,方法是把结果逐行追加到array的结尾处。所以如果array不是空的,在调用之前最好用unset()最它清掉。只有指定了第二个参数时,才可以用第三个参数,用来取得命令执行的状态码。

例子:

复制代码 代码如下:exec("/bin/ls -l");

exec("/bin/ls -l", $res);

#$res是一个数据,每个元素代表结果的一行

exec("/bin/ls -l", $res, $rc);

#$rc的值是命令/bin/ls -l的状态码。成功的情况下通常是0

passthru()

原型:void passthru (string command [, int return_var])

passthru() 只调用命令,不返回任何结果,但把命令的运行结果原样地直接输出到标准输出设备上。所以passthru()函数经常用来调用象pbmplus(Unix 下的一个处理图片的工具,输出二进制的原始图片的流)这样的程序。同样它也可以得到命令执行的状态码。

例子:

复制代码 代码如下:header("Content-type: image/gif");

passthru("./ppmtogif hunte.ppm");

希望本文所述对大家的PHP程序设计有所帮助。

;

php设置set_time_limit(0)后还是会停止

set_time_limit(0);

当php运行于安全模式时,此功能不能生效。除了关闭安全模式或改变php.ini中的时间限制,没有别的办法。

php运行于安全模式,最后一步恢复栏目目录不成功,有救吗?

恢复栏目不成功,带表你的目录权限不够,系统无法建立栏目目录。

什么是php 的safe mode? php.exe? php-cgi.exe? php-win.exe?

安全模式下,PHP程序的行为被进行了限制,比如不能执行某些函数,只能打开指定文件夹的文件等。一般在你的主机提高个人网站,就是PHP的程序所有者不是你本人的时候,需要设置安全方式。

php.exe是提供来在命令行执行PHP文件的工具,比如你在有文件ABC.PHP,那么你可以在CMD命令提示符下执行命令php.exe abc.php来运行这个PHP文件。

php-cgi.exe是提供来作为CGI使用的,区别是在文件输出所有内容之前,会自动输出一个下面的HTTP头:

X-Powered-By: PHP/5.2.5

Content-type: text/html

php-win.exe也可以执行PHP文件,区别是大打开控制台,不显示输出内容。可以用来编写无需显示界面的文件处理、网路服务等程序。