php 错误日志配置

php 错误日志配置
mkdir /logs/php; chown -R www:www /logs/php

php.ini
; 错误日志
log_errors = On
; 显示错误
display_errors = Off
; 日志路径
error_log = "/data/logs/php/error_log"
; 错误等级 这个要参考一下91
error_reporting = E_ALL&~E_NOTICE

#这些web2 还要改进一下
php-fpm.conf
[global]
; php-fpm pid文件
pid = /usr/local/php/var/run/php-fpm.pid
; php-fpm 错误日志路径
error_log =/logs/php/php-fpm.log
; php-fpm 记录错误日志等级
log_level = notice
[www]
; 记录错误到php-fpm的日志中
;catch_workers_output = yes
; 慢日志
slowlog = var/log/slow.log
; 关闭打印日志
php_flag[display_errors] = off
; 错误日志
php_admin_value[error_log] = /usr/local/php/var/log/www.log
; 记录错误
php_admin_flag[log_errors] = on
; 内存使用量
php_admin_value[memory_limit] = 32M

注意
如果错误日志没有写入到文件,查看www用户对 php_admin_value[error_log] 的路径是否有写入权限

其他
php_flag 修改 php.ini 中的配置 开关形式On或Off 可以被 ini_set 修改
php_value 修改 php.ini 中的配置 value形式 可以被 ini_set 修改
php_admin_flag 修改 php.ini 中的配置 开关形式On或Off 不可以被 ini_set 修改
php_admin_value 修改 php.ini 中的配置 value形式 不可以被 ini_set 修改

http://ju.outofmemory.cn/entry/210311

***********************华丽*****************************************************************************
其它 20161101

开发的时候,基本上都会把display_errors,error_reporting开启,有助于提高开发效率,上线后,基本上都会关掉页面报错信息,在把报错信息,放到文件中。
一,php-fpm的error_log配置
1,修改php.ini

display_errors = Off //改为off,页面访问时就不会出现报错信息了

2,修改php-fpm配置文件

;php_flag[display_errors] = off
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on

重启php-fpm,在这里要注意,php-fpm的配置会替换php.ini中的配置,display_errors也可以在php-fpm中配置。这样页面上就不会出现报错信息,报错信息被记录到了文件中

线上我是配置的是

error_log = /php/php-fpm.log

二,命令行下的error_log配置,修改php.ini

display_errors = Off
log_errors = On
error_log = /var/log/cron/error.log

命令行下,是不调用php-fpm的配置的,所以我们只能修改php.ini的内容,修改后,不用重启php。执行命令后,错误信息,会被写到error.log文件中,这种情况适合crontab的php脚本

小内存VPS的MySql和Php优化设置

512内存VPS的MySql和Php优化设置
(其实可以参考一下张宴的那个)

mysql
修改以下参数:

key_buffer = 16K
max_allowed_packet = 1M
thread_stack = 64K
table_cache = 4
sort_buffer = 64K
net_buffer_length = 2K

如果你不使用InnoDB表,就在文件底部禁用InnoDB:

skip-innodb

这么一搞 php 在前面 了 但是感觉好像访问慢了一些些呢

接下来优化一下Php的设置

确保以下的参数已经设置好,主要要去掉前面的注释符号“;”

max_execution_time = 30
memory_limit = 64M
error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR
display_errors = Off
log_errors = On #这个我关了
error_log = /var/log/php.log
register_globals = Off #这个我没看到 
注意:这里的64M设置对大部分站点都适用,如果是更大的站点,你需要改成128M或者更大。

pm = dynamic
#这个选项决定着php-fpm的进程管理方式,对于小内存的vps来说,设置成dynamic可以让php-fpm根据需求自动调整进程的数量,节约内存。

pm.max_children = 10
#php-fpm最大的进程数,可以根据内存大小/40M得到,当然对于mysql、nginx都和php在同一台机子上面跑的环境,需要留出一定的余量。

pm.min_spare_servers = 3
#php-fpm在空载时,保留的最小进程数。

pm.max_spare_servers = 6
#php-fpm在空载时,保留的最大的进程数。

