php.ini配置文件详解
php配置文件的路径,以及没有路劲获取配置路径的方法
[root@CentOS-1 ~]# ls /usr/local/php/etc/php.ini
/usr/local/php/etc/php.ini
[root@CentOS-1 ~]# /usr/local/php/bin/php -i |head
phpinfo()
PHP Version => 5.5.38
System => Linux CentOS-1 2.6.32-431.el6.i686 #1 SMP Fri Nov 22 00:26:36 UTC 2013 i686
Build Date => Nov 30 2016 04:48:48
Configure Command =>
'./configure'
'--prefix=/usr/local/php'
'--with-apxs2=/usr/local/apache/bin/apxs'
'--with-config-file-path=/usr/local/php/etc'
'--with-mysql=/usr/local/mysql'
'--with-libxml-dir'
'--with-gd'
'--with-jpeg-dir'
'--with-png-dir'
'--with-freetype-dir'
'--with-iconv-dir'
'--with-zlib-dir'
'--with-bz2'
'--with-openssl'
'--with-mcrypt'
'--enable-soap'
'--enable-gd-native-ttf'
'--enable-mbstring'
'--enable-sockets'
'--enable-exif'
'--disable-ipv6'
Server API => Command Line Interface
Virtual Directory Support => disabled
Configuration File (php.ini) Path => /usr/local/php/etc
Loaded Configuration File => /usr/local/php/etc/php.ini //调用的配置文件路径
[root@CentOS-1 ~]#
;
用着注释符号,apache
使用的是#
作为注释符号;
主要的配置文件有: disable_functions
禁用的一些函数(禁用一些高风险的函数) disable_functions = eval,assert,popen,passthru,escapeshellarg,escapeshellcmd,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_get_status,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,leak,popepassthru,stream_socket_server,proc_open,proc_close
这些函数的具体功能,可以详细查看php
官方文档
display_errors
display_errors = Off
显示错误信息,On
访问的网页存在错误的话,浏览器访问界面会显示错误,Off
打开错误的网页显示的是空白;开启这个错误日志的话,他人访问同样可以获取到错误信息,这里建议Off
查看脚本是否有错误,可以使用curl -x127.0.0.1:80 www.chenyue.com/forum.php -I
查看返回值,正常值为500 是PHP的脚本出现了异常
log_error
log_error = On
错误日志,这里设置成On
开启,然后找到error_log
设置一下php
错误日志的路径error_log = /usr/local/php/logs/php_errors.log
这里的路径需要设置成绝对路径;如果路径不存在自己创建一个,创建的日志文件夹权限设置成777,这里必须设置成可写;
[root@CentOS-1 ~]# cd /usr/local/php/logs
-bash: cd: /usr/local/php/logs: 没有那个文件或目录
[root@CentOS-1 ~]# mkdir /usr/local/php/logs
[root@CentOS-1 ~]# cd /usr/local/php/logs
[root@CentOS-1 logs]# chmod 777 /usr/local/php/logs
配置日志的格式,级别(error_reporting)
error_reporting = E_ALL & ~E_NOTICE
设置成这两个级别,就可以了 &
and 并的意思,~
取反的意思;
open_basedir
open_basedir =
限定用户对网站的文件夹访问;如网站搭建在服务器/data/www
目录下,限定用户只能访问这个文件夹下的相关目录和文件(这个位置一定要将网站的所以文件夹路径包含上,否则无法正常访问的);
例:
open_basedir = /data/www:/tmp
限定在/data/www 和/tmp
目录下,/data/www
为网站所在的文件夹路径。
限定多个目录,不同站点 设置不同
服务器中有多个虚拟主机网站,使用PHP
的open_basedir =
限定会出现混乱,无法起到效果;这里可以在apache
的每个虚拟主机配置文件中增加php_admin_value open_basedir
模块,来限制每个域名下网站的文件夹访问路径
[root@CentOS-1 logs]# vim /usr/local/apache/conf/extra/httpd-vhosts.conf
...
php_admin_value open_basedir "/data/www:/tmp"
...
php扩展模块如何安装
查看已安装模块命令[root@CentOS-1 ~]# /usr/local/php/bin/php -m
php 安装后缺少某个模块,解决方法:
1、使用源码包重新编译安装php(make
、make install
)
2、使用动态方式加载这个模块(单独编译需要的模块)
动态加载模块方法:
找到php的源码包,源码包ext文件夹里面是模块的源码,如果需要的模块这里满没有的话,可以到网上下载
例:curl
的安装方法/usr/local/php/bin/php -m |grep -i curl
查看php是否有加载curl模块
[root@CentOS-1 ~]# cd /usr/local/src
[root@CentOS-1 src]# ls -a
. httpd-2.2.31 mysql-5.1.73-linux-i686-glibc23.tar.gz php-5.5.38.tar.gz
.. httpd-2.2.31.tar.gz php-5.5.38
[root@CentOS-1 src]# cd php-5.5.38/ext/
[root@CentOS-1 ext]# cd curl
[root@CentOS-1 curl]# /usr/local/php/bin/phpize //选择编译模块,生成configure可执行文件
[root@CentOS-1 curl]# ./configure --with-php-config=/usr/local/php/bin/php-config
[root@CentOS-1 curl]# make
[root@CentOS-1 curl]# make install
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/
make install
后会显示是编译后安装文件位置,在php配置文件中添加编译的模块,将extension=curl.so
添加到配置文件中的extension=
的配置文件后面,保存退出即可
extension_dir
(存放扩展模块位置) 可以在php配置文件中自定义位置(默认不做修改)
查看extension
安装模块的路径方法(即make install
后的路径):
[root@CentOS-1 ~]# /usr/local/php/bin/php -i |grep extension_dir
extension_dir => /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212 => /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212
sqlite3.extension_dir => no value => no value
查看已加载的php动态模块:grep '^extension=' /usr/local/php/etc/php.ini