php的一些简单配置

一般的,LAMP环境中的PHP程序因为是作为Apache的一个模块,它的简单配置都发生在php.ini文件中。而LNMP环境因为PHP是作为一个独立的程序运行,所以和LAMP中略有不同。

一、设置时区

date.timezone = Asia/Shanghai

二、禁用危险函数

disable_funtions = 
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

三、隐藏版本信息

expose_php = Off

可以避免输出:X-Powered-By: PHP/5.2.4 这样的版本信息

四、配置error_log日志

如果是LAMP环境,则是以下配置:

log_errors = On 
error_log = /var/log/php/php_errors.log
error_reporting = E_ALL & ~E_NOTICE
display_errors = Off

error_log:错误日志存放路径
error_reporting:错误日志的级别,E_ALL为所有类型,E_NOTICE 为信息,&并且,~排除。
display_errors:是否将错误信息显示到浏览器,为了用户体验建议关闭。

而LNMP环境,一般在php-php.conf文件中的Global Options部分进行配置:

[global]
; Pid file
; Note: the default prefix is /usr/local/php-fpm/var
; Default Value: none
pid = run/php-fpm.pid

; Error log file
; If it's set to "syslog", log is sent to syslogd instead of being written
; into a local file.
; Note: the default prefix is /usr/local/php-fpm/var
; Default Value: log/php-fpm.log
error_log = log/php-fpm.log

五、php-fpm的pool

php-fpm和Nginx一样,可以通过定义多个.conf文件来配置多个pool,它在方便管理多个网站的同时,也可以定义各个网站监听不同的端口。

其中php-fpm.conf中需要这样配置:

# 大致位置在最后一行
include=/usr/local/php-fpm/etc/php-fpm.d/*.conf

最后一段则表示加载/usr/local/php-fpm/etc/php-fpm.d/目录下的所有.conf文件。

然后进入php-fpm.d目录下进行配置:

# 表示pool的名称
[www]

# 监听方式,可以是Unix 套接字,也可以是端口
# listen = 127.0.0.1:9000
listen = /tmp/www.sock
listen.mode = 666
# 如果使用了 Unix 套接字,表示它的权限。
# 在 Linux 中必须设置读/写权限,以便用于 WEB 服务器连接。
# 在很多 BSD 派生的系统中可以忽略权限允许自由连接。 # 默认值:运行所使用的用户和组,权限为 0660。
listen.owner = nobody
listen.group = nobody

# 用来运行php-fpm程序的用户和用户组
user = php-fpm
group = php-fpm

# php-fpm的进程管理部分,dynamic表示动态模式
pm = dynamic
# 最大子进程
pm.max_children = 50
# 程序启动开始的子进程
pm.start_servers = 20
# 空闲时的最小子进程
pm.min_spare_servers = 5
pm.max_spare_servers = 35
# 子进程处理的最大请求数
pm.max_requests = 500

rlimit_files = 1024

值得一提的是,如果php-fpm的进程管理部分设置了static静态模式,那么它后边的子进程配置就只有pm.max_children了。

……省略一些配置……

pm = static
pm.max_children = 50

rlimit_files = 1024

六、php-fpm的慢执行日志

php-fpm慢执行日志非常重要,配置后可以清晰的了解到PHP脚本哪里执行的时间最长,它可以定位到具体的行,以便帮助管理员快速追踪到PHP的问题点。

php-fpm慢执行在pool中配置到最后一行即可:

……省略一些配置……

# 定义PHP脚本执行的超时时间
request_slowlog_timeout = 1
slowlog = /usr/local/php-fpm/var/log/www-slow.log

标签: web, 优化

添加新评论