php.ini配置文件详解

查找 php.ini路径:

# /usr/local/php/bin/php -i |head

看那一行Loaded Configuration File => /usr/local/php/etc/php.ini。如果这里为None,那么就说明没有加载到具体的php.ini.找到php.ini之后,用vim打开它,发现很多行都是以;开头的,这个符号在php.ini中作为注释符号,也就是说只要是以;开头的行都是不起作用的。而php.ini中常用的配置如下:

(1)配置disable_function

disable_function(禁用函数)=

eval,assert,popen,passthru,escapeshellarg,escapeshellcmd,passthru,exec,system,chroot,scandir,chgrp,chown,escapeshellcmd,escapeshellarg,shell_exec,proc_get_status,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,leak,popepassthru,stream_socket_server,popen,proc_open,proc_close(高风险函数)

说明:在PHP中有非常多的函数,在这些函数中有一些是不太安全的,所以有必要把他们禁掉。像exec,shell_exec都是在PHP代码中执行Linux shell命令,很危险,要禁掉。

(2)配置error_log

查看PHP的错误信息

遇到错误时,我们访问网站通常会显示白页,什么都没有,状态码是500。

第一种情况,可以直接把错误信息显示在浏览器中,配置方法是,在php,ini中找到display error=on,重启Apache服务后,刷新网页,发现不再是白页,而是具体的错误。这样我们可以根据错误来调试PHP代码了。这种情况适合临时调试,但是这种情况不适合长期配置,因为所有内容都会显示在浏览器上,假如哪天PHP程序员不小心写错一段代码,而且没有测试直接上传到服务器上了,那么我们的用户就会直接看到这些错误,这样是不合适的。

第二种情况,把错误信息输出到一个文件中,具体配置如下:

[[email protected] ~]# vim /usr/local/php/etc/php.ini          加入或者更改

display_errors=off            " off/on"不可以/可以在浏览器中显示错误信息

log_errors=on

error_log=/export/servers/php/logs/error.log

说明:该文件一开始是不存在的,为了避免权限问题不能自动生成该文件,我们可以先创建该文件并且修改权限为777

error_reporting =E_ALL | E_STRICT

说明:首先要把错误不在浏览器显示,第二打开错误日志开关,然后指定错误日志的路径,最后定义错误日志的级别。配置完成后记得要重启Apache服务,才会生效。

php错误日志级别:

; E_ALL             所有错误和警告(除E_STRICT外)

; E_ERROR           致命的错误。脚本的执行被暂停。

; E_RECOVERABLE_ERROR    大多数的致命错误。

; E_WARNING         非致命的运行时错误,只是警告,脚本的执行不会停止。

; E_PARSE            编译时解析错误,解析错误应该只由分析器生成。

; E_NOTICE          脚本运行时产生的提醒(往往是我们写的脚本里面的一些bug,比如某个变量没有定义),这个错误不会导致任务中断。

; E_STRICT          脚本运行时产生的提醒信息,会包含一些php抛出的让我们要如何修改的建议信息。

; E_CORE_ERROR      在php启动后发生的致命性错误

; E_CORE_WARNING    在php启动后发生的非致命性错误,也就是警告信息

; E_COMPILE_ERROR    php编译时产生的致命性错误

; E_COMPILE_WARNING  php编译时产生的警告信息

; E_USER_ERROR       用户生成的错误

; E_USER_WARNING    用户生成的警告

; E_USER_NOTICE      用户生成的提醒

& 表示并且

~ 表示非

| 表示或者

比如: error_reporting  =  E_ALL & ~E_NOTICE  表示错误级别为E_ALL 并且除了E_NOTICE

(3)配置open_basedir

在PHP中是有这个open_basedir概念的,他的意思是,把执行PHP的用户限定在指定的路径下,这样通过权限缩小的方式达到安全目的。作为一个网站,其实只需让PHP用户访问到网站代码即可,没有必要让他去访问其他目录。

配置如下:

[[email protected] ~]# vim /usr/local/php/etc/php.ini            加入或者更改

php.ini: open_basedir = /dir1/:/dir2

说明:/dir1和/dir2为我们允许PHP可以访问的两个目录,同样可以是多个,目录之间用:分隔。一旦限定后,如果PHP试图去访问

除/dir1和/dir2外的目录下的文件时,就会报错了。错误类似于,Warning: file_exists() [function.file-exists]: open_basedir restriction in effect. File(../123.php)is not within the allowed path(s):

