php配置——php.ini配置文件详解

查找PHP配置文件

“专业、务实、高效、创新、把客户的事当成自己的事”是我们每一个人一直以来坚持追求的企业文化。 创新互联建站是您可以信赖的网站建设服务商、专业的互联网服务提供商! 专注于成都网站设计、网站制作、软件开发、设计服务业务。我们始终坚持以客户需求为导向,结合用户体验与视觉传达,提供有针对性的项目解决方案,提供专业性的建议,创新互联建站将不断地超越自我,追逐市场,引领市场!

① 命令行(不推荐,服务器有多个php,httpd不一定加载的此模块)

[root@wy ~]# /usr/local/php/bin/php -i | grep 'Loaded Configuration'

Loaded Configuration File => /usr/local/php/etc/php.ini

② 调用php函数(推荐使用,精确)

[root@wy ~]# vim /data/www/phpinfo.php

<?php

    phpinfo();

?>

php配置——php.ini配置文件详解

禁掉一些危险的函数

## 编辑配置文件,查找到disable_functions

[root@wy ~]# vim /usr/local/php/etc/php.ini

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,syslog,readlink,symlink,leak,\

popepassthru,stream_socket_server,popen,proc_open,proc_close

解释说明:

配置disable_functions;

exec,shell_exec这两个函数是调用linux命令非常危险必须禁用;

有时候也会禁止phpinfo函数;

#重启apache,再刷新网页可看到禁掉的函数

[root@wy ~]# /usr/local/apache2/bin/apachectl restart

php配置——php.ini配置文件详解

配置PHP错误日志

## 关闭此选项,如果PHP代码有错,将不会提示错误信息直接显示白页

[root@wy ~]# vim /usr/local/php/etc/php.ini

display_errors = Off/On      ## 默认Off

解释说明:

虽然开启便于程序调试,但***获取到这些错误可能会发起***,不安全;

## 确认开启

log_errors = On

## 配置错误日志

error_log = /usr/local/php/logs/php_errors.log

解释说明:

配置的错误日志目录必须存在(mkdir /usr/local/php/logs)且必须写绝对路径

chown -R daemon.daemon /usr/local/php/logs/  或者chmod 777 /usr/local/php/logs(因为生成错误日志的用户是apache,所以要有写权限)

## 日志级别

error_reporting = E_ALL & ~E_NOTICE

解释说明:

设置日志级别就是在过滤错误日志记录呢些内容;

E_ALL 包含所有的错误和警告(且包含了PHP5.4版本中的E_STRICT);

E_NOTICE 把所有的错误都显示,除了通知和代码的标准警告;

& 并且;

| 或者;

~ 取反;

是指 E_ALL 为真,或者 非E_NOTICE 为真;

## 为了测试,故意php文件写错

[root@wy ~]# cat /data/www/phpinfo.php

<?php

phpinfo();

e cho "ni hao php";   ## 此行故意写错

?>

## 检查并重新加载

[root@wy ~]# /usr/local/apache2/bin/apachectl -t

Syntax OK

[root@wy ~]# /usr/local/apache2/bin/apachectl graceful

## 解析并查看生成的错误日志

[root@wy ~]# /usr/local/php/bin/php /data/www/phpinfo.php

[root@wy ~]# tail /usr/local/php/logs/php_errors.log

[06-Nov-2016 04:53:30 Asia/Chongqing] PHP Parse error:  syntax error, unexpected T_STRING in /data/www/phpinfo.php on line 3

配置open_basedir

也是一个安全选项,它有什么意义呢,举个例子,咱们这个php,apache它要去访问一个网站,它要找到

一个路径,我们有给它定义一个路径,比如说/data/www,那这个时候如果,假设这个你的环境,你的网站

有一些漏洞,让不法分子获得了一些权限,他可以上传一个他自己的***,那他这个***呢可以获得你服务

器上的一些信息,比如可以获得一些目录、一些文件,可以查看,那这个时候呢,我们应该想到一个策略,

