PHP配置

三. PHP配置

3.1查看php配置文件得位置:

虽然PHP是以httpd一个模块的形式存在的,但是PHP本身也有自己的配置文件

/usr/local/php/bin/php -i |grep -i "loaded configuration file"

 

3.2限定disable_functions,禁用phpinfo,配置:

3.2.1介绍

PHP有诸多内置的函数,有一些函数(比如exec)会直接调取Linux系统命令,如果开放将会非常危险。因此,基于安全考虑应该把一些存在安全风险的函数禁掉:

3.2.2配置

vim /usr/local/php/etc/php.ini

//搜索disable_functions 编辑更改如下:

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,1eak,popepassthru,stream_socket_server,popen,proc_open,proc_close

 

这些被禁掉的函数是不能在PHP代码中调用的。更改完php.ini后,由于需要在httpd中调用PHP,所以还需要重启httpd服务使其生效。

 

3.3定义date.timezone,减少警告:

3.3.1配置

php.ini为PHP的配置文件,可以看出其在/usr/local/php/etc/php.ini

第一行的Warning为警告信息可以忽略,取消这个警告需要编辑php:ini, 找到date. timezone设置如下:

#vim /usr/local/php/etc/php.ini

找到date. timezone设置如下:

date.timezone = Asia/Shanghai

 

3.3.2配置验证:

 

3.4. display_errors 配置、记录错误日志并定义错误日志级别:

3.4.1介绍

PHP的日志对于程序员来讲非常重要,它是排查问题的重要手段。设置PHP错误日志,有诸多步骤:

3.4.2配置

vim /usr/local/php/etc/php.ini

搜索log_errors 更改如下

 

搜索error_log 更改如下

 

搜索error_reporting 更改如下

 

搜索display_errors 更改如下

 

log_errors可以设置为on或者off,如果想让PHP记录错误日志,需要设置为on。error, _log设定错误日志路径; error_reporting设定错误日志的级别,E_ALL为所有类型的日志,不管是提醒还是警告都会记录。在开发环境下面设置为E_ALL, 可以方便程序员排查问题,但也会造成日志记录很多无意义的内容。&符号表示并且,~表示排除,所以两个组合在一起就是在E_ALL的基础上排除掉notice相关的日志。

display_ errors设置为on,则会把错误日志直接显示在浏览器里,这样对于用户访问来说体验不好,而且还会暴露网站的一些文件路径等重要信息,所以要设置为off。设置完php.ini,还需做一些额外的操作:

mkdir /var/log/php

chmod 777 /var/log/php //需要保证PHP的错误日志所在目录存在,并且权限为可写

/usr/local/apache2.4/bin/apachectl graceful

 

3.4.3配置验证:

vim /data/wwwoot/www.123.com/test.php //写入如下内容,其中故意把结尾的;丢掉

<?php

echo 111

 

 curl -A "123" -I -x127.0.0.1:80 www.123.com/test.php

 

出现了状态码500,说明我访问的页面是存在错误的,查看PHP的日志来判定错误原因:

cat /var/log/php/php_errors.log

 

通过日志可以判断,test.php文件第三行少了分号。

3.5 open_basedir配置

3.5.1介绍

open_basedir, 它的作用是将网站限定在指定目录里

3.5.2配置

vim /usr/local/php/etc/php.ini

搜索open_basedir并修改

 

open_basedir = /tmp:/data/wwwroot/www.123.com

限制PHP只能在/tmp和/data/wwwroot/www.123.com两个目录下面活动

3.5.3配置验证:

 

发现aming .com/1.php不能访问,状态码为500,

3.6 为虚拟主机配置open_basedir

vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

 

3.7PHP扩展模块安装

查看PHP都加载了哪些功能模块:

/usr/local/php/bin/php -m

安装一个PHP的redis扩展模块:

cd /usr/local/src/

wget https://codeload.github.com/phpredis/phpredis/zip/develop

wget http://pecl.php.net/get/redis-2.2.5.tgz

tar -zxvf redis-2.2.5.tgz

mv develop phpredis-develop.zip

unzip !$

cd phpredis-develop

yum  install  -y  autoconf

/usr/local/php/bin/phpize

./configure  --with-php-config=/usr/local/php/bin/php-config

make

make install

Installing shared extensions: /usr/local/php/lib/ php/extensions/ no-debug- zts - 20191227/

   //make install时候编译好的就会放在这个目录里

ls /usr/local/php/lib/php/extensions/no-debug-zts-20~~

   //可以看到rdis.so

vim /usr/local/php/etc/php.ini

  //增加一行配置(可以放在文件最后一行)

extension = redis.so

 

/usr/local/php/bin/php -m |grep redis

   //查看是否加载了redis模块

原文地址:https://www.cnblogs.com/315z/p/12107903.html