Chinaunix首页 | 论坛 | 博客
  • 博客访问: 26253297
  • 博文数量: 2065
  • 博客积分: 10377
  • 博客等级: 上将
  • 技术积分: 21525
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-04 17:50
文章分类

全部博文(2065)

文章存档

2012年(2)

2011年(19)

2010年(1160)

2009年(969)

2008年(153)

分类:

2009-04-23 08:25:10

php.ini 是 PHP 在启动时会读取的配置文件。该文件的存放路径为 /usr/local/lib/。
Win服务器该文件存放在 X:\PHP安装路径\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,表是打开本功能。



完善补充说明

最近很多使用NGINX+PHP-FPM架构的网站被利用NGINX解析漏洞挂马(详见:),老话重提,有必要再了解下PHP的安全配置问题。

    PHP本身在老版本有一些问题,比如在 php4.3.10和php5.0.3以前有一些比较严重的bug,所以推荐使用新版。另外,目前闹的轰轰烈烈的SQL Injection也是在PHP上有很多利用方式,所以要保证安全,PHP代码编写是一方面,PHP的配置更是非常关键。
  我们php手手工安 装的,php的默认配置文件在 /usr/local/apache2/conf/php.ini,我们最主要就是要配置php.ini中的内容,让我们执行  php能够更安全。整个 PHP中的安全设置主要是为了防止phpshell和SQL Injection的攻击,一下我们慢慢探讨。我们先使用任何编辑工具打开  /etc/local/apache2/conf/php.ini,如果你 是采用其他方式安装,配置文件可能不在该目录。
(1) 打开php的安全模式
  php的安全模式是个非常重要的内嵌的安全机制,能够控制一些php中的函数,比如system(),
  同时把很多文件操作函数进行了权限控制,也不允许对某些关键文件的文件,比如/etc/passwd,
  但是默认的php.ini是没有打开安全模式的,我们把它打开:
  safe_mode = on
(2) 用户组安全
  当safe_mode打开时,safe_mode_gid被关闭,那么php脚本能够对文件进行访问,而且相同
  组的用户也能够对文件进行访问。
  建议设置为:
  safe_mode_gid = off
  如果不进行设置,可能我们无法对我们服务器网站目录下的文件进行操作了,比如我们需要
  对文件进行操作的时候。
(3) 安全模式下执行程序主目录
  如果安全模式打开了,但是却是要执行某些程序的时候,可以指定要执行程序的主目录:
  safe_mode_exec_dir = D:/usr/bin
  一般情况下是不需要执行什么程序的,所以推荐不要执行系统程序目录,可以指向一个目录,
  然后把需要执行的程序拷贝过去,比如:

  safe_mode_exec_dir = D:/tmp/cmd

  但是,我更推荐不要执行任何程序,那么就可以指向我们网页目录:

  safe_mode_exec_dir = D:/usr/www

(4) 安全模式下包含文件

  如果要在安全模式下包含某些公共文件,那么就修改一下选项:

  safe_mode_include_dir = D:/usr/www/include/

  其实一般php脚本中包含文件都是在程序自己已经写好了,这个可以根据具体需要设置。

(5) 控制php脚本能访问的目录

  使用open_basedir选项能够控制PHP脚本只能访问指定的目录,这样能够避免PHP脚本访问
  不应该访问的文件,一定程度上限制了phpshell的危害,我们一般可以设置为只能访问网站目录:

  open_basedir = D:/usr/www

(6) 关闭危险函数

  如果打开了安全模式,那么函数禁止是可以不需要的,但是我们为了安全还是考虑进去。比如,
  我们觉得不希望执行包括system()等在那的能够执行命令的php函数,或者能够查看php信息的
  phpinfo()等函数,那么我们就可以禁止它们:

  disable_functions = system,passthru,exec,shell_exec,popen,phpinfo

  如果你要禁止任何文件和目录的操作,那么可以关闭很多文件操作

   disable_functions = chdir,chroot,dir,getcwd,opendir,readdir,scandir,fopen,unlink,delete,copy,mkdir,   rmdir,rename,file,file_get_contents,fputs,fwrite,chgrp,chmod,chown

  以上只是列了部分不叫常用的文件处理函数,你也可以把上面执行命令函数和这个函数结合,
  就能够抵制大部分的phpshell了。