pm.start_servers = 3
#php-fpm启动时fork的进程数量,默认值是min_spare_servers + (max_spare_servers – min_spare_servers) / 2

pm.max_requests = 2048
#某些php模块可能存在内存溢出的情况,所以有时候可以看到某个php-fpm进程的内存占用变得奇高。设置这个参数,可以使单个进程在处理N个请求后重启,有效避免内存溢出。小内存的vps建议启用这个参数并且设置一个比较小的值。

小内存VPS的MySql和Php优化设置
https://mikemiao111.com/php-fpm-memory/
https://www.douban.com/note/315222037/
http://blog.csdn.net/dc_726/article/details/12340349

https://mikemiao111.com/php-fpm-memory/
https://blog.kuoruan.com/72.html

php_gmp


wget -c http://cn2.php.net/distributions/php-5.6.6.tar.bz2

yum install gmp-devel.x86_64 -y
tar xvf php-5.6.6.tar.bz2 && cd php-5.6.6
./configure --prefix=/usr/local/php --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-openssl=/usr/local/openssl --with-zlib=/usr/local/zlib --with-curl --enable-ftp --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --enable-gd-native-ttf --enable-mbstring --enable-zip --with-mysql=/usr/local/mysql/ --with-mysqli --with-mcrypt=/usr/local/libmcrypt --without-pear --with-libxml-dir=/usr --enable-xml --with-mhash --disable-rpath --enable-bcmath --with-pdo-mysql=mysqlnd --with-iconv-dir=/usr/local/ --enable-magic-quotes --enable-safe-mode --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-ftp --enable-pcntl --enable-sockets --with-xmlrpc --enable-soap --with-gettext --disable-fileinfo --with-gmp;
cpunu=6
make -j $cpunu ZEND_EXTRA_LIBS='-liconv' && make install
/etc/init.d/php-fpm restart

restart the php server
echo gmp_strval("0xFFFFF");

ps: 今天不小心第一行php代码没有; 结束,于是到处是500 丢人呀

wdcp安装php gmp扩展
http://bbs.qcloud.com/thread-4800-1-1.html
#这些都用不上
tar xvf gmp-5.1.2.tar.bz2
cd gmp-5.1.2 && ./configure
make -j4 && make install

max_input_vars设置get/post最大项数

post设置max_input_vars
max_input_vars设置get/post最大项数

官方的手册的说明

max_input_vars 1000 PHP_INI_PERDIR 自 PHP 5.3.9 起有效
http://php.net/manual/zh/info.configuration.php

max_input_vars 的影响

一同事,让帮忙解决问题:post了1000条数据,结果只显示250条。
于是 改为 
sudo su
cp /etc/php.ini php.inibak
sed -i '389amax_input_vars = 10000' /etc/php.ini
/etc/init.d/php-fpm reload

下面是别人遇到的情况

判断可能是php的post设置问题,结果发现php.ini里关于post的设置没有问题。
通过 php://input 得到请求参数是完整的,就是在装入$_POST全局变量时有问题。
本以为很简单解决的问题,找了一个小时的原因。后来查看php这一部分源码看到这句代码:
if (++count > PG(max_input_vars)) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, “Input variables exceeded %ld. To increase the limit change max_input_vars in php.ini.”, PG(max_input_vars));
return;
}
猛然间想起来,php5.3.10在解决hash冲突受攻击时,增加了一个配置指令max_input_vars。php.ini中增加这个指令的值即可。
其实,调试时打开php错误报告级别也可以看到有错误提示的。
绕了一大圈。

其它参考 
http://54im.com/php-2/php-max-input-vars-default-value-1000-fail-post-form.html

主流的php 运行方式

一. 可以配置Apache将PHP解释器作为CGI脚本,或者作为Apache本身的一个模块(mod_php),还有就是FastCGI模式来运行。
CGI是比较原始的方式,Apache默认是以第二种方式运行PHP的,而配置FastCGI模式需要下载安装相关的包。
性能上,CGI模式每一次接到请求会调用php.exe,解析php.ini,加载DLL等,速度自然慢。
后两种方式会在Web程序启动时就作为启动,等待请求;其中FastCGI下,实现了类似连接池的技术特性,保持了对后台的连接,请求到来即可使用,结束即断开准备与下一个请求连接。
实际中,有人认为FastCGI比mod_php模式慢,有认为前者是后者性能的80%的,还有人测试后认为:对于匿名访问,前者约为后者性能的63%,认证访问时也低了18%。一般认为,FastCGI是适用于高并发使用场景下的,同时使用FastCGI可以使得程序在Web Server产品与代码两端都具有更好的选择自由度。