除了在php.ini中定义open_basedir外,其实我们还可以在Apache的配置文件中定义,因为一个Apache下可能有多个站点,我们要针对不同的站点限制不同的open_basedir,配置如下:

#vim httpd.conf 或者虚机主机配置文件,加入

php_admin_value open_basedir "/dir1/:/dir2/"

这两个都是针对的解析php文件的,写一个简单的html可不行

时间: 2024-10-29 19:06:21

php.ini配置文件详解的相关文章

8_Php.ini 配置文件详解

Php.ini 配置文件详解(配置php错误日志) 第一步禁用一些高风险函数 & 打开错误日志 [[email protected] etc]# vim /usr/local/php/etc/php.ini disable_functions = eval,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,p

LAMP 2.8 php.ini配置文件详解

修改php配置文件,但有时候我们并不知道 php.ini 所在路径,这时候就需要通过命令来查一查在哪里. /usr/local/php/bin/php -i |head 看那一行 Loaded Configuration File -> /usr/local/php/etc/php.ini.如果这里为 None,那么就说明没有加载到具体的 php.ini.找到 php.ini 后,用 vim 打开它,发现很多行都是以;开头的,这个符号在 php.ini 中作为注释符号,也就是说只要是以;开头的行

LAMP里php.ini配置文件详解

路径:/usr/local/php/etc/php.ini php用":"作为"注释"符号,shell用"#"作为"注释"符号: 编辑php.ini [[email protected] ~]# vim /usr/local/php/etc/php.ini 1. 查询/disable_functions 设置禁用函数 disable_functions = eval,assert,popen,passthru,escapesh

LAMP--php.ini 配置文件详解

在/usr/local/php/etc/目录下面有个 php.ini 文件,是之前编译安装php时拷贝进去的.有的时候我们并不知道 php.ini 所在路径,这时候就需要通过命令来查一查在哪儿. [[email protected] ~]# /usr/local/php/bin/php -i |head phpinfo() PHP Version => 5.6.10 System => Linux localhost 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 2

php.ini配置文件详解(为了安全,禁止一些高风险的函数)

配置 disable_function disable_functions= eval,assert,popen,passthru,escapeshellarg,escapeshellcmd,passthru,exec,system,chroot,scandir,chgrp,chown,escapeshellcmd,escapeshellarg,shell_exec,proc_get_status,ini_alter,ini_restore,dl,pfsockopen,openlog,syslo

my.ini配置详解

Mysql my.ini 配置文件详解 #BEGIN CONFIG INFO #DESCR: 4GB RAM, 只使用InnoDB, ACID, 少量的连接, 队列负载大 #TYPE: SYSTEM #END CONFIG INFO # # 此mysql配置文件例子针对4G内存 # 主要使用INNODB #处理复杂队列并且连接数量较少的mysql服务器 # # 将此文件复制到/etc/my.cnf 作为全局设置, # mysql-data-dir/my.cnf 作为服务器指定设置 # (@[em

MySQL配置文件mysql.ini参数详解、MySQL性能优化

MySQL配置文件mysql.ini参数详解.MySQL性能优化 my.ini(Linux系统下是my.cnf),当mysql服务器启动时它会读取这个文件,设置相关的运行环境参数. my.ini分为两块:Client Section和Server Section.   Client Section用来配置MySQL客户端参数.   要查看配置参数可以用下面的命令: show variables like '%innodb%'; # 查看innodb相关配置参数 show status like

redis配置文件详解及实现主从同步切换

redis配置文件详解及实现主从同步切换 redis复制 Redis复制很简单易用,它通过配置允许slave Redis Servers或者Master Servers的复制品.接下来有几个关于redis复制的非常重要特性: 一个Master可以有多个Slaves. Slaves能过接口其他slave的链接,除了可以接受同一个master下面slaves的链接以外,还可以接受同一个结构图中的其他slaves的链接. redis复制是在master段是非阻塞的,这就意味着master在同一个或多个

监控服务 - Nagios配置文件详解

一.Nagios的配置文件类型: Nagios安装后有四种默认的配置文件:主配置文件.CGI配置文件.资源定义文件.对象定义文件.这些配置文件间具有一些关系,只有充分理解各配置文件,才能使得配置Nagios服务如行云流水. 二.Nagios配置文件详解: 1.主配置文件(nagios.cfg): Nagios的主配置文件是用来定义Nagios服务的基本参数信息的,其中包括:对象定义文件的声明.CGI配置文件的声明.资源定义文件的声明等.其常用参数如下: log_file=/usr/local/n