Nginx 502 upstream sent too big header while reading response header from upstream

      线上部署的一个项目,通过OAuth登录完成之后,跳转回来就会出现502错误,错误必现。必现错误不用慌,从log里面仔细排查这个时间段的每一条记录,access log里面一般不会记录具体原因,只会记录502请求状态,想要查看具体原因还得看error log,如果log配置没搞好的话,建议先配置好log,然后再触发一次错误,这样就可以分析错误了。

nginx错误日志error_log日志级别

image.png

解决方法:在配置文件中加入这两个配置

location ~ \.php$ {
    fastcgi_buffer_size 128k;
    fastcgi_buffers 32 32k;
}

重新加载Nginx,继续测试,正常没有报错!

PHP查看对象中的所有方法名

    一个类有很多方法,有时候拿不准用哪个方法去处理,可以全部打印出来,一个类都什么方法,一目了然。

<?php
class a
{
    public $a = 1;

    public function __construct() { }

    public function aaa()
    {
        echo "a";
    }

    public function get_name() { }
}

$a = new a();
var_dump( get_class_methods( $a ) );

0 => string '__construct' (length=11)

1 => string 'aaa' (length=3)

2 => string 'get_name' (length=8)


Mysql错误 Index column size too large. The maximum column size is 767 bytes

    起因:准备上线一个phphub5的项目,本地是mysql5.7,数据库是没有问题的,线上环境5.5,版本较低,导入的时候出错,现在记录一下解决过程。

[Err] 1709 - Index column size too large. The maximum column size is 767 bytes.

错误原因是因为索引的字段太长,在 stack overflow 上找到了答案。查看原地址

原来SQL:

ENGINE=InnoDB AUTO_INCREMENT=50 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

修改之后SQL:

ENGINE=InnoDB AUTO_INCREMENT=50 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;


解决方法:在 CREATE TABLE 语句后面加上 ROW_FORMAT=DYNAMIC 就可以了。

CSS截取多余字符,用省略号表示

********************* css截取字符 *********************

text-overflow:ellipsis;  /* 让超出的用...实现 */
white-space:nowrap;      /* 禁止换行 */
overflow:hidden;         /* 超出的隐藏 */


******************** 显示两行或者多行,再把多余的文字省略 ********************

text-overflow: -o-ellipsis-lastline;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;  /* 可以设置显示多行 */
-webkit-box-orient: vertical;


Mysql开启general_log记录

        开启general log会将所有的SQL语句记录下来。生产环境一般不会开启,因为log的量会非常庞大。但个别情况下可能会临时的开一会儿general log以供排障使用。 


* 如果是 mysql5.4以下版本

在my.ini 文件中 设置 log='你的log 日志路径'

在[mysqld]后面增加一行  然后重启mysql 生效

log=D:/wamp/www/mysql_bz.log

* 如果是 mysql5.5以上版本  一次性修改方法 重启后无效

SHOW VARIABLES LIKE '%general_log%'
SET GLOBAL general_log = 1
SET GLOBAL general_log_file = '你的log 日志路径'

长期有效修改方法在 my.ini 里面 [mysqld] 后面加上如下代码 没有 [mysqld] 自己加上

[mysqld]
general_log=ON
general_log_file=D:/wamp/logs/mysql_general.log  // 这里设置你 log日志路径

# log-raw=true  如果错误日志没记录 则开启这行,

参考地址:

http://dev.mysql.com/doc/refman/5.7/en/query-log.html

http://dev.mysql.com/doc/refman/5.7/en/password-logging.html

然后重启mysql 生效

错误的sql不会被成功解析,所以不会记录到general log中

如果需要记录所有的语句,包括那些错误的,请加 log-raw选项  log-raw=true