php在apache中一共有三种工作方式:CGI模式、Apache 模块DLL、FastCGI模式)

http://blog.csdn.net/hxsstar/article/details/18809771

PHP FPM php-fpm.conf设置详解 之 max_children etc

pm.max_children:静态方式下开启的php-fpm进程数量。
pm.start_servers:动态方式下的起始php-fpm进程数量。
pm.min_spare_servers:动态方式下的最小php-fpm进程数量。
pm.max_spare_servers:动态方式下的最大php-fpm进程数量。

修改FPM 配置文件php-fpm.conf
pm.max_children = 300 # 像xunlei有些合作方导量比较大,直接就300算了,不然老是502什么的
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500

#这个有人建议300
grep max_execution_time /etc/php.ini
max_execution_time = 30

PHP FPM php-fpm.conf设置详解
http://www.linuxde.net/2013/02/12101.html

centos 7 min 编译安装php5.6+nginx1.7.5 笔记
http://blog.csdn.net/isealand/article/details/39526337

nginx1.8+php5.6.10 服务器编译安装备忘2015-06
http://www.cnblogs.com/linuxOS/p/4572252.html

php.ini 配置选项列表
http://php.net/manual/zh/ini.list.php

php-fpm.conf 重要参数 max_children 和 request_terminate_timeout(转)
http://www.cnblogs.com/qq78292959/p/5000956.html

MediaWiki的Logo修改

MediaWiki的Logo修改
把叫logo.png的文件上传到 skins/common/images目录
然后改配置文件

$wgLogo=”wgStylePath/common/images/logo.png

mediawiki wyiwyg editor

https://github.com/Mediawiki-wysiwyg/WYSIWYG-CKeditor

#我一般用这个
git clone https://github.com/Mediawiki-wysiwyg/WYSIWYG-CKeditor.git

wget --no-check-certificate https://github.com/Mediawiki-wysiwyg/WYSIWYG-CKeditor/archive/CKeditor_v45.zip

安装
cp -r WYSIWYG/ /data/www/dowiki/mediawiki/extensions/WYSIWYG/
vim LocalSettings.php
#add
require_once "$IP/extensions/WYSIWYG/WYSIWYG.php";

restart php and is ok now

当然 还很多人推荐 VisualEdiotr 有空再试一下喽 先洗澡睡觉啦 明天还要上班呢

WordPress自动升级要求输入FTP信息

换了os后 发现  在WordPress后台自动升级时,或者更新、删除主题或者插件的时候,老是提示需要输入FTP账户信息, 我了去 ,怎么这样,解决方法如下:

方法一、如果使用虚拟主机,可以在wp-config.php里加入下面代码:

define(“FS_METHOD”, “direct”);
define(“FS_CHMOD_DIR”, 0777);
define(“FS_CHMOD_FILE”, 0777);

方法二、如果使用独立服务器或VPS,可以修改网站所在目录属性:

chmod -R 755 /home/wwwroot
chown -R www /home/wwwroot

  其实出现这个的问题就是Apache/Nginx的执行身份非文件属主身份。

解决方法:

  假设你的wordpress安装目录为/home/wwwroot/wordpress

执行:

chown -R www /home/wwwroot/wordpress

  执行上面的命令就可以将/home/wwwroot/wordpress下所有文件的属主改为www,这样就可以解决自动更新必须填FTP的问题。

chown -R www *

就是把目录下所有文件和文件夹的所有者改成叫做www的用户。这样再去尝试WP的自动升级,一键升级就能顺利进行了。

注意:

必须是把wordpress程序文件上传到空间以后再执行该命令,顺序不能颠倒;
添加完虚拟主机以后,也必须把wordpress程序文件上传到空间以后,再执行该命令才有效!