# php优化 ## php.ini优化 ``` //打开php的安全模式,控制php执行危险函数, 默认是Off,改为On sql.safe_mode = Off //关闭php头部信息, 隐藏版本号, 默认是On,该为Off expose_php = On //错误信息输出控制 display_error = Off error_reporting = E_WARNING & E_ERROR //记录错误日志至后台, 方便追溯 log_errors = On error_log = /var/log/php_error.log //每个脚本时间最大内存 memory_limit = 128M //上传文件最大许可,默认2M, 建议调整为16,32M upload_max_filesize = 2M //禁止远程执行phpshell,默认On, 建议Off allow_url_fopen = On //时区调整,默认PRC, 建议调整为Asia/Shanghai date.timezone = PRC //整体优化后配置文件 sql.safe_mode = Off expose_php = Off display_error = Off error_reporting = E_WARNING & E_ERROR log_errors = On error_log = /var/log/php_error.log upload_max_filesize = 50M allow_url_fopen = Off date.timezone = Asia/Shanghai ``` ## php-fpm优化 ``` [global] #pid设置, 记录程序启动后pid pid = /var/run/php-fpm.pid #php-fpm程序启动错误日志路径 error_log = /soft/log/php/php-fpm_error.log # 错误级别. 可用级别为: alert(必须立即处理),error(错误情况), warning(警告情况), notice(一般重要信息), debug(调试信息). 默认: notice. log_level = warning #设置文件打开描述符的rlimit限制. rlimit_files = 65535 events.mechanism = epoll #启动进程的用户和组 [www] user = www group = www # fpm监听端口 listen = 127.0.0.1:9000 # unix socket设置选项,如果使用tcp方式访问,这里注释即可。 listen.owner = www listen.group = www # 允许访问FastCGI进程的IP,any不限制 listen.allowed_clients = 127.0.0.1 # pm设置动态调度设置进程管理器如何管理子进程。可用值:static,ondemand,dynamic。必须设置。 static – 子进程的数量是固定的(pm.max_children)。 ondemand – 进程在有需求时才产生(当请求时才启动。与 dynamic 相反,在服务启动时 pm.start_servers 就启动了。 dynamic – 子进程的数量在下面配置的基础上动态设置。 pm = dynamic # 静态方式下开启的php-fpm进程数量 pm.max_children = 200 # 动态方式下的起始php-fpm进程数量 pm.start_servers = 20 # 动态方式下服务器空闲时最小php-fpm进程数量 pm.min_spare_servers = 10 # 动态方式下服务器空闲时最大php-fpm进程数量 pm.max_spare_servers = 30 # 最大请求 pm.max_requests = 1024 pm.process_idle_timeout = 15s; # FPM状态页面,用于监控php-fpm状态使用 pm.status_path = /status # 错误日志 php_flag[display_errors] = off php_admin_value[error_log] = /soft/log/php/php-www_error.log php_admin_flag[log_errors] = on # 配置php慢查询, 以及慢查询记录日志位置 request_slowlog_timeout = 5s slowlog = /soft/log/php/php-slow.log ```