(7) 关闭PHP版本信息在http头中的泄漏

  我们为了防止黑客获取服务器中php版本的信息,可以关闭该信息斜路在http头中:

  expose_php = Off

  比如黑客在 telnet 80 的时候,那么将无法看到PHP的信息。

(8) 关闭注册全局变量

  在PHP中提交的变量,包括使用POST或者GET提交的变量,都将自动注册为全局变量,能够直接访问,
  这是对服务器非常不安全的,所以我们不能让它注册为全局变量,就把注册全局变量选项关闭:
  register_globals = Off
  当然,如果这样设置了,那么获取对应变量的时候就要采用合理方式,比如获取GET提交的变量var,
  那么就要用$_GET['var']来进行获取,这个php程序员要注意。

(9) 打开magic_quotes_gpc来防止SQL注入

  SQL注入是非常危险的问题,小则网站后台被入侵,重则整个服务器沦陷,

  所以一定要小心。php.ini中有一个设置:

  magic_quotes_gpc = Off

这个默认是关闭的,如果它打开后将自动把用户提交对sql的查询进行转换,
  比如把 ' 转为 \'等,这对防止sql注射有重大作用。所以我们推荐设置为:
  magic_quotes_gpc = On

(10) 错误信息控制

  一般php在没有连接到数据库或者其他情况下会有提示错误,一般错误信息中会包含php脚本当
  前的路径信息或者查询的SQL语句等信息,这类信息提供给黑客后,是不安全的,所以一般服务器建议禁止错误提示:

  display_errors = Off

  如果你却是是要显示错误信息,一定要设置显示错误的级别,比如只显示警告以上的信息:

  error_reporting = E_WARNING & E_ERROR

  当然,我还是建议关闭错误提示。

(11) 错误日志

  建议在关闭display_errors后能够把错误信息记录下来,便于查找服务器运行的原因:

log_errors = On

  同时也要设置错误日志存放的目录,建议根apache的日志存在一起:

  error_log = D:/usr/local/apache2/logs/php_error.log

  注意:给文件必须允许apache用户的和组具有写的权限。


  MYSQL的降权运行

  新建立一个用户比如mysqlstart

  net user mysqlstart ****microsoft /add
net localgroup users mysqlstart /del

  不属于任何组

  如果MYSQL装在d:\mysql ,那么,给 mysqlstart 完全控制 的权限

  然后在系统服务中设置,MYSQL的服务属性,在登录属性当中,选择此用户 mysqlstart 然后输入密码,确定。

  重新启动 MYSQL服务,然后MYSQL就运行在低权限下了。

  如果是在windos平台下搭建的apache我们还需要注意一点,apache默认运行是system权限,
  这很恐怖,这让人感觉很不爽.那我们就给apache降降权限吧。

  net user apache ****microsoft /add
net localgroup users apache /del

  ok.我们建立了一个不属于任何组的用户apche。

  我们打开计算机管理器,选服务,点apache服务的属性,我们选择log on,选择this account,我们填入上面所建立的账户和密码,
  重启apache服务,ok,apache运行在低权限下了。

  实际上我们还可以通过设置各个文件夹的权限,来让apache用户只能执行我们想让它能干的事情,给每一个目录建立一个单独能读写的用户。
  这也是当前很多虚拟主机提供商的流行配置方法哦,不过这种方法用于防止这里就显的有点大材小用了。
阅读(933) | 评论(1) | 转发(0) |
0

上一篇:ADO 简介

下一篇:变量处理函数库

给主人留下些什么吧!~~

chinaunix网友2009-04-27 09:42:32

好好练习这个配置文件呀