为了以防万一,我们应该把它限制死在某一个目录下,因为我们网站在/data/www下,那我们就应该给它

限定死,你只能访问/data/www这个目录,其他的目录(比如根目录、etc目录),你是不可以查看的,如何

去做呢

## 编辑配置文件

[root@wy ~]# vim /usr/local/php/etc/php.ini

open_basedir = /data/www/:/tmp/

解释说明:

/tmp/  一般都会用到,就写上

## 不过为了测试,故意写错受限制路径(就出现了500错误)

open_basedir = /data/www1/:/tmp/

## apache重新加载

[root@wy ~]# /usr/local/apache2/bin/apachectl graceful

## 访问网页测试

php配置——php.ini配置文件详解

## 命令行测试

[root@wy ~]# curl -xlocalhost:80 www.test.com/phpinfo.php -I          

HTTP/1.0 500Internal Server Error

Date: Sat, 05 Nov 2016 21:23:53 GMT

Server: Apache/2.2.16 (Unix) DAV/2 PHP/5.3.28

X-Powered-By: PHP/5.3.28

Cache-Control: max-age=0

Expires: Sat, 05 Nov 2016 21:23:53 GMT

Connection: close

Content-Type: text/html

X-Pad: avoid browser bug

## 查看日志

[root@wy ~]# /usr/local/php/bin/php /data/www/forum.php    ## 解析

[root@wy ~]# tail /usr/local/php/logs/php_errors.log

[06-Nov-2016 05:30:41 Asia/Chongqing] PHP Warning:  require():open_basedir restriction in effect. File(./source/class/class_core.php) is not within the allowed path(s): (/data/www1/:/tmp/)in /data/www/forum.php on line 15

[06-Nov-2016 05:30:41 Asia/Chongqing] PHP Warning:  require(./source/class/class_core.php): failed to open stream: Operation not permitted in /data/www/forum.php on line 15

[06-Nov-2016 05:30:41 Asia/Chongqing] PHP Fatal error:  require(): Failed opening required './source/class/class_core.php' (include_path='.:/usr/local/php/lib/php') in /data/www/forum.php on line 15

备注:访问网页后,错误日志没有生成,我又自己解析的,这才出来错误日志。

其实在apache里同样可以定义,假如说我们现在有多个虚拟主机,多个网站,多个网站你就应该去做多个

open_basedir的限制,如果用php.ini去做,只能配置一句;你要是限定多个目录的话,不同的站点你是

没有办法区分开的,所以我们可以针对apache的虚拟主机去做一些限制,每一个虚拟主机(VirtualHost)使用一个open_basedir(好处在于我们可以区分不同的虚拟主机),如何去配置?那先把php.ini的open_basedir先注释掉(注:php里;来作为注释),然后做下面的实验。

## 配置apache虚拟主机的open_basedir

[root@wy ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

<VirtualHost *:80>

   DocumentRoot "/data/tmp"

   ServerName tmp.com

  php_admin_value open_basedir "/tmp/tmp/"

</VirtualHost>

<VirtualHost *:80>

   DocumentRoot "/data/www"

   ServerName www.test.com

   ServerAlias www.aaa.com

   ServerAlias www.bbb.com

   php_admin_value open_basedir "/data/www/:/tmp/"

</VirtualHost>

解释说明:

在open_basedir时,一定要将目录/dir/(后面的/一定要加上)否则会包含www、www1、www2......

## 检查并重新加载

[root@wy ~]# /usr/local/apache2/bin/apachectl -t

Syntax OK

[root@wy ~]# /usr/local/apache2/bin/apachectl graceful

文章题目:php配置——php.ini配置文件详解
转载来于:https://www.cdcxhl.com/article0/jjjdio.html

成都网站建设公司_创新互联,为您提供域名注册网站营销云服务器电子商务企业网站制作建站公司

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

h5响应式网站建设